Skip to content

Commit 5fc3af1

Browse files
committed
[GLAM-1113][IIIF-148] fix url resource embedding
1 parent 2e741c6 commit 5fc3af1

4 files changed

Lines changed: 22 additions & 13 deletions

File tree

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<p class="full-text-op">{{'iiifviewer.fullscreen.notice' | translate}}</p>
22
<p *ngIf="!isViewerAvailable" id="viewer-message">{{viewerMessage}}</p>
3-
<iframe title="Mirador Viewer" allowtransparency="true" *ngIf="isViewerAvailable" [src]="iframeViewerUrl | async" id="mirador-viewer"></iframe>
3+
<ng-container *ngVar="(iframeViewerUrl | async) as iframeUrl">
4+
<iframe title="Mirador Viewer" allowtransparency="true" *ngIf="isViewerAvailable && iframeUrl" [src]="(iframeUrl) | dsSafeUrl" id="mirador-viewer"></iframe>
5+
</ng-container>
46

src/app/item-page/mirador-viewer/mirador-viewer.component.spec.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import { of as observableOf } from 'rxjs';
1313
import { MiradorViewerService } from './mirador-viewer.service';
1414
import { HostWindowService } from '../../shared/host-window.service';
1515
import { BundleDataService } from '../../core/data/bundle-data.service';
16+
import { VarDirective } from '../../shared/utils/var.directive';
17+
import { SafeUrlPipe } from '../../shared/utils/safe-url-pipe';
1618

1719

1820
function getItem(metadata: MetadataMap) {
@@ -44,7 +46,7 @@ describe('MiradorViewerComponent with search', () => {
4446
useClass: TranslateLoaderMock
4547
}
4648
})],
47-
declarations: [MiradorViewerComponent],
49+
declarations: [MiradorViewerComponent, VarDirective, SafeUrlPipe],
4850
providers: [
4951
{ provide: BitstreamDataService, useValue: {} },
5052
{ provide: BundleDataService, useValue: {} },
@@ -65,6 +67,7 @@ describe('MiradorViewerComponent with search', () => {
6567
comp = fixture.componentInstance;
6668
comp.object = getItem(noMetadata);
6769
comp.searchable = true;
70+
comp.iframeViewerUrl = observableOf('testUrl');
6871
fixture.detectChanges();
6972
}));
7073

@@ -107,7 +110,7 @@ describe('MiradorViewerComponent with multiple images', () => {
107110
useClass: TranslateLoaderMock
108111
}
109112
})],
110-
declarations: [MiradorViewerComponent],
113+
declarations: [MiradorViewerComponent, VarDirective, SafeUrlPipe],
111114
providers: [
112115
{ provide: BitstreamDataService, useValue: {} },
113116
{ provide: BundleDataService, useValue: {} },
@@ -129,6 +132,7 @@ describe('MiradorViewerComponent with multiple images', () => {
129132
comp = fixture.componentInstance;
130133
comp.object = getItem(noMetadata);
131134
comp.searchable = false;
135+
comp.iframeViewerUrl = observableOf('testUrl');
132136
fixture.detectChanges();
133137
}));
134138

@@ -167,7 +171,7 @@ describe('MiradorViewerComponent with a single image', () => {
167171
useClass: TranslateLoaderMock
168172
}
169173
})],
170-
declarations: [MiradorViewerComponent],
174+
declarations: [MiradorViewerComponent, VarDirective, SafeUrlPipe],
171175
providers: [
172176
{ provide: BitstreamDataService, useValue: {} },
173177
{ provide: BundleDataService, useValue: {} },
@@ -188,6 +192,7 @@ describe('MiradorViewerComponent with a single image', () => {
188192
fixture = TestBed.createComponent(MiradorViewerComponent);
189193
comp = fixture.componentInstance;
190194
comp.object = getItem(noMetadata);
195+
comp.iframeViewerUrl = observableOf('testUrl');
191196
fixture.detectChanges();
192197
}));
193198

@@ -220,7 +225,7 @@ describe('MiradorViewerComponent in development mode', () => {
220225
useClass: TranslateLoaderMock
221226
}
222227
})],
223-
declarations: [MiradorViewerComponent],
228+
declarations: [MiradorViewerComponent, VarDirective, SafeUrlPipe],
224229
providers: [
225230
{ provide: BitstreamDataService, useValue: {} }
226231
],
@@ -241,6 +246,7 @@ describe('MiradorViewerComponent in development mode', () => {
241246
fixture = TestBed.createComponent(MiradorViewerComponent);
242247
comp = fixture.componentInstance;
243248
comp.object = getItem(noMetadata);
249+
comp.iframeViewerUrl = observableOf('testUrl');
244250
fixture.detectChanges();
245251
}));
246252

src/app/item-page/mirador-viewer/mirador-viewer.component.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ChangeDetectionStrategy, Component, Inject, Input, OnInit, PLATFORM_ID } from '@angular/core';
2-
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
2+
import { DomSanitizer } from '@angular/platform-browser';
33
import { Item } from '../../core/shared/item.model';
44
import { environment } from '../../../environments/environment';
55
import { BitstreamDataService } from '../../core/data/bitstream-data.service';
@@ -49,7 +49,7 @@ export class MiradorViewerComponent implements OnInit {
4949
/**
5050
* The url for the iframe.
5151
*/
52-
iframeViewerUrl: Observable<SafeResourceUrl>;
52+
iframeViewerUrl: Observable<string>;
5353

5454
/**
5555
* Sets the viewer to show or hide thumbnail side navigation menu.
@@ -75,7 +75,7 @@ export class MiradorViewerComponent implements OnInit {
7575
* Creates the url for the Mirador iframe. Adds parameters for the displaying the search panel, query results,
7676
* or multi-page thumbnail navigation.
7777
*/
78-
setURL() {
78+
getURL() {
7979
// The path to the REST manifest endpoint.
8080
const manifestApiEndpoint = encodeURIComponent(environment.rest.baseUrl + '/iiif/'
8181
+ this.object.id + '/manifest');
@@ -107,8 +107,7 @@ export class MiradorViewerComponent implements OnInit {
107107
viewerPath += `&canvasIndex=${parseInt(this.canvasIndex, 10) - 1}`;
108108
}
109109

110-
// TODO: Should the query term be trusted here?
111-
return this.sanitizer.bypassSecurityTrustResourceUrl(viewerPath);
110+
return viewerPath;
112111
}
113112

114113
ngOnInit(): void {
@@ -138,7 +137,7 @@ export class MiradorViewerComponent implements OnInit {
138137
const observable = of('');
139138
this.iframeViewerUrl = observable.pipe(
140139
map((val) => {
141-
return this.setURL();
140+
return this.getURL();
142141
})
143142
);
144143
} else {
@@ -152,7 +151,7 @@ export class MiradorViewerComponent implements OnInit {
152151
if (c > 1) {
153152
this.multi = true;
154153
}
155-
return this.setURL();
154+
return this.getURL();
156155
})
157156
);
158157
}

src/app/item-page/mirador-viewer/mirador-viewer.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
22
import { CommonModule } from '@angular/common';
33
import { MiradorViewerComponent } from './mirador-viewer.component';
44
import { TranslateModule } from '@ngx-translate/core';
5+
import { SharedModule } from '../../shared/shared.module';
56

67

78
@NgModule({
@@ -13,7 +14,8 @@ import { TranslateModule } from '@ngx-translate/core';
1314
],
1415
imports: [
1516
CommonModule,
16-
TranslateModule
17+
TranslateModule,
18+
SharedModule
1719
]
1820
})
1921
export class MiradorViewerModule { }

0 commit comments

Comments
 (0)