geonetwork-ui 2.6.0-dev.502fa026d → 2.6.0-dev.7be6567ef

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  2. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +27 -6
  3. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +22 -6
  4. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  5. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +29 -7
  6. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  7. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -2
  8. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  9. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +21 -19
  10. package/esm2022/translations/de.json +2 -0
  11. package/esm2022/translations/en.json +3 -1
  12. package/esm2022/translations/es.json +2 -0
  13. package/esm2022/translations/fr.json +2 -0
  14. package/esm2022/translations/it.json +2 -1
  15. package/esm2022/translations/nl.json +2 -0
  16. package/esm2022/translations/pt.json +2 -0
  17. package/fesm2022/geonetwork-ui.mjs +116 -44
  18. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  19. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +1 -0
  20. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  21. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts +9 -1
  22. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  23. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +8 -1
  24. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  25. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +10 -2
  26. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  27. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  28. package/libs/util/shared/src/lib/links/link-utils.d.ts +16 -16
  29. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +1 -0
  32. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +64 -38
  33. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +26 -2
  34. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +17 -17
  35. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +20 -2
  36. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +7 -6
  37. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +27 -29
  38. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +33 -3
  39. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +1 -1
  40. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +2 -1
  41. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -4
  42. package/src/libs/util/shared/src/lib/links/link-utils.ts +20 -18
  43. package/tailwind.base.css +34 -1
  44. package/translations/de.json +2 -0
  45. package/translations/en.json +3 -1
  46. package/translations/es.json +2 -0
  47. package/translations/fr.json +2 -0
  48. package/translations/it.json +2 -1
  49. package/translations/nl.json +2 -0
  50. package/translations/pt.json +2 -0
  51. package/translations/sk.json +2 -0
@@ -1,39 +1,37 @@
1
1
  <a
2
2
  [href]="link.url"
3
3
  target="_blank"
4
- class="flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden"
5
- [ngClass]="{ 'h-40': !compact }"
4
+ class="group flex flex-row justify-between card-shadow cursor-pointer rounded overflow-hidden"
5
+ [ngClass]="cardClass"
6
6
  [title]="title"
7
7
  >
8
- <ng-container *ngIf="!compact; else compactTpl">
9
- <div class="max-h-24 overflow-hidden text-ellipsis">
10
- <p
11
- class="font-title font-medium text-21 text-black break-words mb-1 line-clamp-2"
12
- >
13
- {{ link.name }}
14
- </p>
15
- <p class="font-medium text-sm break-words">
16
- {{ link.description }}
17
- </p>
18
- <p
19
- *ngIf="!link.name && !link.description"
20
- class="font-medium text-sm break-words truncate"
21
- >
22
- {{ link.url }}
23
- </p>
8
+ <div class="flex flex-col justify-between">
9
+ <div class="gn-ui-card-title">
10
+ {{ link.description || link.name }}
24
11
  </div>
25
- <div>
26
- <ng-icon class="card-icon" name="matOpenInNew"></ng-icon>
12
+ <div class="gn-ui-card-detail">
13
+ {{ link.name }}
27
14
  </div>
28
- </ng-container>
29
- <ng-template #compactTpl>
30
- <div class="flex items-center justify-between gap-4">
31
- <p
32
- class="overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap"
15
+ <p *ngIf="!link.name && !link.description" class="gn-ui-card-title">
16
+ {{ link.url }}
17
+ </p>
18
+ <div class="pt-1">
19
+ <span
20
+ class="inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded transition-opacity opacity-70 group-hover:opacity-100"
21
+ [style.background-color]="getLinkColor(link)"
22
+ data-cy="download-format"
23
+ >{{
24
+ getLinkFormat(link) || ('downloads.format.unknown' | translate)
25
+ }}</span
33
26
  >
34
- {{ link.name || link.description }}
35
- </p>
36
- <ng-icon class="card-icon flex-shrink-0" name="matOpenInNew"></ng-icon>
37
27
  </div>
38
- </ng-template>
28
+ </div>
29
+ <div class="flex" [ngClass]="size === 'S' ? 'items-end' : 'items-center'">
30
+ <div class="gn-ui-card-icon">
31
+ <ng-icon
32
+ class="inline-block card-icon align-middle"
33
+ name="matOpenInNew"
34
+ ></ng-icon>
35
+ </div>
36
+ </div>
39
37
  </a>
@@ -1,5 +1,9 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
2
- import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
2
+ import {
3
+ DatasetDownloadDistribution,
4
+ DatasetOnlineResource,
5
+ DatasetServiceDistribution,
6
+ } from '../../../../../../libs/common/domain/src/lib/model/record'
3
7
  import { CommonModule } from '@angular/common'
4
8
  import {
5
9
  NgIconComponent,
@@ -7,14 +11,17 @@ import {
7
11
  provideNgIconsConfig,
8
12
  } from '@ng-icons/core'
9
13
  import { matOpenInNew } from '@ng-icons/material-icons/baseline'
14
+ import { getBadgeColor, getFileFormat } from '../../../../../../libs/util/shared/src'
15
+ import { TranslateModule } from '@ngx-translate/core'
10
16
 
17
+ type CardSize = 'L' | 'M' | 'S' | 'XS'
11
18
  @Component({
12
19
  selector: 'gn-ui-link-card',
13
20
  templateUrl: './link-card.component.html',
14
21
  styleUrls: ['./link-card.component.css'],
15
22
  changeDetection: ChangeDetectionStrategy.OnPush,
16
23
  standalone: true,
17
- imports: [CommonModule, NgIconComponent],
24
+ imports: [CommonModule, NgIconComponent, TranslateModule],
18
25
  providers: [
19
26
  provideIcons({
20
27
  matOpenInNew,
@@ -23,8 +30,23 @@ import { matOpenInNew } from '@ng-icons/material-icons/baseline'
23
30
  ],
24
31
  })
25
32
  export class LinkCardComponent {
33
+ private _size: 'L' | 'M' | 'S' | 'XS'
26
34
  @Input() link: DatasetOnlineResource
27
- @Input() compact = false
35
+ private readonly sizeClassMap: Record<CardSize, string> = {
36
+ L: 'gn-ui-card-l py-2 px-5',
37
+ M: 'gn-ui-card-m py-2 px-5',
38
+ S: 'gn-ui-card-s p-4',
39
+ XS: 'gn-ui-card-xs py-2 px-5',
40
+ }
41
+
42
+ @Input() set size(value: CardSize) {
43
+ this._size = value
44
+ this.cardClass = this.sizeClassMap[value]
45
+ }
46
+ get size(): 'L' | 'M' | 'S' | 'XS' {
47
+ return this._size
48
+ }
49
+ cardClass = ''
28
50
 
29
51
  get title() {
30
52
  if (this.link.name && this.link.description) {
@@ -32,4 +54,12 @@ export class LinkCardComponent {
32
54
  }
33
55
  return this.link.name || this.link.description || ''
34
56
  }
57
+
58
+ getLinkFormat(link: any) {
59
+ return getFileFormat(link)
60
+ }
61
+
62
+ getLinkColor(link: any) {
63
+ return getBadgeColor(getFileFormat(link))
64
+ }
35
65
  }
@@ -1,5 +1,5 @@
1
1
  <div>
2
- <p class="text-gray-700 text-xs mb-3 uppercase" translate>
2
+ <p class="text-gray-900 text-xs mb-3 uppercase" translate>
3
3
  record.metadata.catalog
4
4
  </p>
5
5
  <p class="text-primary font-title text-21 mb-1">
@@ -162,7 +162,7 @@ export class RecordApiFormComponent {
162
162
  limit: limit !== '-1' ? Number(limit) : -1,
163
163
  offset: offset !== '' ? Number(offset) : undefined,
164
164
  outputCrs:
165
- format === ('application/json' || 'geojson') ? 'EPSG:4326' : undefined,
165
+ format.toLowerCase().indexOf('json') > -1 ? 'EPSG:4326' : undefined,
166
166
  }
167
167
 
168
168
  if (this.endpoint instanceof WfsEndpoint) {
@@ -170,6 +170,7 @@ export class RecordApiFormComponent {
170
170
  options.maxFeatures = limit !== '-1' ? Number(limit) : undefined
171
171
  return this.endpoint.getFeatureUrl(this.apiFeatureType, options)
172
172
  } else {
173
+ delete options.outputCrs
173
174
  return await this.endpoint.getCollectionItemsUrl(
174
175
  this.apiFeatureType,
175
176
  options
@@ -1,7 +1,3 @@
1
- :host .carousel-container ::ng-deep > * {
2
- flex-shrink: 0;
3
- }
4
-
5
1
  :host {
6
2
  position: relative;
7
3
  display: block;
@@ -16,7 +16,7 @@ export const FORMATS = {
16
16
  csv: {
17
17
  extensions: ['csv'],
18
18
  priority: 1,
19
- color: '#a6d6c0',
19
+ color: '#F6A924',
20
20
  mimeTypes: ['text/csv', 'application/csv'],
21
21
  },
22
22
  excel: {
@@ -28,7 +28,7 @@ export const FORMATS = {
28
28
  'openxmlformats-officedocument',
29
29
  ],
30
30
  priority: 2,
31
- color: '#acc5e4',
31
+ color: '#FFDE10',
32
32
  mimeTypes: [
33
33
  'application/vnd.ms-excel',
34
34
  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
@@ -37,31 +37,31 @@ export const FORMATS = {
37
37
  geojson: {
38
38
  extensions: ['geojson'],
39
39
  priority: 3,
40
- color: '#b3cde8',
40
+ color: '#293C6F',
41
41
  mimeTypes: ['application/geo+json', 'application/vnd.geo+json'],
42
42
  },
43
43
  json: {
44
44
  extensions: ['json'],
45
45
  priority: 3,
46
- color: '#b3cde8',
46
+ color: '#84D0F0',
47
47
  mimeTypes: ['application/json'],
48
48
  },
49
49
  shp: {
50
50
  extensions: ['shp', 'shape', 'zipped-shapefile'],
51
51
  priority: 4,
52
- color: '#b2d8ba',
52
+ color: '#009036',
53
53
  mimeTypes: ['x-gis/x-shapefile'],
54
54
  },
55
55
  gml: {
56
56
  extensions: ['gml'],
57
57
  priority: 5,
58
- color: '#e3b3e5',
58
+ color: '#E75113',
59
59
  mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
60
60
  },
61
61
  kml: {
62
62
  extensions: ['kml', 'kmz'],
63
63
  priority: 6,
64
- color: '#c1e6a0',
64
+ color: '#F4B5D0',
65
65
  mimeTypes: [
66
66
  'application/vnd.google-earth.kml+xml',
67
67
  'application/vnd.google-earth.kmz',
@@ -70,55 +70,55 @@ export const FORMATS = {
70
70
  gpkg: {
71
71
  extensions: ['gpkg', 'geopackage'],
72
72
  priority: 7,
73
- color: '#f7cce6',
73
+ color: '#7D5D9F',
74
74
  mimeTypes: ['application/geopackage+sqlite3'],
75
75
  },
76
76
  zip: {
77
77
  extensions: ['zip', 'tar.gz'],
78
78
  priority: 8,
79
- color: '#ffe7a3',
79
+ color: '#B0CB52',
80
80
  mimeTypes: ['application/zip', 'application/x-zip'],
81
81
  },
82
82
  pdf: {
83
83
  extensions: ['pdf'],
84
84
  priority: 9,
85
- color: '#f5b2a3',
85
+ color: '#49579E',
86
86
  mimeTypes: ['application/pdf'],
87
87
  },
88
88
  jpg: {
89
89
  extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
90
90
  priority: 9,
91
- color: '#d1c1e9',
91
+ color: '#C4A98F',
92
92
  mimeTypes: ['image/jpg'],
93
93
  },
94
94
  svg: {
95
95
  extensions: ['svg'],
96
96
  priority: 10,
97
- color: '#f3c1c9',
97
+ color: '#EB6D82',
98
98
  mimeTypes: ['image/svg+xml'],
99
99
  },
100
100
  dxf: {
101
101
  extensions: ['dxf'],
102
102
  priority: 11,
103
- color: '#f6ceac',
103
+ color: '#DCCD00',
104
104
  mimeTypes: ['application/x-dxf', 'image/x-dxf'],
105
105
  },
106
106
  html: {
107
107
  extensions: ['html', 'htm'],
108
108
  priority: 12,
109
- color: '#FFF2CC',
109
+ color: '#C0C9B6',
110
110
  mimeTypes: ['text/html'],
111
111
  },
112
112
  fgb: {
113
113
  extensions: ['fgb', 'flatgeobuf'],
114
114
  priority: 13,
115
- color: '#ffe7a3',
115
+ color: '#A8111C',
116
116
  mimeTypes: ['application/flatgeobuf'],
117
117
  },
118
118
  jsonfg: {
119
119
  extensions: ['jsonfg', 'jsonfgc'],
120
120
  priority: 14,
121
- color: '#ffe7a3',
121
+ color: '#009EE0',
122
122
  mimeTypes: [
123
123
  'application/vnd.ogc.fg+json',
124
124
  'application/vnd.ogc.fg+json;compatibility=geojson',
@@ -207,9 +207,11 @@ export function checkFileFormat(
207
207
  format: FileFormat
208
208
  ): boolean {
209
209
  return (
210
- ('name' in link && new RegExp(`[./]${format}`, 'i').test(link.name)) ||
210
+ ('name' in link &&
211
+ new RegExp(`[./]${format}`, 'i').test(link.name.toLowerCase())) ||
211
212
  ('url' in link &&
212
- new RegExp(`[./]${format}`, 'i').test(link.url.toString()))
213
+ new RegExp(`[./]${format}`, 'i').test(link.url.toString())) ||
214
+ ('name' in link && link.name.toLowerCase().includes(format))
213
215
  )
214
216
  }
215
217
 
package/tailwind.base.css CHANGED
@@ -129,6 +129,34 @@
129
129
  border border-white focus:ring-4 focus:ring-gray-300;
130
130
  }
131
131
 
132
+ .gn-ui-card-xs {
133
+ @apply min-h-[68px] md:w-[487px];
134
+ }
135
+
136
+ .gn-ui-card-s {
137
+ @apply min-h-[135px] md:w-80;
138
+ }
139
+
140
+ .gn-ui-card-m {
141
+ @apply min-h-[68px] md:w-[487px];
142
+ }
143
+
144
+ .gn-ui-card-l {
145
+ @apply min-h-[68px] md:w-[992px];
146
+ }
147
+
148
+ .gn-ui-card-title {
149
+ @apply font-title font-medium text-black text-ellipsis overflow-hidden break-words line-clamp-3;
150
+ }
151
+
152
+ .gn-ui-card-icon {
153
+ @apply flex border border-gray-300 rounded-lg py-1 px-2 align-middle;
154
+ }
155
+
156
+ .gn-ui-card-detail {
157
+ @apply font-medium text-gray-500 text-ellipsis break-words text-sm;
158
+ }
159
+
132
160
  /* DROPDOWN MULTISELECT CLASS */
133
161
  .gn-ui-multiselect-counter {
134
162
  --text-color: var(--gn-ui-multiselect-counter-text-color, white);
@@ -186,7 +214,7 @@
186
214
 
187
215
  /* TODO: add prefix */
188
216
  .card-icon {
189
- @apply text-primary opacity-50 group-hover:text-secondary group-hover:opacity-100 transition-colors transition-opacity;
217
+ @apply text-black group-hover:text-primary-darkest transition-colors;
190
218
  }
191
219
 
192
220
  /* makes spinners appear in the right color */
@@ -194,6 +222,11 @@
194
222
  mat-progress-spinner circle {
195
223
  stroke: currentColor !important;
196
224
  }
225
+
226
+ /* Section title */
227
+ .gn-ui-section-title {
228
+ @apply text-title font-medium pt-9 text-[28px] container-lg px-4 lg:mx-auto;
229
+ }
197
230
  }
198
231
 
199
232
  html {
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
426
426
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
427
427
  "record.metadata.related": "Ähnliche Datensätze",
428
+ "record.metadata.related.contents": "Verwandte Inhalte",
429
+ "record.metadata.ressources.and.links": "Ressourcen und Links",
428
430
  "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
429
431
  "record.metadata.status": "Status",
430
432
  "record.metadata.status.notPublished": "",
@@ -66,7 +66,7 @@
66
66
  "datahub.search.back": "Back",
67
67
  "datahub.search.filter.all": "All",
68
68
  "datahub.search.filter.generatedByAPI": "Generated by an API",
69
- "datahub.search.filter.generatedByWfs": "",
69
+ "datahub.search.filter.generatedByWfs": "Generated by a WFS",
70
70
  "datahub.search.filter.others": "Others",
71
71
  "dataset.error.forbidden": "Access to this resource is restricted",
72
72
  "dataset.error.http": "The data could not be loaded because of an HTTP error: \"{ info }\"",
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
426
426
  "record.metadata.quality.updateFrequency.success": "Update frequency is specified",
427
427
  "record.metadata.related": "Related datasets",
428
+ "record.metadata.related.contents": "Related contents",
429
+ "record.metadata.ressources.and.links": "Resources and links",
428
430
  "record.metadata.sheet": "Original metadata",
429
431
  "record.metadata.status": "Status",
430
432
  "record.metadata.status.notPublished": "Not published",
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "",
426
426
  "record.metadata.quality.updateFrequency.success": "",
427
427
  "record.metadata.related": "",
428
+ "record.metadata.related.contents": "Contenidos relacionados",
429
+ "record.metadata.ressources.and.links": "Recursos y enlaces",
428
430
  "record.metadata.sheet": "",
429
431
  "record.metadata.status": "",
430
432
  "record.metadata.status.notPublished": "",
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
426
426
  "record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
427
427
  "record.metadata.related": "Voir aussi",
428
+ "record.metadata.related.contents": "Contenus associés",
429
+ "record.metadata.ressources.and.links": "Ressources et liens",
428
430
  "record.metadata.sheet": "Fiche de métadonnées d'origine",
429
431
  "record.metadata.status": "Statut",
430
432
  "record.metadata.status.notPublished": "Non publié",
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
426
426
  "record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
427
427
  "record.metadata.related": "Vedi anche",
428
+ "record.metadata.related.contents": "Contenuti correlati",
429
+ "record.metadata.ressources.and.links": "Risorse e collegamenti",
428
430
  "record.metadata.sheet": "Origine del metadata",
429
431
  "record.metadata.status": "Stato",
430
432
  "record.metadata.status.notPublished": "Non pubblicato",
@@ -532,7 +534,6 @@
532
534
  "tooltip.url.open": "Aprire l'URL",
533
535
  "ui.readLess": "Ridurre",
534
536
  "ui.readMore": "Leggere di più",
535
- "wfs.aggregations.notsupported": "Aggregazioni non supportate per i servizi WFS",
536
537
  "wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
537
538
  "wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
538
539
  "wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "",
426
426
  "record.metadata.quality.updateFrequency.success": "",
427
427
  "record.metadata.related": "",
428
+ "record.metadata.related.contents": "Gerelateerde inhoud",
429
+ "record.metadata.ressources.and.links": "Bronnen en links",
428
430
  "record.metadata.sheet": "",
429
431
  "record.metadata.status": "",
430
432
  "record.metadata.status.notPublished": "",
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "",
426
426
  "record.metadata.quality.updateFrequency.success": "",
427
427
  "record.metadata.related": "",
428
+ "record.metadata.related.contents": "Conteúdos relacionados",
429
+ "record.metadata.ressources.and.links": "Recursos e links",
428
430
  "record.metadata.sheet": "",
429
431
  "record.metadata.status": "",
430
432
  "record.metadata.status.notPublished": "",
@@ -425,6 +425,8 @@
425
425
  "record.metadata.quality.updateFrequency.failed": "Frekvencia aktualizácie nie je určená",
426
426
  "record.metadata.quality.updateFrequency.success": "Frekvencia aktualizácie je určená",
427
427
  "record.metadata.related": "Súvisiace záznamy",
428
+ "record.metadata.related.contents": "Související obsah",
429
+ "record.metadata.ressources.and.links": "Prostředky a odkazy",
428
430
  "record.metadata.sheet": "Ďalšie metadáta sú k dispozícii na:",
429
431
  "record.metadata.status": "Stav",
430
432
  "record.metadata.status.notPublished": "",