An error occurred while processing the template.
The string doesn't match the expected date/time/date-time format. The string to parse was: "12/8/33, 12:00 AM". The expected format was: "dd/MM/yyyy HH:mm".
The nested reason given follows:
Unparseable date: "12/8/33, 12:00 AM"
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${ObjectField_birthDateStart.getData(... [in template "22823141604726#20121#null" at line 621, column 40]
----
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")
7/>
8
9<#assign summary = garance.getSummaryContent("Personne")>
10
11<#assign peopleID = ObjectEntry_objectEntryId.getData()?number
12peopleEntry = objectEntryLocalService.fetchObjectEntry(peopleID?number)
13peopleGroupID = peopleEntry.getGroupId()
14>
15
16<#assign transiPeopleRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "transitionPersonne")>
17<#assign transiPeoples = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, transiPeopleRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
18<#assign pseudoFull = []
19translitFull = []
20equiFull = []>
21<#list transiPeoples as transiPeople>
22 <#switch transiPeople.values.transitionPersonneType>
23 <#case "PSEUDO">
24 <#assign pseudoFull = pseudoFull + [transiPeople]>
25 <#break>
26 <#case "TRANSLIT">
27 <#assign translitFull = translitFull + [transiPeople]>
28 <#break>
29 <#case "EQUI">
30 <#assign equiFull = equiFull + [transiPeople]>
31 <#break>
32 <#default>
33 <#if transiPeople.externalReferenceCode = "transi_" + peopleEntry.externalReferenceCode>
34 <#assign mainTransiPeople = transiPeople>
35 </#if>
36 <#break>
37 </#switch>
38</#list>
39
40<#--------------------------------- Filmographie -------------------------->
41
42<#assign filmoShort = []>
43<#assign filmoLong = []>
44<#assign creditRealisateurRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "creditsRealisateur")>
45<#assign creditRealisateurs = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, creditRealisateurRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, creditRealisateurRel.isReverse(), null, -1, -1 ) />
46<#list pseudoFull as pseudo>
47 <#assign creditRealisateurs = creditRealisateurs + objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, creditRealisateurRel.objectRelationshipId, pseudo.objectEntryId, true, creditRealisateurRel.isReverse(), null, -1, -1 ) />
48</#list>
49<#list creditRealisateurs as creditRealisateur>
50 <#if creditRealisateur.values.descriptionLevel == "WORK">
51 <#if creditRealisateur.values.typeDeMetrage == "LONG">
52 <#assign filmoLong = filmoLong + [{"fonction": "Réalisation", "film": creditRealisateur, "year": garance.getFilmYear(creditRealisateur)}]>
53 <#elseIf creditRealisateur.values.typeDeMetrage == "COURT">
54 <#assign filmoShort = filmoShort + [{"fonction": "Réalisation", "film": creditRealisateur, "year": garance.getFilmYear(creditRealisateur)}]>
55 </#if>
56 </#if>
57</#list>
58
59<#assign creditRealisationRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "creditsRealisationName")>
60<#assign creditRealisations = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditRealisationRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
61<#list pseudoFull as pseudo>
62 <#assign creditRealisations = creditRealisations + objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditRealisationRel.objectRelationshipId, pseudo.objectEntryId, true, null, -1, -1 ) />
63</#list>
64<#list creditRealisations as creditRealisation>
65 <#if creditRealisation.values.r_creditsRealisationDomaine_c_thesaurusId != 0 && creditRealisation.values.r_creditsRealisation_c_filmId != 0>
66 <#assign filmRealisation = objectEntryLocalService.fetchObjectEntry(creditRealisation.values.r_creditsRealisation_c_filmId)>
67 <#if filmRealisation.values.descriptionLevel == "WORK">
68 <#if filmRealisation.values.typeDeMetrage == "LONG">
69 <#assign filmoLong = filmoLong + [{"fonction": garance.getThesaurusByID(creditRealisation.values.r_creditsRealisationDomaine_c_thesaurusId), "film": filmRealisation, "year": garance.getFilmYear(filmRealisation)}]>
70 <#elseIf filmRealisation.values.typeDeMetrage == "COURT">
71 <#assign filmoShort = filmoShort + [{"fonction": garance.getThesaurusByID(creditRealisation.values.r_creditsRealisationDomaine_c_thesaurusId), "film": filmRealisation, "year": garance.getFilmYear(filmRealisation)}]>
72 </#if>
73 </#if>
74 </#if>
75</#list>
76
77<#assign creditInterpretationRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "creditsInterpretationName")>
78<#assign creditInterpretations = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditInterpretationRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
79<#list pseudoFull as pseudo>
80 <#assign creditInterpretations = creditInterpretations + objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditInterpretationRel.objectRelationshipId, pseudo.objectEntryId, true, null, -1, -1 ) />
81</#list>
82<#list creditInterpretations as creditInterpretation>
83 <#if creditInterpretation.values.r_creditsInterpretationDomaine_c_thesaurusId != 0 && creditInterpretation.values.r_creditsInterpretation_c_filmId != 0>
84 <#assign filmInterpretation = objectEntryLocalService.fetchObjectEntry(creditInterpretation.values.r_creditsInterpretation_c_filmId)>
85 <#if filmInterpretation.values.descriptionLevel == "WORK">
86 <#if filmInterpretation.values.typeDeMetrage == "LONG">
87 <#assign filmoLong = filmoLong + [{"fonction": garance.getThesaurusByID(creditInterpretation.values.r_creditsInterpretationDomaine_c_thesaurusId), "film": filmInterpretation, "year": garance.getFilmYear(filmInterpretation)}]>
88 <#elseIf filmInterpretation.values.typeDeMetrage == "COURT">
89 <#assign filmoShort = filmoShort + [{"fonction": garance.getThesaurusByID(creditInterpretation.values.r_creditsInterpretationDomaine_c_thesaurusId), "film": filmInterpretation, "year": garance.getFilmYear(filmInterpretation)}]>
90 </#if>
91 </#if>
92 </#if>
93</#list>
94
95<#assign creditEcritureRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "creditsEcritureName")>
96<#assign creditEcritures = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditEcritureRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
97<#list pseudoFull as pseudo>
98 <#assign creditEcritures = creditEcritures + objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditEcritureRel.objectRelationshipId, pseudo.objectEntryId, true, null, -1, -1 ) />
99</#list>
100<#list creditEcritures as creditEcriture>
101 <#if creditEcriture.values.r_creditsEcritureDomaine_c_thesaurusId != 0 && creditEcriture.values.r_creditsEcriture_c_filmId != 0>
102 <#assign filmEcriture = objectEntryLocalService.fetchObjectEntry(creditEcriture.values.r_creditsEcriture_c_filmId)>
103 <#if filmEcriture.values.descriptionLevel == "WORK">
104 <#if filmEcriture.values.typeDeMetrage == "LONG">
105 <#assign filmoLong = filmoLong + [{"fonction": garance.getThesaurusByID(creditEcriture.values.r_creditsEcritureDomaine_c_thesaurusId), "film": filmEcriture, "year": garance.getFilmYear(filmEcriture)}]>
106 <#elseIf filmEcriture.values.typeDeMetrage == "COURT">
107 <#assign filmoShort = filmoShort + [{"fonction": garance.getThesaurusByID(creditEcriture.values.r_creditsEcritureDomaine_c_thesaurusId), "film": filmEcriture, "year": garance.getFilmYear(filmEcriture)}]>
108 </#if>
109 </#if>
110 </#if>
111</#list>
112
113<#assign creditProductionRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "creditsProductionName")>
114<#assign creditProductions = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditProductionRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
115<#list pseudoFull as pseudo>
116 <#assign creditProductions = creditProductions + objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditProductionRel.objectRelationshipId, pseudo.objectEntryId, true, null, -1, -1 ) />
117</#list>
118<#list creditProductions as creditProduction>
119 <#if creditProduction.values.r_creditsProductionDomaine_c_thesaurusId != 0 && creditProduction.values.r_creditsProduction_c_filmId != 0>
120 <#assign filmProduction = objectEntryLocalService.fetchObjectEntry(creditProduction.values.r_creditsProduction_c_filmId)>
121 <#if filmProduction.values.descriptionLevel == "WORK">
122 <#if filmProduction.values.typeDeMetrage == "LONG">
123 <#assign filmoLong = filmoLong + [{"fonction": garance.getThesaurusByID(creditProduction.values.r_creditsProductionDomaine_c_thesaurusId), "film": filmProduction, "year": garance.getFilmYear(filmProduction)}]>
124 <#elseIf filmProduction.values.typeDeMetrage == "COURT">
125 <#assign filmoShort = filmoShort + [{"fonction": garance.getThesaurusByID(creditProduction.values.r_creditsProductionDomaine_c_thesaurusId), "film": filmProduction, "year": garance.getFilmYear(filmProduction)}]>
126 </#if>
127 </#if>
128 </#if>
129</#list>
130
131<#assign creditMusicRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "creditsMusicName")>
132<#assign creditMusics = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditMusicRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
133<#list pseudoFull as pseudo>
134 <#assign creditMusics = creditMusics + objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditMusicRel.objectRelationshipId, pseudo.objectEntryId, true, null, -1, -1 ) />
135</#list>
136<#list creditMusics as creditMusic>
137 <#if creditMusic.values.r_creditsMusicDomaine_c_thesaurusId != 0 && creditMusic.values.r_creditsMusic_c_filmId != 0>
138 <#assign filmMusic = objectEntryLocalService.fetchObjectEntry(creditMusic.values.r_creditsMusic_c_filmId)>
139 <#if filmMusic.values.descriptionLevel == "WORK">
140 <#if filmMusic.values.typeDeMetrage == "LONG">
141 <#assign filmoLong = filmoLong + [{"fonction": garance.getThesaurusByID(creditMusic.values.r_creditsMusicDomaine_c_thesaurusId), "film": filmMusic, "year": garance.getFilmYear(filmMusic)}]>
142 <#elseIf filmMusic.values.typeDeMetrage == "COURT">
143 <#assign filmoShort = filmoShort + [{"fonction": garance.getThesaurusByID(creditMusic.values.r_creditsMusicDomaine_c_thesaurusId), "film": filmMusic, "year": garance.getFilmYear(filmMusic)}]>
144 </#if>
145 </#if>
146 </#if>
147</#list>
148
149<#assign creditTechniqueRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "creditsTechniqueName")>
150<#assign creditTechniques = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditTechniqueRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
151<#list pseudoFull as pseudo>
152 <#assign creditTechniques = creditTechniques + objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, creditTechniqueRel.objectRelationshipId, pseudo.objectEntryId, true, null, -1, -1 ) />
153</#list>
154<#list creditTechniques as creditTechnique>
155 <#if creditTechnique.values.r_creditsTechniqueDomaine_c_thesaurusId != 0 && creditTechnique.values.r_creditsTechnique_c_filmId != 0>
156 <#assign filmTechnique = objectEntryLocalService.fetchObjectEntry(creditTechnique.values.r_creditsTechnique_c_filmId)>
157 <#if filmTechnique.values.descriptionLevel == "WORK">
158 <#if filmTechnique.values.typeDeMetrage == "LONG">
159 <#assign filmoLong = filmoLong + [{"fonction": garance.getThesaurusByID(creditTechnique.values.r_creditsTechniqueDomaine_c_thesaurusId), "film": filmTechnique, "year": garance.getFilmYear(filmTechnique)}]>
160 <#elseIf filmTechnique.values.typeDeMetrage == "COURT">
161 <#assign filmoShort = filmoShort + [{"fonction": garance.getThesaurusByID(creditTechnique.values.r_creditsTechniqueDomaine_c_thesaurusId), "film": filmTechnique, "year": garance.getFilmYear(filmTechnique)}]>
162 </#if>
163 </#if>
164 </#if>
165</#list>
166
167<#assign showFilmo = (filmoLong?hasContent || filmoShort?hasContent)>
168
169<#--------------------------------- Identité -------------------------->
170
171<#assign functionsFull = {}>
172<#if filmoLong?filter(f->f.fonction?hasContent)?hasContent || filmoShort?filter(f->f.fonction?hasContent)?hasContent>
173 <#assign functionsFull = functionsFull + {"film": (filmoLong?filter(f->f.fonction?hasContent) + filmoShort?filter(f->f.fonction?hasContent))?map(f -> f.fonction)} >
174</#if>
175
176<#assign imprimeAuthorRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "imprimeAuthorPersonnes")>
177<#assign imprimeAuthor = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, imprimeAuthorRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
178<#if imprimeAuthor?hasContent>
179 <#assign functionsFull = functionsFull + {"imprime": imprimeAuthor}>
180</#if>
181<#assign imageFixeAuteurRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "imageFixeAuteurPersonne")>
182<#assign imgFixeAuthor = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, imageFixeAuteurRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
183<#if imgFixeAuthor?hasContent>
184 <#assign functionsFull = functionsFull + {"imageFixe": imgFixeAuthor}>
185</#if>
186<#assign archiveAuthorRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "archiveAuthorPersonne")>
187<#assign archiveAuthor = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, archiveAuthorRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, null, -1, -1 ) />
188<#if archiveAuthor?hasContent>
189 <#assign functionsFull = functionsFull + {"archive": archiveAuthor}>
190</#if>
191
192<#assign showIdentity = (ObjectField_gender.getData()?hasContent
193|| ObjectField_typeDePersonneMorale.getData()?hasContent
194|| ObjectField_denominationSociale.getData()?hasContent
195|| .dataModel["ObjectRelationship#C_Thesaurus#nationalityNaturalisation_label"].getData()?hasContent
196|| pseudoFull?hasContent
197|| translitFull?hasContent
198|| equiFull?hasContent
199|| .dataModel["ObjectRelationship#C_Thesaurus#profession_label"].getData()?hasContent
200|| functionsFull?hasContent
201)>
202
203<#--------------------------------- Biographie -------------------------->
204
205<#assign showBiographie = (ObjectField_schoolStyle.getData()?hasContent
206|| ObjectField_occupation.getData()?hasContent
207|| ObjectField_otherActivities.getData()?hasContent
208)>
209
210
211<#--------------------------------- Bibliographies -------------------------->
212
213<#assign bibliographiesRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "bibliographiesPersonnes")>
214<#assign bibliographies = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, bibliographiesRel.objectRelationshipId, peopleID, true, bibliographiesRel.isReverse(), null, -1, -1 ) />
215<#assign digitalRefs = []>
216<#if bibliographies?hasContent>
217 <#list bibliographies as bibliographie>
218 <#assign digitalRefsRel = objectRelationshipLocalService.getObjectRelationship(bibliographie.objectDefinitionId, "digitalReferences")>
219 <#assign digitalRefs = objectEntryLocalService.getOneToManyObjectEntries(bibliographie.getGroupId(), digitalRefsRel.objectRelationshipId, bibliographie.objectEntryId, true, null, -1, -1 ) />
220 </#list>
221</#if>
222
223<#assign showBibliographie = digitalRefs?hasContent>
224
225<#--------------------------------- Récompenses -------------------------->
226
227<#assign awardsRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "awardsPersonne")>
228<#assign awards = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, awardsRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
229
230<#assign awardsFull = []>
231<#list awards as award>
232 <#assign eventResult = "">
233 <#assign eventYear = "">
234 <#if award.values.r_awardEvent_c_eventId?hasContent>
235 <#assign event = objectEntryLocalService.fetchObjectEntry(award.values.r_awardEvent_c_eventId?number)>
236 <#if award.values.eventResult?hasContent>
237 <#assign eventResult = garance.getPicklistItemName(award.values.eventResult, "picklistRecompenseResultat") >
238 </#if>
239 <#if event.values.eventAwardYear?hasContent>
240 <#assign eventYear = event.values.eventAwardYear?string("yyyy") >
241 </#if>
242 <#if event.objectEntryId?hasContent>
243 <#assign awardsFull = awardsFull + [[eventYear, award.values.eventsNomination, event.values.eventParticipant, award.values.filmTitle, eventResult]]>
244 </#if>
245 </#if>
246</#list>
247<#assign showAwards = awardsFull?hasContent>
248
249<#--------------------------------- Liens familiaux -------------------------->
250<#assign showFamille = false>
251
252<#if peopleEntry.values.personneType == "PP">
253 <#assign relatedPersonneChildren = []>
254 <#assign relatedPersonneParents = []>
255 <#assign relatedPersonnesRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "relatedPersonnesPersonne1")>
256 <#assign relatedPersonnes = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, relatedPersonnesRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
257 <#list relatedPersonnes as relatedPersonne>
258 <#if relatedPersonne.values.relationshipType?hasContent && relatedPersonne.values.r_relatedPersonnePersonne2_c_transitionPersonneId != 0>
259 <#assign relatedPersonneData = garance.getPersonneDisplayData(relatedPersonne.values.r_relatedPersonnePersonne2_c_transitionPersonneId)>
260 <#if relatedPersonne.values.relationshipType == "CHILD">
261 <#assign relatedPersonneChildren = relatedPersonneChildren + [{
262 "personne": relatedPersonneData,
263 "notes": relatedPersonne.values.relationshipNotes
264 }]>
265 <#elseIf relatedPersonne.values.relationshipType == "PARENT">
266 <#assign relatedPersonneParents = relatedPersonneParents + [{
267 "personne": relatedPersonneData,
268 "notes": relatedPersonne.values.relationshipNotes
269 }]>
270 </#if>
271 </#if>
272 </#list>
273
274 <#assign relatedPPFull = [] />
275 <#assign relatedPPRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "relationPPPersonne1")>
276 <#assign relatedPPs = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, relatedPPRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
277 <#list relatedPPs as relatedPP>
278 <#if relatedPP.values.r_relationPPPersonne2_c_transitionPersonneId != 0>
279 <#assign relatedPPData = garance.getPersonneDisplayData(relatedPP.values.r_relationPPPersonne2_c_transitionPersonneId)>
280 <#assign relatedPPFull = relatedPPFull + [{
281 "personne": relatedPPData,
282 "notes": relatedPP.values.relationPPNotes
283 }]>
284 </#if>
285 </#list>
286
287 <#assign relationFiliationFull = [] />
288 <#assign relationFiliationRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "relationFiliationPersonne1")>
289 <#assign relationFiliations = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, relationFiliationRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
290 <#list relationFiliations as relationFiliation>
291 <#if relationFiliation.values.r_relationFiliationPersonne2_c_transitionPersonneId != 0>
292 <#assign relationFiliationData = garance.getPersonneDisplayData(relationFiliation.values.r_relationFiliationPersonne2_c_transitionPersonneId)>
293 <#assign relationFiliationFull = relationFiliationFull + [{
294 "personne": relationFiliationData,
295 "notes": relationFiliation.values.relationFiliationNotes
296 }]>
297 </#if>
298 </#list>
299
300 <#if peopleEntry.values.personneType == "PP">
301 <#assign showFamille = (relatedPersonneChildren?hasContent
302 || relatedPersonneParents?hasContent
303 || relatedPPFull?hasContent
304 || relationFiliationFull?hasContent
305 )>
306 </#if>
307</#if>
308
309<#--------------------------------- Relations professionnelles -------------------------->
310<#assign filialeFull = [] />
311<#if peopleEntry.values.personneType == "PM">
312 <#assign filialeRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "filialePersonne1")>
313 <#assign filiales = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, filialeRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
314 <#list filiales as filiale>
315 <#if filiale.values.r_filialePersonne2_c_transitionPersonneId != 0>
316 <#assign filialeData = garance.getPersonneDisplayData(filiale.values.r_filialePersonne2_c_transitionPersonneId)>
317 <#assign filialeFull = filialeFull + [{
318 "personne": filialeData,
319 "notes": filiale.values.partsNotes,
320 "dateStart": filiale.values.partsDateStart!"",
321 "dateEnd": filiale.values.partsDateEnd!""
322 }]>
323 </#if>
324 </#list>
325</#if>
326
327<#assign showProfessional = false />
328
329<#if peopleEntry.values.personneType != "G">
330 <#assign relationGRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "relationGPersonne1")>
331 <#assign relationGs = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, relationGRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
332 <#assign relationGFull = [] />
333 <#list relationGs as relationG>
334 <#if relationG.values.r_relationGPersonne2_c_transitionPersonneId != 0>
335 <#assign relationGData = garance.getPersonneDisplayData(relationG.values.r_relationGPersonne2_c_transitionPersonneId)>
336 <#assign relationGFull = relationGFull + [{
337 "personne": relationGData,
338 "notes": relationG.values.relationGNotes,
339 "dateStart": relationG.values.relationGDateStart!""
340 }]>
341 </#if>
342 </#list>
343
344
345 <#assign relationPMRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "relationPMPersonne1")>
346 <#assign relationPMs = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, relationPMRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
347 <#assign relationPMFull = [] />
348 <#list relationPMs as relationPM>
349 <#if relationPM.values.r_relationPMPersonne2_c_transitionPersonneId != 0>
350 <#assign relationPMData = garance.getPersonneDisplayData(relationPM.values.r_relationPMPersonne2_c_transitionPersonneId)>
351 <#assign relationPMFull = relationPMFull + [{
352 "personne": relationPMData,
353 "notes": relationPM.values.relationPMNotes,
354 "dateStart": relationPM.values.relationPMDateStart!"",
355 "dateEnd": relationPM.values.relationPMDateEnd!""
356 }]>
357 </#if>
358 </#list>
359
360 <#assign partOfRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "partOfPersonne1")>
361 <#assign partOfs = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, partOfRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
362 <#assign partOfFull = [] />
363 <#list partOfs as partOf>
364 <#if partOf.values.r_partOfPersonne2_c_transitionPersonneId != 0>
365 <#assign partOfData = garance.getPersonneDisplayData(partOf.values.r_partOfPersonne2_c_transitionPersonneId)>
366 <#assign partOfFull = partOfFull + [{
367 "personne": partOfData,
368 "notes": partOf.values.partOfNotes,
369 "dateStart": partOf.values.partOfDateStart!""
370 }]>
371 </#if>
372 </#list>
373
374
375
376 <#assign groupeGenFull = [] />
377 <#if peopleEntry.values.personneType == "PM">
378 <#assign groupeGenRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "groupeGeneriquePersonne1")>
379 <#assign groupeGens = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, groupeGenRel.objectRelationshipId, peopleID, true, null, -1, -1 ) />
380 <#list groupeGens as groupeGen>
381 <#if groupeGen.values.r_groupeGeneriquePersonne2_c_transitionPersonneId != 0>
382 <#assign groupeGenData = garance.getPersonneDisplayData(groupeGen.values.r_groupeGeneriquePersonne2_c_transitionPersonneId)>
383 <#assign groupeGenFull = groupeGenFull + [{
384 "personne": groupeGenData,
385 "notes": groupeGen.values.groupRelationNote,
386 "type": groupeGen.values.groupRelationType,
387 "date": groupeGen.values.groupRelationDate!""
388 }]>
389 </#if>
390 </#list>
391 </#if>
392
393 <#assign showProfessional = (relationGFull?hasContent
394 || relationPMFull?hasContent
395 || partOfFull?hasContent
396 || filialeFull?hasContent
397 || groupeGenFull?hasContent
398 )>
399</#if>
400
401<#--------------------------------- Media -------------------------->
402<#assign reproductionsRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "reproductionsPersonne")>
403<#assign reproductions = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsRel.objectRelationshipId, peopleID, true, reproductionsRel.isReverse(), null, -1, -1 ) />
404<#assign reproductionsImages = []>
405<#assign reproductionsVideos = []>
406<#if reproductions?hasContent>
407 <#list reproductions as reproduction>
408 <#if reproduction.values.reproductionNature?hasContent>
409 <#if reproduction.values.reproductionNature == "PICTURE" && reproduction.values.media?string != "0">
410 <#assign reproductionsImages = reproductionsImages + [reproduction]>
411 <#elseIf reproduction.values.reproductionNature == "VIDEO">
412 <#assign reproductionsVideos = reproductionsVideos + [reproduction]>
413 </#if>
414 </#if>
415 </#list>
416</#if>
417
418<#assign bureautiquesRel = objectRelationshipLocalService.getObjectRelationship(peopleEntry.objectDefinitionId, "personneBureautique")>
419<#assign bureautiques = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, bureautiquesRel.objectRelationshipId, peopleID, true, bureautiquesRel.isReverse(), null, -1, -1 ) />
420<#assign bureautiqueFull = []>
421<#if bureautiques?hasContent>
422 <#list bureautiques as bureautique>
423 <#if bureautique.values.media?string != "0" >
424 <#assign bureautiqueFull = bureautiqueFull + [bureautique]>
425 </#if>
426 </#list>
427</#if>
428
429
430<#assign showMedia = (reproductionsImages?hasContent || reproductionsVideos?hasContent || bureautiqueFull?hasContent)>
431
432<#--------------------------------- Collections -------------------------->
433<#assign authoredCollect = []>
434<#if functionsFull.imageFixe??>
435 <#list functionsFull.imageFixe as functionImageFixe>
436 <#assign authoredImageFixe = objectEntryLocalService.fetchObjectEntry(functionImageFixe.values.r_imageFixeAutheurs_c_imageFixeId?number)>
437 <#if authoredImageFixe.objectEntryId??>
438 <#assign reproductionsImageFixeRel = objectRelationshipLocalService.getObjectRelationship(authoredImageFixe.objectDefinitionId, "imageFixeReproductions")>
439 <#assign reproductionsImageFixe = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImageFixeRel.objectRelationshipId, authoredImageFixe.objectEntryId, true, reproductionsImageFixeRel.isReverse(), "", -1, -1 ) />
440 <#assign authoredCollect = authoredCollect + [{
441 "id": authoredImageFixe.objectEntryId,
442 "repros": reproductionsImageFixe,
443 "title": authoredImageFixe.values.titreConcatenation
444 }]>
445 </#if>
446 </#list>
447</#if>
448
449<#if functionsFull.imprime??>
450 <#list functionsFull.imprime as functionImprime>
451 <#assign authoredImprime = objectEntryLocalService.fetchObjectEntry(functionImprime.values.r_imprimeAuthors_c_imprimeId?number)>
452 <#if authoredImprime.objectEntryId??>
453 <#assign reproductionsImprimeRel = objectRelationshipLocalService.getObjectRelationship(authoredImprime.objectDefinitionId, "reproductionsImprimes")>
454 <#assign reproductionsImprime = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImprimeRel.objectRelationshipId, authoredImprime.objectEntryId, true, reproductionsImprimeRel.isReverse(), "", -1, -1 ) />
455 <#assign authoredCollect = authoredCollect + [{
456 "id": authoredImprime.objectEntryId,
457 "repros": reproductionsImprime,
458 "title": authoredImprime.values.titleComplete
459 }]>
460 </#if>
461 </#list>
462</#if>
463
464<#assign reproductionsArchive = []>
465<#if functionsFull.archive??>
466 <#list functionsFull.archive as functionArchive>
467 <#if functionArchive.values.r_archiveAuthor_c_archiveId != 0>
468 <#assign authoredArchive = objectEntryLocalService.fetchObjectEntry(functionArchive.values.r_archiveAuthor_c_archiveId?number)>
469 <#if authoredArchive.objectEntryId??>
470 <#assign reproductionsArchiveRel = objectRelationshipLocalService.getObjectRelationship(authoredArchive.objectDefinitionId, "archiveReproduction")>
471 <#assign reproductionsArchive = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsArchiveRel.objectRelationshipId, authoredArchive.objectEntryId, true, reproductionsArchiveRel.isReverse(), "", -1, -1 ) />
472 <#assign authoredCollect = authoredCollect + [{
473 "id": authoredArchive.objectEntryId,
474 "repros": reproductionsArchive,
475 "title": authoredArchive.values.titleComplete
476 }]>
477 </#if>
478 </#if>
479 </#list>
480</#if>
481
482<#assign subjectCollect = []>
483<#assign imageFixeSubjectRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "imageFixePersonneSujet")>
484<#assign imageFixeSubjects = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, imageFixeSubjectRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, imageFixeSubjectRel.isReverse(), null, -1, -1 ) />
485<#list imageFixeSubjects as imageFixeSubject>
486 <#assign reproductionsImageFixeRel = objectRelationshipLocalService.getObjectRelationship(imageFixeSubject.objectDefinitionId, "imageFixeReproductions")>
487 <#assign reproductionsImageFixe = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImageFixeRel.objectRelationshipId, imageFixeSubject.objectEntryId, true, reproductionsImageFixeRel.isReverse(), "", -1, -1 ) />
488 <#assign subjectCollect = subjectCollect + [{
489 "id": imageFixeSubject.objectEntryId,
490 "repros": reproductionsArchive,
491 "title": imageFixeSubject.values.titreConcatenation
492 }]>
493</#list>
494
495<#assign imprimeSubjectRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "contentSubjectPersonne")>
496<#assign imprimeSubjects = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, imprimeSubjectRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, imprimeSubjectRel.isReverse(), null, -1, -1 ) />
497<#list imprimeSubjects as imprimeSubject>
498 <#assign reproductionsImageFixeRel = objectRelationshipLocalService.getObjectRelationship(imprimeSubject.objectDefinitionId, "reproductionsImprimes")>
499 <#assign reproductionsImageFixe = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImageFixeRel.objectRelationshipId, imprimeSubject.objectEntryId, true, reproductionsImageFixeRel.isReverse(), "", -1, -1 ) />
500 <#assign subjectCollect = subjectCollect + [{
501 "id": imprimeSubject.objectEntryId,
502 "repros": reproductionsArchive,
503 "title": imprimeSubject.values.titleComplete
504 }]>
505</#list>
506
507<#assign archiveSubjectRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "archiveSubjectPersonne")>
508<#assign archiveSubjects = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, archiveSubjectRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, archiveSubjectRel.isReverse(), null, -1, -1 ) />
509<#list archiveSubjects as archiveSubject>
510 <#assign reproductionsImageFixeRel = objectRelationshipLocalService.getObjectRelationship(archiveSubject.objectDefinitionId, "archiveReproduction")>
511 <#assign reproductionsImageFixe = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImageFixeRel.objectRelationshipId, archiveSubject.objectEntryId, true, reproductionsImageFixeRel.isReverse(), "", -1, -1 ) />
512 <#assign subjectCollect = subjectCollect + [{
513 "id": archiveSubject.objectEntryId,
514 "repros": reproductionsArchive,
515 "title": archiveSubject.values.titleComplete
516 }]>
517</#list>
518
519<#assign representedCollect = []>
520<#assign imageFixeSubjectRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "imageFixePersonRepresented")>
521<#assign imageFixeSubjects = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, imageFixeSubjectRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, imageFixeSubjectRel.isReverse(), null, -1, -1 ) />
522<#list imageFixeSubjects as imageFixeSubject>
523 <#assign reproductionsImageFixeRel = objectRelationshipLocalService.getObjectRelationship(imageFixeSubject.objectDefinitionId, "imageFixeReproductions")>
524 <#assign reproductionsImageFixe = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImageFixeRel.objectRelationshipId, imageFixeSubject.objectEntryId, true, reproductionsImageFixeRel.isReverse(), "", -1, -1 ) />
525 <#assign representedCollect = representedCollect + [{
526 "id": imageFixeSubject.objectEntryId,
527 "repros": reproductionsArchive,
528 "title": imageFixeSubject.values.titreConcatenation
529 }]>
530</#list>
531
532<#assign imprimeSubjectRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "contentRepresentedPersonne")>
533<#assign imprimeSubjects = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, imprimeSubjectRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, imprimeSubjectRel.isReverse(), null, -1, -1 ) />
534<#list imprimeSubjects as imprimeSubject>
535 <#assign reproductionsImageFixeRel = objectRelationshipLocalService.getObjectRelationship(imprimeSubject.objectDefinitionId, "reproductionsImprimes")>
536 <#assign reproductionsImageFixe = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImageFixeRel.objectRelationshipId, imprimeSubject.objectEntryId, true, reproductionsImageFixeRel.isReverse(), "", -1, -1 ) />
537 <#assign representedCollect = representedCollect + [{
538 "id": imprimeSubject.objectEntryId,
539 "repros": reproductionsArchive,
540 "title": imprimeSubject.values.titleComplete
541 }]>
542</#list>
543
544<#assign archiveSubjectRel = objectRelationshipLocalService.getObjectRelationship(mainTransiPeople.objectDefinitionId, "archiveRepresentedPersonne")>
545<#assign archiveSubjects = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, archiveSubjectRel.objectRelationshipId, mainTransiPeople.objectEntryId, true, archiveSubjectRel.isReverse(), null, -1, -1 ) />
546<#list archiveSubjects as archiveSubject>
547 <#assign reproductionsImageFixeRel = objectRelationshipLocalService.getObjectRelationship(archiveSubject.objectDefinitionId, "archiveReproduction")>
548 <#assign reproductionsImageFixe = objectEntryLocalService.getManyToManyObjectEntries(peopleGroupID, reproductionsImageFixeRel.objectRelationshipId, archiveSubject.objectEntryId, true, reproductionsImageFixeRel.isReverse(), "", -1, -1 ) />
549 <#assign representedCollect = representedCollect + [{
550 "id": archiveSubject.objectEntryId,
551 "repros": reproductionsArchive,
552 "title": archiveSubject.values.titleComplete
553 }]>
554</#list>
555
556
557<#assign showCollection = (authoredCollect?hasContent
558|| subjectCollect?hasContent
559|| representedCollect?hasContent)>
560
561<#assign titleLabels = {
562"birth":{
563"PP": "Naissance",
564"PM": "Constitution",
565"G": "Constitution"
566},
567"death":{
568"PP": "Décès",
569"PM": "Dissolution",
570"G": "Dissolution"
571},
572"pseudo":{
573"PP": "Pseudonyme(s)",
574"PM": "Autres noms",
575"G": "Autres noms"
576}
577}>
578
579<div class="notice notice--personne js-notice">
580 <div class="notice-header tw:text-white tw:pt-[3.375rem] tw:pb-[2.5rem] tw:relative tw:overflow-hidden
581 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
582 tw:xl:pt-[9.5rem]">
583 <div class="page-wrapper tw:z-0 tw:relative">
584 <#if request.getParameter("searchContext")?hasContent>
585 <@garance.noticePagination request.getParameter("searchContext") peopleID />
586 </#if>
587 <div class="tw:flex tw:gap-5 tw:items-start tw:flex-wrap tw:flex-col tw:z-0
588 tw:md:flex-row tw:lg:flex-nowrap
589 tw:xl:gap-[2.125rem]">
590 <div class="tw:order-2 tw:lg:order-1 tw:flex tw:flex-col tw:w-full tw:text-center
591 tw:md:w-fit tw:md:text-left">
592 <#if ObjectField_forename.getData()?hasContent || ObjectField_surname.getData()?hasContent>
593 <h1 class="tw:order-1 tw:text-prim tw:mb-[0.625rem]">
594 ${[ObjectField_forename.getData(), ObjectField_prefixesToName.getData(), ObjectField_surname.getData()]?filter(v->v?hasContent)?join(" ")}
595 </h1>
596 </#if>
597 <#if !reproductionsImages?hasContent>
598 <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
599 tw:md:mx-0">
600 Personnalité
601 </p>
602 </#if>
603 <#if ObjectField_additionsToName.getData()?hasContent>
604 <p class="tw:order-1 tw:font-title tw:text-[1.25rem]/[1.875rem] tw:font-medium">
605 ${ObjectField_additionsToName.getData()}
606 </p>
607 </#if>
608 <div class="tw:order-1 tw:relative tw:pt-5 tw:mt-5 tw:text-left
609 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
610 tw:md:before:w-[12.8125rem] ">
611 <#if (.dataModel["ObjectRelationship#C_Thesaurus#nationality_label"].getData())?hasContent>
612 <p class="tw:mb-[0.625rem]">
613 <span class="tw:font-bold">Nationalité :</span>
614 ${.dataModel["ObjectRelationship#C_Thesaurus#nationality_label"].getData()}
615 </p>
616 </#if>
617 <#if ObjectField_birthDateStart.getData()?hasContent>
618 <p class="tw:mb-[0.625rem]">
619 <span class="tw:font-bold">${titleLabels.birth[peopleEntry.values.personneType]} :</span>
620 <#if ObjectField_birthDatePrecision.getData()?hasContent && ObjectField_birthDatePrecision.getData() == "entre">${ObjectField_birthDateStart.getData()?datetime("dd/MM/yyyy HH:mm")?string("dd/MM/yyyy")} - ${ObjectField_birthDateEnd.getData()?datetime("dd/MM/yyyy HH:mm")?string("dd/MM/yyyy")}<#if getterUtil.getBoolean(ObjectField_birthDateEndPresume.getData())>(?)</#if>
621 <#else>${ObjectField_birthDateStart.getData()?datetime("dd/MM/yyyy HH:mm")?string("dd/MM/yyyy")}</#if>
622 <#assign birthPlace = [.dataModel["ObjectRelationship#C_Thesaurus#birthPlace_label"].getData(), ObjectField_birthNotes.getData()]?filter(v->v?hasContent)>
623 <#if birthPlace?hasContent> - ${birthPlace?join(" - ")}</#if>
624 </p>
625 </#if>
626 <#if ObjectField_deathDateStart.getData()?hasContent>
627 <p class="tw:mb-[0.625rem]">
628 <span class="tw:font-bold">${titleLabels.death[peopleEntry.values.personneType]} :</span>
629 <#if ObjectField_deathDatePrecision.getData()?hasContent && ObjectField_deathDatePrecision.getData() == "entre">${ObjectField_deathDateStart.getData()?datetime("dd/MM/yyyy HH:mm")?string("dd/MM/yyyy")} - ${ObjectField_deathDateEnd.getData()?datetime("dd/MM/yyyy HH:mm")?string("dd/MM/yyyy")}<#if getterUtil.getBoolean(ObjectField_deathDateEndPresume.getData())>(?)</#if>
630 <#else>${ObjectField_deathDateStart.getData()?datetime("dd/MM/yyyy HH:mm")?string("dd/MM/yyyy")}</#if>
631 <#assign deathPlace = [.dataModel["ObjectRelationship#C_Thesaurus#deathPlace_label"].getData(), ObjectField_deathNotes.getData()]?filter(v->v?hasContent)>
632 <#if deathPlace?hasContent> - ${deathPlace?join(" - ")}</#if>
633 </p>
634 </#if>
635 </div>
636 </div>
637 <#if reproductionsImages?hasContent>
638 <div class="tw:order-1 tw:lg:order-0 tw:w-full
639 tw:md:w-fit">
640 <div class="tw:m-auto tw:mx-auto tw:max-w-full tw:w-[15.625rem] tw:relative
641 tw:md:mx-0">
642 <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">
643 Personnalité
644 </p>
645 <#assign thumbnail = reproductionsImages?first>
646 <#assign fileEntryDesktop = dlAppLocalService.getFileEntry(thumbnail.values.media?number) />
647 <#assign thumbnailURL = dlURLHelper.getPreviewURL(fileEntryDesktop, fileEntryDesktop.getFileVersion(),
648 null, "", !fileEntryDesktop.getFileVersion().equals(fileEntryDesktop.getLatestFileVersion()), true) />
649
650 <figure class="tw:w-full">
651 <source media="(min-width: 480px)"
652 srcset="${thumbnailURL}"/>
653 <img class="tw:rounded-xs tw:object-cover tw:size-full" alt=""
654 src="${thumbnailURL}"/>
655 <#if thumbnail.values.reproductionNotes?hasContent || thumbnail.values.reproductionCopyright?hasContent>
656 <figcaption class="tw:ml-[0.625rem] tw:opacity-70 tw:text-[0.75rem]/[1rem] tw:font-medium tw:mt-[0.3125rem]
657 tw:md:ml-0">
658 ${[thumbnail.values.reproductionNotes, thumbnail.values.reproductionCopyright]?filter(v->v?hasContent)?join(" - ")}
659 </figcaption>
660 </#if>
661 </figure>
662 </div>
663 </div>
664 </#if>
665 <@garance.noticeTools />
666 </div>
667 </div>
668 </div>
669 <div class="notice-content">
670
671 <div class="tw:overflow-y-clip tw:py-10">
672 <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!
673 tw:lg:top-[6.875rem] tw:lg:h-0 tw:lg:overflow-visible tw:lg:sticky
674 tw:xl:top-[8.85rem]">
675 <nav class="tw:bg-beige tw:lg:w-[14.25rem]" role="navigation" aria-labelledby="summary-title">
676 <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]
677 tw:max-lg:px-[calc(5rem/2)]
678 tw:lg:hidden" aria-label="Ouvrir/Fermer le sommaire" aria-expanded="false"
679 aria-controls="summary-list">
680 <span>Sommaire</span>
681 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:outline-offset-[-0.125rem]
682 tw:group-[&.open]:rotate-180" aria-hidden="true"></span>
683 </button>
684 <div id="summary-list" class="tw:overflow-y-auto tw:bg-white tw:transition-all tw:max-sm:px-[calc(2.5rem/2)]
685 tw:max-lg:max-h-0 tw:max-lg:px-[calc(5rem/2)] tw:max-lg:max-w-full
686 tw:group-[&.open]:max-h-[calc(100vh-(4.375rem+3.125rem))]
687 tw:lg:max-h-[calc(100vh-12.5rem)] tw:lg:bg-transparent" tabindex="-1">
688 <ul class="tw:border-sommaire-border tw:border-l-[0.125rem] tw:my-2">
689 <#if showIdentity>
690 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
691 <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]
692 tw:[&.is-active]:border-prim" tabindex="-1">
693 <span>${summary["IdentitePersonne"]?hasContent?then(summary["IdentitePersonne"], "Identité")}</span>
694 </a>
695 </li>
696 </#if>
697 <#if showBiographie>
698 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
699 <a href="#biographie" 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]
700 tw:[&.is-active]:border-prim" tabindex="-1">
701 <span>${summary["BiographiePersonne"]?hasContent?then(summary["BiographiePersonne"], "Biographie")}</span>
702 </a>
703 </li>
704 </#if>
705 <#if peopleEntry.values.personneType == "G" && filialeFull?hasContent>
706 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
707 <a href="#groupe" 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]
708 tw:[&.is-active]:border-prim" tabindex="-1">
709 <span>${summary["MembreDuGroupePersonne"]?hasContent?then(summary["MembreDuGroupePersonne"], "Membre du groupe")}</span>
710 </a>
711 </li>
712 </#if>
713 <#if showFilmo>
714 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
715 <a href="#filmographie" 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]
716 tw:[&.is-active]:border-prim" tabindex="-1">
717 <span>${summary["FilmographiePersonne"]?hasContent?then(summary["FilmographiePersonne"], "Filmographie")}</span>
718 </a>
719 </li>
720 </#if>
721 <#if showBibliographie>
722 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
723 <a href="#bibliographie" 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]
724 tw:[&.is-active]:border-prim" tabindex="-1">
725 <span>${summary["BibliographieEditorialePersonne"]?hasContent?then(summary["BibliographieEditorialePersonne"], "Bibliographie éditoriale")}</span>
726 </a>
727 </li>
728 </#if>
729 <#if showAwards>
730 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
731 <a href="#recompenses" 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]
732 tw:[&.is-active]:border-prim" tabindex="-1">
733 <span>${summary["RecompensesEtNominationsPersonne"]?hasContent?then(summary["RecompensesEtNominationsPersonne"], "Récompenses et nominations")}</span>
734 </a>
735 </li>
736 </#if>
737 <#if showFamille>
738 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
739 <a href="#famille" 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]
740 tw:[&.is-active]:border-prim" tabindex="-1">
741 <span>${summary["LiensFamiliauxPersonne"]?hasContent?then(summary["LiensFamiliauxPersonne"], "Liens familiaux")}</span>
742 </a>
743 </li>
744 </#if>
745 <#if showProfessional>
746 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
747 <a href="#pro" 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]
748 tw:[&.is-active]:border-prim" tabindex="-1">
749 <span>${summary["RelationsProfessionnellesPersonne"]?hasContent?then(summary["RelationsProfessionnellesPersonne"], "Relations professionnelles")}</span>
750 </a>
751 </li>
752 </#if>
753 <#if showMedia>
754 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
755 <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]
756 tw:[&.is-active]:border-prim" tabindex="-1">
757 <span>${summary["RessourcesMediaPersonne"]?hasContent?then(summary["RessourcesMediaPersonne"], "Ressources média")}</span>
758 </a>
759 </li>
760 </#if>
761 <#if showCollection>
762 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
763 <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]
764 tw:[&.is-active]:border-prim" tabindex="-1">
765 <span>${summary["CollectionsLieesPersonne"]?hasContent?then(summary["CollectionsLieesPersonne"], "Collections liées")}</span>
766 </a>
767 </li>
768 </#if>
769 </ul>
770 </div>
771 </nav>
772 </div>
773
774 <#if showIdentity>
775 <div id="identite" class="js-summary-content" tabindex="-1"></div>
776 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
777 <h2 class="tw:text-prim tw:mb-5">${summary["IdentitePersonne"]?hasContent?then(summary["IdentitePersonne"], "Identité")}</h2>
778 <#if ObjectField_typeDePersonneMorale.getData()?hasContent>
779 <p class="tw:flex tw:max-sm:flex-col tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
780 <span class="tw:font-bold tw:shrink-0">Type de personne morale :</span>
781 <span>${ObjectField_typeDePersonneMorale.getData()}</span>
782 </p>
783 </#if>
784
785 <#if ObjectField_denominationSociale.getData()?hasContent>
786 <p class="tw:flex tw:max-sm:flex-col tw:items-start tw:gap-[0.625rem] tw:text-notice tw:mb-[0.625rem]">
787 <span class="tw:font-bold tw:shrink-0">Dénomination sociale :</span>
788 <span>${ObjectField_denominationSociale.getData()}</span>
789 </p>
790 </#if>
791
792 <#if ObjectField_gender.getData()?hasContent>
793 <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]">
794 <span class="tw:font-bold tw:shrink-0">Genre :</span>
795 <span>${ObjectField_gender.getData()}</span>
796 </p>
797 </#if>
798
799 <#if .dataModel["ObjectRelationship#C_Thesaurus#nationalityNaturalisation_label"].getData()?hasContent>
800 <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]">
801 <span class="tw:font-bold tw:shrink-0">Naturalisation :</span>
802 <span>${.dataModel["ObjectRelationship#C_Thesaurus#nationalityNaturalisation_label"].getData()}</span>
803 </p>
804 </#if>
805
806 <#if pseudoFull?hasContent>
807 <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]">
808 <p id="identite-pseudo"
809 class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">${titleLabels.pseudo[peopleEntry.values.personneType]}
810 :</p>
811 <ul aria-labelledby="identite-pseudo">
812 <#list pseudoFull as pseudo>
813 <li>${garance.getCleanFullName(pseudo.values.fullName)}</li>
814 </#list>
815 </ul>
816 </div>
817 </#if>
818
819 <#if translitFull?hasContent>
820 <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]">
821 <p id="identite-pseudo" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">
822 Translittération
823 :</p>
824 <ul aria-labelledby="identite-pseudo">
825 <#list translitFull as translit>
826 <li>${garance.getCleanFullName(translit.values.fullName)}</li>
827 </#list>
828 </ul>
829 </div>
830 </#if>
831
832 <#if equiFull?hasContent>
833 <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]">
834 <p id="identite-pseudo" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">État civil
835 :</p>
836 <ul aria-labelledby="identite-pseudo">
837 <#list equiFull as equi>
838 <li>${garance.getCleanFullName(equi.values.fullName)}</li>
839 </#list>
840 </ul>
841 </div>
842 </#if>
843
844 <#if .dataModel["ObjectRelationship#C_Thesaurus#profession_label"].getData()?hasContent>
845 <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]">
846 <span class="tw:font-bold tw:shrink-0">Métier :</span>
847 <span>${.dataModel["ObjectRelationship#C_Thesaurus#profession_label"].getData()}</span>
848 </p>
849 </#if>
850
851 <#if functionsFull?hasContent>
852 <#assign functionsCollect = []>
853 <#if functionsFull.film??>
854 <#assign functionsCollect = functionsCollect + functionsFull.film >
855 </#if>
856 <#if functionsFull.imprime??>
857 <#list functionsFull.imprime as imprimeWork>
858 <#if imprimeWork.values.r_imprimeAuthorRole_c_thesaurusId != 0>
859 <#assign functionsCollect = functionsCollect + [garance.getThesaurusByID(imprimeWork.values.r_imprimeAuthorRole_c_thesaurusId)]>
860 </#if>
861 </#list>
862 </#if>
863 <#if functionsFull.imageFixe??>
864 <#list functionsFull.imageFixe as imageFixeWork>
865 <#if imageFixeWork.values.castCreditType?hasContent>
866 <#assign functionsCollect = functionsCollect + [garance.getPicklistItemName(imageFixeWork.values.castCreditType, "picklistImprimeCastCreditType")]>
867 </#if>
868 </#list>
869 </#if>
870 <#if functionsFull.archive??>
871 <#list functionsFull.archive as archiveWork>
872 <#if archiveWork.values.psoterCastFonction?hasContent>
873 <#assign functionsCollect = functionsCollect + [garance.getPicklistItemName(archiveWork.values.psoterCastFonction, "picklistArchiveAuthorFunction")]>
874 </#if>
875 </#list>
876 </#if>
877 <#assign cleanFunctionsCollection = []>
878 <#list functionsCollect as funct>
879 <#if !(cleanFunctionsCollection?seqContains(funct))>
880 <#assign cleanFunctionsCollection = cleanFunctionsCollection + [funct]>
881 </#if>
882 </#list>
883 <#if cleanFunctionsCollection?hasContent>
884 <#assign cleanFunctionsCollection = cleanFunctionsCollection?map(f -> (f == "Réalisation")?then("Réalisateur", f))>
885 <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]">
886 <span class="tw:font-bold tw:shrink-0">Fonctions :</span>
887 <span>${cleanFunctionsCollection?join(", ")}</span>
888 </p>
889 </#if>
890 </#if>
891 </div>
892 </#if>
893
894 <#if peopleEntry.values.personneType == "G" && filialeFull?hasContent>
895 <div id="groupe" class="js-summary-content" tabindex="-1"></div>
896 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
897 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">
898 <h2 id="groupe-tl"
899 class="tw:text-prim tw:mb-5">${summary["MembreDuGroupePersonne"]?hasContent?then(summary["MembreDuGroupePersonne"], "Membre du groupe")}</h2>
900 <#if filialeFull?hasContent>
901 <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]">
902 <ul aria-labelledby="groupe-tl">
903 <#list filialeFull as filiale>
904 <li>
905 <#if filiale.personne.id?hasContent>
906 <a href="/l/${filiale.personne.id}"
907 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]">
908 ${filiale.personne.name}
909 </a>
910 <#else>
911 ${filiale.personne.name}
912 </#if><#if filiale.dateStart?hasContent> (${filiale.dateStart?string("yyyy")}<#if filiale.dateEnd?hasContent> - ${filiale.dateEnd?string("yyyy")}</#if>)</#if><#if filiale.notes?hasContent> - ${filiale.notes}</#if>
913 </li>
914 </#list>
915 </ul>
916 </div>
917 </#if>
918 </div>
919 </#if>
920
921 <#if showBiographie>
922 <div id="biographie" class="js-summary-content" tabindex="-1"></div>
923 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
924 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mt-5">
925 <h3 class="tw:mb-5 tw:text-prim">${summary["BiographiePersonne"]?hasContent?then(summary["BiographiePersonne"], "Biographie")}</h3>
926 <#if ObjectField_schoolStyle.getData()?hasContent>
927 <div class="tw:mb-[0.625rem]">
928 <div class="js-read-more" data-clamp-line="8" data-line-height="1.75">
929 <div class="wysiwyg--notice">
930 <h4 class="tw:font-txt tw:text-notice tw:font-bold tw:leading-[1.75rem]">
931 Formation :</h4>
932 ${ObjectField_schoolStyle.getData()}
933 </div>
934 </div>
935 <button type="button"
936 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]">
937 <span>Lire plus</span>
938 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
939 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
940 </button>
941 </div>
942 </#if>
943 <#if ObjectField_occupation.getData()?hasContent>
944 <div class="tw:mb-[0.625rem]">
945 <div class="js-read-more" data-clamp-line="8" data-line-height="1.75">
946 <div class="wysiwyg--notice">
947 <h4 class="tw:font-txt tw:text-notice tw:font-bold tw:leading-[1.75rem]">
948 Carrière :</h4>
949 ${ObjectField_occupation.getData()}
950 </div>
951 </div>
952 <button type="button"
953 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]">
954 <span>Lire plus</span>
955 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
956 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
957 </button>
958 </div>
959 </#if>
960 <#if ObjectField_otherActivities.getData()?hasContent>
961 <div>
962 <div class="js-read-more" data-clamp-line="8" data-line-height="1.75">
963 <div class="wysiwyg--notice">
964 <h4 class="tw:font-txt tw:text-notice tw:font-bold tw:leading-[1.75rem]">
965 Autres activités :</h4>
966 ${ObjectField_otherActivities.getData()}
967 </div>
968 </div>
969 <button type="button"
970 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]">
971 <span>Lire plus</span>
972 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
973 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
974 </button>
975 </div>
976 </#if>
977 </div>
978 </div>
979 </#if>
980
981 <#if showFilmo>
982 <div id="filmographie" class="js-summary-content" tabindex="-1"></div>
983 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
984 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">
985 <h2 class="tw:text-prim tw:mb-5">${summary["FilmographiePersonne"]?hasContent?then(summary["FilmographiePersonne"], "Filmographie")}</h2>
986
987 <div class="tw:flex tw:gap-5">
988 <#if filmoShort?hasContent>
989 <#assign filmoShortSorted = garance.sortFilmo(filmoShort) />
990 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mt-5 tw:w-full">
991 <h3 class="tw:mb-5">Courts métrages</h3>
992
993 <#list filmoShortSorted as section>
994 <div class="js-list-expand <#if !section?isLast>tw:mb-10</#if>">
995 <p class="tw:leading-[1.625rem] tw:font-bold"
996 id="long-${section.fonction}">${section.fonction}</p>
997 <ul aria-labelledby="long-${section.fonction}">
998 <#list section.items?sortBy("year") as item>
999 <#assign filmWorkRel = objectRelationshipLocalService.getObjectRelationship(item.film.objectDefinitionId, "filmWork")>
1000 <#assign filmWorks = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, filmWorkRel.objectRelationshipId, item.film.objectEntryId, true, null, -1, -1 ) />
1001 <li class="tw:leading-[1.625rem] <#if (item?index > 4)>tw:hidden</#if>">
1002 <#if item.year == 0>?<#else>${item.year}</#if>
1003 - <#if filmWorks?hasContent>
1004 <a href="/l/${(filmWorks?first).objectEntryId}"
1005 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]">
1006 ${item.film.values.titleComplete}</a>
1007 <#else>${item.film.values.titleComplete}
1008 </#if>
1009 </li>
1010 </#list>
1011 </ul>
1012 <#if (section.items?size > 5)>
1013 <button type="button"
1014 class="js-expand tw:items-center tw:leading-[1.75rem] tw:mt-[0.3125rem] 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]">
1015 <span>Voir plus</span>
1016 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1017 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1018 </button>
1019 </#if>
1020 </div>
1021 </#list>
1022 </div>
1023 </#if>
1024
1025
1026 <#if filmoLong?hasContent>
1027 <#assign filmoLongSorted = garance.sortFilmo(filmoLong) />
1028 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mt-5 tw:w-full">
1029 <h3 class="tw:mb-5">Longs métrages</h3>
1030
1031 <#list filmoLongSorted as section>
1032 <div class="js-list-expand <#if !section?isLast>tw:mb-10</#if>">
1033 <p class="tw:leading-[1.625rem] tw:font-bold"
1034 id="long-${section.fonction}">${section.fonction}</p>
1035 <ul aria-labelledby="long-${section.fonction}">
1036 <#list section.items?sortBy("year") as item>
1037 <#assign filmWorkRel = objectRelationshipLocalService.getObjectRelationship(item.film.objectDefinitionId, "filmWork")>
1038 <#assign filmWorks = objectEntryLocalService.getOneToManyObjectEntries(peopleGroupID, filmWorkRel.objectRelationshipId, item.film.objectEntryId, true, null, -1, -1 ) />
1039 <li class="tw:leading-[1.625rem] <#if (item?index > 4)>tw:hidden</#if>">
1040 <#if item.year == 0>?<#else>${item.year}</#if>
1041 - <#if filmWorks?hasContent>
1042 <a href="/l/${(filmWorks?first).objectEntryId}"
1043 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]">
1044 ${item.film.values.titleComplete}</a>
1045 <#else>${item.film.values.titleComplete}
1046 </#if>
1047 </li>
1048 </#list>
1049 </ul>
1050 <#if (section.items?size > 5)>
1051 <button type="button"
1052 class="js-expand tw:items-center tw:leading-[1.75rem] tw:mt-[0.3125rem] 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]">
1053 <span>Voir plus</span>
1054 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1055 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1056 </button>
1057 </#if>
1058 </div>
1059 </#list>
1060 </div>
1061 </#if>
1062 </div>
1063 </div>
1064 </#if>
1065
1066 <#if showBibliographie>
1067 <div id="bibliographie" class="js-summary-content" tabindex="-1"></div>
1068 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1069 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">
1070 <h2 id="biblio"
1071 class="tw:text-prim tw:mb-5">${summary["BibliographieEditorialePersonne"]?hasContent?then(summary["BibliographieEditorialePersonne"], "Bibliographie éditoriale")}</h2>
1072 <div class="wysiwyg js-list-expand">
1073 <ul aria-labelledby="biblio">
1074 <#list digitalRefs as digitalRef>
1075 <li <#if (digitalRef?index > 4)>class="tw:hidden"</#if>><#if digitalRef.values.bibliographyType?hasContent>${garance.getPicklistItemName(digitalRef.values.bibliographyType, "picklistBibliographieReferenceType")} : </#if>${digitalRef.values.digitalReferenceDescription}</li>
1076 </#list>
1077 </ul>
1078 <#if (digitalRefs?size > 5)>
1079 <button type="button"
1080 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]">
1081 <span>Voir plus</span>
1082 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1083 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1084 </button>
1085 </#if>
1086 </div>
1087 </div>
1088 </#if>
1089
1090 <#if showAwards>
1091 <div id="recompenses" class="js-summary-content" tabindex="-1"></div>
1092 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1093 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">
1094 <h2 id="awards"
1095 class="tw:text-prim tw:mb-5">${summary["RecompensesEtNominationsPersonne"]?hasContent?then(summary["RecompensesEtNominationsPersonne"], "Récompenses et nominations")}</h2>
1096 <div class="wysiwyg js-list-expand">
1097 <ul aria-labelledby="awards">
1098 <#list awardsFull as award>
1099 <li class="tw:font-semibold! <#if (award?index > 4)>tw:hidden</#if>">${award?filter(a -> a?hasContent)?join(" - ")}</li>
1100 </#list>
1101 </ul>
1102 <#if (awardsFull?size > 5)>
1103 <button type="button"
1104 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]">
1105 <span>Voir plus</span>
1106 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1107 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1108 </button>
1109 </#if>
1110 </div>
1111 </div>
1112 </#if>
1113
1114 <#if showFamille>
1115 <div id="famille" class="js-summary-content" tabindex="-1"></div>
1116 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1117 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">
1118 <h2 id="awards"
1119 class="tw:text-prim tw:mb-5">${summary["LiensFamiliauxPersonne"]?hasContent?then(summary["LiensFamiliauxPersonne"], "Liens familiaux")}</h2>
1120 <#if relatedPersonneParents?hasContent>
1121 <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]">
1122 <p id="famille-parent" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Parent de
1123 :</p>
1124 <ul aria-labelledby="famille-parent">
1125 <#list relatedPersonneParents as relatedPersonneParent>
1126 <li>
1127 <#if relatedPersonneParent.personne.id?hasContent>
1128 <a href="/l/${relatedPersonneParent.personne.id}"
1129 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]">
1130 ${relatedPersonneParent.personne.name}
1131 </a>
1132 <#else>
1133 ${relatedPersonneParent.personne.name}
1134 </#if><#if relatedPersonneParent.notes?hasContent> - ${relatedPersonneParent.notes}</#if>
1135 </li>
1136 </#list>
1137 </ul>
1138 </div>
1139 </#if>
1140 <#if relatedPersonneChildren?hasContent>
1141 <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]">
1142 <p id="famille-enfant" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Enfant de
1143 :</p>
1144 <ul aria-labelledby="famille-enfant">
1145 <#list relatedPersonneChildren as relatedPersonneChild>
1146 <li>
1147 <#if relatedPersonneChild.personne.id?hasContent>
1148 <a href="/l/${relatedPersonneChild.personne.id}"
1149 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]">
1150 ${relatedPersonneChild.personne.name}
1151 </a>
1152 <#else>
1153 ${relatedPersonneChild.personne.name}
1154 </#if><#if relatedPersonneChild.notes?hasContent> - ${relatedPersonneChild.notes}</#if>
1155 </li>
1156 </#list>
1157 </ul>
1158 </div>
1159 </#if>
1160 <#if relatedPPFull?hasContent>
1161 <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]">
1162 <p id="famille-mariage" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Marié(e) à
1163 :</p>
1164 <ul aria-labelledby="famille-mariage">
1165 <#list relatedPPFull as relatedPP>
1166 <li>
1167 <#if relatedPP.personne.id?hasContent>
1168 <a href="/l/${relatedPP.personne.id}"
1169 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]">
1170 ${relatedPP.personne.name}
1171 </a>
1172 <#else>
1173 ${relatedPP.personne.name}
1174 </#if><#if relatedPP.notes?hasContent> - ${relatedPP.notes}</#if>
1175 </li>
1176 </#list>
1177 </ul>
1178 </div>
1179 </#if>
1180 <#if relationFiliationFull?hasContent>
1181 <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]">
1182 <p id="famille-filiation" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Frère/Sœur
1183 de
1184 :</p>
1185 <ul aria-labelledby="famille-filiation">
1186 <#list relationFiliationFull as relationFiliation>
1187 <li>
1188 <#if relationFiliation.personne.id?hasContent>
1189 <a href="/l/${relationFiliation.personne.id}"
1190 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]">
1191 ${relationFiliation.personne.name}
1192 </a>
1193 <#else>
1194 ${relationFiliation.personne.name}
1195 </#if><#if relationFiliation.notes?hasContent> - ${relationFiliation.notes}</#if>
1196 </li>
1197 </#list>
1198 </ul>
1199 </div>
1200 </#if>
1201 </div>
1202 </#if>
1203
1204 <#if showProfessional>
1205 <div id="pro" class="js-summary-content" tabindex="-1"></div>
1206 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1207 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">
1208 <h2 id="awards"
1209 class="tw:text-prim tw:mb-5">${summary["RelationsProfessionnellesPersonne"]?hasContent?then(summary["RelationsProfessionnellesPersonne"], "Relations professionnelles")}</h2>
1210 <#if peopleEntry.values.personneType == "PP">
1211 <#if relationGFull?hasContent>
1212 <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]">
1213 <p id="pro-fondation" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Fondateur
1214 de
1215 :</p>
1216 <ul aria-labelledby="pro-fondation">
1217 <#list relationGFull as relationG>
1218 <li>
1219 <#if relationG.personne.id?hasContent>
1220 <a href="/l/${relationG.personne.id}"
1221 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]">
1222 ${relationG.personne.name}
1223 </a>
1224 <#else>
1225 ${relationG.personne.name}
1226 </#if><#if relationG.notes?hasContent> - ${relationG.notes}</#if>
1227 </li>
1228 </#list>
1229 </ul>
1230 </div>
1231 </#if>
1232 <#if relationPMFull?hasContent>
1233 <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]">
1234 <p id="pro-entreprise" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">A
1235 travaillé
1236 pour
1237 :</p>
1238 <ul aria-labelledby="pro-entreprise">
1239 <#list relationPMFull as relationPM>
1240 <li>
1241 <#if relationPM.personne.id?hasContent>
1242 <a href="/l/${relationPM.personne.id}"
1243 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]">
1244 ${relationPM.personne.name}
1245 </a>
1246 <#else>
1247 ${relationPM.personne.name}
1248 </#if><#if relationPM.notes?hasContent> - ${relationPM.notes}</#if>
1249 </li>
1250 </#list>
1251 </ul>
1252 </div>
1253 </#if>
1254 <#if partOfFull?hasContent>
1255 <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]">
1256 <p id="pro-groupe" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Fait partie
1257 du groupe
1258 :</p>
1259 <ul aria-labelledby="pro-groupe">
1260 <#list partOfFull as partOf>
1261 <li>
1262 <#if partOf.personne.id?hasContent>
1263 <a href="/l/${partOf.personne.id}"
1264 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]">
1265 ${partOf.personne.name}
1266 </a>
1267 <#else>
1268 ${partOf.personne.name}
1269 </#if><#if partOf.notes?hasContent> - ${partOf.notes}</#if>
1270 </li>
1271 </#list>
1272 </ul>
1273 </div>
1274 </#if>
1275 <#elseIf peopleEntry.values.personneType == "PM">
1276 <#if groupeGenFull?hasContent>
1277 <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]">
1278 <p id="pro-groupe" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Type de
1279 relation :</p>
1280 <ul aria-labelledby="pro-groupe">
1281 <#list groupeGenFull as groupGen>
1282 <li><#if groupGen.type?hasContent>${garance.getPicklistItemName(groupGen.type, "picklistGroupRelationType")} </#if>
1283 <#if groupGen.personne.id?hasContent>
1284 <a href="/l/${groupGen.personne.id}"
1285 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]">
1286 ${groupGen.personne.name}
1287 </a>
1288 <#else>
1289 ${groupGen.personne.name}
1290 </#if><#if groupGen.date?hasContent> (${groupGen.date?string("yyyy")})</#if><#if groupGen.notes?hasContent> - ${groupGen.notes}</#if>
1291 </li>
1292 </#list>
1293 </ul>
1294 </div>
1295 </#if>
1296 <#if partOfFull?hasContent>
1297 <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]">
1298 <p id="pro-groupe" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Fait partie
1299 du groupe
1300 :</p>
1301 <ul aria-labelledby="pro-groupe">
1302 <#list partOfFull as partOf>
1303 <li>
1304 <#if partOf.personne.id?hasContent>
1305 <a href="/l/${partOf.personne.id}"
1306 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]">
1307 ${partOf.personne.name}
1308 </a>
1309 <#else>
1310 ${partOf.personne.name}
1311 </#if><#if partOf.dateStart?hasContent> (${partOf.dateStart?string("yyyy")})</#if><#if partOf.notes?hasContent> - ${partOf.notes}</#if>
1312 </li>
1313 </#list>
1314 </ul>
1315 </div>
1316 </#if>
1317 <#if filialeFull?hasContent>
1318 <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]">
1319 <p id="pro-filiale" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">A pour
1320 filiale
1321 :</p>
1322 <ul aria-labelledby="pro-filiale">
1323 <#list filialeFull as filiale>
1324 <li>
1325 <#if filiale.personne.id?hasContent>
1326 <a href="/l/${filiale.personne.id}"
1327 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]">
1328 ${filiale.personne.name}
1329 </a>
1330 <#else>
1331 ${filiale.personne.name}
1332 </#if><#if filiale.dateStart?hasContent> (${filiale.dateStart?string("yyyy")})</#if><#if filiale.notes?hasContent> - ${filiale.notes}</#if>
1333 </li>
1334 </#list>
1335 </ul>
1336 </div>
1337 </#if>
1338 <#if relationPMFull?hasContent>
1339 <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]">
1340 <p id="pro-entreprise" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">A employé
1341 :</p>
1342 <ul aria-labelledby="pro-entreprise">
1343 <#list relationPMFull as relationPM>
1344 <li>
1345 <#if relationPM.personne.id?hasContent>
1346 <a href="/l/${relationPM.personne.id}"
1347 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]">
1348 ${relationPM.personne.name}
1349 </a>
1350 <#else>
1351 ${relationPM.personne.name}
1352 </#if><#if relationPM.dateStart
1353 ?hasContent>(${[relationPM.dateStart?string("yyyy"), relationPM.dateEnd?string("yyyy")]
1354 ?filter(v->v?hasContent)
1355 ?join(" - ")})</#if><#if relationPM.notes?hasContent> - ${relationPM.notes}</#if>
1356 </li>
1357 </#list>
1358 </ul>
1359 </div>
1360 </#if>
1361 <#if relationGFull?hasContent>
1362 <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]">
1363 <p id="pro-fondation" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">A été créé
1364 part :</p>
1365 <ul aria-labelledby="pro-fondation">
1366 <#list relationGFull as relationG>
1367 <li>
1368 <#if relationG.personne.id?hasContent>
1369 <a href="/l/${relationG.personne.id}"
1370 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]">
1371 ${relationG.personne.name}
1372 </a>
1373 <#else>
1374 ${relationG.personne.name}
1375 </#if><#if relationG.notes?hasContent> - ${relationG.notes}</#if>
1376 </li>
1377 </#list>
1378 </ul>
1379 </div>
1380 </#if>
1381 </#if>
1382 </div>
1383 </#if>
1384 </div>
1385 <#if showMedia>
1386 <#assign medias = []>
1387 <#if reproductionsVideos?hasContent>
1388 <#assign medias = medias + [{
1389 "type": "video",
1390 "title": "Vidéos",
1391 "reproductions": reproductionsVideos
1392 }]>
1393 </#if>
1394 <#if reproductionsImages?hasContent>
1395 <#assign medias = medias + [{
1396 "type": "image",
1397 "title": "Images",
1398 "reproductions": reproductionsImages
1399 }]>
1400 </#if>
1401 <#if bureautiqueFull?hasContent>
1402 <#assign medias = medias + [{
1403 "type": "fichier",
1404 "title": "Fichiers bureautiques",
1405 "reproductions": bureautiqueFull
1406 }]>
1407 </#if>
1408
1409 <div id="ressources" class="js-summary-content" tabindex="-1"></div>
1410 <div class="page-wrapper tw:py-10">
1411 <h2 id="ressources-tl"
1412 class="tw:text-prim tw:mb-5">${summary["RessourcesMediaPersonne"]?hasContent?then(summary["RessourcesMediaPersonne"], "Ressources média")}</h2>
1413 <@garance.displayMedia data=medias />
1414 </div>
1415 </#if>
1416 <#if showCollection>
1417 <div id="collections" class="js-summary-content" tabindex="-1"></div>
1418 <div class="page-wrapper tw:py-10">
1419 <h2 id="collections-tl"
1420 class="tw:text-prim tw:mb-5">${summary["CollectionsLieesPersonne"]?hasContent?then(summary["CollectionsLieesPersonne"], "Collections liées")}</h2>
1421 <#assign roOrder = {"authoredCollect": "Auteur dans les collections",
1422 "subjectCollect": "Sujet dans les collections",
1423 "representedCollect": "Représenté dans les collections"} />
1424 <#assign collectFull = {}>
1425 <#if authoredCollect?hasContent>
1426 <#assign collectFull = collectFull + {"authoredCollect" : authoredCollect}>
1427 </#if>
1428 <#if subjectCollect?hasContent>
1429 <#assign collectFull = collectFull + {"subjectCollect" : subjectCollect}>
1430 </#if>
1431 <#if representedCollect?hasContent>
1432 <#assign collectFull = collectFull + {"representedCollect" : representedCollect}>
1433 </#if>
1434 <div>
1435 <div class="tabs">
1436 <div role="tablist" aria-labelledby="collections-tl"
1437 class="automatic tw:bg-white tw:rounded-xs tw:flex tw:overflow-x-auto">
1438 <#assign isFirstTab = true>
1439 <#list roOrder as key, label>
1440 <#if collectFull[key]?hasContent>
1441 <button id="tab-${key}" type="button" role="tab"
1442 aria-selected="${isFirstTab?string}"
1443 class="tw:group"
1444 aria-controls="tabpanel-${key}"
1445 tabindex="-1">
1446 <span class="tw:transition-all tw:whitespace-nowrap tw:font-title tw:text-[1.125rem]/[1.6875rem] tw:text-placeholder tw:font-semibold tw:block tw:px-10 tw:py-[0.475rem] tw:border-y-[0.25rem] tw:border-transparent tw:border-solid tw:group-aria-selected:border-b-prim tw:group-aria-selected:text-prim tw:group-hover:text-prim">${label}</span>
1447 </button>
1448 <#assign isFirstTab = false>
1449 </#if>
1450 </#list>
1451 </div>
1452 <#assign isFirstTab = true>
1453 <#list roOrder as key, value>
1454 <#if collectFull[key]?hasContent>
1455 <div id="tabpanel-${key}" role="tabpanel" tabindex="0" aria-labelledby="tab-${key}"
1456 class="<#if !isFirstTab>tw:hidden</#if>">
1457 <div class="img-gallery js-img-gallery splide js-ressources tw:py-5 tw:relative">
1458 <div class="splide__track">
1459 <ul class="splide__list">
1460 <#list collectFull[key] as objectCard>
1461 <#assign thumbnail = {}>
1462 <#assign reproductionImageURL = "">
1463 <#if objectCard.repros?hasContent>
1464 <#assign relatedObjectThumbnails = objectCard.repros?filter(r -> (r.values.reproductionNature == "PICTURE" && r.values.media?string != "0"))>
1465 <#if relatedObjectThumbnails?hasContent>
1466 <#assign thumbnail = relatedObjectThumbnails?first>
1467 <#assign fileEntryDesktop = dlAppLocalService.getFileEntry(thumbnail.values.media?number) />
1468 <#assign reproductionImageURL = dlURLHelper.getPreviewURL(fileEntryDesktop, fileEntryDesktop.getFileVersion(),
1469 null, "", !fileEntryDesktop.getFileVersion().equals(fileEntryDesktop.getLatestFileVersion()), true) />
1470 </#if>
1471 </#if>
1472 <#if objectCard.title?hasContent && objectCard.id??>
1473 <li class="splide__slide"
1474 style="width: 14.375rem">
1475 <a href="/l/${objectCard.id}"
1476 class="zoom-effect tw:w-full tw:h-fit tw:relative tw:group tw:overflow-hidden tw:block tw:size-full tw:flex tw:flex-col">
1477 <#if reproductionImageURL?hasContent >
1478 <figure class="tw:w-full tw:h-fit">
1479 <div class="tw:relative tw:w-full tw:h-[17.5rem] tw:object-cover tw:overflow-hidden tw:mb-[0.625rem]">
1480 <picture>
1481 <img src="${reproductionImageURL}"
1482 alt=""
1483 class="tw:size-full tw:transition-all tw:object-cover tw:scale-100 tw:group-hover:scale-110"/>
1484 </picture>
1485 </div>
1486 </figure>
1487 <#else>
1488 <div class="tw:relative tw:w-full tw:h-[17.5rem] tw:overflow-hidden tw:mb-[0.625rem]">
1489 <div class="no-photo" aria-hidden="true">
1490 <p>Garance</p>
1491 </div>
1492 </div>
1493 </#if>
1494 <p class="">
1495 <span class="tw:font-title tw:font-medium tw:text-[1.25rem]/[1.875rem]">${objectCard.title}</span>
1496 <span class="icon-arrow-right tw:transition-all tw:text-[0.875rem] tw:text-prim tw:ml-1 tw:group-hover:ml-2"></span>
1497 </p>
1498 </a>
1499 </li>
1500 </#if>
1501 </#list>
1502 </ul>
1503 </div>
1504
1505 <div class="splide__arrows tw:hidden tw:absolute tw:top-[calc(50%-1.25rem)] tw:left-[-2.5rem] tw:right-[-2.5rem] tw:lg:left-[-3.25rem] tw:lg:right-[-3.25rem] tw:sm:flex tw:justify-between tw:pointer-events-none">
1506 <button class="splide__arrow splide__arrow--prev tw:text-prim tw:text-[2.5rem] tw:pointer-events-auto tw:[&[disabled]]:invisible">
1507 <span class="icon-chevron-left" aria-hidden="true"></span>
1508 </button>
1509 <button class="splide__arrow splide__arrow--next tw:text-prim tw:text-[2.5rem] tw:pointer-events-auto tw:[&[disabled]]:invisible">
1510 <span class="icon-chevron-right" aria-hidden="true"></span>
1511 </button>
1512 </div>
1513 </div>
1514 </div>
1515 <#assign isFirstTab = false>
1516 </#if>
1517 </#list>
1518 </div>
1519 </div>
1520 </div>
1521 <script type="module" async>
1522 import('photoswipe')
1523 import('photoswipe-lightbox')
1524 </script>
1525 </#if>
1526 </div>
1527</div>