From 3225693bb2843a8753b17bc527e451cd86b3b4f1 Mon Sep 17 00:00:00 2001
From: Juraj Roka <95219754+jr-rk@users.noreply.github.com>
Date: Tue, 10 Mar 2026 16:34:04 +0100
Subject: [PATCH 1/5] feature: based on value of metadata field isUrl - decide
whether clickable or not
---
src/app/item-page/full/full-item-page.component.html | 8 +++++++-
src/app/item-page/full/full-item-page.component.ts | 7 +++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/app/item-page/full/full-item-page.component.html b/src/app/item-page/full/full-item-page.component.html
index 0e0db894b1d..eebd9e45d13 100644
--- a/src/app/item-page/full/full-item-page.component.html
+++ b/src/app/item-page/full/full-item-page.component.html
@@ -24,7 +24,13 @@
@for (mdValue of mdEntry.value; track mdValue) {
| {{mdEntry.key}} |
- @if (isUrl(mdValue.value)) {
+ @if (isHttpUrl(mdValue.value)) {
{{mdValue.value}}
} @else {
{{mdValue.value}}
diff --git a/src/app/item-page/full/full-item-page.component.spec.ts b/src/app/item-page/full/full-item-page.component.spec.ts
index ce435259b1a..e2c505fdfb3 100644
--- a/src/app/item-page/full/full-item-page.component.spec.ts
+++ b/src/app/item-page/full/full-item-page.component.spec.ts
@@ -290,25 +290,25 @@ describe('FullItemPageComponent', () => {
});
});
- describe('isUrl', () => {
+ describe('isHttpUrl', () => {
it('should return true for https URLs', () => {
- expect(comp.isUrl('https://example.com')).toBeTrue();
+ expect(comp.isHttpUrl('https://example.com')).toBeTrue();
});
it('should return true for http URLs', () => {
- expect(comp.isUrl('http://example.com')).toBeTrue();
+ expect(comp.isHttpUrl('http://example.com')).toBeTrue();
});
it('should return false for plain text', () => {
- expect(comp.isUrl('just some text')).toBeFalse();
+ expect(comp.isHttpUrl('just some text')).toBeFalse();
});
it('should return false for null', () => {
- expect(comp.isUrl(null)).toBeFalse();
+ expect(comp.isHttpUrl(null)).toBeFalse();
});
it('should return false for undefined', () => {
- expect(comp.isUrl(undefined)).toBeFalse();
+ expect(comp.isHttpUrl(undefined)).toBeFalse();
});
});
diff --git a/src/app/item-page/full/full-item-page.component.ts b/src/app/item-page/full/full-item-page.component.ts
index fd76c400ed0..10ccafdc762 100644
--- a/src/app/item-page/full/full-item-page.component.ts
+++ b/src/app/item-page/full/full-item-page.component.ts
@@ -120,10 +120,11 @@ export class FullItemPageComponent extends ItemPageComponent implements OnInit,
}
/**
- * Check if a metadata value is a URL.
+ * Check if a metadata value is an HTTP(S) URL.
*/
- isUrl(value: string): boolean {
- return !!value && (value.startsWith('http://') || value.startsWith('https://'));
+ isHttpUrl(value: string | null | undefined): boolean {
+ const v = value?.trim().toLowerCase();
+ return !!v && (v.startsWith('http://') || v.startsWith('https://'));
}
/**
From 771e5a6d34a03b7f485dcfa009b118a3bb0efd81 Mon Sep 17 00:00:00 2001
From: Juraj Roka <95219754+jr-rk@users.noreply.github.com>
Date: Tue, 10 Mar 2026 16:54:25 +0100
Subject: [PATCH 4/5] refactor: trimmed values used in consistent way
---
src/app/item-page/full/full-item-page.component.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/item-page/full/full-item-page.component.html b/src/app/item-page/full/full-item-page.component.html
index d96351648d8..63ff0a2441b 100644
--- a/src/app/item-page/full/full-item-page.component.html
+++ b/src/app/item-page/full/full-item-page.component.html
@@ -26,7 +26,7 @@
| {{mdEntry.key}} |
@if (isHttpUrl(mdValue.value)) {
- {{mdValue.value}}
+ {{mdValue.value.trim()}}
} @else {
{{mdValue.value}}
}
From f4a6bc0a639b5478a11599f4ac7e1fa90f56faf0 Mon Sep 17 00:00:00 2001
From: Juraj Roka <95219754+jr-rk@users.noreply.github.com>
Date: Tue, 10 Mar 2026 17:04:02 +0100
Subject: [PATCH 5/5] test: drive metadata URL rendering tests through route
data to exercise the real itemRD$
---
src/app/item-page/full/full-item-page.component.spec.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/app/item-page/full/full-item-page.component.spec.ts b/src/app/item-page/full/full-item-page.component.spec.ts
index e2c505fdfb3..cab8dd68ff2 100644
--- a/src/app/item-page/full/full-item-page.component.spec.ts
+++ b/src/app/item-page/full/full-item-page.component.spec.ts
@@ -314,7 +314,8 @@ describe('FullItemPageComponent', () => {
describe('metadata URL rendering', () => {
beforeEach(() => {
- comp.metadata$ = of(mockItemWithUrl.metadata);
+ routeData.dso = createSuccessfulRemoteDataObject(mockItemWithUrl);
+ comp.ngOnInit();
fixture.detectChanges();
});
|