An error occurred while processing the template.
The string doesn't match the expected date/time/date-time format. The string to parse was: "1/1/48, 12:00 AM". The expected format was: "dd/MM/yyyy HH:mm".
The nested reason given follows:
Unparseable date: "1/1/48, 12:00 AM"
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign dateStart = ObjectField_produ... [in template "22823141604726#20121#null" at line 440, column 33]
----
1<#assign
2dlAppLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
3dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
4
5objectEntryLocalService = serviceLocator.findService("com.liferay.object.service.ObjectEntryLocalService")
6objectRelationshipLocalService = serviceLocator.findService("com.liferay.object.service.ObjectRelationshipLocalService")
7objectDefinitionLocalService = serviceLocator.findService("com.liferay.object.service.ObjectDefinitionLocalService")
8
9/>
10
11<#assign summary = garance.getSummaryContent("Archive")>
12
13<#assign archiveID = ObjectEntry_objectEntryId.getData()?number
14archiveEntry = objectEntryLocalService.fetchObjectEntry(archiveID?number)
15archiveGroupID = archiveEntry.getGroupId() />
16
17<#--------------------------------- Header -------------------------->
18<#assign reproductionsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveReproduction")>
19<#assign reproductions = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, reproductionsRel.objectRelationshipId, archiveID, true, reproductionsRel.isReverse(), null, -1, -1 ) />
20
21<#assign reproductionsImages = []>
22<#assign reproductionsVideos = []>
23<#if reproductions?hasContent>
24 <#list reproductions as reproduction>
25 <#if reproduction.values.reproductionNature?hasContent>
26 <#if reproduction.values.reproductionNature == "PICTURE" && reproduction.values.media?string != "0">
27 <#assign reproductionsImages = reproductionsImages + [reproduction]>
28 <#elseIf reproduction.values.reproductionNature == "VIDEO">
29 <#assign reproductionsVideos = reproductionsVideos + [reproduction]>
30 </#if>
31 </#if>
32 </#list>
33</#if>
34
35<#assign thumbnail = {}>
36<#if reproductionsImages?hasContent && (reproductionsImages?first).values.media?string != "0">
37 <#assign thumbnail = reproductionsImages?first />
38</#if>
39
40<#assign showMedia = (reproductionsImages?hasContent || reproductionsVideos?hasContent)>
41
42<#--------------------------------- Identification -------------------------->
43<#assign dimensionsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveDimension")>
44<#assign dimensions = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, dimensionsRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
45
46<#assign showIdentification = (
47.dataModel["ObjectRelationship#C_Thesaurus#institution_label"].getData()?hasContent
48|| (ObjectField_productionDateStart.getData()?hasContent || ObjectField_productionDateStartPrecision.getData() == "sans date")
49|| dimensions?hasContent
50|| ObjectField_physicalDescription.getData()?hasContent)>
51
52<#--------------------------------- Contexte -------------------------->
53<#assign creatorsFull = []>
54<#assign creatorsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveCreator")>
55<#assign creators = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, creatorsRel.objectRelationshipId, archiveID, true, creatorsRel.isReverse(), null, -1, -1 ) />
56<#list creators as creator>
57 <#assign creatorsFull = creatorsFull + [garance.getPersonneDisplayData(creator.objectEntryId)]>
58</#list>
59
60<#assign creatorBiographiesRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveCreatorHistory")>
61<#assign creatorBiographies = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, creatorBiographiesRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
62
63<#assign superParent = archiveEntry>
64<#if archiveEntry.values.r_archiveChildren_c_archiveId != 0>
65 <#assign superParent = objectEntryLocalService.fetchObjectEntry(archiveEntry.values.r_archiveChildren_c_archiveId?number)>
66 <#assign foundParent = superParent>
67 <#list 1..20 as i> <#-- 100 = limite de sécurité -->
68 <#if foundParent.values.r_archiveChildren_c_archiveId != 0>
69 <#assign foundParent = objectEntryLocalService.fetchObjectEntry(foundParent.values.r_archiveChildren_c_archiveId?number)>
70 <#else>
71 <#assign superParent = foundParent>
72 <#break>
73 </#if>
74 </#list>
75</#if>
76
77<#assign childrenArchiveRel = objectRelationshipLocalService.getObjectRelationship(superParent.objectDefinitionId, "archiveChildren")>
78<#assign partsArchiveRel = objectRelationshipLocalService.getObjectRelationship(superParent.objectDefinitionId, "archivePart")>
79
80<#function buildTree entry>
81
82 <#local children = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, childrenArchiveRel.objectRelationshipId, entry.objectEntryId, true, null, -1, -1 ) />
83 <#local parts = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, partsArchiveRel.objectRelationshipId, entry.objectEntryId, true, null, -1, -1 ) />
84
85 <#local childrenTrees = []>
86 <#list children as child>
87 <#local childTree = buildTree(child)>
88 <#local childrenTrees = childrenTrees + [childTree]>
89 </#list>
90
91 <#return {
92 "entry": entry,
93 "children": childrenTrees,
94 "parts": parts
95 }>
96</#function>
97
98<#assign hierarchy = buildTree(superParent)>
99
100<#function containsCurrentArchive node archiveID>
101 <#if node.entry.objectEntryId == archiveID>
102 <#return true>
103 </#if>
104 <#if node.children?hasContent>
105 <#list node.children as c>
106 <#if containsCurrentArchive(c, archiveID)>
107 <#return true>
108 </#if>
109 </#list>
110 </#if>
111 <#return false>
112</#function>
113
114<#macro renderTree node index=0>
115 <li class="<#if node.children?hasContent || node.parts?hasContent>js-accordion </#if><#if (index > 4)>tw:hidden </#if>tw:leading-[1.625rem]"
116 id="accordion-${node.entry.objectEntryId}">
117 <div class="tw:flex tw:items-center tw:gap-[0.625rem]">
118 <#local descriptionLevel = garance.getPicklistItemName(node.entry.values.descriptionLevel, "picklistDescriptionLevel")>
119 <#if node.entry.objectEntryId != archiveID>
120 <a href="/l/${node.entry.objectEntryId}"
121 class="tw:inline tw:font-bold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[0_0.125rem] tw:hover:bg-size-[100%_0.125rem]">
122 ${descriptionLevel}
123 - ${node.entry.values.titleComplete}
124 </a>
125 <#else>
126 <div class="current-archive tw:flex tw:items-center tw:gap-2">
127 <span class="icon-chevron-right tw:shrink-0 tw:text-prim tw:text-[0.75rem]/[0.875rem]"></span>
128 <span class="tw:font-bold tw:text-prim">${descriptionLevel} - ${node.entry.values.titleComplete}</span>
129 </div>
130 </#if>
131 <#if node.children?hasContent || node.parts?hasContent>
132 <button class="tw:shrink-0 tw:group"
133 id="accordion-button-${node.entry.objectEntryId}"
134 aria-label="Ouvrir/fermer le contenu du ${descriptionLevel} ${node.entry.values.titleComplete}"
135 type="button" aria-expanded="false" aria-controls="collapse-${node.entry.objectEntryId}">
136 <span class="icon-chevron-down tw:block tw:transition-all tw:shrink-0 tw:text-prim tw:text-[0.75rem]/[0.875rem] tw:group-hover:rotate-180 tw:group-[&[aria-expanded=true]]:rotate-180"
137 aria-hidden="true"></span>
138 </button>
139 </#if>
140 </div>
141 <#if node.children?hasContent || node.parts?hasContent>
142 <#local i = 0>
143 <div id="collapse-${node.entry.objectEntryId}" class="tw:hidden js-list-expand">
144 <ul class="tw:pl-5 tw:mt-2 tw:mb-5">
145 <#list node.children as child>
146 <#if containsCurrentArchive(child, archiveID)>
147 <@renderTree node=child index=i/>
148 <#local i = i + 1>
149 </#if>
150 </#list>
151
152 <#list node.children as child>
153 <#if !containsCurrentArchive(child, archiveID)>
154 <@renderTree node=child index=i/>
155 <#local i = i + 1>
156 </#if>
157 </#list>
158
159 <#list node.parts as part>
160 <li <#if (i > 4)>class="tw:hidden"</#if>>${part.values.titleComplete}</li>
161 <#local i = (i + 1)>
162 </#list>
163 </ul>
164 <#if ((node.children?size + node.parts?size) > 5)>
165 <button type="button"
166 class="js-expand tw:items-center tw:leading-[1.75rem] tw:group tw:flex tw:gap-[0.3125rem] tw:font-semibold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.125rem] tw:hover:bg-size-[0_0.125rem]">
167 <span>Voir plus</span>
168 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
169 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
170 </button>
171 </#if>
172 </div>
173 </#if>
174 </li>
175</#macro>
176
177
178<#--------------------------------- Contenu et structure -------------------------->
179
180<#assign accrualsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveAccrual")>
181<#assign accruals = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, accrualsRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
182
183<#assign systemArrangementsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveArrangement")>
184<#assign systemArrangements = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, systemArrangementsRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
185
186<#assign authorsFull = []>
187<#assign authorsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveAuthor")>
188<#assign authors = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, authorsRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
189<#list authors as author>
190 <#if author.values.r_archiveAuthorPersonne_c_transitionPersonneId?hasContent>
191 <#assign authorsFull = authorsFull + [{
192 "personne": garance.getPersonneDisplayData(author.values.r_archiveAuthorPersonne_c_transitionPersonneId),
193 "function": author.values.psoterCastFonction,
194 "presume": author.values.creatorPresume
195 }]>
196 </#if>
197</#list>
198
199<#assign classificationsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveClassification")>
200<#assign classifications = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, classificationsRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
201
202<#assign objectCatsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveObjectCategory")>
203<#assign objectCats = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, objectCatsRel.objectRelationshipId, archiveID, true, objectCatsRel.isReverse(), null, -1, -1 ) />
204
205<#assign linkedFilmsFull = []>
206<#assign linkedFilmsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveLinkedFilms")>
207<#assign linkedFilms = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, linkedFilmsRel.objectRelationshipId, archiveID, true, linkedFilmsRel.isReverse(), null, -1, -1 ) />
208<#list linkedFilms as linkedFilm>
209 <#assign filmData = garance.getFilmDisplayData(linkedFilm)>
210 <#if filmData?hasContent>
211 <#assign linkedFilmsFull = linkedFilmsFull + [filmData]>
212 </#if>
213</#list>
214
215<#assign representedPersonnesRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveRepresentedPersonne")>
216<#assign representedPersonnes = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, representedPersonnesRel.objectRelationshipId, archiveID, true, representedPersonnesRel.isReverse(), null, -1, -1 ) />
217
218<#assign subjectPersonnesRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveSubjectPersonne")>
219<#assign subjectPersonnes = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, subjectPersonnesRel.objectRelationshipId, archiveID, true, subjectPersonnesRel.isReverse(), null, -1, -1 ) />
220
221<#assign themesRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveTheme")>
222<#assign themes = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, themesRel.objectRelationshipId, archiveID, true, themesRel.isReverse(), null, -1, -1 ) />
223
224<#assign representationsRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveRepresentation")>
225<#assign representations = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, representationsRel.objectRelationshipId, archiveID, true, representationsRel.isReverse(), null, -1, -1 ) />
226
227<#assign representationsSourceRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveRepresentationSource")>
228<#assign representationsSource = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, representationsSourceRel.objectRelationshipId, archiveID, true, representationsSourceRel.isReverse(), null, -1, -1 ) />
229
230<#assign stylesRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveStyle")>
231<#assign styles = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, stylesRel.objectRelationshipId, archiveID, true, stylesRel.isReverse(), null, -1, -1 ) />
232
233<#assign showContent = (ObjectField_contentDescription.getData()?hasContent
234|| accruals?hasContent
235|| systemArrangements?hasContent
236|| authorsFull?hasContent
237|| classifications?hasContent
238|| objectCats?hasContent
239|| linkedFilmsFull?hasContent
240|| representedPersonnes?hasContent
241|| subjectPersonnes?hasContent
242|| themes?hasContent
243|| representations?hasContent
244|| representationsSource?hasContent
245|| styles?hasContent
246)>
247
248<#--------------------------------- Conditions d'accès et utilisation -------------------------->
249
250<#assign languesRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveLangue")>
251<#assign langues = objectEntryLocalService.getManyToManyObjectEntries(archiveGroupID, languesRel.objectRelationshipId, archiveID, true, languesRel.isReverse(), null, -1, -1 ) />
252
253<#--------------------------------- Consultation -------------------------->
254
255<#assign archiveConsultationRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveConsultation")>
256<#assign archiveConsultation = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, archiveConsultationRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
257<#assign archiveConsultation = archiveConsultation?filter(ac->ac.values.lieuDeConsultation != "Noncommunicable") />
258
259<#assign showConsultation = (ObjectField_cote.getData()?hasContent
260|| ObjectField_barcode.getData()?hasContent
261|| archiveConsultation?hasContent
262)>
263
264<#--------------------------------- Documents associés -------------------------->
265
266<#assign showDocuments = ObjectField_complementarySource.getData()?hasContent>
267
268<#--------------------------------- Collection -------------------------->
269
270<#assign relatedObjectTypesRel = objectRelationshipLocalService.getObjectRelationship(archiveEntry.objectDefinitionId, "archiveRelatedObjectTypes")>
271<#assign relatedObjectTypes = objectEntryLocalService.getOneToManyObjectEntries(archiveGroupID, relatedObjectTypesRel.objectRelationshipId, archiveID, true, null, -1, -1 ) />
272<#assign relatedObjectsFull = garance.getRelatedObjects(relatedObjectTypes, archiveEntry, true)>
273
274<#assign showCollection = relatedObjectsFull?hasContent>
275
276<div class="notice notice--archive js-notice">
277 <div class="notice-header tw:text-white tw:pt-[3.375rem] tw:pb-[2.5rem] tw:relative tw:overflow-hidden
278 tw:before:content-[''] tw:before:absolute tw:before:inset-0 tw:before:size-full tw:before:block tw:before:bg-text tw:before:opacity-90
279 tw:xl:pt-[9.5rem]">
280 <div class="page-wrapper tw:z-0 tw:relative">
281 <#if request.getParameter("searchContext")?hasContent>
282 <@garance.noticePagination request.getParameter("searchContext") archiveID />
283 </#if>
284 <div class="tw:flex tw:gap-5 tw:items-start tw:flex-wrap tw:flex-col tw:z-0
285 tw:md:flex-row tw:lg:flex-nowrap
286 tw:xl:gap-[2.125rem]">
287 <div class="tw:order-2 tw:lg:order-1 tw:flex tw:flex-col tw:w-full tw:text-center
288 tw:md:w-fit tw:md:text-left">
289 <#if ObjectField_titleComplete.getData()?hasContent>
290 <h1 class="tw:order-1 tw:text-prim tw:mb-[0.625rem]">
291 ${[ObjectField_descriptionLevel.getData(), ObjectField_titleComplete.getData()]?filter(v->v?hasContent)?join(" - ")}
292 </h1>
293 </#if>
294 <#if !thumbnail?hasContent>
295 <p class="tw:order-0 tw:mb-5 tw:text-[0.75rem]/[1rem] tw:block tw:mx-auto tw:rounded-xs tw:w-fit tw:bg-[rgba(255,255,255,0.9)] tw:text-prim tw:uppercase tw:px-[0.625rem] tw:py-1
296 tw:md:mx-0">
297 Archive
298 </p>
299 </#if>
300 </div>
301 <#if thumbnail?hasContent>
302 <div class="tw:order-1 tw:lg:order-0 tw:w-full
303 tw:md:w-fit">
304 <div class="tw:m-auto tw:mx-auto tw:max-w-full tw:w-[15.625rem] tw:relative
305 tw:md:mx-0">
306 <p class="tw:absolute tw:top-[0.625rem] tw:left-[0.625rem] tw:text-[0.75rem]/[1rem] tw:block tw:rounded-xs tw:w-fit tw:bg-[rgba(255,255,255,0.9)] tw:text-prim tw:uppercase tw:px-[0.625rem] tw:py-1">
307 Archive
308 </p>
309 <#assign fileEntryDesktop = dlAppLocalService.getFileEntry(thumbnail.values.media?number) />
310 <#assign thumbnailURL = dlURLHelper.getPreviewURL(fileEntryDesktop, fileEntryDesktop.getFileVersion(),
311 null, "",
312 !fileEntryDesktop.getFileVersion().equals(fileEntryDesktop.getLatestFileVersion()), true) />
313
314 <figure class="tw:w-full">
315 <source media="(min-width: 480px)"
316 srcset="${thumbnailURL}"/>
317 <img class="tw:rounded-xs tw:object-cover tw:size-full" alt=""
318 src="${thumbnailURL}"/>
319 <#if thumbnail.values.reproductionNotes?hasContent || thumbnail.values.reproductionCopyright?hasContent>
320 <figcaption class="tw:ml-[0.625rem] tw:opacity-70 tw:text-[0.75rem]/[1rem] tw:font-medium tw:mt-[0.3125rem]
321 tw:md:ml-0">
322 ${[thumbnail.values.reproductionNotes, thumbnail.values.reproductionCopyright]?filter(v->v?hasContent)?join(" - ")}
323 </figcaption>
324 </#if>
325 </figure>
326 </div>
327 </div>
328 </#if>
329 <@garance.noticeTools />
330 </div>
331 </div>
332 </div>
333 <div class="notice-content">
334 <div class="tw:overflow-y-clip tw:py-10">
335 <div class="page-wrapper summary-ancres js-summary-ancres tw:group tw:fixed tw:w-full tw:overflow-hidden tw:h-fit tw:z-50 tw:top-[4.375rem] tw:bg-beige tw:max-lg:max-w-full!
336 tw:lg:top-[6.875rem] tw:lg:h-0 tw:lg:overflow-visible tw:lg:sticky
337 tw:xl:top-[8.85rem]">
338 <nav class="tw:bg-beige tw:lg:w-[14.25rem]" role="navigation" aria-labelledby="summary-title">
339 <button id="summary-title" class="js-summary-btn tw:text-h3 tw:font-title tw:flex tw:justify-between tw:items-center tw:py-[0.625rem] tw:w-full tw:max-sm:px-[calc(2.5rem/2)] tw:focus:outline-offset-[-0.125rem]
340 tw:max-lg:px-[calc(5rem/2)]
341 tw:lg:hidden" aria-label="Ouvrir/Fermer le sommaire" aria-expanded="false"
342 aria-controls="summary-list">
343 <span>Sommaire</span>
344 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:outline-offset-[-0.125rem]
345 tw:group-[&.open]:rotate-180" aria-hidden="true"></span>
346 </button>
347 <div id="summary-list" class="tw:overflow-y-auto tw:bg-white tw:transition-all tw:max-sm:px-[calc(2.5rem/2)]
348 tw:max-lg:max-h-0 tw:max-lg:px-[calc(5rem/2)] tw:max-lg:max-w-full
349 tw:group-[&.open]:max-h-[calc(100vh-(4.375rem+3.125rem))]
350 tw:lg:max-h-[calc(100vh-12.5rem)] tw:lg:bg-transparent" tabindex="-1">
351 <ul class="tw:border-sommaire-border tw:border-l-[0.125rem] tw:my-2">
352 <#if showIdentification>
353 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
354 <a href="#identification" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
355 tw:[&.is-active]:border-prim" tabindex="-1">
356 <span>${summary["IdentificationArchive"]?hasContent?then(summary["IdentificationArchive"], "Identification")}</span>
357 </a>
358 </li>
359 </#if>
360
361 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
362 <a href="#contexte" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
363 tw:[&.is-active]:border-prim" tabindex="-1">
364 <span>${summary["ContexteArchive"]?hasContent?then(summary["ContexteArchive"], "Contexte")}</span>
365 </a>
366 </li>
367
368 <#if showContent>
369 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
370 <a href="#content-structure" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
371 tw:[&.is-active]:border-prim" tabindex="-1">
372 <span>${summary["ContenuEtStructureArchive"]?hasContent?then(summary["ContenuEtStructureArchive"], "Contenu et structure")}</span>
373 </a>
374 </li>
375 </#if>
376
377 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
378 <a href="#access" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
379 tw:[&.is-active]:border-prim" tabindex="-1">
380 <span>${summary["ConditionsDaccesEtUtilisationArchive"]?hasContent?then(summary["ConditionsDaccesEtUtilisationArchive"], "Conditions d'accès et utilisation")}</span>
381 </a>
382 </li>
383
384 <#if showConsultation>
385 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
386 <a href="#consultation" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
387 tw:[&.is-active]:border-prim" tabindex="-1">
388 <span>${summary["ConsultationArchive"]?hasContent?then(summary["ConsultationArchive"], "Consultation")}</span>
389 </a>
390 </li>
391 </#if>
392
393 <#if showDocuments>
394 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
395 <a href="#document" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
396 tw:[&.is-active]:border-prim" tabindex="-1">
397 <span>${summary["DocumentsAssociesArchive"]?hasContent?then(summary["DocumentsAssociesArchive"], "Documents associés")}</span>
398 </a>
399 </li>
400 </#if>
401 <#if showMedia>
402 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
403 <a href="#ressources" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
404 tw:[&.is-active]:border-prim" tabindex="-1">
405 <span>${summary["RessourcesMediaArchive"]?hasContent?then(summary["RessourcesMediaArchive"], "Ressources média")}</span>
406 </a>
407 </li>
408 </#if>
409 <#if showCollection>
410 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
411 <a href="#collections" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
412 tw:[&.is-active]:border-prim" tabindex="-1">
413 <span>${summary["CollectionsLieesArchive"]?hasContent?then(summary["CollectionsLieesArchive"], "Collections liées")}</span>
414 </a>
415 </li>
416 </#if>
417 </ul>
418 </div>
419 </nav>
420 </div>
421
422 <#if showIdentification>
423 <div id="identification" class="js-summary-content" tabindex="-1"></div>
424 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
425 <h2 class="tw:text-prim tw:mb-5">${summary["IdentificationArchive"]?hasContent?then(summary["IdentificationArchive"], "Identification")}</h2>
426
427 <#if .dataModel["ObjectRelationship#C_Thesaurus#institution_label"].getData()?hasContent>
428 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
429 <span class="tw:font-bold tw:shrink-0">Institution :</span>
430 <span>${.dataModel["ObjectRelationship#C_Thesaurus#institution_label"].getData()}</span>
431 </p>
432 </#if>
433
434 <#if ObjectField_productionDateStart.getData()?hasContent || ObjectField_productionDateStartPrecision.getData() == "sans date">
435 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
436 <span class="tw:font-bold tw:shrink-0">Année :</span>
437 <#if ObjectField_productionDateStartPrecision.getData() == "sans date">
438 <span>Sans date</span>
439 <#elseIf ObjectField_productionDateStart.getData()?hasContent>
440 <#assign dateStart = ObjectField_productionDateStart.getData()?datetime("dd/MM/yyyy HH:mm")?string("YYYY") + (getterUtil.getBoolean(ObjectField_anneeProdPresume.getData())?then("(Présumé)", ""))>
441 <#if ObjectField_productionDateStartPrecision.getData() == "entre" && ObjectField_productionDateEnd.getData()?hasContent>
442 <#assign dateEnd = ObjectField_productionDateEnd.getData()?datetime("dd/MM/yyyy HH:mm")?string("YYYY") + (getterUtil.getBoolean(ObjectField_productionDateEndPrecision.getData())?then("(Présumé)", ""))>
443 <span>Entre ${[dateStart, dateEnd]?join(" - ")}</span>
444 <#else>
445 <#assign dateEnd = (ObjectField_productionDateEnd.getData()?hasContent)?then(ObjectField_productionDateEnd.getData()?datetime("dd/MM/yyyy HH:mm")?string("YYYY") + (getterUtil.getBoolean(ObjectField_productionDateEndPrecision.getData())?then("(Présumé)", "")), "")>
446 <span>${[dateStart, dateEnd]?filter(d -> d?hasContent)?join(" - ")}</span>
447 </#if>
448 </#if>
449 </p>
450 </#if>
451
452 <#if dimensions?hasContent>
453 <div class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
454 <p id="dimensions-tlt" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Dimensions
455 :</p>
456 <ul aria-labelledby="dimensions-tlt">
457 <#list dimensions as dimension>
458 <li>${dimension.values.dimensionFree}</li>
459 </#list>
460 </ul>
461 </div>
462 </#if>
463
464 <#if ObjectField_physicalDescription.getData()?hasContent>
465 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
466 <span class="tw:font-bold tw:shrink-0">Description physique :</span>
467 <span>${ObjectField_physicalDescription.getData()}</span>
468 </p>
469 </#if>
470 </div>
471 </#if>
472
473 <div id="contexte" class="js-summary-content" tabindex="-1"></div>
474 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
475 tw:before:content-[''] tw:before:block tw:before:relative tw:before:top-[-2.5rem] tw:before:h-[0.0625rem] tw:before:w-full tw:before:ml-auto tw:before:bg-text tw:before:opacity-40">
476 <h2 class="tw:text-prim tw:mb-5">${summary["ContexteArchive"]?hasContent?then(summary["ContexteArchive"], "Contexte")}</h2>
477
478 <#if creatorsFull?hasContent>
479 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
480 <span class="tw:font-bold tw:shrink-0">Producteur :</span>
481 <span><#list creatorsFull as creator>
482 <#if creator.id?hasContent>
483 <a href="/l/${creator.id}"
484 class="tw:font-bold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.0625rem] tw:hover:bg-size-[0_0.0625rem]">
485 ${creator.name}
486 </a>
487 <#else>
488 ${creator.name}
489 </#if><#if !creator?isLast> ; </#if></#list></span>
490 </p>
491 </#if>
492
493 <#if creatorBiographies?hasContent>
494 <div class="tw:mb-10 tw:mt-5">
495 <h3 class="tw:mb-[0.625rem]">Biographie</h3>
496 <div class="js-read-more" data-clamp-line="8" data-line-height="1.625">
497 <#list creatorBiographies as biographie>
498 <div class="wysiwyg--notice tw:mb-[0.625rem]">${biographie.values.biography}</div>
499 </#list>
500 </div>
501 <button type="button"
502 class="tw:hidden tw:items-center tw:leading-[1.75rem] tw:mt-[0.625rem] tw:group tw:gap-[0.3125rem] tw:font-bold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.125rem] tw:hover:bg-size-[0_0.125rem]">
503 <span>Lire plus</span>
504 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
505 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
506 </button>
507 </div>
508 </#if>
509
510 <#if ObjectField_objectHistoryNote.getData()?hasContent>
511 <div class="tw:mb-10">
512 <div class="tw:mb-[0.625rem]">
513 <h3 class="tw:mb-[0.625rem]">Historique de la conservation</h3>
514 <div class="js-read-more" data-clamp-line="8" data-line-height="1.625">
515 <div class="wysiwyg--notice">
516 ${ObjectField_objectHistoryNote.getData()}
517 </div>
518 </div>
519 <button type="button"
520 class="tw:hidden tw:items-center tw:leading-[1.75rem] tw:mt-[0.625rem] tw:group tw:gap-[0.3125rem] tw:font-bold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.125rem] tw:hover:bg-size-[0_0.125rem]">
521 <span>Lire plus</span>
522 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
523 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
524 </button>
525 </div>
526 </div>
527 </#if>
528
529 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mt-5">
530 <h3 class="tw:mb-5">Structure du fonds</h3>
531 <ul>
532 <@renderTree node=hierarchy />
533 </ul>
534 </div>
535 </div>
536
537
538 <#if showContent>
539 <div id="content-structure" class="js-summary-content" tabindex="-1"></div>
540 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
541 tw:before:content-[''] tw:before:block tw:before:relative tw:before:top-[-2.5rem] tw:before:h-[0.0625rem] tw:before:w-full tw:before:ml-auto tw:before:bg-text tw:before:opacity-40">
542 <h2 class="tw:text-prim tw:mb-5">${summary["ContenuEtStructureArchive"]?hasContent?then(summary["ContenuEtStructureArchive"], "Contenu et structure")}</h2>
543
544 <#if ObjectField_contentDescription.getData()?hasContent>
545 <div class="tw:flex tw:max-md:flex-col tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem] tw:[&_p]:leading-[1.375rem]!">
546 <p class="tw:font-bold tw:shrink-0">Portée et contenu :</p>
547 <span class="tw:[&_p]:font-normal!">${ObjectField_contentDescription.getData()}</span>
548 </div>
549 </#if>
550
551 <#if accruals?hasContent>
552 <#list accruals as accrual>
553 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
554 <span class="tw:font-bold tw:shrink-0">Accroissement :</span>
555 <span>${accrual.values.accruals}</span>
556 </p>
557 </#list>
558 </#if>
559
560 <#if systemArrangements?hasContent>
561 <#list systemArrangements as systemArrangement>
562 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
563 <span class="tw:font-bold tw:shrink-0">Mode de classement :</span>
564 <span>
565 <span class="js-read-more" data-clamp-line="5" data-line-height="1.375">
566 ${systemArrangement.values.arrangement}
567 </span>
568 <button type="button"
569 class="tw:hidden tw:items-center tw:leading-[1.75rem] tw:mt-[0.625rem] tw:group tw:gap-[0.3125rem] tw:font-bold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.125rem] tw:hover:bg-size-[0_0.125rem]">
570 <span>Lire plus</span>
571 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
572 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
573 </button>
574 </span>
575 </p>
576 </#list>
577 </#if>
578
579 <#if authorsFull?hasContent>
580 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
581 <span class="tw:font-bold tw:shrink-0">Auteur(s) :</span>
582 <span><#list authorsFull as author>
583 <#if author.personne.id?hasContent>
584 <a href="/l/${author.personne.id}"
585 class="tw:font-bold tw:group">
586 <span class="tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.0625rem] tw:group-hover:bg-size-[0_0.0625rem]">${author.personne.name}</span>
587 </a>
588 <#else>
589 ${author.personne.name}
590 </#if><#if author.function?hasContent> (${garance.getPicklistItemName(author.function, "picklistArchiveAuthorFunction")})</#if><#if getterUtil.getBoolean(author.presume)> (Présumé)</#if><#if !author?isLast>, </#if></#list></span>
591 </p>
592 </#if>
593
594 <#if classifications?hasContent>
595 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
596 <span class="tw:font-bold tw:shrink-0">Famille / Activité :</span>
597 <span>
598 <#list classifications as classification>
599 ${[(classification.values.r_archiveClassificationTypeOfFile_c_thesaurusId != 0)?then(garance.getThesaurusByID(classification.values.r_archiveClassificationTypeOfFile_c_thesaurusId), ""), (classification.values.activityType?hasContent)?then(garance.getPicklistItemName(classification.values.activityType, "picklistArchiveActivityType"), "")]?filter(v->v?hasContent)?join(" - ")}<#if !classification?isLast>, </#if>
600 </#list>
601 </span>
602 </p>
603 </#if>
604
605 <#if objectCats?hasContent>
606 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
607 <span class="tw:font-bold tw:shrink-0">Type de document :</span>
608 <span>${objectCats?map(oc-> oc.values.label)?join(", ")}</span>
609 </p>
610 </#if>
611
612 <#if linkedFilmsFull?hasContent>
613 <div class="tw:flex tw:flex-col tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
614 <p id="films-tlt" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Film(s) :</p>
615 <div class="wysiwyg js-list-expand">
616 <ul aria-labelledby="films-tlt">
617 <#list linkedFilmsFull as linkedFilm>
618 <li <#if (linkedFilm?index > 4)>class="tw:hidden"</#if>>
619 <#if linkedFilm.id?hasContent>
620 <a href="/l/${linkedFilm.id}"
621 class="tw:font-bold! tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.125rem] tw:hover:bg-size-[0_0.125rem]">
622 ${linkedFilm.title}
623 </a>
624 <#else>
625 ${linkedFilm.title}
626 </#if>
627 <#if linkedFilm.reals?hasContent> -
628 <#list linkedFilm.reals as real>
629 <#if real.id?hasContent>
630 <a class="tw:font-bold! tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.125rem] tw:hover:bg-size-[0_0.125rem]"
631 href="/l/${real.id}">
632 ${real.name}
633 </a>
634 <#else>
635 ${real.name}
636 </#if>
637 <#if !real?isLast>, </#if>
638 </#list>
639 </#if>
640 <#if linkedFilm.year?hasContent> - ${linkedFilm.year}</#if>
641 </li>
642 </#list>
643 </ul>
644 <#if (linkedFilmsFull?size > 5)>
645 <button type="button"
646 class="js-expand tw:items-center tw:leading-[1.75rem] tw:group tw:flex tw:gap-[0.3125rem] tw:font-semibold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.125rem] tw:hover:bg-size-[0_0.125rem]">
647 <span>Voir plus</span>
648 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
649 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
650 </button>
651 </#if>
652 </div>
653 </div>
654 </#if>
655
656 <#if representedPersonnes?hasContent>
657 <#assign representedPersonnes = representedPersonnes?map(rp -> garance.getPersonneDisplayData(rp.objectEntryId))>
658 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
659 <span class="tw:font-bold tw:shrink-0">Personne(s) représentée(s) :</span>
660 <span><#list representedPersonnes as rp><#if rp.id?hasContent>
661 <a href="/l/${rp.id}"
662 class="tw:font-bold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.0625rem] tw:hover:bg-size-[0_0.0625rem]">
663 ${rp.name}
664 </a>
665 <#else>${rp.name}</#if><#if !rp?isLast>, </#if>
666 </#list></span>
667 </p>
668 </#if>
669
670 <#if subjectPersonnes?hasContent>
671 <#assign subjectPersonnes = subjectPersonnes?map(sp -> garance.getPersonneDisplayData(sp.objectEntryId))>
672 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
673 <span class="tw:font-bold tw:shrink-0">Personne(s) sujet :</span>
674 <span><#list subjectPersonnes as sp><#if sp.id?hasContent>
675 <a href="/l/${sp.id}"
676 class="tw:font-bold tw:transition-all tw:bg-linear-[currentcolor,currentcolor] tw:bg-no-repeat tw:bg-bottom-left tw:bg-size-[100%_0.0625rem] tw:hover:bg-size-[0_0.0625rem]">
677 ${sp.name}
678 </a>
679 <#else>${sp.name}</#if><#if !sp?isLast>, </#if>
680 </#list></span>
681 </p>
682 </#if>
683
684 <#if themes?hasContent>
685 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
686 <span class="tw:font-bold tw:shrink-0">Thème :</span>
687 <span>${themes?map(t->t.values.label)?join(", ")}</span>
688 </p>
689 </#if>
690
691 <#if representations?hasContent>
692 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
693 <span class="tw:font-bold tw:shrink-0">Représentation :</span>
694 <span>${representations?map(r->r.values.label)?join(", ")}</span>
695 </p>
696 </#if>
697
698 <#if representationsSource?hasContent>
699 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
700 <span class="tw:font-bold tw:shrink-0">Source de la représentation :</span>
701 <span>${representationsSource?map(rs->rs.values.label)?join(", ")}</span>
702 </p>
703 </#if>
704
705 <#if styles?hasContent>
706 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
707 <span class="tw:font-bold tw:shrink-0">Époque/Style/Mouvement :</span>
708 <span>${styles?map(s->s.values.label)?join(", ")}</span>
709 </p>
710 </#if>
711
712 </div>
713 </#if>
714
715 <div id="access" class="js-summary-content" tabindex="-1"></div>
716 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
717 tw:before:content-[''] tw:before:block tw:before:relative tw:before:top-[-2.5rem] tw:before:h-[0.0625rem] tw:before:w-full tw:before:ml-auto tw:before:bg-text tw:before:opacity-40">
718 <h2 class="tw:text-prim tw:mb-5">${summary["ConditionsDaccesEtUtilisationArchive"]?hasContent?then(summary["ConditionsDaccesEtUtilisationArchive"], "Conditions d'accès et utilisation")}</h2>
719 <div class="tw:bg-white tw:flex tw:items-center tw:p-5 tw:gap-[0.625rem] tw:w-fit tw:mb-[0.625rem]">
720 <span class="icon-info tw:text-prim tw:text-base tw:text-[1.125rem]" aria-hidden="true"></span>
721 <p class="tw:font-bold tw:leading-[1.25rem]">Toute demande de reproduction est soumise à une
722 autorisation
723 préalable</p>
724 </div>
725
726 <#if langues?hasContent>
727 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
728 <span class="tw:font-bold tw:shrink-0">Langue :</span>
729 <span>${langues?map(l->l.values.label)?join(", ")}</span>
730 </p>
731 </#if>
732
733 <#if ObjectField_recommendationHandling.getData()?hasContent>
734 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
735 <span class="tw:font-bold tw:shrink-0">Précautions :</span>
736 <span>${ObjectField_recommendationHandling.getData()}</span>
737 </p>
738 </#if>
739 </div>
740
741 <#if showConsultation>
742 <div id="consultation" class="js-summary-content" tabindex="-1"></div>
743 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
744 tw:before:content-[''] tw:before:block tw:before:relative tw:before:top-[-2.5rem] tw:before:h-[0.0625rem] tw:before:w-full tw:before:ml-auto tw:before:bg-text tw:before:opacity-40">
745 <h2 class="tw:text-prim tw:mb-5">${summary["ConsultationArchive"]?hasContent?then(summary["ConsultationArchive"], "Consultation")}</h2>
746
747 <#if ObjectField_cote.getData()?hasContent>
748 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
749 <span class="tw:font-bold tw:shrink-0">Référence :</span>
750 <span>${ObjectField_cote.getData()}</span>
751 </p>
752 </#if>
753
754 <#if ObjectField_barcode.getData()?hasContent>
755 <p class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
756 <span class="tw:font-bold tw:shrink-0">Cote boîte :</span>
757 <span>${ObjectField_barcode.getData()}</span>
758 </p>
759 </#if>
760
761 <#if archiveConsultation?hasContent>
762 <div class="tw:flex tw:max-md:flex-col tw:max-lg:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
763 <p id="consultation-tl" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Lieux de
764 consultation et conditions d'accès
765 :</p>
766 <ul aria-labelledby="consultation-tl">
767 <#assign consultationFull = {}>
768 <#list archiveConsultation as consultation>
769 <#assign lieu = consultation.values.lieuDeConsultation>
770 <#assign acces = consultation.values.accesConditions>
771 <#if consultationFull[lieu]??>
772 <#if !(consultationFull[lieu]?seqContains(acces))>
773 <#assign consultationFull = consultationFull + {lieu: consultationFull[lieu] + [acces]}>
774 </#if>
775 <#else>
776 <#assign consultationFull = consultationFull + {lieu: [acces]}>
777 </#if>
778 </#list>
779 <#list consultationFull as lieu, access>
780 <li>${garance.getPicklistItemName(lieu, "picklistLieuDeConsultation")} -
781 ${access?map(a -> garance.getPicklistItemName(a, "picklistAccesConditions"))?join(" - ")}</li>
782 </#list>
783 </ul>
784 </div>
785 </#if>
786 </div>
787 </#if>
788
789 <#if showDocuments>
790 <div id="document" class="js-summary-content" tabindex="-1"></div>
791 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
792 tw:before:content-[''] tw:before:block tw:before:relative tw:before:top-[-2.5rem] tw:before:h-[0.0625rem] tw:before:w-full tw:before:ml-auto tw:before:bg-text tw:before:opacity-40">
793 <h2 class="tw:text-prim tw:mb-5">${summary["DocumentsAssociesArchive"]?hasContent?then(summary["DocumentsAssociesArchive"], "Documents associés")}</h2>
794 <p>${ObjectField_complementarySource.getData()}</p>
795 </div>
796 </#if>
797 </div>
798
799 <#if showMedia>
800 <#assign medias = []>
801 <#if reproductionsVideos?hasContent>
802 <#assign medias = medias + [{
803 "type": "video",
804 "title": "Vidéos",
805 "reproductions": reproductionsVideos
806 }]>
807 </#if>
808 <#if reproductionsImages?hasContent>
809 <#assign medias = medias + [{
810 "type": "image",
811 "title": "Images",
812 "reproductions": reproductionsImages
813 }]>
814 </#if>
815 <div id="ressources" class="js-summary-content" tabindex="-1"></div>
816 <div class="page-wrapper tw:py-10">
817 <h2 id="ressources-tl"
818 class="tw:text-prim tw:mb-5">${summary["RessourcesMediaArchive"]?hasContent?then(summary["RessourcesMediaArchive"], "Ressources média")}</h2>
819 <@garance.displayMedia data=medias />
820 </div>
821 </#if>
822 <#if showCollection>
823 <div id="collections" class="js-summary-content" tabindex="-1"></div>
824 <div class="page-wrapper tw:py-10">
825 <h2 id="collections-tl"
826 class="tw:text-prim tw:mb-5">${summary["CollectionsLieesArchive"]?hasContent?then(summary["CollectionsLieesArchive"], "Collections liées")}</h2>
827 <@garance.displayCollection relatedObjectsFull />
828 </div>
829 <script type="module" async>
830 import('photoswipe')
831 import('photoswipe-lightbox')
832 </script>
833 </#if>
834 </div>
835</div>