diff --git a/src/app/core/shared/metadata-representation/item/item-metadata-representation.model.ts b/src/app/core/shared/metadata-representation/item/item-metadata-representation.model.ts
index 9ccece13f2e..e02adc84b13 100644
--- a/src/app/core/shared/metadata-representation/item/item-metadata-representation.model.ts
+++ b/src/app/core/shared/metadata-representation/item/item-metadata-representation.model.ts
@@ -41,4 +41,11 @@ export class ItemMetadataRepresentation extends Item implements MetadataRepresen
return this.virtualMetadata.value;
}
+ /**
+ * Get the language of the value to display
+ */
+ getLanguage(): string {
+ return this.virtualMetadata.language || null;
+ }
+
}
diff --git a/src/app/core/shared/metadata-representation/metadata-representation.model.ts b/src/app/core/shared/metadata-representation/metadata-representation.model.ts
index 379a3d1be84..e34c8e1d2e0 100644
--- a/src/app/core/shared/metadata-representation/metadata-representation.model.ts
+++ b/src/app/core/shared/metadata-representation/metadata-representation.model.ts
@@ -37,4 +37,9 @@ export interface MetadataRepresentation {
*/
getValue(): string;
+ /**
+ * Fetches the language of the metadata
+ */
+ getLanguage(): string;
+
}
diff --git a/src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts b/src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts
index 32dee5f1b5e..d06491f09b4 100644
--- a/src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts
+++ b/src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts
@@ -48,4 +48,11 @@ export class MetadatumRepresentation extends MetadataValue implements MetadataRe
return this.value;
}
+ /**
+ * Get the value language
+ */
+ getLanguage(): string {
+ return this.language || null;
+ }
+
}
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html
index bc688e90922..c04657887e2 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html
@@ -33,14 +33,14 @@
-
+
}
@if (dso.hasMetadata('journal.title')) {
-
+
}
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts
index 8cc98c2ae80..113be5dad85 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.ts
@@ -5,6 +5,7 @@ import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
import { focusShadow } from '../../../../../shared/animations/focus';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
RouterLink,
ThemedBadgesComponent,
ThemedThumbnailComponent,
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html
index 3207942ec2a..48c7f23061f 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html
@@ -33,14 +33,14 @@
-
+
}
@if (dso.hasMetadata('dc.description')) {
-
+
}
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts
index ede294cb1e6..be74cf9ab80 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.ts
@@ -5,6 +5,7 @@ import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
import { focusShadow } from '../../../../../shared/animations/focus';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
RouterLink,
ThemedBadgesComponent,
ThemedThumbnailComponent,
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html
index f9b0a923b3a..90833ad17c9 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html
@@ -33,11 +33,11 @@
- {{firstMetadataValue('creativework.editor')}}
+
@if (dso.hasMetadata('creativework.publisher')) {
,
- {{firstMetadataValue('creativework.publisher')}}
+
}
@@ -46,7 +46,7 @@
@if (dso.hasMetadata('dc.description')) {
-
+
}
diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts
index 629267d0385..f6cf13bb270 100644
--- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts
+++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.ts
@@ -5,6 +5,7 @@ import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
import { focusShadow } from '../../../../../shared/animations/focus';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
RouterLink,
ThemedBadgesComponent,
ThemedThumbnailComponent,
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html
index baca36538b8..8d30584deeb 100644
--- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.html
@@ -38,9 +38,9 @@
@if (dso.allMetadata(['publicationvolume.volumeNumber']).length > 0) {
- @for (value of allMetadataValues(['publicationvolume.volumeNumber']); track value; let last = $last) {
+ @for (value of allMetadata(['publicationvolume.volumeNumber']); track value; let last = $last) {
- @if (!last) {
+ @if (!last) {
;
}
@@ -48,11 +48,11 @@
@if (dso.allMetadata(['publicationissue.issueNumber']).length > 0) {
- @for (value of allMetadataValues(['publicationissue.issueNumber']); track value; let first = $first; let last = $last) {
+ @for (value of allMetadata(['publicationissue.issueNumber']); track value; let first = $first; let last = $last) {
@if (first) {
-
- }@if (!last) {
+ }@if (!last) {
;
}
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts
index a390abcf1f6..6e41f3aa48d 100644
--- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts
+++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.ts
@@ -6,6 +6,7 @@ import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
import { ViewMode } from '@dspace/core/shared/view-mode.model';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
NgClass,
RouterLink,
ThemedBadgesComponent,
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html
index 115c1af4494..0727b5fa0f1 100644
--- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.html
@@ -38,9 +38,9 @@
@if (dso.allMetadata(['journal.title']).length > 0) {
- @for (value of allMetadataValues(['journal.title']); track value; let last = $last) {
+ @for (value of allMetadata(['journal.title']); track value; let last = $last) {
- @if (!last) {
+ @if (!last) {
;
}
@@ -50,9 +50,9 @@
@if (dso.allMetadata(['publicationvolume.volumeNumber']).length > 0) {
- @for (value of allMetadataValues(['publicationvolume.volumeNumber']); track value; let last = $last) {
+ @for (value of allMetadata(['publicationvolume.volumeNumber']); track value; let last = $last) {
- ()@if (!last) {
+ ()@if (!last) {
;
}
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts
index e13a1b7cbd8..1e49ac7748b 100644
--- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts
+++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts
@@ -6,6 +6,7 @@ import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
import { ViewMode } from '@dspace/core/shared/view-mode.model';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
NgClass,
RouterLink,
ThemedBadgesComponent,
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html
index 535e516b582..2a638aab12a 100644
--- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html
+++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html
@@ -36,9 +36,9 @@
@if (dso.allMetadata(['creativeworkseries.issn']).length > 0) {
- @for (value of allMetadataValues(['creativeworkseries.issn']); track value; let last = $last) {
+ @for (value of allMetadata(['creativeworkseries.issn']); track value; let last = $last) {
- @if (!last) {
+ @if (!last) {
;
}
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts
index c7ccbe763fb..a68a9cd7556 100644
--- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts
+++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts
@@ -6,6 +6,7 @@ import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
import { ViewMode } from '@dspace/core/shared/view-mode.model';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
NgClass,
RouterLink,
ThemedBadgesComponent,
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html
index 883995cbe98..616128e9235 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html
@@ -33,7 +33,7 @@
-
+
}
@@ -41,12 +41,11 @@
- {{firstMetadataValue('organization.address.addressCountry')}}
+
@if (dso.hasMetadata('organization.address.addressLocality')) {
,
- {{firstMetadataValue('organization.address.addressLocality')}}
+
}
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts
index 50af66e27a2..03170d08d42 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts
@@ -5,6 +5,7 @@ import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
import { focusShadow } from '../../../../../shared/animations/focus';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
RouterLink,
ThemedBadgesComponent,
ThemedThumbnailComponent,
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html
index 9a0faaff150..fcecafbe172 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html
@@ -32,14 +32,14 @@
@if (dso.hasMetadata('person.email')) {
-
+
}
@if (dso.hasMetadata('person.jobTitle')) {
-
+
}
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts
index 98db7c5cf45..0cc5821833a 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts
@@ -5,6 +5,7 @@ import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
import { focusShadow } from '../../../../../shared/animations/focus';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
RouterLink,
ThemedBadgesComponent,
ThemedThumbnailComponent,
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html
index 416495f164b..8a785e64e06 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html
@@ -32,7 +32,7 @@
@if (dso.hasMetadata('dc.description')) {
-
+
}
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts
index 0d798c4330f..d790eea0841 100644
--- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts
@@ -5,6 +5,7 @@ import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
import { focusShadow } from '../../../../../shared/animations/focus';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component';
@@ -21,6 +22,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
RouterLink,
ThemedBadgesComponent,
ThemedThumbnailComponent,
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html
index 51c5c42b5bc..591e54caef6 100644
--- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html
+++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html
@@ -44,7 +44,7 @@
+ [dsMetadata]="firstMetadata('dc.description')">
}
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts
index de01ef1978b..f09c6bc87ee 100644
--- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts
@@ -7,6 +7,7 @@ import { RouterLink } from '@angular/router';
import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component';
@@ -22,6 +23,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
NgClass,
RouterLink,
ThemedBadgesComponent,
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html
index 926f89a2e37..24276972d48 100644
--- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html
+++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html
@@ -44,9 +44,9 @@
@if (dso.allMetadata(['person.jobTitle']).length > 0) {
- @for (value of allMetadataValues(['person.jobTitle']); track value; let last = $last) {
+ @for (value of allMetadata(['person.jobTitle']); track value; let last = $last) {
-
+
}
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts
index 2bb094e9da4..43a1fc01474 100644
--- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts
+++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts
@@ -16,6 +16,7 @@ import { DSONameService } from '@dspace/core/breadcrumbs/dso-name.service';
import { ViewMode } from '@dspace/core/shared/view-mode.model';
import { TranslateModule } from '@ngx-translate/core';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component';
@@ -32,6 +33,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn
standalone: true,
imports: [
AsyncPipe,
+ MetadataDirective,
NgClass,
RouterLink,
ThemedBadgesComponent,
diff --git a/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.html b/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.html
index ec4dbd43236..d35996f309f 100644
--- a/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.html
+++ b/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.html
@@ -1,7 +1,7 @@
-
+
diff --git a/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.ts b/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.ts
index 8a2195505cf..8e0777ad005 100644
--- a/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.ts
+++ b/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.ts
@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
+import { MetadataDirective } from '../../../../shared/metadata.directive';
import { ItemMetadataRepresentationListElementComponent } from '../../../../shared/object-list/metadata-representation-list-element/item/item-metadata-representation-list-element.component';
import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component';
@@ -10,6 +11,7 @@ import { TruncatableComponent } from '../../../../shared/truncatable/truncatable
templateUrl: './org-unit-item-metadata-list-element.component.html',
standalone: true,
imports: [
+ MetadataDirective,
NgbTooltipModule,
RouterLink,
TruncatableComponent,
diff --git a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html
index 9c09c78c111..7cc00199f1e 100644
--- a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html
+++ b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html
@@ -3,9 +3,9 @@
@if (mdRepresentation.allMetadata(['person.jobTitle']).length > 0) {
- @for (value of mdRepresentation.allMetadataValues(['person.jobTitle']); track value; let last = $last) {
+ @for (value of mdRepresentation.allMetadata(['person.jobTitle']); track value; let last = $last) {
- @if (!last) {
+ @if (!last) {
;
}
diff --git a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts
index 0cba98fe609..2758adb4c45 100644
--- a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts
+++ b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts
@@ -3,6 +3,7 @@ import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
+import { MetadataDirective } from '../../../../shared/metadata.directive';
import { ItemMetadataRepresentationListElementComponent } from '../../../../shared/object-list/metadata-representation-list-element/item/item-metadata-representation-list-element.component';
import { OrcidBadgeAndTooltipComponent } from '../../../../shared/orcid-badge-and-tooltip/orcid-badge-and-tooltip.component';
import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component';
@@ -12,6 +13,7 @@ import { TruncatableComponent } from '../../../../shared/truncatable/truncatable
templateUrl: './person-item-metadata-list-element.component.html',
standalone: true,
imports: [
+ MetadataDirective,
NgbTooltipModule,
OrcidBadgeAndTooltipComponent,
RouterLink,
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html
index 90ec0261e25..ceed1205902 100644
--- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html
+++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html
@@ -16,7 +16,7 @@
@if (dso.allMetadata('organization.address.addressLocality').length > 0) {
- @if (dso.allMetadata('organization.address.addressCountry').length > 0) {
+ @if (dso.allMetadata('organization.address.addressCountry').length > 0) {
,
}
@@ -24,7 +24,7 @@
@if (dso.allMetadata('organization.address.addressCountry').length > 0) {
-
+
}
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts
index 09bdbd61861..bb1b5d12be4 100644
--- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts
+++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts
@@ -20,6 +20,7 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { take } from 'rxjs/operators';
import { NameVariantService } from '../../../../../shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.service';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service';
@@ -36,6 +37,7 @@ import { OrgUnitInputSuggestionsComponent } from './org-unit-suggestions/org-uni
standalone: true,
imports: [
FormsModule,
+ MetadataDirective,
OrgUnitInputSuggestionsComponent,
],
})
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html
index cc6e09ab7f7..aa1d32e64f9 100644
--- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html
+++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.html
@@ -32,9 +32,9 @@
@if (dso.allMetadata(['person.jobTitle']).length > 0) {
- @for (value of allMetadataValues(['person.jobTitle']); track value; let last = $last) {
+ @for (value of allMetadata(['person.jobTitle']); track value; let last = $last) {
- @if (!last) {
+ @if (!last) {
;
}
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts
index 6a4643196ff..1f44093bd8e 100644
--- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts
+++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts
@@ -23,6 +23,7 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { take } from 'rxjs/operators';
import { NameVariantService } from '../../../../../shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.service';
+import { MetadataDirective } from '../../../../../shared/metadata.directive';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service';
@@ -40,6 +41,7 @@ import { PersonInputSuggestionsComponent } from './person-suggestions/person-inp
imports: [
AsyncPipe,
FormsModule,
+ MetadataDirective,
NgClass,
PersonInputSuggestionsComponent,
ThemedThumbnailComponent,
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 60fca0a8b71..466c7ecbddd 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
@@ -4,7 +4,7 @@
Choose a template. Priority: markdown, link, browse link.
-->
+ context: {value: mdValue.value, img, lang: mdValue.language}">
@if (!last) {
@@ -13,14 +13,15 @@
-
-
+
+
-
+
@@ -29,8 +30,9 @@
-
-
+
+
-
- {{value}}
+
+ {{value}}
-
+
{{value}}
+ [attr.lang]="lang | dsNormalizeLanguageCode"
+ [routerLink]="['/browse', browseDefinition.id]"
+ [queryParams]="getQueryParams(value)" role="link" tabindex="0">{{ value }}
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 21d5d528cbf..adaad45a2f4 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
@@ -99,4 +99,20 @@ describe('MetadataValuesComponent', () => {
expect(result.rel).toBe('noopener noreferrer');
});
+ it('should set the lang attribute for each rendered metadata value and convert underscores', () => {
+ const valueSpans = fixture.debugElement.queryAll(By.css('span.dont-break-out.preserve-line-breaks'));
+ expect(valueSpans.length).toBe(mockMetadata.length);
+ valueSpans.forEach(spanDebugEl => {
+ expect(spanDebugEl.attributes.lang).toBe('en-US');
+ });
+ });
+
+ it('should not set the lang attribute when a metadata value language is missing', () => {
+ comp.mdValues = [{ value: 'No language value' } as MetadataValue];
+ fixture.detectChanges();
+ const valueSpans = fixture.debugElement.queryAll(By.css('span.dont-break-out.preserve-line-breaks'));
+ expect(valueSpans.length).toBe(1);
+ expect(valueSpans[0].attributes.lang).toBeUndefined();
+ });
+
});
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 57e75b8df7d..b219280567c 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
@@ -20,6 +20,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { environment } from '../../../../environments/environment';
import { MetadataFieldWrapperComponent } from '../../../shared/metadata-field-wrapper/metadata-field-wrapper.component';
import { MarkdownDirective } from '../../../shared/utils/markdown.directive';
+import { NormalizeLanguageCodePipe } from '../../../shared/utils/normalize-language-code.pipe';
import { ImageField } from '../../simple/field-components/specific-field/image-field';
/**
@@ -35,6 +36,7 @@ import { ImageField } from '../../simple/field-components/specific-field/image-f
MarkdownDirective,
MetadataFieldWrapperComponent,
NgTemplateOutlet,
+ NormalizeLanguageCodePipe,
RouterLink,
TranslateModule,
],
diff --git a/src/app/item-page/full/field-components/file-section/full-file-section.component.html b/src/app/item-page/full/field-components/file-section/full-file-section.component.html
index 0d7a0ef6dab..c8166415e5b 100644
--- a/src/app/item-page/full/field-components/file-section/full-file-section.component.html
+++ b/src/app/item-page/full/field-components/file-section/full-file-section.component.html
@@ -33,8 +33,7 @@