Skip to content

Commit e15da9b

Browse files
committed
92282: Support restricted thumbnails
1 parent e4f483c commit e15da9b

9 files changed

Lines changed: 383 additions & 86 deletions

File tree

angular.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@
6464
"bundleName": "dspace-theme"
6565
}
6666
],
67-
"scripts": []
67+
"scripts": [],
68+
"baseHref": "/"
6869
},
6970
"configurations": {
7071
"production": {

src/app/admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.spec.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ import { By } from '@angular/platform-browser';
1414
import { RouterTestingModule } from '@angular/router/testing';
1515
import { getCollectionEditRoute } from '../../../../../collection-page/collection-page-routing-paths';
1616
import { LinkService } from '../../../../../core/cache/builders/link.service';
17+
import { AuthService } from '../../../../../core/auth/auth.service';
18+
import { AuthServiceStub } from '../../../../../shared/testing/auth-service.stub';
19+
import { FileService } from '../../../../../core/shared/file.service';
20+
import { FileServiceStub } from '../../../../../shared/testing/file-service.stub';
21+
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
22+
import { AuthorizationDataServiceStub } from '../../../../../shared/testing/authorization-service.stub';
1723

1824
describe('CollectionAdminSearchResultGridElementComponent', () => {
1925
let component: CollectionAdminSearchResultGridElementComponent;
@@ -45,7 +51,10 @@ describe('CollectionAdminSearchResultGridElementComponent', () => {
4551
providers: [
4652
{ provide: TruncatableService, useValue: mockTruncatableService },
4753
{ provide: BitstreamDataService, useValue: {} },
48-
{ provide: LinkService, useValue: linkService }
54+
{ provide: LinkService, useValue: linkService },
55+
{ provide: AuthService, useClass: AuthServiceStub },
56+
{ provide: FileService, useClass: FileServiceStub },
57+
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
4958
]
5059
})
5160
.compileComponents();

src/app/admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.spec.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ import { CommunitySearchResult } from '../../../../../shared/object-collection/s
1616
import { Community } from '../../../../../core/shared/community.model';
1717
import { getCommunityEditRoute } from '../../../../../community-page/community-page-routing-paths';
1818
import { LinkService } from '../../../../../core/cache/builders/link.service';
19+
import { AuthService } from '../../../../../core/auth/auth.service';
20+
import { AuthServiceStub } from '../../../../../shared/testing/auth-service.stub';
21+
import { FileService } from '../../../../../core/shared/file.service';
22+
import { FileServiceStub } from '../../../../../shared/testing/file-service.stub';
23+
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
24+
import { AuthorizationDataServiceStub } from '../../../../../shared/testing/authorization-service.stub';
1925

2026
describe('CommunityAdminSearchResultGridElementComponent', () => {
2127
let component: CommunityAdminSearchResultGridElementComponent;
@@ -47,7 +53,10 @@ describe('CommunityAdminSearchResultGridElementComponent', () => {
4753
providers: [
4854
{ provide: TruncatableService, useValue: mockTruncatableService },
4955
{ provide: BitstreamDataService, useValue: {} },
50-
{ provide: LinkService, useValue: linkService }
56+
{ provide: LinkService, useValue: linkService },
57+
{ provide: AuthService, useClass: AuthServiceStub },
58+
{ provide: FileService, useClass: FileServiceStub },
59+
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
5160
],
5261
schemas: [NO_ERRORS_SCHEMA]
5362
})

src/app/admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ import { ItemAdminSearchResultGridElementComponent } from './item-admin-search-r
1818
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
1919
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
2020
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
21+
import { AuthService } from '../../../../../core/auth/auth.service';
22+
import { AuthServiceStub } from '../../../../../shared/testing/auth-service.stub';
23+
import { FileService } from '../../../../../core/shared/file.service';
24+
import { FileServiceStub } from '../../../../../shared/testing/file-service.stub';
25+
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
26+
import { AuthorizationDataServiceStub } from '../../../../../shared/testing/authorization-service.stub';
2127

2228
describe('ItemAdminSearchResultGridElementComponent', () => {
2329
let component: ItemAdminSearchResultGridElementComponent;
@@ -55,6 +61,9 @@ describe('ItemAdminSearchResultGridElementComponent', () => {
5561
{ provide: TruncatableService, useValue: mockTruncatableService },
5662
{ provide: BitstreamDataService, useValue: mockBitstreamDataService },
5763
{ provide: ThemeService, useValue: mockThemeService },
64+
{ provide: AuthService, useClass: AuthServiceStub },
65+
{ provide: FileService, useClass: FileServiceStub },
66+
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
5867
],
5968
schemas: [NO_ERRORS_SCHEMA]
6069
})
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Observable, of as observableOf } from 'rxjs';
2+
import { FeatureID } from '../../core/data/feature-authorization/feature-id';
3+
4+
export class AuthorizationDataServiceStub {
5+
isAuthorized(featureId?: FeatureID, objectUrl?: string, ePersonUuid?: string): Observable<boolean> {
6+
return observableOf(false);
7+
}
8+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { of as observableOf } from 'rxjs';
2+
3+
export class FileServiceStub {
4+
retrieveFileDownloadLink() {
5+
return observableOf(null);
6+
}
7+
}
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
<div class="thumbnail" [class.limit-width]="limitWidth">
2-
<ds-loading *ngIf="isLoading; else showThumbnail" class="thumbnail-content" [showMessage]="false">
1+
<div class="thumbnail" [class.limit-width]="limitWidth" *ngVar="(isLoading$ | async) as isLoading">
2+
<ds-loading *ngIf="isLoading" class="thumbnail-content" [showMessage]="false">
33
text-content
44
</ds-loading>
5-
<ng-template #showThumbnail>
6-
<img *ngIf="src !== null" class="thumbnail-content img-fluid"
7-
[src]="src | dsSafeUrl" [alt]="alt | translate" (error)="errorHandler()">
8-
<div *ngIf="src === null" class="thumbnail-content outer">
5+
<ng-container *ngVar="(src$ | async) as src">
6+
<!-- don't use *ngIf="!isLoading" so the thumbnail can load in while the animation is playing -->
7+
<img *ngIf="src !== null" class="thumbnail-content img-fluid" [ngClass]="{'d-none': isLoading}"
8+
[src]="src | dsSafeUrl" [alt]="alt | translate" (error)="errorHandler()" (load)="successHandler()">
9+
<div *ngIf="src === null && !isLoading" class="thumbnail-content outer">
910
<div class="inner">
1011
<div class="thumbnail-placeholder w-100 h-100 p-3 lead">{{ placeholder | translate }}</div>
1112
</div>
1213
</div>
13-
</ng-template>
14+
</ng-container>
1415
</div>

0 commit comments

Comments
 (0)