Skip to content

Commit 76a02b2

Browse files
authored
Merge pull request #3765 from DSpace/backport-3322-to-dspace-8_x
[Port dspace-8_x] fix #3241: Configuring the URI link target
2 parents fa1ce5b + 8a778f6 commit 76a02b2

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

src/app/item-page/field-components/metadata-values/metadata-values.component.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818

1919
<!-- Render value as a link (href and label) -->
2020
<ng-template #link let-value="value">
21-
<a class="dont-break-out ds-simple-metadata-link" target="_blank" [href]="value">
21+
<a class="dont-break-out ds-simple-metadata-link"
22+
[href]="value"
23+
[attr.target]="getLinkAttributes(value).target"
24+
[attr.rel]="getLinkAttributes(value).rel">
2225
{{value}}
2326
</a>
2427
</ng-template>

src/app/item-page/field-components/metadata-values/metadata-values.component.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,20 @@ describe('MetadataValuesComponent', () => {
8383
expect(comp.hasLink(mdValue)).toBe(true);
8484
});
8585

86+
it('should return correct target and rel for internal links', () => {
87+
spyOn(comp, 'hasInternalLink').and.returnValue(true);
88+
const urlValue = '/internal-link';
89+
const result = comp.getLinkAttributes(urlValue);
90+
expect(result.target).toBe('_self');
91+
expect(result.rel).toBe('');
92+
});
93+
94+
it('should return correct target and rel for external links', () => {
95+
spyOn(comp, 'hasInternalLink').and.returnValue(false);
96+
const urlValue = 'https://www.dspace.org';
97+
const result = comp.getLinkAttributes(urlValue);
98+
expect(result.target).toBe('_blank');
99+
expect(result.rel).toBe('noopener noreferrer');
100+
});
101+
86102
});

src/app/item-page/field-components/metadata-values/metadata-values.component.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,16 @@ export class MetadataValuesComponent implements OnChanges {
134134
hasInternalLink(linkValue: string): boolean {
135135
return linkValue.startsWith(environment.ui.baseUrl);
136136
}
137+
138+
/**
139+
* This method performs a validation and determines the target of the url.
140+
* @returns - Returns the target url.
141+
*/
142+
getLinkAttributes(urlValue: string): { target: string, rel: string } {
143+
if (this.hasInternalLink(urlValue)) {
144+
return { target: '_self', rel: '' };
145+
} else {
146+
return { target: '_blank', rel: 'noopener noreferrer' };
147+
}
148+
}
137149
}

0 commit comments

Comments
 (0)