Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> imprimeurs[impression?index] [in template "22823141604726#20121#null" at line 116, column 79]
----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign impressionsFull = impressions... [in template "22823141604726#20121#null" at line 115, column 5]
----
1<#assign
2dlAppLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
3dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
4
5objectDefinitionLocalService = serviceLocator.findService("com.liferay.object.service.ObjectDefinitionLocalService")
6objectEntryLocalService = serviceLocator.findService("com.liferay.object.service.ObjectEntryLocalService")
7objectRelationshipLocalService = serviceLocator.findService("com.liferay.object.service.ObjectRelationshipLocalService")
8/>
9
10<#assign imagefixemanifestationID = ObjectEntry_objectEntryId.getData()?number
11imagefixemanifestationEntry = objectEntryLocalService.fetchObjectEntry(imagefixemanifestationID?number)
12imagefixemanifestationGroupID = imagefixemanifestationEntry.getGroupId()
13imagefixemanifestationTitle = garance.getImageFixeManifestationFullTitle(imagefixemanifestationEntry)
14>
15
16<#assign summary = garance.getSummaryContent("Image")>
17
18<#if imagefixemanifestationEntry.values.r_imageFixeChildManifestations_c_imageFixeId?number != 0>
19 <#assign imagefixeID = imagefixemanifestationEntry.values.r_imageFixeChildManifestations_c_imageFixeId?number
20 imagefixeEntry = objectEntryLocalService.fetchObjectEntry(imagefixeID?number)
21 imagefixeGroupID = imagefixeEntry.getGroupId()
22 >
23</#if>
24
25<#--------------------------------- Header -------------------------->
26<#assign categoryPhoto = "" />
27<#assign matPubs = [] />
28<#assign advertFileTypes = [] />
29<#if imagefixeID??>
30 <#assign matPubRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "matPubClassements")>
31 <#assign matPubs = objectEntryLocalService.getOneToManyObjectEntries(imagefixeGroupID, matPubRel.objectRelationshipId, imagefixeID, true, null, -1, -1 ) />
32 <#assign advertFileTypes = matPubs?filter(m -> m.values.advertFileType?hasContent)?map(m -> garance.getPicklistItemName(m.values.advertFileType, "picklistAdvertFileType"))?join(', ') />
33 <#if imagefixeEntry.values.categoryPhoto?hasContent>
34 <#assign photoCategories = garance.getMultiplePicklistItemName(imagefixeEntry.values.categoryPhoto, "picklistCategoryPhoto") />
35 <#if photoCategories?hasContent>
36 <#assign categoryPhoto = photoCategories?join(", ") />
37 </#if>
38 </#if>
39</#if>
40
41<#assign auteursFull = []>
42<#if imagefixeID??>
43 <#assign auteursRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeAutheurs")>
44 <#assign auteurs = objectEntryLocalService.getOneToManyObjectEntries(imagefixeGroupID, auteursRel.objectRelationshipId, imagefixeID, true, null, -1, -1 ) />
45 <#list auteurs as auteur>
46 <#assign auteursFull = auteursFull + [{
47 "personne": garance.getPersonneDisplayData(auteur.values.r_imageFixeAuteurPersonne_c_transitionPersonneId),
48 "presume": auteur.values.creatorPresume,
49 "type": garance.getPicklistItemName(auteur.values.castCreditType, "picklistImprimeCastCreditType")
50 }]>
51 </#list>
52</#if>
53
54<#assign productionDatesFull = []>
55<#if imagefixeID??>
56 <#assign productionDatesRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "productionDate")>
57 <#assign productionDates = objectEntryLocalService.getOneToManyObjectEntries(imagefixeGroupID, productionDatesRel.objectRelationshipId, imagefixeID, true, null, -1, -1 ) />
58 <#if productionDates?hasContent>
59 <#list productionDates as productionDate>
60 <#assign productionDatesFull = productionDatesFull + [{
61 "presumeCountry": productionDate.values.afficheIdentificationPaysPres,
62 "country": garance.getThesaurusByID(productionDate.values.r_imageFixePosterIdentificationCountry_c_thesaurusId),
63 "presumeDate": productionDate.values.anneeDeProdPresume,
64 "startDate": (productionDate.values.productionStartDate?hasContent)?then(productionDate.values.productionStartDate?string("yyyy"), "")
65 }]>
66 </#list>
67 </#if>
68</#if>
69
70<#--------------------------------- Identité -------------------------->
71
72<#assign relatedFilmsFull = []>
73<#assign manifestations = []>
74<#assign languagesFull = []>
75
76<#if imagefixeID??>
77 <#assign relatedFilmsRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeRelatedObject")>
78 <#assign relatedFilms = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, relatedFilmsRel.objectRelationshipId, imagefixeID, true, relatedFilmsRel.isReverse(), null, -1, -1 ) />
79 <#list relatedFilms as relatedFilm>
80 <#assign filmData = garance.getFilmDisplayData(relatedFilm)>
81 <#if filmData?hasContent>
82 <#assign relatedFilmsFull = relatedFilmsFull + [filmData]>
83 </#if>
84 </#list>
85
86 <#assign manifestationsRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeChildManifestations")>
87 <#assign manifestations = objectEntryLocalService.getOneToManyObjectEntries(imagefixeGroupID, manifestationsRel.objectRelationshipId, imagefixeID, true, null, -1, -1 ) />
88 <#assign manifestations = manifestations?filter(manif -> manif.getObjectEntryId() != imagefixemanifestationID)>
89
90 <#assign languagesRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeLanguages")>
91 <#assign languages = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, languagesRel.objectRelationshipId, imagefixeID, true, languagesRel.isReverse(), null, -1, -1 ) />
92 <#assign languagesFull = languages?filter(l-> l.values.label?hasContent)>
93</#if>
94
95<#assign showIdentity = (relatedFilmsFull?hasContent
96|| productionDatesFull?filter(p -> p.country?hasContent)?hasContent
97|| languagesFull?hasContent
98|| (imagefixeEntry?? && imagefixeEntry.values.posterVariant?hasContent)
99|| (imagefixeEntry?? && imagefixeEntry.values.posterAuthorMentionDeResponsabilite?hasContent && imagefixeEntry.values.posterTypeDeNoteMentionDeResponsabilite == "MENTION")
100)>
101
102<#--------------------------------- Publication -------------------------->
103
104
105<#assign impressionsRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "imageFixeManifestationPrints")>
106<#assign impressions = objectEntryLocalService.getOneToManyObjectEntries(imagefixemanifestationGroupID, impressionsRel.objectRelationshipId, imagefixemanifestationID, true, null, -1, -1 ) />
107
108<#assign imprimeursRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "imageFixeManifestationPosterPrintName")>
109<#assign imprimeurs = objectEntryLocalService.getManyToManyObjectEntries(imagefixemanifestationGroupID, imprimeursRel.objectRelationshipId, imagefixemanifestationID, true, imprimeursRel.isReverse(), null, -1, -1 ) />
110
111<#assign withoutPrinterMention = false>
112<#assign impressionsFull = []>
113<#list impressions as impression>
114 <#assign withoutPrinterMention = (impression.values.printSansMentionImprimeur?hasContent)?then(impression.values.printSansMentionImprimeur, false)>
115 <#assign impressionsFull = impressionsFull + [{
116 "imprimeur" : (imprimeurs?hasContent)?then(garance.getPersonneDisplayData(imprimeurs[impression?index].objectEntryId).name, ""),
117 "country": (impression.values.r_imageFixeManifestationPrintCountry_c_thesaurusId != 0)?then(garance.getThesaurusByID(impression.values.r_imageFixeManifestationPrintCountry_c_thesaurusId) + (getterUtil.getBoolean(impression.values.printCountryPresume))?then(" (Présumé)", ""), ""),
118 "place": (impression.values.printPlace?hasContent)?then(impression.values.printPlace + (getterUtil.getBoolean(impression.values.printPlacePresume))?then(" (Présumé)", ""), ""),
119 "startDate": (impression.values.printYear?hasContent)?then(impression.values.printYear?string("yyyy") + (getterUtil.getBoolean(impression.values.printYearPresume))?then(" (Présumé)", ""), "")
120 }]>
121</#list>
122
123<#assign distributionsRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "distributions")>
124<#assign distributions = objectEntryLocalService.getOneToManyObjectEntries(imagefixemanifestationGroupID, distributionsRel.objectRelationshipId, imagefixemanifestationID, true, null, -1, -1 ) />
125
126<#assign distributeursRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "imageFixeManifestationDistributionName")>
127<#assign distributeurs = objectEntryLocalService.getManyToManyObjectEntries(imagefixemanifestationGroupID, distributeursRel.objectRelationshipId, imagefixemanifestationID, true, distributeursRel.isReverse(), null, -1, -1 ) />
128
129<#assign distributionsFull = []>
130<#if distributions?hasContent>
131 <#list distributions as distribution>
132 <#assign distributionsFull = distributionsFull + [{
133 "distributeur" : (distributeurs?hasContent)?then(garance.getPersonneDisplayData(distributeurs[distribution?index].objectEntryId).name, ""),
134 "country": (distribution.values.r_imageFixeManifestationDistributionCountry_c_thesaurusId != 0)?then(garance.getThesaurusByID(distribution.values.r_imageFixeManifestationDistributionCountry_c_thesaurusId) + (getterUtil.getBoolean(distribution.values.distributionCountryPresume))?then(" (Présumé)", ""), ""),
135 "place": (distribution.values.distributionPlace?hasContent)?then(distribution.values.distributionPlace + (getterUtil.getBoolean(distribution.values.distributionPlacePresume))?then(" (Présumé)", ""), ""),
136 "startDate": (distribution.values.distributionYear?hasContent)?then(distribution.values.distributionYear?string("yyyy") + (getterUtil.getBoolean(distribution.values.distributionYearPresume))?then(" (Présumé)", ""), "")
137 }]>
138 </#list>
139</#if>
140
141<#assign exploitationsRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "exploitations")>
142<#assign exploitations = objectEntryLocalService.getOneToManyObjectEntries(imagefixemanifestationGroupID, exploitationsRel.objectRelationshipId, imagefixemanifestationID, true, null, -1, -1 ) />
143
144<#assign exploitantsRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "imageFixeManifestationExplooitationName")>
145<#assign exploitants = objectEntryLocalService.getManyToManyObjectEntries(imagefixemanifestationGroupID, exploitantsRel.objectRelationshipId, imagefixemanifestationID, true, exploitantsRel.isReverse(), null, -1, -1 ) />
146
147<#assign exploitationsFull = []>
148<#if exploitations?hasContent>
149 <#list exploitations as exploitation>
150 <#assign exploitationsFull = exploitationsFull + [{
151 "exploitant" : (exploitants?hasContent)?then(garance.getPersonneDisplayData(exploitants[exploitation?index].objectEntryId).name, ""),
152 "country": (exploitation.values.r_imageFixeManifestationExploitationCountry_c_thesaurusId != 0)?then(garance.getThesaurusByID(exploitation.values.r_imageFixeManifestationExploitationCountry_c_thesaurusId) + (getterUtil.getBoolean(exploitation.values.exploitationCountryPresume))?then(" (Présumé)", ""), ""),
153 "place": (exploitation.values.exploitationPlace?hasContent)?then(exploitation.values.exploitationPlace + (getterUtil.getBoolean(exploitation.values.exploitationPlacePresume))?then(" (Présumé)", ""), ""),
154 "startDate": (exploitation.values.exploitationYear?hasContent)?then(exploitation.values.exploitationYear?string("yyyy") + (getterUtil.getBoolean(exploitation.values.exploitationYearPresume))?then(" (Présumé)", ""), "")
155 }]>
156 </#list>
157</#if>
158
159<#assign showPublication = (impressionsFull?hasContent
160|| distributionsFull?hasContent
161|| exploitationsFull?hasContent) />
162
163<#--------------------------------- Description du contenu -------------------------->
164<#assign imageFixeObjectCategory = [] />
165<#assign personRepresented = [] />
166<#assign contenuDuMateriel = [] />
167<#assign contenuVisuelDuMateriel = [] />
168<#assign personSujet = [] />
169<#assign imageFixeContentTheme = [] />
170<#assign imageFixeRepresentation = [] />
171<#assign imageFixeSourceOfPresentation = [] />
172<#assign imageFixeStyle = [] />
173<#assign imageFixeSchool = [] />
174
175<#if imagefixeID??>
176 <#assign imageFixeObjectCategoryRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeObjectCategory")>
177 <#assign imageFixeObjectCategory = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, imageFixeObjectCategoryRel.objectRelationshipId, imagefixeID, true, imageFixeObjectCategoryRel.isReverse(), null, -1, -1 ) />
178
179 <#assign personRepresentedRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixePersonRepresented")>
180 <#assign personRepresented = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, personRepresentedRel.objectRelationshipId, imagefixeID, true, personRepresentedRel.isReverse(), null, -1, -1 ) />
181
182 <#assign contenuDuMaterielRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "contenuDuMateriel")>
183 <#assign contenuDuMateriel = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, contenuDuMaterielRel.objectRelationshipId, imagefixeID, true, contenuDuMaterielRel.isReverse(), null, -1, -1 ) />
184
185 <#assign contenuVisuelDuMaterielRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "contenuVisuelDuMateriel")>
186 <#assign contenuVisuelDuMateriel = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, contenuVisuelDuMaterielRel.objectRelationshipId, imagefixeID, true, contenuVisuelDuMaterielRel.isReverse(), null, -1, -1 ) />
187
188 <#assign personSujetRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixePersonneSujet")>
189 <#assign personSujet = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, personSujetRel.objectRelationshipId, imagefixeID, true, personSujetRel.isReverse(), null, -1, -1 ) />
190
191 <#assign imageFixeContentThemeRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeContentTheme")>
192 <#assign imageFixeContentTheme = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, imageFixeContentThemeRel.objectRelationshipId, imagefixeID, true, imageFixeContentThemeRel.isReverse(), null, -1, -1 ) />
193
194 <#assign imageFixeRepresentationRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeRepresentation")>
195 <#assign imageFixeRepresentation = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, imageFixeRepresentationRel.objectRelationshipId, imagefixeID, true, imageFixeRepresentationRel.isReverse(), null, -1, -1 ) />
196
197 <#assign imageFixeSourceOfPresentationRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeSourceOfPresentation")>
198 <#assign imageFixeSourceOfPresentation = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, imageFixeSourceOfPresentationRel.objectRelationshipId, imagefixeID, true, imageFixeSourceOfPresentationRel.isReverse(), null, -1, -1 ) />
199
200 <#assign imageFixeStyleRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeStyle")>
201 <#assign imageFixeStyle = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, imageFixeStyleRel.objectRelationshipId, imagefixeID, true, imageFixeStyleRel.isReverse(), null, -1, -1 ) />
202
203 <#assign imageFixeSchoolRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeSchool")>
204 <#assign imageFixeSchool = objectEntryLocalService.getManyToManyObjectEntries(imagefixeGroupID, imageFixeSchoolRel.objectRelationshipId, imagefixeID, true, imageFixeSchoolRel.isReverse(), null, -1, -1 ) />
205</#if>
206
207<#assign advertFileFamilles = matPubs?filter(m -> m.values.r_advertTypeOfFile_c_thesaurusId != 0)?map(m -> garance.getThesaurusByID(m.values.r_advertTypeOfFile_c_thesaurusId))?join(', ') />
208
209<#assign showDescription = (imageFixeObjectCategory?hasContent
210|| contenuDuMateriel?hasContent
211|| contenuVisuelDuMateriel?hasContent
212|| advertFileFamilles?hasContent
213|| personRepresented?hasContent
214|| personSujet?hasContent
215|| imageFixeContentTheme?hasContent
216|| imageFixeRepresentation?hasContent
217|| imageFixeSourceOfPresentation?hasContent
218|| imageFixeStyle?hasContent
219|| imageFixeSchool?hasContent
220|| getterUtil.getBoolean(ObjectField_illustrated.getData()))>
221
222<#--------------------------------- Description matérielle -------------------------->
223
224<#assign dimensionsRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "imageFixeManifestationDimension")>
225<#assign dimensions = objectEntryLocalService.getOneToManyObjectEntries(imagefixemanifestationGroupID, dimensionsRel.objectRelationshipId, imagefixemanifestationID, true, null, -1, -1 ) />
226
227<#assign showMateriel = (
228ObjectField_naturePhoto.getData()?hasContent
229|| ObjectField_physicalDescription.getData()?hasContent
230|| ObjectField_posterDigitalTechnicalDescription.getData()?hasContent
231|| ObjectField_accompanyingMaterial.getData()?hasContent
232|| ObjectField_natureDeSupport.getData()?hasContent
233|| ObjectField_typeOfContent.getData()?hasContent
234|| ObjectField_technicalCategory.getData()?hasContent
235|| ObjectField_afficheProcedeTechnique.getData()?hasContent
236|| ObjectField_colourBW.getData()?hasContent
237|| dimensions?hasContent
238|| (ObjectField_nombrePieces.getData()?hasContent || ObjectField_nombreFeuilles.getData()?hasContent)
239|| ObjectField_nombreDeContenant.getData()?hasContent
240)>
241
242<#--------------------------------- Exemplaires -------------------------->
243
244<#assign itemsRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "imageManifestationChildItems")>
245<#assign items = objectEntryLocalService.getOneToManyObjectEntries(imagefixemanifestationGroupID, itemsRel.objectRelationshipId, imagefixemanifestationID, true, null, -1, -1 ) />
246
247<#assign showExemplaires = items?hasContent>
248
249
250<#--------------------------------- Media -------------------------->
251<#assign reproductionsRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "imageFixeManifestationReproductions")>
252<#assign reproductions = objectEntryLocalService.getManyToManyObjectEntries(imagefixemanifestationGroupID, reproductionsRel.objectRelationshipId, imagefixemanifestationID, true, reproductionsRel.isReverse(), null, -1, -1 ) />
253
254<#assign reproductionsImages = []>
255<#assign reproductionsVideos = []>
256<#if reproductions?hasContent>
257 <#list reproductions as reproduction>
258 <#if reproduction.values.reproductionNature?hasContent>
259 <#if reproduction.values.reproductionNature == "PICTURE" && reproduction.values.media?string != "0">
260 <#assign reproductionsImages = reproductionsImages + [reproduction]>
261 <#elseIf reproduction.values.reproductionNature == "VIDEO">
262 <#assign reproductionsVideos = reproductionsVideos + [reproduction]>
263 </#if>
264 </#if>
265 </#list>
266</#if>
267
268<#assign showMedia = (reproductionsImages?hasContent || reproductionsVideos?hasContent)>
269
270<#--------------------------------- Collections -------------------------->
271
272<#assign relatedObjectsFull = {} />
273
274<#if imagefixeID??>
275 <#assign relatedObjectsRel = objectRelationshipLocalService.getObjectRelationship(imagefixeEntry.objectDefinitionId, "imageFixeTypeDeRelation")>
276 <#assign relatedObjects = objectEntryLocalService.getOneToManyObjectEntries(imagefixeGroupID, relatedObjectsRel.objectRelationshipId, imagefixeID, true, null, -1, -1 ) />
277 <#assign relatedObjectsFull = garance.getRelatedObjects(relatedObjects, imagefixeEntry, true)>
278</#if>
279
280<#assign relatedObjectsManifRel = objectRelationshipLocalService.getObjectRelationship(imagefixemanifestationEntry.objectDefinitionId, "ifmTypeDeRelation")>
281<#assign relatedObjectsManif = objectEntryLocalService.getOneToManyObjectEntries(imagefixemanifestationGroupID, relatedObjectsManifRel.objectRelationshipId, imagefixemanifestationID, true, null, -1, -1 ) />
282<#assign relatedObjectsFull = relatedObjectsFull + garance.getRelatedObjects(relatedObjectsManif, imagefixemanifestationEntry, true)>
283
284<#assign showCollection = relatedObjectsFull?hasContent>
285
286<div class="notice notice--imagefixe js-notice">
287 <div class="notice-header tw:text-white tw:pt-[3.375rem] tw:pb-[2.5rem] tw:relative tw:overflow-hidden
288 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
289 tw:xl:pt-[9.5rem]">
290 <div class="page-wrapper tw:z-0 tw:relative">
291 <div class="tw:flex tw:gap-5 tw:items-start tw:flex-wrap tw:flex-col tw:z-0
292 tw:md:flex-row tw:lg:flex-nowrap
293 tw:xl:gap-[2.125rem]">
294 <div class="tw:order-2 tw:lg:order-1 tw:flex tw:flex-col tw:w-full tw:text-center
295 tw:md:w-fit tw:md:text-left">
296 <#if imagefixemanifestationTitle?hasContent>
297 <h1 class="tw:order-1 tw:text-prim tw:mb-[0.625rem]">
298 ${imagefixemanifestationTitle}
299 </h1>
300 </#if>
301 <#if !reproductionsImages?hasContent && (imagefixeEntry?? && imagefixeEntry.values.dataset?hasContent)>
302 <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
303 tw:md:mx-0">
304 ${garance.getPicklistItemName(imagefixeEntry.values.dataset, "picklistDataset")}
305 </p>
306 </#if>
307 <div class="tw:order-1 tw:relative tw:pt-5 tw:mt-5 tw:text-left
308 tw:before:block tw:before:content-[''] tw:before:absolute tw:before:top-0 tw:before:h-[0.0625rem] tw:before:w-full tw:before:bg-white tw:before:opacity-20
309 tw:md:before:w-[12.8125rem] ">
310 <#if ObjectField_typeDOeuvreAffiche.getData()?hasContent || advertFileTypes?hasContent || categoryPhoto?hasContent>
311 <p class="tw:mb-[0.625rem]">
312 ${[ObjectField_typeDOeuvreAffiche.getData(), advertFileTypes, categoryPhoto]?filter(f-> f?hasContent)?join(' - ')}
313 </p>
314 </#if>
315 <#if auteursFull?hasContent>
316 <p class="tw:mb-[0.625rem]">
317 Auteur(s) :
318 <#list auteursFull as auteur>
319 <#if auteur.personne.id?hasContent>
320 <a href="/l/${auteur.personne.id}"
321 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]">
322 ${auteur.personne.name}
323 </a>
324 <#else>${auteur.personne.name}</#if><#if getterUtil.getBoolean(auteur.presume)> (Présumé)</#if><#if auteur.type?hasContent> (${auteur.type})</#if><#if !auteur?isLast> ; </#if>
325 </#list>
326 </p>
327 </#if>
328 <#if productionDatesFull?hasContent>
329 <#assign prodDates = productionDatesFull?filter(p -> p.startDate?hasContent)>
330 <#list prodDates as productionDate>
331 <p class="tw:mb-[0.625rem]">
332 ${productionDate.startDate}<#if getterUtil.getBoolean(productionDate.presumeDate)> (Présumée)</#if>
333 </p>
334 </#list>
335 </#if>
336 </div>
337 </div>
338
339 <#if reproductionsImages?hasContent>
340 <div class="tw:order-1 tw:lg:order-0 tw:w-full
341 tw:md:w-fit">
342 <div class="tw:m-auto tw:mx-auto tw:max-w-full tw:w-[15.625rem] tw:relative
343 tw:md:mx-0">
344 <#if imagefixeEntry.values.dataset?hasContent>
345 <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">
346 ${garance.getPicklistItemName(imagefixeEntry.values.dataset, "picklistDataset")} </p>
347 </#if>
348 <#assign thumbnail = reproductionsImages?first>
349 <#assign fileEntryDesktop = dlAppLocalService.getFileEntry(thumbnail.values.media?number) />
350 <#assign thumbnailURL = dlURLHelper.getPreviewURL(fileEntryDesktop, fileEntryDesktop.getFileVersion(),
351 null, "",
352 !fileEntryDesktop.getFileVersion().equals(fileEntryDesktop.getLatestFileVersion()), true) />
353
354 <figure class="tw:w-full">
355 <source media="(min-width: 480px)"
356 srcset="${thumbnailURL}"/>
357 <img class="tw:rounded-xs tw:object-cover tw:size-full" alt=""
358 src="${thumbnailURL}"/>
359 <#if thumbnail.values.reproductionNotes?hasContent || thumbnail.values.reproductionCopyright?hasContent>
360 <figcaption class="tw:ml-[0.625rem] tw:opacity-70 tw:text-[0.75rem]/[1rem] tw:font-medium tw:mt-[0.3125rem]
361 tw:md:ml-0">
362 ${[thumbnail.values.reproductionNotes, thumbnail.values.reproductionCopyright]?filter(v->v?hasContent)?join(" - ")}
363 </figcaption>
364 </#if>
365 </figure>
366 </div>
367 </div>
368 </#if>
369
370 <@garance.noticeTools />
371 </div>
372 </div>
373 </div>
374
375 <div class="notice-content">
376 <div class="tw:overflow-y-clip tw:py-10">
377 <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!
378 tw:lg:top-[6.875rem] tw:lg:h-0 tw:lg:overflow-visible tw:lg:sticky
379 tw:xl:top-[8.85rem]">
380 <nav class="tw:bg-beige tw:lg:w-[14.25rem]" role="navigation" aria-labelledby="summary-title">
381 <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]
382 tw:max-lg:px-[calc(5rem/2)]
383 tw:lg:hidden" aria-label="Ouvrir/Fermer le sommaire" aria-expanded="false"
384 aria-controls="summary-list">
385 <span>Sommaire</span>
386 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:outline-offset-[-0.125rem]
387 tw:group-[&.open]:rotate-180" aria-hidden="true"></span>
388 </button>
389 <div id="summary-list" class="tw:overflow-y-auto tw:bg-white tw:transition-all tw:max-sm:px-[calc(2.5rem/2)]
390 tw:max-lg:max-h-0 tw:max-lg:px-[calc(5rem/2)] tw:max-lg:max-w-full
391 tw:group-[&.open]:max-h-[calc(100vh-(4.375rem+3.125rem))]
392 tw:lg:max-h-[calc(100vh-12.5rem)] tw:lg:bg-transparent" tabindex="-1">
393 <ul class="tw:border-sommaire-border tw:border-l-[0.125rem] tw:my-2">
394 <#if showIdentity>
395 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
396 <a href="#identite" 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]
397 tw:[&.is-active]:border-prim" tabindex="-1">
398 <span>${summary["IdentiteImage"]?hasContent?then(summary["IdentiteImage"], "Identité")}</span>
399 </a>
400 </li>
401 </#if>
402 <#if showPublication>
403 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
404 <a href="#publication" 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]
405 tw:[&.is-active]:border-prim" tabindex="-1">
406 <span>${summary["PublicationImage"]?hasContent?then(summary["PublicationImage"], "Publication")}</span>
407 </a>
408 </li>
409 </#if>
410 <#if showDescription>
411 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
412 <a href="#description" 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]
413 tw:[&.is-active]:border-prim" tabindex="-1">
414 <span>${summary["DescriptionDuContenuImage"]?hasContent?then(summary["DescriptionDuContenuImage"], "Description du contenu")}</span>
415 </a>
416 </li>
417 </#if>
418 <#if showMateriel>
419 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
420 <a href="#material" 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]
421 tw:[&.is-active]:border-prim" tabindex="-1">
422 <span>${summary["DescriptionMaterielleImage"]?hasContent?then(summary["DescriptionMaterielleImage"], "Description matérielle")}</span>
423 </a>
424 </li>
425 </#if>
426 <#if showExemplaires>
427 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
428 <a href="#exemplaires" 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]
429 tw:[&.is-active]:border-prim" tabindex="-1">
430 <span>${summary["ExemplairesImage"]?hasContent?then(summary["ExemplairesImage"], "Exemplaires")}</span>
431 </a>
432 </li>
433 </#if>
434 <#if showMedia>
435 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
436 <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]
437 tw:[&.is-active]:border-prim" tabindex="-1">
438 <span>${summary["RessourcesMediaImage"]?hasContent?then(summary["RessourcesMediaImage"], "Ressources média")}</span>
439 </a>
440 </li>
441 </#if>
442 <#if showCollection>
443 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
444 <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]
445 tw:[&.is-active]:border-prim" tabindex="-1">
446 <span>${summary["CollectionsLieesImage"]?hasContent?then(summary["CollectionsLieesImage"], "Collections liées")}</span>
447 </a>
448 </li>
449 </#if>
450 </ul>
451 </div>
452 </nav>
453 </div>
454
455 <#if imagefixeEntry??>
456 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
457 <p class="tw:flex tw:items-center tw:w-fit tw:gap-[0.3125rem] tw:text-notice">
458 <span class="icon-arrow-left tw:transition-all tw:block tw:text-[0.875rem] tw:text-prim"
459 aria-hidden="true"></span>
460 <a href="/l/${imagefixeEntry.objectEntryId}"
461 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]">
462 <span>Retour aux ressources consultables</span>
463 </a>
464 </p>
465 </div>
466 </#if>
467
468 <#if showIdentity>
469 <div id="identite" class="js-summary-content" tabindex="-1"></div>
470 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
471 <h2 class="tw:text-prim tw:mb-5">${summary["IdentiteImage"]?hasContent?then(summary["IdentiteImage"], "Identité")}</h2>
472
473 <#if relatedFilmsFull?hasContent>
474 <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]">
475 <p id="films-tlt" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Film(s) :</p>
476 <ul aria-labelledby="films-tlt">
477 <#list relatedFilmsFull as relatedFilm>
478 <li <#if (relatedFilm?index > 4)>class="tw:hidden"</#if>>
479 <#if relatedFilm.id?hasContent>
480 <a href="/l/${relatedFilm.id}"
481 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]">
482 ${relatedFilm.title}
483 </a>
484 <#else>
485 ${relatedFilm.title}
486 </#if>
487 <#if relatedFilm.reals?hasContent> -
488 <#list relatedFilm.reals as real>
489 <#if real.id?hasContent>
490 <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.0625rem] tw:hover:bg-size-[0_0.0625rem]"
491 href="/l/${real.id}">
492 ${real.name}
493 </a>
494 <#else>
495 ${real.name}
496 </#if>
497 <#if !real?isLast>, </#if>
498 </#list>
499 </#if>
500 <#if relatedFilm.year?hasContent> - ${relatedFilm.year}</#if>
501 </li>
502 </#list>
503 </ul>
504 </div>
505 </#if>
506
507
508 <#if imagefixeEntry.values.posterVariant?hasContent>
509 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
510 <span class="tw:font-bold tw:shrink-0">Version :</span>
511 <span>${garance.getPicklistItemName(imagefixeEntry.values.posterVariant, "picklistPosterVariantTypeOfVariant")}</span>
512 </p>
513 </#if>
514
515 <#if imagefixeEntry.values.posterAuthorMentionDeResponsabilite?hasContent
516 && imagefixeEntry.values.posterTypeDeNoteMentionDeResponsabilite == "MENTION">
517 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
518 <span class="tw:font-bold tw:shrink-0">Note sur l'auteur :</span>
519 <span>${imagefixeEntry.values.posterAuthorMentionDeResponsabilite}</span>
520 </p>
521 </#if>
522
523 <#list productionDatesFull as productionDate>
524 <#if productionDate.country?hasContent>
525 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
526 <span class="tw:font-bold tw:shrink-0">Pays :</span>
527 ${productionDate.country}<#if getterUtil.getBoolean(productionDate.presumeCountry)> (Présumé)</#if>
528 </p>
529 </#if>
530 </#list>
531
532 <#if languagesFull?hasContent>
533 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
534 <span class="tw:font-bold tw:shrink-0">Langue :</span>
535 <span>${languagesFull?filter(l-> l.values.label?hasContent)?map(l->l.values.label)?join(", ")}</span>
536 </p>
537 </#if>
538 </div>
539 </#if>
540
541 <#if showPublication>
542 <div id="publication" class="js-summary-content" tabindex="-1"></div>
543 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
544 <h2 class="tw:text-prim tw:mb-5">${summary["PublicationImage"]?hasContent?then(summary["PublicationImage"], "Publication")}</h2>
545 <#if withoutPrinterMention>
546 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
547 <span class="tw:font-bold tw:shrink-0">Sans mention d'imprimeur</span>
548 </p>
549 </#if>
550 <#if impressionsFull?hasContent>
551 <div class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
552 <p id="identite-print" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Imprimeur
553 :</p>
554 <ul aria-labelledby="identite-print">
555 <#list impressionsFull as impression>
556 <li>
557 ${[impression.imprimeur, impression.startDate, impression.country, impression.place]?filter(v->v?hasContent)?join(' - ')}
558 </li>
559 </#list>
560 </ul>
561 </div>
562 </#if>
563
564 <#if distributionsFull?hasContent>
565 <div class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
566 <p id="identite-distri" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Distributeur
567 :</p>
568 <ul aria-labelledby="identite-distri">
569 <#list distributionsFull as distribution>
570 <li>
571 ${[distribution.distributeur, distribution.startDate, distribution.country, distribution.place]?filter(v->v?hasContent)?join(' - ')}
572 </li>
573 </#list>
574 </ul>
575 </div>
576 </#if>
577
578 <#if exploitationsFull?hasContent>
579 <div class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
580 <p id="identite-exploit" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Exploitant
581 :</p>
582 <ul aria-labelledby="identite-exploit">
583 <#list exploitationsFull as exploitation>
584 <li>
585 ${[exploitation.exploitant, exploitation.startDate, exploitation.country, exploitation.place]?filter(v->v?hasContent)?join(' - ')}
586 </li>
587 </#list>
588 </ul>
589 </div>
590 </#if>
591 </div>
592 </#if>
593
594 <#if showDescription>
595 <div id="description" class="js-summary-content" tabindex="-1"></div>
596 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
597 <h2 class="tw:text-prim tw:mb-5">${summary["DescriptionDuContenuImage"]?hasContent?then(summary["DescriptionDuContenuImage"], "Description du contenu")}</h2>
598
599 <#if imageFixeObjectCategory?hasContent>
600 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
601 <span class="tw:font-bold tw:shrink-0">Type de document :</span>
602 <span>${imageFixeObjectCategory?map(v->v.values.label)?join(", ")}</span>
603 </p>
604 </#if>
605
606 <#if contenuDuMateriel?hasContent>
607 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
608 <span class="tw:font-bold tw:shrink-0">Contenu du matériel :</span>
609 <span>${contenuDuMateriel?map(v->v.values.label)?join(", ")}</span>
610 </p>
611 </#if>
612
613 <#if contenuVisuelDuMateriel?hasContent>
614 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
615 <span class="tw:font-bold tw:shrink-0">Contenu visible du matériel :</span>
616 <span>${contenuVisuelDuMateriel?map(v->v.values.label)?join(", ")}</span>
617 </p>
618 </#if>
619
620 <#if advertFileFamilles?hasContent>
621 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
622 <span class="tw:font-bold tw:shrink-0">Famille :</span>
623 <span>${advertFileFamilles}</span>
624 </p>
625 </#if>
626
627 <#if personRepresented?hasContent>
628 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
629 <span class="tw:font-bold tw:shrink-0">Personne(s) représentée(s) :</span>
630 <span><#list personRepresented as p>
631 <#assign dataRepresented = garance.getPersonneDisplayData(p.objectEntryId)>
632 <#if dataRepresented.id?hasContent>
633 <a href="/l/${dataRepresented.id}"
634 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]">
635 ${dataRepresented.name}</a>
636 <#else>${dataRepresented.name}</#if><#if !p?isLast>, </#if>
637 </#list></span>
638 </p>
639 </#if>
640
641 <#if personSujet?hasContent>
642 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
643 <span class="tw:font-bold tw:shrink-0">Personne(s) sujet :</span>
644 <span><#list personSujet as p>
645 <#assign dataSujet = garance.getPersonneDisplayData(p.objectEntryId)>
646 <#if dataSujet.id?hasContent>
647 <a href="/l/${dataSujet.id}"
648 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]">
649 ${dataSujet.name}</a>
650 <#else>${dataSujet.name}</#if><#if !p?isLast>, </#if>
651 </#list></span>
652 </p>
653 </#if>
654
655 <#if imageFixeContentTheme?hasContent>
656 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
657 <span class="tw:font-bold tw:shrink-0">Thèmes :</span>
658 <span>${imageFixeContentTheme?map(v->v.values.label)?join(", ")}</span>
659 </p>
660 </#if>
661
662 <#if imageFixeRepresentation?hasContent>
663 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
664 <span class="tw:font-bold tw:shrink-0">Représentation :</span>
665 <span>${imageFixeRepresentation?map(v->v.values.label)?join(", ")}</span>
666 </p>
667 </#if>
668
669 <#if imageFixeSourceOfPresentation?hasContent>
670 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
671 <span class="tw:font-bold tw:shrink-0">Source de représentation :</span>
672 <span>${imageFixeSourceOfPresentation?map(v->v.values.label)?join(", ")}</span>
673 </p>
674 </#if>
675
676 <#if imageFixeStyle?hasContent>
677 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
678 <span class="tw:font-bold tw:shrink-0">Époque/Style/Mouvement :</span>
679 <span>${imageFixeStyle?map(v->v.values.label)?join(", ")}</span>
680 </p>
681 </#if>
682
683 <#if imageFixeSchool?hasContent>
684 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
685 <span class="tw:font-bold tw:shrink-0">École :</span>
686 <span>${imageFixeSchool?map(v->v.values.label)?join(", ")}</span>
687 </p>
688 </#if>
689
690 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
691 <span class="tw:font-bold tw:shrink-0">Illustré :</span>
692 <span>
693 <#if getterUtil.getBoolean(ObjectField_illustrated.getData())>
694 ${languageUtil.get(locale, "Oui")}
695 <#else>
696 ${languageUtil.get(locale, "Non")}
697 </#if>
698 </span>
699 </p>
700 </div>
701 </#if>
702
703 <#if showMateriel>
704 <div id="material" class="js-summary-content" tabindex="-1"></div>
705 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
706 <h2 class="tw:text-prim tw:mb-5">${summary["DescriptionMaterielleImage"]?hasContent?then(summary["DescriptionMaterielleImage"], "Description matérielle")}</h2>
707
708
709 <#if ObjectField_naturePhoto.getData()?hasContent>
710 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
711 <span class="tw:font-bold tw:shrink-0">Nature :</span>
712 <span>${ObjectField_naturePhoto.getData()}</span>
713 </p>
714 </#if>
715
716 <#if ObjectField_physicalDescription.getData()?hasContent>
717 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
718 <span class="tw:font-bold tw:shrink-0">Description matérielle :</span>
719 <span>${ObjectField_physicalDescription.getData()}</span>
720 </p>
721 </#if>
722
723 <#if ObjectField_posterDigitalTechnicalDescription.getData()?hasContent>
724 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
725 <span class="tw:font-bold tw:shrink-0">Description technique :</span>
726 <span>${ObjectField_posterDigitalTechnicalDescription.getData()}</span>
727 </p>
728 </#if>
729
730 <#if ObjectField_accompanyingMaterial.getData()?hasContent>
731 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
732 <span class="tw:font-bold tw:shrink-0">Matériel d'accompagnement :</span>
733 <span>${ObjectField_accompanyingMaterial.getData()}</span>
734 </p>
735 </#if>
736
737 <#if ObjectField_natureDeSupport.getData()?hasContent>
738 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
739 <span class="tw:font-bold tw:shrink-0">Nature du support :</span>
740 <span>${ObjectField_natureDeSupport.getData()}</span>
741 </p>
742 </#if>
743
744 <#if ObjectField_typeOfContent.getData()?hasContent>
745 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
746 <span class="tw:font-bold tw:shrink-0">Type de contenu :</span>
747 <span>${ObjectField_typeOfContent.getData()}</span>
748 </p>
749 </#if>
750
751 <#if ObjectField_technicalCategory.getData()?hasContent>
752 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
753 <span class="tw:font-bold tw:shrink-0">Catégorie technique :</span>
754 <span>${ObjectField_technicalCategory.getData()}</span>
755 </p>
756 </#if>
757
758 <#if ObjectField_afficheProcedeTechnique.getData()?hasContent>
759 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
760 <span class="tw:font-bold tw:shrink-0">Procédé technique :</span>
761 <span>${ObjectField_afficheProcedeTechnique.getData()}</span>
762 </p>
763 </#if>
764
765 <#if ObjectField_colourBW.getData()?hasContent>
766 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
767 <span class="tw:font-bold tw:shrink-0">Mention couleur :</span>
768 <span>${ObjectField_colourBW.getData()}</span>
769 </p>
770 </#if>
771
772 <#if dimensions?hasContent>
773 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
774 <span class="tw:font-bold tw:shrink-0">Dimension :</span>
775 <span>
776 <#list dimensions as dimension>
777 <#if dimension?isFirst && dimension.values.posterDimensionPart?hasContent>${garance.getPicklistItemName(dimension.values.posterDimensionPart, "picklistPosterDimensionPart")}, </#if>
778 <#assign sorte = (dimension.values.r_imageFixeManifestationDimensionSorte_c_thesaurusId != 0)?then(garance.getThesaurusByID(dimension.values.r_imageFixeManifestationDimensionSorte_c_thesaurusId), '')>
779 <#assign value = dimension.values.dimensionValue?hasContent?then(dimension.values.dimensionValue, '')>
780 <#assign unite = (dimension.values.r_imageFixeManifestationDimensionUnits_c_thesaurusId != 0)?then(garance.getThesaurusByID(dimension.values.r_imageFixeManifestationDimensionUnits_c_thesaurusId), '')>
781 ${[sorte, value, unite]?filter(v->v?hasContent)?join(" ")}<#if !dimension?isLast>, </#if>
782 </#list>
783 </span>
784 </p>
785 </#if>
786
787 <#if ObjectField_nombrePieces.getData()?hasContent>
788 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
789 <span class="tw:font-bold tw:shrink-0">Nombre de pièces :</span>
790 <span>${ObjectField_nombrePieces.getData()}</span>
791 </p>
792 </#if>
793
794 <#if ObjectField_nombreFeuilles.getData()?hasContent>
795 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
796 <span class="tw:font-bold tw:shrink-0">Nombre de feuilles :</span>
797 <span>${ObjectField_nombreFeuilles.getData()}</span>
798 </p>
799 </#if>
800
801 <#if ObjectField_nombreDeContenant.getData()?hasContent>
802 <div class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
803 <span class="tw:font-bold tw:shrink-0">Nombre de contenants :</span>
804 <div class="tw:flex tw:gap-[0.625rem] separator">
805 <span>${ObjectField_nombreDeContenant.getData()}</span>
806 <#if ObjectField_typeDeContenant.getData()?hasContent>
807 <span class="tw:flex tw:gap-[0.625rem]">${ObjectField_typeDeContenant.getData()}</span>
808 </#if>
809 </div>
810 </div>
811 </#if>
812 </div>
813 </#if>
814
815 <#if showExemplaires>
816 <div id="exemplaires" class="js-summary-content" tabindex="-1"></div>
817 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
818 <h2 class="tw:text-prim tw:mb-5">${summary["ExemplairesImage"]?hasContent?then(summary["ExemplairesImage"], "Exemplaires")}</h2>
819
820 <#if items?filter(i -> i.values.posterTypeDeMediation == "SANS")?hasContent>
821
822 <h3 class="tw:mb-5">Exemplaires (physiques)</h3>
823
824 <#list items?filter(i -> i.values.posterTypeDeMediation == "SANS") as item>
825
826 <#assign dimensionsItemRel = objectRelationshipLocalService.getObjectRelationship(item.objectDefinitionId, "imageFixeItemDimension")>
827 <#assign dimensionItems = objectEntryLocalService.getOneToManyObjectEntries(item.getGroupId(), dimensionsItemRel.objectRelationshipId, item.getObjectEntryId(), true, null, -1, -1 ) />
828
829 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mb-5">
830 <details class="tw:group">
831 <summary class="tw:flex tw:items-center tw:justify-between">
832 <div class="tw:flex tw:flex-col tw:gap-[0.625rem]">
833 <#if item.values.currentLocationBarcode?hasContent>
834 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice">
835 <span class="tw:font-bold tw:shrink-0">Cote contenant :</span>
836 ${item.values.currentLocationBarcode}
837 </p>
838 </#if>
839 <#if item.values.posterShelfmark?hasContent>
840 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice">
841 <span class="tw:font-bold tw:shrink-0">Cote document :</span>
842 ${item.values.posterShelfmark}
843 </p>
844 </#if>
845 </div>
846 <span class="tw:group-open:hidden icon-plus"></span>
847 <span class="tw:group-open:block tw:hidden icon-minus"></span>
848
849 </summary>
850 <div class="tw:mt-[0.625rem]">
851
852 <#if dimensionItems?hasContent>
853 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
854 <span class="tw:font-bold tw:shrink-0">Format :</span>
855 <span>
856 <#list dimensionItems as dimension>
857 <#assign sorte = (dimension.values.r_imageFixeManifestationDimensionSorte_c_thesaurusId != 0)?then(garance.getThesaurusByID(dimension.values.r_imageFixeManifestationDimensionSorte_c_thesaurusId), '')>
858 <#assign value = dimension.values.dimensionValue?hasContent?then(dimension.values.dimensionValue, '')>
859 <#assign unite = (dimension.values.r_imageFixeManifestationDimensionUnits_c_thesaurusId != 0)?then(garance.getThesaurusByID(dimension.values.r_imageFixeManifestationDimensionUnits_c_thesaurusId), '')>
860 ${[sorte, value, unite]?filter(v->v?hasContent)?join(" ")}<#if !dimension?isLast>, </#if>
861 </#list>
862 <#if (dimensionItems?first).values.r_imageFixeManifestationDimensionPart_c_thesaurusId != 0>, ${garance.getThesaurusByID((dimensionItems?first).values.r_imageFixeManifestationDimensionPart_c_thesaurusId)}</#if>
863 </span>
864 </p>
865 </#if>
866
867 <#assign consulationsItemRel = objectRelationshipLocalService.getObjectRelationship(item.objectDefinitionId, "imageFixeItemConsultations")>
868 <#assign consulationsItems = objectEntryLocalService.getOneToManyObjectEntries(item.getGroupId(), consulationsItemRel.objectRelationshipId, item.getObjectEntryId(), true, null, -1, -1 ) />
869
870 <#if consulationsItems?hasContent>
871 <#list consulationsItems as consultation>
872 <#if consultation.values.accesConditions?hasContent>
873 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
874 <span class="tw:font-bold tw:shrink-0">Conditions d'accès :</span>
875 <span>${garance.getPicklistItemName(consultation.values.accesConditions, "picklistAccesConditions")}</span>
876 </p>
877 </#if>
878 <#if consultation.values.lieuDeConsultation?hasContent>
879 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
880 <span class="tw:font-bold tw:shrink-0">Lieu de consultation :</span>
881 <span>${garance.getPicklistItemName(consultation.values.lieuDeConsultation, "picklistLieuDeConsultation")}</span>
882 </p>
883 </#if>
884 </#list>
885 </#if>
886
887 <#assign notesItemRel = objectRelationshipLocalService.getObjectRelationship(item.objectDefinitionId, "imageFixeItemNoteTechnique")>
888 <#assign notesItems = objectEntryLocalService.getOneToManyObjectEntries(item.getGroupId(), notesItemRel.objectRelationshipId, item.getObjectEntryId(), true, null, -1, -1 ) />
889
890 <#if notesItems?hasContent>
891 <ul class="tw:mb-[0.625rem]">
892 <#list notesItems as noteItem>
893 <#if noteItem.values.typeOfNote?hasContent && noteItem.values.typeOfNote == "COPY" && noteItem.values.note?hasContent>
894 <li>
895 ${[(noteItem.values.typeOfNote?hasContent)?then(garance.getPicklistItemName(noteItem.values.typeOfNote, "picklistImageFixeItemAfficheTechniqueNoteTypeOfNote"), ""), noteItem.values.note]?filter(v->v?hasContent)?join(" - ")}
896 </li>
897 </#if>
898 </#list>
899 </ul>
900 </#if>
901 <#assign itemRelatedObjectTypesRel = objectRelationshipLocalService.getObjectRelationship(item.objectDefinitionId, "typeDeRelationFondArchive")>
902 <#assign itemRelatedObjectTypes = objectEntryLocalService.getOneToManyObjectEntries(item.getGroupId(), itemRelatedObjectTypesRel.objectRelationshipId, item.getObjectEntryId(), true, null, -1, -1 ) />
903 <#assign relatedObjectsItemFull = garance.getRelatedObjects(itemRelatedObjectTypes, item, true)>
904
905 <#if relatedObjectsItemFull?hasContent && relatedObjectsItemFull.archivecatalogue?? && relatedObjectsItemFull.archivecatalogue.work??>
906 <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]">
907 <p id="archive-tlt"
908 class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Appartenance à
909 un
910 fonds d'archives :</p>
911 <ul aria-labelledby="archive-tlt">
912 <#list relatedObjectsItemFull.archivecatalogue as level, archiveParts>
913 <#list archiveParts as archivePart>
914 <#assign archiveDataset = "">
915 <#if archivePart.object.values.dataset?hasContent>
916 <#assign archiveDataset = garance.getPicklistItemName(archivePart.object.values.dataset, "picklistDataset")>
917 </#if>
918 <li>
919 <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.0625rem] tw:hover:bg-size-[0_0.0625rem]"
920 href="/l/${archivePart.object.objectEntryId}">${archivePart.associationType}<#if archivePart.object.values.cote?hasContent> ${archivePart.object.values.cote}</#if><#if archivePart.object.values.titleComplete?hasContent> [${archivePart.object.values.titleComplete}]</#if><#if archiveDataset?hasContent> (${archiveDataset})</#if></a>
921 </li>
922 </#list>
923 </#list>
924 </ul>
925 </div>
926 </#if>
927
928 </div>
929 </details>
930 </div>
931 </#list>
932 </#if>
933
934 <#if items?filter(i -> i.values.posterTypeDeMediation == "ELECTRO")?hasContent>
935
936 <h3 class="tw:mb-5">Exemplaires (numériques)</h3>
937
938 <#list items?filter(i -> i.values.posterTypeDeMediation == "ELECTRO") as item>
939
940 <#assign dimensionsItemRel = objectRelationshipLocalService.getObjectRelationship(item.objectDefinitionId, "imageFixeItemDimension")>
941 <#assign dimensionItems = objectEntryLocalService.getOneToManyObjectEntries(item.getGroupId(), dimensionsItemRel.objectRelationshipId, item.getObjectEntryId(), true, null, -1, -1 ) />
942
943 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mb-5">
944 <details class="tw:group">
945 <summary class="tw:flex tw:items-center tw:justify-between tw:mb-[0.625rem]">
946 <#if item.values.posterShelfmark?hasContent>
947 <span class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice">
948 <span class="tw:font-bold tw:shrink-0">Cote document :</span>
949 ${item.values.posterShelfmark}
950 </span>
951 </#if>
952 <span class="tw:group-open:hidden icon-plus"></span>
953 <span class="tw:group-open:block tw:hidden icon-minus"></span>
954 </summary>
955 <div>
956 <#assign consulationsItemRel = objectRelationshipLocalService.getObjectRelationship(item.objectDefinitionId, "imageFixeItemConsultations")>
957 <#assign consulationsItems = objectEntryLocalService.getOneToManyObjectEntries(item.getGroupId(), consulationsItemRel.objectRelationshipId, item.getObjectEntryId(), true, null, -1, -1 ) />
958
959 <#if consulationsItems?hasContent>
960 <#list consulationsItems as consultation>
961 <#if consultation.values.lieuDeConsultation?hasContent>
962 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
963 <span class="tw:font-bold tw:shrink-0">Lieu de consultation :</span>
964 <span>${garance.getPicklistItemName(consultation.values.lieuDeConsultation, "picklistLieuDeConsultation")}</span>
965 </p>
966 </#if>
967 <#if consultation.values.accesConditions?hasContent>
968 <p class="tw:flex tw:max-md:flex-col tw:flex-wrap tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
969 <span class="tw:font-bold tw:shrink-0">Conditions d'accès :</span>
970 <span>${garance.getPicklistItemName(consultation.values.accesConditions, "picklistAccesConditions")}</span>
971 </p>
972 </#if>
973 </#list>
974 </#if>
975
976 <#assign itemRelatedObjectTypesRel = objectRelationshipLocalService.getObjectRelationship(item.objectDefinitionId, "typeDeRelationFondArchive")>
977 <#assign itemRelatedObjectTypes = objectEntryLocalService.getOneToManyObjectEntries(item.getGroupId(), itemRelatedObjectTypesRel.objectRelationshipId, item.getObjectEntryId(), true, null, -1, -1 ) />
978 <#assign relatedObjectsItemFull = garance.getRelatedObjects(itemRelatedObjectTypes, item, true)>
979
980 <#if relatedObjectsItemFull?hasContent && relatedObjectsItemFull.archivecatalogue?? && relatedObjectsItemFull.archivecatalogue.work??>
981 <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]">
982 <p id="archive-tlt"
983 class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Appartenance à
984 un
985 fonds d'archives :</p>
986 <ul aria-labelledby="archive-tlt">
987 <#list relatedObjectsItemFull.archivecatalogue as level, archiveParts>
988 <#list archiveParts as archivePart>
989 <#assign archiveDataset = "">
990 <#if archivePart.object.values.dataset?hasContent>
991 <#assign archiveDataset = garance.getPicklistItemName(archivePart.object.values.dataset, "picklistDataset")>
992 </#if>
993 <li>
994 <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.0625rem] tw:hover:bg-size-[0_0.0625rem]"
995 href="/l/${archivePart.object.objectEntryId}">${archivePart.associationType}<#if archivePart.object.values.cote?hasContent> ${archivePart.object.values.cote}</#if><#if archivePart.object.values.titleComplete?hasContent> [${archivePart.object.values.titleComplete}]</#if><#if archiveDataset?hasContent> (${archiveDataset})</#if></a>
996 </li>
997 </#list>
998 </#list>
999 </ul>
1000 </div>
1001 </#if>
1002 </div>
1003 </details>
1004 </div>
1005 </#list>
1006 </#if>
1007 </div>
1008
1009 </#if>
1010 </div>
1011
1012 <#if showMedia>
1013 <#assign medias = []>
1014 <#if reproductionsVideos?hasContent>
1015 <#assign medias = medias + [{
1016 "type": "video",
1017 "title": "Vidéos",
1018 "reproductions": reproductionsVideos
1019 }]>
1020 </#if>
1021 <#if reproductionsImages?hasContent>
1022 <#assign medias = medias + [{
1023 "type": "image",
1024 "title": "Images",
1025 "reproductions": reproductionsImages
1026 }]>
1027 </#if>
1028 <div id="ressources" class="js-summary-content" tabindex="-1"></div>
1029 <div class="page-wrapper tw:py-10">
1030 <h2 id="ressources-tl"
1031 class="tw:text-prim tw:mb-5">${summary["RessourcesMediaImage"]?hasContent?then(summary["RessourcesMediaImage"], "Ressources média")}</h2>
1032 <@garance.displayMedia data=medias />
1033 </div>
1034 </#if>
1035
1036 <#if showCollection>
1037 <div id="collections" class="js-summary-content" tabindex="-1"></div>
1038 <div class="page-wrapper tw:py-10">
1039 <h2 id="collections-tl"
1040 class="tw:text-prim tw:mb-5">${summary["CollectionsLieesImage"]?hasContent?then(summary["CollectionsLieesImage"], "Collections liées")}</h2>
1041 <@garance.displayCollection relatedObjectsFull />
1042 </div>
1043 </#if>
1044 </div>
1045</div>