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