From 0ef2db146bc6c965e15582713e3a16ab4136c04b Mon Sep 17 00:00:00 2001 From: igorbaptist4 Date: Wed, 11 Sep 2024 14:48:59 -0300 Subject: [PATCH 1/3] Configuring the URI link target --- .../metadata-values/metadata-values.component.html | 5 ++++- .../metadata-values/metadata-values.component.ts | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/app/item-page/field-components/metadata-values/metadata-values.component.html b/src/app/item-page/field-components/metadata-values/metadata-values.component.html index 44a3657fa56..4fc0b41136c 100644 --- a/src/app/item-page/field-components/metadata-values/metadata-values.component.html +++ b/src/app/item-page/field-components/metadata-values/metadata-values.component.html @@ -18,7 +18,10 @@ - diff --git a/src/app/item-page/field-components/metadata-values/metadata-values.component.ts b/src/app/item-page/field-components/metadata-values/metadata-values.component.ts index c6ff4547371..7bc91237d15 100644 --- a/src/app/item-page/field-components/metadata-values/metadata-values.component.ts +++ b/src/app/item-page/field-components/metadata-values/metadata-values.component.ts @@ -134,4 +134,16 @@ export class MetadataValuesComponent implements OnChanges { hasInternalLink(linkValue: string): boolean { return linkValue.startsWith(environment.ui.baseUrl); } + + /** + * This method performs a validation and determines the target of the url. + * @returns - Returns the target url. + */ + getLinkAttributes(urlValue: string): { target: string, rel: string } { + if (this.hasInternalLink(urlValue)) { + return { target: '_self', rel: '' }; + } else { + return { target: '_blank', rel: 'noopener noreferrer' }; + } + } } From d7869f408ef221bc614547534a57b9b63a0aeef3 Mon Sep 17 00:00:00 2001 From: igorbaptist4 Date: Wed, 11 Sep 2024 15:15:26 -0300 Subject: [PATCH 2/3] fix identation --- .../metadata-values/metadata-values.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/item-page/field-components/metadata-values/metadata-values.component.ts b/src/app/item-page/field-components/metadata-values/metadata-values.component.ts index 7bc91237d15..b42caace7bf 100644 --- a/src/app/item-page/field-components/metadata-values/metadata-values.component.ts +++ b/src/app/item-page/field-components/metadata-values/metadata-values.component.ts @@ -139,7 +139,7 @@ export class MetadataValuesComponent implements OnChanges { * This method performs a validation and determines the target of the url. * @returns - Returns the target url. */ - getLinkAttributes(urlValue: string): { target: string, rel: string } { + getLinkAttributes(urlValue: string): { target: string, rel: string } { if (this.hasInternalLink(urlValue)) { return { target: '_self', rel: '' }; } else { From 8572bfb1b1d1b053547047344e92bdae753ee44e Mon Sep 17 00:00:00 2001 From: root Date: Wed, 11 Dec 2024 13:07:48 -0300 Subject: [PATCH 3/3] Addition of unit tests for the getLinkAttributes() method --- .../metadata-values.component.spec.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/app/item-page/field-components/metadata-values/metadata-values.component.spec.ts b/src/app/item-page/field-components/metadata-values/metadata-values.component.spec.ts index 8e93175c462..56701287336 100644 --- a/src/app/item-page/field-components/metadata-values/metadata-values.component.spec.ts +++ b/src/app/item-page/field-components/metadata-values/metadata-values.component.spec.ts @@ -83,4 +83,20 @@ describe('MetadataValuesComponent', () => { expect(comp.hasLink(mdValue)).toBe(true); }); + it('should return correct target and rel for internal links', () => { + spyOn(comp, 'hasInternalLink').and.returnValue(true); + const urlValue = '/internal-link'; + const result = comp.getLinkAttributes(urlValue); + expect(result.target).toBe('_self'); + expect(result.rel).toBe(''); + }); + + it('should return correct target and rel for external links', () => { + spyOn(comp, 'hasInternalLink').and.returnValue(false); + const urlValue = 'https://www.dspace.org'; + const result = comp.getLinkAttributes(urlValue); + expect(result.target).toBe('_blank'); + expect(result.rel).toBe('noopener noreferrer'); + }); + });