An error occurred while processing the template.
The string doesn't match the expected date/time/date-time format. The string to parse was: "1/1/31, 12:00 AM". The expected format was: "dd/MM/yyyy HH:mm".
The nested reason given follows:
Unparseable date: "1/1/31, 12:00 AM"
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${.dataModel["ObjectRelationship#C_Fi... [in template "22823141604726#20121#null" at line 779, column 37]
----
1<#assign
2dlAppLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
3dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
4
5objectEntryLocalService = serviceLocator.findService("com.liferay.object.service.ObjectEntryLocalService")
6objectRelationshipLocalService = serviceLocator.findService("com.liferay.object.service.ObjectRelationshipLocalService")
7objectDefinitionLocalService = serviceLocator.findService("com.liferay.object.service.ObjectDefinitionLocalService")
8
9listTypeDefinitionService = serviceLocator.findService("com.liferay.list.type.service.ListTypeDefinitionLocalService")
10listTypeEntryService = serviceLocator.findService("com.liferay.list.type.service.ListTypeEntryLocalService")
11/>
12
13<#assign summary = garance.getSummaryContent("Film")>
14
15<#assign workID = ObjectEntry_objectEntryId.getData()
16workEntry = objectEntryLocalService.fetchObjectEntry(workID?number)
17filmID = workEntry.values.r_filmWork_c_filmId
18filmEntry = objectEntryLocalService.fetchObjectEntry(filmID?number)
19filmGroupID = filmEntry.getGroupId() />
20
21<#--------------------------------- Identité -------------------------->
22<#assign othTltsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "otherTitles")>
23<#assign othTlts = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, othTltsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
24<#assign othTltsFull = othTlts?filter(ot -> ot.values.otherTitleType != "TITDEP") />
25
26<#assign viesPresRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "viesPresentation")>
27<#assign viesPres = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, viesPresRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
28<#assign viePresFull = []>
29<#assign viesPresFullOut = []>
30<#if viesPres?hasContent>
31 <#list viesPres as viePres>
32 <#assign viePresCountry = ''>
33 <#if viePres.values.r_viePresentationPays_c_thesaurusId != 0>
34 <#assign viePresCountry = garance.getThesaurusByID(viePres.values.r_viePresentationPays_c_thesaurusId)>
35 </#if>
36 <#if viePresCountry?hasContent
37 && viePresCountry == "France"
38 && viePres.values.viePresentationType?hasContent
39 && viePres.values.viePresentationType == "SALLE">
40 <#assign viePresFull = viePresFull + [viePres.values.viePresentationDate] />
41 <#elseIf viePresCountry?hasContent
42 && viePres.values.viePresentationType?hasContent
43 && (viePresCountry != "France" || viePres.values.viePresentationType != "SALLE")>
44 <#assign viesPresFullOut = viesPresFullOut + [{
45 "date": (viePres.values.viePresentationDate??)?then(viePres.values.viePresentationDate, ''),
46 "country": viePresCountry,
47 "type": garance.getPicklistItemName(viePres.values.viePresentationType, "picklistViePresentationType")
48 }] />
49 </#if>
50 </#list>
51</#if>
52
53<#assign creditsProdRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsProduction")>
54<#assign creditsProd = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, creditsProdRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
55<#assign creditsProdFull = []>
56<#if creditsProd?hasContent>
57 <#list creditsProd as creditProd>
58 <#assign creditProdDomaine = ''>
59 <#if creditProd.values.r_creditsProductionDomaine_c_thesaurusId != 0>
60 <#assign creditProdDomaine = garance.getThesaurusByID(creditProd.values.r_creditsProductionDomaine_c_thesaurusId)>
61 </#if>
62
63 <#if creditProdDomaine?hasContent && creditProdDomaine == "Société de production">
64 <#if creditProd.values.r_creditsProductionName_c_transitionPersonneId != 0>
65 <#assign creditsProdFull = creditsProdFull + [{
66 "personne": garance.getPersonneDisplayData(creditProd.values.r_creditsProductionName_c_transitionPersonneId),
67 "presume": creditProd.values.creditProductionPresume,
68 "credite": creditProd.values.creditProductionCredite
69 }] />
70 </#if>
71 </#if>
72 </#list>
73</#if>
74
75<#assign viesClassRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "viesClassification")>
76<#assign viesClass = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, viesClassRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
77<#assign viesClassFull = []>
78<#if viesClass?hasContent>
79 <#list viesClass as vieClass>
80 <#if vieClass.values.vieClassificationLevels?hasContent>
81 <#assign viesClassFull = viesClassFull + [{
82 "type" : garance.getPicklistItemName(vieClass.values.vieClassificationLevels, "picklistVieClassificationLevel"),
83 "date": (vieClass.values.vieClassificationDateDeDecision??)?then(vieClass.values.vieClassificationDateDeDecision, '')
84 }] />
85 </#if>
86 </#list>
87</#if>
88
89<#assign languesParlRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "languesParlees")>
90<#assign languesParl = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, languesParlRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
91<#assign languesParlFull = []>
92<#if languesParl?hasContent>
93 <#list languesParl as langueParl>
94 <#if langueParl.values.r_languagesSpoken_c_thesaurusId != 0>
95 <#assign langueThes = garance.getThesaurusByID(langueParl.values.r_languagesSpoken_c_thesaurusId)>
96 <#if langueThes?hasContent && langueParl.values.languagesSpokenType?hasContent>
97 <#assign languesParlFull = languesParlFull + [
98 garance.getPicklistItemName(langueParl.values.languagesSpokenType, "picklistLangueParleeType") + " : " + langueThes
99 ] />
100 </#if>
101 </#if>
102 </#list>
103</#if>
104
105<#assign cataloguesRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "catalogues")>
106<#assign catalogues = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, cataloguesRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
107
108<#assign showIdentity = (othTltsFull?hasContent
109|| .dataModel["ObjectRelationship#C_Film#filmWork_workType"].getData()?hasContent
110|| .dataModel["ObjectRelationship#C_Film#filmWork_cardinalite"].getData()?hasContent
111|| .dataModel["ObjectRelationship#C_Film#filmWork_titleDateStart"].getData()?hasContent
112|| viePresFull?hasContent
113|| creditsProdFull?hasContent
114|| .dataModel["ObjectRelationship#C_Film#filmWork_rcaLinkNumber"].getData()?hasContent
115|| viesClassFull?hasContent
116|| languesParlFull?hasContent
117|| catalogues?hasContent
118|| viesPresFullOut?hasContent
119)>
120
121<#--------------------------------- Description -------------------------->
122
123<#assign keywordsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "contentSubjects")>
124<#assign keywords = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, keywordsRel.objectRelationshipId, filmID, true, keywordsRel.isReverse(), null, -1, -1 ) />
125
126<#assign contentGenresRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "contentGenres")>
127<#assign contentGenres = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, contentGenresRel.objectRelationshipId, filmID, true, contentGenresRel.isReverse(), null, -1, -1 ) />
128
129<#assign formesOeuvreAdapteeRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "formesOeuvreAdaptee")>
130<#assign formesOeuvreAdaptee = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, formesOeuvreAdapteeRel.objectRelationshipId, filmID, true, formesOeuvreAdapteeRel.isReverse(), null, -1, -1 ) />
131
132<#assign vocabulairesCinematographiquesRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "vocabulairesCinematographiques")>
133<#assign vocabulairesCinematographiques = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, vocabulairesCinematographiquesRel.objectRelationshipId, filmID, true, vocabulairesCinematographiquesRel.isReverse(), null, -1, -1 ) />
134
135<#assign viesProductionRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "viesProduction")>
136<#assign viesProduction = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, viesProductionRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
137
138<#assign viesTournageRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "viesTournage")>
139<#assign viesTournage = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, viesTournageRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
140<#assign datesViesTournage = []>
141<#if viesTournage?hasContent>
142 <#list viesTournage as vieTournage>
143 <#assign vieTournageEndDate = "">
144 <#if vieTournage.values.vieProductionPrecisionDateStart?hasContent>
145 <#if vieTournage.values.vieProductionPrecisionDateEnd?hasContent>
146 <#assign vieTournageEndDate = vieTournage.values.vieProductionPrecisionDateEnd?string("dd/MM/yyyy") >
147 </#if>
148 <#assign datesViesTournage = datesViesTournage + [{
149 "start": vieTournage.values.vieProductionPrecisionDateStart?string("dd/MM/yyyy"),
150 "end": vieTournageEndDate
151 }]>
152 </#if>
153 </#list>
154</#if>
155
156
157<#assign studiosTournageRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "viesProductionStudiosDeTournage")>
158<#assign studiosTournage = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, studiosTournageRel.objectRelationshipId, filmID, true, studiosTournageRel.isReverse(), null, -1, -1 ) />
159
160<#assign studiosEnregRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "viesProductionStudiosDEnregistrement")>
161<#assign studiosEnreg = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, studiosEnregRel.objectRelationshipId, filmID, true, studiosEnregRel.isReverse(), null, -1, -1 ) />
162
163<#assign labsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "viesProductionLaboratoire")>
164<#assign labs = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, labsRel.objectRelationshipId, filmID, true, labsRel.isReverse(), null, -1, -1 ) />
165
166<#assign showDescription = (.dataModel["ObjectRelationship#C_Film#filmWork_description"].getData()?hasContent
167|| keywords?hasContent
168|| .dataModel["ObjectRelationship#C_Film#filmWork_genre"].getData()?hasContent
169|| contentGenres?hasContent
170|| formesOeuvreAdaptee?hasContent
171|| vocabulairesCinematographiques?hasContent
172|| viesProduction?hasContent
173|| datesViesTournage?hasContent
174|| studiosTournage?hasContent
175|| studiosEnreg?hasContent
176|| labs?hasContent
177|| .dataModel["ObjectRelationship#C_Film#filmWork_notes"].getData()?hasContent)>
178
179
180<#--------------------------------- Générique -------------------------->
181<#assign credRealsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsRealisation")>
182<#assign credReals = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, credRealsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
183<#assign credRealsFull = {}>
184<#list credReals as credReal>
185 <#assign function = "">
186 <#if credReal.values.r_creditsRealisationDomaine_c_thesaurusId != 0>
187 <#assign function = garance.getThesaurusByID(credReal.values.r_creditsRealisationDomaine_c_thesaurusId)>
188 </#if>
189
190 <#if credReal.values.r_creditsRealisationName_c_transitionPersonneId != 0>
191 <#if credRealsFull[function]??>
192 <#assign credRealsFull = credRealsFull + {function: credRealsFull[function]+ [{
193 "presume": credReal.values.creditRealisationPresume,
194 "credite": credReal.values.creditRealisationCredite,
195 "personne": garance.getPersonneDisplayData(credReal.values.r_creditsRealisationName_c_transitionPersonneId)
196 }]}>
197 <#else>
198 <#assign credRealsFull = credRealsFull + {function: [{
199 "presume": credReal.values.creditRealisationPresume,
200 "credite": credReal.values.creditRealisationCredite,
201 "personne": garance.getPersonneDisplayData(credReal.values.r_creditsRealisationName_c_transitionPersonneId)
202 }]}>
203 </#if>
204 </#if>
205</#list>
206
207<#assign credEcritsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsEcriture")>
208<#assign credEcrits = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, credEcritsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
209<#assign credEcritsFull = {}>
210<#list credEcrits as credEcriture>
211 <#assign function = "">
212 <#if credEcriture.values.r_creditsEcritureDomaine_c_thesaurusId != 0>
213 <#assign function = garance.getThesaurusByID(credEcriture.values.r_creditsEcritureDomaine_c_thesaurusId)>
214 </#if>
215 <#if credEcriture.values.r_creditsEcritureName_c_transitionPersonneId != 0>
216 <#if credEcritsFull[function]??>
217 <#assign credEcritsFull = credEcritsFull + {function: credEcritsFull[function]+ [{
218 "presume": credEcriture.values.creditEcriturePresume,
219 "credite": credEcriture.values.creditEcritureCredite,
220 "personne": garance.getPersonneDisplayData(credEcriture.values.r_creditsEcritureName_c_transitionPersonneId)
221 }]}>
222 <#else>
223 <#assign credEcritsFull = credEcritsFull + {function: [{
224 "presume": credEcriture.values.creditEcriturePresume,
225 "credite": credEcriture.values.creditEcritureCredite,
226 "personne": garance.getPersonneDisplayData(credEcriture.values.r_creditsEcritureName_c_transitionPersonneId)
227 }]}>
228 </#if>
229 </#if>
230</#list>
231
232<#assign credMusicsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsMusic")>
233<#assign credMusics = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, credMusicsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
234<#assign credMusicsFull = {}>
235<#list credMusics as credMusic>
236 <#assign function = "">
237 <#if credMusic.values.r_creditsMusicDomaine_c_thesaurusId != 0>
238 <#assign function = garance.getThesaurusByID(credMusic.values.r_creditsMusicDomaine_c_thesaurusId)>
239 </#if>
240 <#if credMusic.values.r_creditsMusicName_c_transitionPersonneId != 0>
241 <#if credMusicsFull[function]??>
242 <#assign credMusicsFull = credMusicsFull + {function: credMusicsFull[function]+ [{
243 "presume": credMusic.values.creditMusicPresume,
244 "credite": credMusic.values.creditMusicCredite,
245 "personne": garance.getPersonneDisplayData(credMusic.values.r_creditsMusicName_c_transitionPersonneId)
246 }]}>
247 <#else>
248 <#assign credMusicsFull = credMusicsFull + {function: [{
249 "presume": credMusic.values.creditMusicPresume,
250 "credite": credMusic.values.creditMusicCredite,
251 "personne": garance.getPersonneDisplayData(credMusic.values.r_creditsMusicName_c_transitionPersonneId)
252 }]}>
253 </#if>
254 </#if>
255</#list>
256
257
258<#assign credTechsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsTechnique")>
259<#assign credTechs = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, credTechsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
260<#assign credTechsFull = {}>
261<#list credTechs as credTechnique>
262 <#assign function = "">
263 <#if credTechnique.values.r_creditsTechniqueDomaine_c_thesaurusId != 0>
264 <#assign function = garance.getThesaurusByID(credTechnique.values.r_creditsTechniqueDomaine_c_thesaurusId)>
265 </#if>
266 <#if credTechnique.values.r_creditsTechniqueName_c_transitionPersonneId != 0>
267 <#if credTechsFull[function]??>
268 <#assign credTechsFull = credTechsFull + {function: credTechsFull[function]+ [{
269 "presume": credTechnique.values.creditTechniquePresume,
270 "credite": credTechnique.values.creditTechniqueCredite,
271 "personne": garance.getPersonneDisplayData(credTechnique.values.r_creditsTechniqueName_c_transitionPersonneId)
272 }]}>
273 <#else>
274 <#assign credTechsFull = credTechsFull + {function: [{
275 "presume": credTechnique.values.creditTechniquePresume,
276 "credite": credTechnique.values.creditTechniqueCredite,
277 "personne": garance.getPersonneDisplayData(credTechnique.values.r_creditsTechniqueName_c_transitionPersonneId)
278 }]}>
279 </#if>
280 </#if>
281</#list>
282
283<#assign credProdsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsProduction")>
284<#assign credProds = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, credProdsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
285<#assign credProdsFull = {}>
286<#list credProds as credProduction>
287 <#assign function = "">
288 <#if credProduction.values.r_creditsProductionDomaine_c_thesaurusId != 0>
289 <#assign function = garance.getThesaurusByID(credProduction.values.r_creditsProductionDomaine_c_thesaurusId)>
290 </#if>
291 <#if credProduction.values.r_creditsProductionName_c_transitionPersonneId != 0>
292 <#if credProdsFull[function]??>
293 <#assign credProdsFull = credProdsFull + {function: credProdsFull[function]+ [{
294 "presume": credProduction.values.creditProductionPresume,
295 "credite": credProduction.values.creditProductionCredite,
296 "personne": garance.getPersonneDisplayData(credProduction.values.r_creditsProductionName_c_transitionPersonneId)
297 }]}>
298 <#else>
299 <#assign credProdsFull = credProdsFull + {function: [{
300 "presume": credProduction.values.creditProductionPresume,
301 "credite": credProduction.values.creditProductionCredite,
302 "personne": garance.getPersonneDisplayData(credProduction.values.r_creditsProductionName_c_transitionPersonneId)
303 }]}>
304 </#if>
305 </#if>
306</#list>
307
308<#assign credIntersRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsInterpretation")>
309<#assign credInters = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, credIntersRel.objectRelationshipId, filmID, true, null, -1, -1) />
310<#assign credIntersFull = {}>
311<#list credInters as credInterpretation>
312 <#assign function = "">
313 <#if credInterpretation.values.r_creditsInterpretationDomaine_c_thesaurusId != 0>
314 <#assign function = garance.getThesaurusByID(credInterpretation.values.r_creditsInterpretationDomaine_c_thesaurusId)>
315 </#if>
316 <#if credInterpretation.values.r_creditsInterpretationName_c_transitionPersonneId != 0>
317 <#if credIntersFull[function]??>
318 <#assign credIntersFull = credIntersFull + {function: credIntersFull[function]+ [{
319 "presume": credInterpretation.values.creditInterpretationPresume,
320 "credite": credInterpretation.values.creditInterpretationCredite,
321 "role": credInterpretation.values.castCreditOnScreen,
322 "personne": garance.getPersonneDisplayData(credInterpretation.values.r_creditsInterpretationName_c_transitionPersonneId)
323 }]}>
324 <#else>
325 <#assign credIntersFull = credIntersFull + {function: [{
326 "presume": credInterpretation.values.creditInterpretationPresume,
327 "credite": credInterpretation.values.creditInterpretationCredite,
328 "role": credInterpretation.values.castCreditOnScreen,
329 "personne": garance.getPersonneDisplayData(credInterpretation.values.r_creditsInterpretationName_c_transitionPersonneId)
330 }]}>
331 </#if>
332 </#if>
333</#list>
334
335
336<#assign showGenerique = (credRealsFull?hasContent
337|| credEcritsFull?hasContent
338|| credMusicsFull?hasContent
339|| credTechsFull?hasContent
340|| credProdsFull?hasContent
341|| credIntersFull?hasContent
342)>
343
344
345
346<#--------------------------------- Infos techniques -------------------------->
347<#assign techColorsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "techniquesCouleur")>
348<#assign techColors = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, techColorsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
349
350<#assign workSoundsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "workSounds")>
351<#assign workSounds = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, workSoundsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
352<#assign workSoundsFull=[]>
353<#if workSounds?hasContent>
354 <#list workSounds as workSound>
355 <#assign systemLabel = "">
356 <#if workSound.values.r_workSystemeSonores_c_thesaurusId != 0>
357 <#assign systemLabel = garance.getThesaurusByID(workSound.values.r_workSystemeSonores_c_thesaurusId)>
358 <#if systemLabel?hasContent>
359 <#assign workSoundsFull = workSoundsFull + [{
360 "system": systemLabel,
361 "surround": garance.getThesaurusByID(workSound.values.r_workSurroundSounds_c_thesaurusId)
362 }]>
363 </#if>
364 </#if>
365 </#list>
366</#if>
367
368<#assign techniquesImageRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "techniquesImage")>
369<#assign techniquesImage = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, techniquesImageRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
370<#assign techniquesImageFull=[]>
371<#if techniquesImage?hasContent>
372 <#list techniquesImage as techniqueImage>
373 <#assign formatLabel = "">
374 <#if techniqueImage.values.r_formatsPicture_c_thesaurusId != 0>
375 <#assign formatLabel = garance.getThesaurusByID(techniqueImage.values.r_formatsPicture_c_thesaurusId)>
376 <#if formatLabel?hasContent>
377 <#assign techniquesImageFull = techniquesImageFull + [{
378 "format": formatLabel,
379 "cadrage": garance.getThesaurusByID(techniqueImage.values.r_workTechniqueCadrage_c_thesaurusId),
380 "relief": techniqueImage.values.workReliefFlag
381 }]>
382 </#if>
383 </#if>
384 </#list>
385</#if>
386
387<#assign showTechnique = (.dataModel["ObjectRelationship#C_Film#filmWork_typeDeMetrage"].getData()?hasContent
388|| (.dataModel["ObjectRelationship#C_Film#filmWork_workVariantQuantity"].getData()?hasContent && .dataModel["ObjectRelationship#C_Film#filmWork_workVariantQuantity"].getData()?string != "0")
389|| .dataModel["ObjectRelationship#C_Film#filmWork_workVariantMetrage"].getData()?hasContent
390|| techColors?hasContent
391|| .dataModel["ObjectRelationship#C_Film#filmWork_sonore"].getData()?hasContent
392|| workSoundsFull?hasContent
393|| techniquesImageFull?hasContent)>
394
395
396<#--------------------------------- Presse -------------------------->
397
398<#assign florilegesRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "florileges")>
399<#assign florileges = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, florilegesRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
400
401<#assign synthesesRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "syntheses")>
402<#assign syntheses = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, synthesesRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
403
404<#assign showPress = (florileges?hasContent
405|| syntheses?hasContent)>
406
407<#--------------------------------- Récompenses -------------------------->
408
409<#assign awardsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "awards")>
410<#assign awards = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, awardsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
411<#assign awardsFull = []>
412<#if awards?hasContent>
413 <#list awards as award>
414 <#assign eventResult = "">
415 <#assign eventYear = "">
416 <#if award.values.r_awardEvent_c_eventId != 0>
417 <#assign event = objectEntryLocalService.fetchObjectEntry(award.values.r_awardEvent_c_eventId?number)>
418 <#if award.values.eventResult?hasContent>
419 <#assign eventResult = garance.getPicklistItemName(award.values.eventResult, "picklistRecompenseResultat") >
420 </#if>
421 <#if event.values.eventAwardYear?hasContent>
422 <#assign eventYear = event.values.eventAwardYear?string("yyyy") >
423 </#if>
424 <#if event.objectEntryId?hasContent>
425 <#assign awardsFull = awardsFull + [[eventYear, award.values.eventsNomination, event.values.eventParticipant, eventResult]]>
426 </#if>
427 </#if>
428 </#list>
429</#if>
430<#assign showAwards = awardsFull?hasContent>
431
432<#--------------------------------- Exploitation -------------------------->
433
434<#assign exploitationParisRaw = {
435"salle": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationSallesParis"].getData(),
436"semaine": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationSemaineParis"].getData(),
437"entree": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationEntreeParis"].getData(),
438"total": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationTotalParis"].getData()
439} />
440
441<#assign exploitationParis = {} />
442<#list exploitationParisRaw?keys as k>
443 <#if exploitationParisRaw[k]?hasContent>
444 <#assign exploitationParis = exploitationParis + { k: exploitationParisRaw[k] } />
445 </#if>
446</#list>
447
448<#assign hasExploitationParis = (exploitationParis?size > 0) />
449
450<#assign exploitationProvinceRaw = {
451"salle": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationSallesProvince"].getData(),
452"semaine": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationSemaineProvince"].getData(),
453"entree": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationEntreeProvince"].getData(),
454"total": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationTotalProvince"].getData()
455} />
456
457<#assign exploitationProvince = {} />
458<#list exploitationProvinceRaw?keys as k>
459 <#if exploitationProvinceRaw[k]?hasContent>
460 <#assign exploitationProvince = exploitationProvince + { k: exploitationProvinceRaw[k] } />
461 </#if>
462</#list>
463
464<#assign hasExploitationProvince = (exploitationProvince?size > 0) />
465
466
467<#assign exploitationFranceRaw = {
468"salle": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationSallesFrance"].getData(),
469"semaine": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationSemaineFrance"].getData(),
470"entree": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationEntreeFrance"].getData(),
471"total": .dataModel["ObjectRelationship#C_Film#filmWork_vieExploitationTotalFrance"].getData()
472} />
473
474<#assign exploitationFrance = {} />
475<#list exploitationFranceRaw?keys as k>
476 <#if exploitationFranceRaw[k]?hasContent>
477 <#assign exploitationFrance = exploitationFrance + { k: exploitationFranceRaw[k] } />
478 </#if>
479</#list>
480
481<#assign hasExploitationFrance = (exploitationFrance?size > 0) />
482
483<#assign showExploitation = (hasExploitationParis || hasExploitationProvince || hasExploitationFrance)>
484
485<#--------------------------------- Bibliographies -------------------------->
486
487<#assign bibliographiesRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "bibliographies")>
488<#assign bibliographies = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, bibliographiesRel.objectRelationshipId, filmID, true, bibliographiesRel.isReverse(), null, -1, -1 ) />
489<#assign digitalRefs = []>
490<#if bibliographies?hasContent>
491 <#list bibliographies as bibliographie>
492 <#assign digitalRefsRel = objectRelationshipLocalService.getObjectRelationship(bibliographie.objectDefinitionId, "digitalReferences")>
493 <#assign digitalRefs = objectEntryLocalService.getOneToManyObjectEntries(bibliographie.getGroupId(), digitalRefsRel.objectRelationshipId, bibliographie.objectEntryId, true, null, -1, -1 ) />
494 </#list>
495</#if>
496
497<#assign showBibliographie = digitalRefs?hasContent>
498
499
500<#assign seriesFull = []>
501<#assign corpusFull = []>
502<#assign ensembleFull = []>
503
504<#--------------------------------- Series -------------------------->
505
506<#assign seriesRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "relatedSeries")>
507<#assign series = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, seriesRel.objectRelationshipId, filmID, true, seriesRel.isReverse(), null, -1, -1 ) />
508<#assign relatedSeriesFull = []>
509<#if series?hasContent>
510 <#list series as relatedObject>
511 <#assign relatedSerie = {}>
512 <#assign serieTitle = "">
513 <#if relatedObject.values.relatedPriref?hasContent>
514 <#attempt>
515 <#assign relatedSerie = objectEntryLocalService.fetchObjectEntry(relatedObject.values.relatedPriref, filmEntry.objectDefinitionId)>
516 <#recover>
517 <#assign relatedSerie = "">
518 </#attempt>
519
520 <#if relatedSerie?hasContent && relatedSerie.values.descriptionLevel?? && relatedSerie.values.descriptionLevel == "WORK">
521 <#assign workSerie = objectEntryLocalService.fetchObjectEntry("work_" + relatedSerie.externalReferenceCode, workEntry.objectDefinitionId)>
522 <#if relatedSerie.values.frenchTitle?hasContent>
523 <#assign relatedSeriesFull = relatedSeriesFull + [{
524 "id": workSerie.objectEntryId,
525 "title": [relatedSerie.values.frenchTitleArticle, relatedSerie.values.frenchTitle]?filter(v->v?hasContent)?join(" "),
526 "type": relatedSerie.values.worklevelTypeSerie!""
527 }]>
528 <#elseIf relatedSerie.values.titleComplete?hasContent>
529 <#assign relatedSeriesFull = relatedSeriesFull + [{
530 "id": workSerie.objectEntryId,
531 "title": relatedSerie.values.titleComplete,
532 "type": relatedSerie.values.worklevelTypeSerie!""
533 }]>
534 <#else>
535 <#assign relatedSeriesFull = relatedSeriesFull + [{
536 "id": workSerie.objectEntryId,
537 "title": relatedObject.values.title,
538 "type": relatedSerie.values.worklevelTypeSerie!""
539 }]>
540 </#if>
541 </#if>
542 </#if>
543 </#list>
544</#if>
545
546<#assign seriesFull = relatedSeriesFull?filter(s->s.type == "SERIE") />
547<#assign corpusFull = relatedSeriesFull?filter(s->s.type == "CORPUS") />
548<#assign ensembleFull = relatedSeriesFull?filter(s->s.type == "ENSEMBLE") />
549
550<#assign composingFull = relatedSeriesFull?filter(s-> !(s.type)?hasContent) />
551
552<#--------------------------------- Films liés -------------------------->
553
554
555<#assign relatedFilmsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "relatedFilms")>
556<#assign relatedFilms = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, relatedFilmsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
557<#assign relatedFilmsFull = []>
558<#if relatedFilms?hasContent>
559 <#list relatedFilms as relatedFilm>
560 <#assign relatedFilmRelatedObject = {}>
561 <#assign relatedObject = {}>
562 <#assign relatedFilmRef = {}>
563 <#if relatedFilm.values.r_filmRelatedFilm_c_relatedObjectId != 0 && relatedFilm.values.r_filmRelatedFilm_c_relatedObjectId != 0>
564 <#assign relatedObject = objectEntryLocalService.fetchObjectEntry(relatedFilm.values.r_filmRelatedFilm_c_relatedObjectId)>
565 <#if relatedObject?? && relatedObject.values.relatedPriref?hasContent>
566 <#attempt>
567 <#assign relatedFilmRef = objectEntryLocalService.fetchObjectEntry(relatedObject.values.relatedPriref, filmEntry.objectDefinitionId)>
568 <#recover>
569 <#assign relatedFilmRef = "">
570 </#attempt>
571 <#if relatedFilmRef?hasContent && relatedFilmRef.values.descriptionLevel?hasContent && relatedFilmRef.values.descriptionLevel == "WORK">
572 <#assign workRelatedFilm = objectEntryLocalService.fetchObjectEntry("work_" + relatedFilmRef.externalReferenceCode, workEntry.objectDefinitionId)>
573 <#if relatedFilmRef.values.frenchTitle?hasContent>
574 <#assign relatedFilmsFull = relatedFilmsFull + [{
575 "id": workRelatedFilm.objectEntryId,
576 "title": [relatedFilmRef.values.frenchTitleArticle, relatedFilmRef.values.frenchTitle]?filter(v->v?hasContent)?join(" "),
577 "type": relatedFilm.values.filmRelationType
578 }]>
579 <#else>
580 <#assign relatedFilmsFull = relatedFilmsFull + [{
581 "id": workRelatedFilm.objectEntryId,
582 "title": relatedObject.values.title,
583 "type": relatedFilm.values.filmRelationType
584 }]>
585 </#if>
586 <#else>
587 <#assign relatedFilmsFull = relatedFilmsFull + [{
588 "title": relatedObject.values.title,
589 "type": relatedFilm.values.filmRelationType
590 }]>
591 </#if>
592 </#if>
593 </#if>
594 </#list>
595</#if>
596
597<#assign showRelatedFilms = relatedFilmsFull?hasContent>
598
599<#--------------------------------- Versions -------------------------->
600<#assign filmChildrenRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "filmChildren")>
601<#assign filmChildren = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, filmChildrenRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
602<#assign variantChildren = []>
603<#if filmChildren?hasContent>
604 <#assign variantChildren = filmChildren?filter(v -> v.values.descriptionLevel?hasContent && v.values.descriptionLevel == "VARIANT")>
605</#if>
606
607<#assign showVariant = variantChildren?hasContent>
608
609<#--------------------------------- Corpus -------------------------->
610
611<#assign corpusRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "corpusRelation")>
612<#assign corpus = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, corpusRel.objectRelationshipId, filmID, true, corpusRel.isReverse(), null, -1, -1 ) />
613<#if corpus?hasContent>
614 <#list corpus as relatedObject>
615 <#assign relatedCorpus = {}>
616 <#if relatedObject.values.relatedPriref?hasContent>
617 <#attempt>
618 <#assign relatedCorpus = objectEntryLocalService.fetchObjectEntry(relatedObject.values.relatedPriref, filmEntry.objectDefinitionId)>
619 <#recover>
620 <#assign relatedCorpus = "">
621 </#attempt>
622 <#if relatedCorpus?hasContent && relatedCorpus.values.descriptionLevel && relatedCorpus.values.descriptionLevel == "WORK">
623 <#assign workCorpus = objectEntryLocalService.fetchObjectEntry("work_" + relatedCorpus.externalReferenceCode, workEntry.objectDefinitionId)>
624 <#if relatedCorpus.values.frenchTitle?hasContent>
625 <#assign corpusFull = corpusFull + [{
626 "id": workCorpus.objectEntryId,
627 "title": [relatedCorpus.values.frenchTitleArticle, relatedCorpus.values.frenchTitle]?filter(v->v?hasContent)?join(" ")}
628 ]>
629 <#elseIf relatedCorpus.values.titleComplete?hasContent>
630 <#assign corpusFull = corpusFull + [{
631 "id": workCorpus.objectEntryId,
632 "title": relatedCorpus.values.titleComplete}
633 ]>
634 <#else>
635 <#assign corpusFull = corpusFull + [{
636 "id": workCorpus.objectEntryId,
637 "title": relatedObject.values.title
638 }]>
639 </#if>
640 <#else>
641 <#assign corpusFull = corpusFull + [{
642 "title": relatedObject.values.title
643 }]>
644 </#if>
645 </#if>
646 </#list>
647</#if>
648
649<#assign showCorpus = corpusFull?hasContent>
650<#assign showSerie = seriesFull?hasContent>
651<#assign showEnsemble = ensembleFull?hasContent>
652<#assign showComposingCorpus = filmEntry.values.worklevelTypeSerie == "CORPUS" && composingFull?hasContent>
653<#assign showComposingSerie = filmEntry.values.worklevelTypeSerie == "SERIE" && composingFull?hasContent>
654<#assign showComposingEnsemble = filmEntry.values.worklevelTypeSerie == "ENSEMBLE" && composingFull?hasContent>
655
656<#--------------------------------- Consultation -------------------------->
657<#assign filmManifestationsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "filmChildrenManifestation")>
658<#assign filmManifestations = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, filmManifestationsRel.objectRelationshipId, filmID, true, null, -1, -1 ) />
659<#if variantChildren?hasContent>
660 <#list variantChildren as variantChild>
661 <#assign variantChildrenManifestation = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, filmManifestationsRel.objectRelationshipId, variantChild.objectEntryId, true, null, -1, -1 ) />
662 <#assign filmManifestations = filmManifestations + variantChildrenManifestation />
663 </#list>
664</#if>
665
666<#assign filmConsultationsFull = []>
667<#list filmManifestations as filmManifestation>
668 <#assign filmItemsRel = objectRelationshipLocalService.getObjectRelationship(filmManifestation.objectDefinitionId, "filmManifestationChildrenItem")>
669 <#assign filmItems = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, filmItemsRel.objectRelationshipId, filmManifestation.objectEntryId, true, null, -1, -1 ) />
670 <#list filmItems as filmItem>
671 <#assign filmItemConsulationRel = objectRelationshipLocalService.getObjectRelationship(filmItem.objectDefinitionId, "consultations")>
672 <#assign filmItemConsulation = objectEntryLocalService.getOneToManyObjectEntries(filmGroupID, filmItemConsulationRel.objectRelationshipId, filmItem.objectEntryId, true, null, -1, -1 ) />
673 <#if filmItemConsulation?hasContent>
674 <#assign filmConsultationsFull = filmConsultationsFull + filmItemConsulation>
675 </#if>
676 </#list>
677</#list>
678<#assign filmConsultationsFull = filmConsultationsFull?filter(c -> c.values.lieuDeConsultation != "Noncommunicable")>
679
680<#assign showConsultation = filmConsultationsFull?hasContent>
681
682
683<#--------------------------------- Media -------------------------->
684<#assign reproductionsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "reproductions")>
685<#assign reproductions = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, reproductionsRel.objectRelationshipId, filmID, true, reproductionsRel.isReverse(), null, -1, -1 ) />
686
687<#assign reproductionsImages = []>
688<#assign reproductionsVideos = []>
689<#if reproductions?hasContent>
690 <#list reproductions as reproduction>
691 <#if reproduction.values.reproductionNature?hasContent>
692 <#if reproduction.values.reproductionNature == "PICTURE" && reproduction.values.media?string != "0">
693 <#assign reproductionsImages = reproductionsImages + [reproduction]>
694 <#elseIf reproduction.values.reproductionNature == "VIDEO">
695 <#assign reproductionsVideos = reproductionsVideos + [reproduction]>
696 </#if>
697 </#if>
698 </#list>
699</#if>
700
701<#assign showMedia = (reproductionsImages?hasContent || reproductionsVideos?hasContent)>
702
703<#--------------------------------- Collections -------------------------->
704
705<#assign relatedObjectsRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "filmRelatedObjects")>
706<#assign relatedObjects = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, relatedObjectsRel.objectRelationshipId, filmID, true, relatedObjectsRel.isReverse(), null, -1, -1 ) />
707<#assign relatedObjectsFull = garance.getRelatedObjects(relatedObjects, filmEntry, false)>
708
709<#assign showCollection = relatedObjectsFull?hasContent>
710
711
712<div class="notice notice--film js-notice">
713 <div class="notice-header tw:text-white tw:pt-[3.375rem] tw:pb-[2.5rem] tw:relative tw:overflow-hidden
714 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
715 tw:xl:pt-[9.5rem]">
716 <div class="page-wrapper tw:z-0 tw:relative">
717 <#if request.getParameter("searchContext")?hasContent>
718 <@garance.noticePagination request.getParameter("searchContext") filmID />
719 </#if>
720
721 <div class="tw:flex tw:gap-5 tw:items-start tw:flex-wrap tw:flex-col tw:z-0
722 tw:md:flex-row tw:lg:flex-nowrap
723 tw:xl:gap-[2.125rem]">
724 <div class="tw:order-2 tw:lg:order-1 tw:flex tw:flex-col tw:w-full tw:text-center
725 tw:md:w-fit tw:md:text-left">
726 <#if .dataModel["ObjectRelationship#C_Film#filmWork_titleComplete"].getData()?hasContent>
727 <h1 class="tw:order-1 tw:text-prim tw:mb-[0.625rem]">
728 ${.dataModel["ObjectRelationship#C_Film#filmWork_titleComplete"].getData()}
729 </h1>
730 </#if>
731 <#if (.dataModel["ObjectRelationship#C_Film#filmWork_worklevelType"].getData()?hasContent || .dataModel["ObjectRelationship#C_Film#filmWork_worklevelTypeSerie"].getData()?hasContent)>
732 <#if .dataModel["ObjectRelationship#C_Film#filmWork_worklevelType"].getData()?hasContent>
733 <#assign filmWorklevel = .dataModel["ObjectRelationship#C_Film#filmWork_worklevelType"].getData() />
734 <#else>
735 <#assign filmWorklevel = .dataModel["ObjectRelationship#C_Film#filmWork_worklevelTypeSerie"].getData() />
736 </#if>
737 <#if !reproductionsImages?hasContent>
738 <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
739 tw:md:mx-0">
740 ${filmWorklevel}
741 </p>
742 </#if>
743 </#if>
744 <#if .dataModel["ObjectRelationship#C_Film#filmWork_frenchTitle"].getData()?hasContent>
745 <p class="tw:order-1 tw:font-title tw:text-[1.25rem]/[1.875rem] tw:font-medium">
746 <#if (.dataModel["ObjectRelationship#C_Film#filmWork_frenchTitleArticle"].getData())?hasContent>
747 ${.dataModel["ObjectRelationship#C_Film#filmWork_frenchTitleArticle"].getData()}
748 </#if>
749 ${.dataModel["ObjectRelationship#C_Film#filmWork_frenchTitle"].getData()}
750 </p>
751 </#if>
752 <div class="tw:order-1 tw:relative tw:pt-5 tw:mt-5 tw:text-left
753 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
754 tw:md:before:w-[12.8125rem] ">
755 <#assign realisateursRel = objectRelationshipLocalService.getObjectRelationship(filmEntry.objectDefinitionId, "creditsRealisateur")>
756 <#assign realisateurs = objectEntryLocalService.getManyToManyObjectEntries(filmGroupID, realisateursRel.objectRelationshipId, filmID, true, realisateursRel.isReverse(), null, -1, -1 ) />
757 <#if realisateurs?hasContent>
758 <p class="tw:mb-[0.625rem]">
759 <#list realisateurs as realisateur>
760 <#assign realisateurData = garance.getPersonneDisplayData(realisateur.objectEntryId)>
761 <#if realisateurData.id?hasContent>
762 <a href="/l/${realisateurData.id}"
763 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]">
764 ${realisateurData.name}
765 </a>
766 <#else>
767 ${realisateurData.name}
768 </#if><#if !realisateur?isLast>, </#if>
769 </#list>
770 </p>
771 </#if>
772
773 <#if .dataModel["ObjectRelationship#C_Film#filmWork_productionDateStart"].getData()?hasContent>
774 <p class="tw:mb-[0.625rem]">
775 <span class="tw:font-bold">Année de production :</span>
776 <#if .dataModel["ObjectRelationship#C_Film#filmWork_productionDateEnd"].getData()?hasContent && .dataModel["ObjectRelationship#C_Film#filmWork_productionDateStart"].getData() != .dataModel["ObjectRelationship#C_Film#filmWork_productionDateEnd"].getData()>
777 ${[.dataModel["ObjectRelationship#C_Film#filmWork_productionDateStart"].getData()?datetime("dd/MM/yyyy HH:mm")?string("yyyy"), .dataModel["ObjectRelationship#C_Film#filmWork_productionDateEnd"].getData()?datetime("dd/MM/yyyy HH:mm")?string("yyyy")]?join(" - ")}
778 <#else>
779 ${.dataModel["ObjectRelationship#C_Film#filmWork_productionDateStart"].getData()?datetime("dd/MM/yyyy HH:mm")?string("yyyy")}
780 </#if>
781 <#if getterUtil.getBoolean(.dataModel["ObjectRelationship#C_Film#filmWork_anneeDeProdPresume"].getData())> (Présumé)</#if>
782 </p>
783 </#if>
784
785 <#assign countryID = filmEntry.values.r_productionCountry_c_thesaurusId>
786 <#if countryID != 0>
787 <#assign country = garance.getThesaurusByID(countryID)>
788 <#if country?hasContent>
789 <p class="tw:mb-[0.625rem]">
790 <span class="tw:font-bold">Pays de production :</span> ${country}
791 </p>
792 </#if>
793 </#if>
794 </div>
795 </div>
796 <#if reproductionsImages?hasContent>
797 <div class="tw:order-1 tw:lg:order-0 tw:w-full
798 tw:md:w-fit">
799 <div class="tw:m-auto tw:mx-auto tw:max-w-full tw:w-[15.625rem] tw:relative
800 tw:md:mx-0">
801 <#if filmWorklevel??>
802 <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">
803 ${filmWorklevel}
804 </p>
805 </#if>
806 <#assign thumbnail = reproductionsImages?first>
807 <#assign fileEntryDesktop = dlAppLocalService.getFileEntry(thumbnail.values.media?number) />
808 <#assign thumbnailURL = dlURLHelper.getPreviewURL(fileEntryDesktop, fileEntryDesktop.getFileVersion(),
809 null, "",
810 !fileEntryDesktop.getFileVersion().equals(fileEntryDesktop.getLatestFileVersion()), true) />
811
812 <figure class="tw:w-full">
813 <source media="(min-width: 480px)"
814 srcset="${thumbnailURL}"/>
815 <img class="tw:rounded-xs tw:object-cover tw:size-full" alt=""
816 src="${thumbnailURL}"/>
817 <#if thumbnail.values.reproductionNotes?hasContent || thumbnail.values.reproductionCopyright?hasContent>
818 <figcaption class="tw:ml-[0.625rem] tw:opacity-70 tw:text-[0.75rem]/[1rem] tw:font-medium tw:mt-[0.3125rem]
819 tw:md:ml-0">
820 ${[thumbnail.values.reproductionNotes, thumbnail.values.reproductionCopyright]?filter(v->v?hasContent)?join(" - ")}
821 </figcaption>
822 </#if>
823 </figure>
824 </div>
825 </div>
826 </#if>
827 <@garance.noticeTools />
828 </div>
829 </div>
830 </div>
831 <div class="notice-content">
832
833
834 <div class="tw:overflow-y-clip tw:py-10">
835 <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!
836 tw:lg:top-[6.875rem] tw:lg:h-0 tw:lg:overflow-visible tw:lg:sticky
837 tw:xl:top-[8.85rem]">
838 <nav class="tw:bg-beige tw:lg:w-[14.25rem]" role="navigation" aria-labelledby="summary-title">
839 <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]
840 tw:max-lg:px-[calc(5rem/2)]
841 tw:lg:hidden" aria-label="Ouvrir/Fermer le sommaire" aria-expanded="false"
842 aria-controls="summary-list">
843 <span>Sommaire</span>
844 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:outline-offset-[-0.125rem]
845 tw:group-[&.open]:rotate-180" aria-hidden="true"></span>
846 </button>
847 <div id="summary-list" class="tw:overflow-y-auto tw:bg-white tw:transition-all tw:max-sm:px-[calc(2.5rem/2)]
848 tw:max-lg:max-h-0 tw:max-lg:px-[calc(5rem/2)] tw:max-lg:max-w-full
849 tw:group-[&.open]:max-h-[calc(100vh-(4.375rem+3.125rem))]
850 tw:lg:max-h-[calc(100vh-12.5rem)] tw:lg:bg-transparent" tabindex="-1">
851 <ul class="tw:border-sommaire-border tw:border-l-[0.125rem] tw:my-2">
852 <#if showIdentity>
853 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
854 <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]
855 tw:[&.is-active]:border-prim" tabindex="-1">
856 <span>${summary["IdentiteFilm"]?hasContent?then(summary["IdentiteFilm"], "Identité")}</span>
857 </a>
858 </li>
859 </#if>
860 <#if showDescription>
861 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
862 <a href="#description" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
863 tw:[&.is-active]:border-prim" tabindex="-1">
864 <span>${summary["DescriptionFilm"]?hasContent?then(summary["DescriptionFilm"], "Description")}</span>
865 </a>
866 </li>
867 </#if>
868 <#if showGenerique>
869 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
870 <a href="#generique" 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]
871 tw:[&.is-active]:border-prim" tabindex="-1">
872 <span>${summary["GeneriqueFilm"]?hasContent?then(summary["GeneriqueFilm"], "Générique")}</span>
873 </a>
874 </li>
875 </#if>
876 <#if showTechnique>
877 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
878 <a href="#infos-techniques" 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]
879 tw:[&.is-active]:border-prim" tabindex="-1">
880 <span>${summary["InformationsTechniquesFilm"]?hasContent?then(summary["InformationsTechniquesFilm"], "Informations techniques")}</span>
881 </a>
882 </li>
883 </#if>
884 <#if showPress>
885 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
886 <a href="#presse" 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]
887 tw:[&.is-active]:border-prim" tabindex="-1">
888 <span>${summary["DansLaPresseFilm"]?hasContent?then(summary["DansLaPresseFilm"], "Dans la presse")}</span>
889 </a>
890 </li>
891 </#if>
892 <#if showAwards>
893 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
894 <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]
895 tw:[&.is-active]:border-prim" tabindex="-1">
896 <span>${summary["RecompensesEtNominationsFilm"]?hasContent?then(summary["RecompensesEtNominationsFilm"], "Récompenses et nominations")}</span>
897 </a>
898 </li>
899 </#if>
900 <#if showExploitation>
901 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
902 <a href="#exploitation" 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]
903 tw:[&.is-active]:border-prim" tabindex="-1">
904 <span>${summary["ExploitationFilm"]?hasContent?then(summary["ExploitationFilm"], "Exploitation")}</span>
905 </a>
906 </li>
907 </#if>
908 <#if showBibliographie>
909 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
910 <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]
911 tw:[&.is-active]:border-prim" tabindex="-1">
912 <span>${summary["BibliographieEditorialeFilm"]?hasContent?then(summary["BibliographieEditorialeFilm"], "Bibliographie éditoriale")}</span>
913 </a>
914 </li>
915 </#if>
916 <#if showVariant>
917 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
918 <a href="#versions" 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]
919 tw:[&.is-active]:border-prim" tabindex="-1">
920 <span>${summary["VersionsDuFilmFilm"]?hasContent?then(summary["VersionsDuFilmFilm"], "Versions du film")}</span>
921 </a>
922 </li>
923 </#if>
924 <#if showSerie>
925 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
926 <a href="#series" 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]
927 tw:[&.is-active]:border-prim" tabindex="-1">
928 <span>Séries liées</span>
929 </a>
930 </li>
931 </#if>
932 <#if showComposingSerie>
933 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
934 <a href="#series-composing" 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]
935 tw:[&.is-active]:border-prim" tabindex="-1">
936 <span>Films composant la série</span>
937 </a>
938 </li>
939 </#if>
940 <#if showEnsemble>
941 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
942 <a href="#ensembles" 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]
943 tw:[&.is-active]:border-prim" tabindex="-1">
944 <span>Ensembles liés</span>
945 </a>
946 </li>
947 </#if>
948 <#if showComposingEnsemble>
949 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
950 <a href="#ensembles-composing" 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]
951 tw:[&.is-active]:border-prim" tabindex="-1">
952 <span>Films composant l'ensemble</span>
953 </a>
954 </li>
955 </#if>
956 <#if showRelatedFilms>
957 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
958 <a href="#relations" 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]
959 tw:[&.is-active]:border-prim" tabindex="-1">
960 <span>${summary["RelationAutreFilmFilm"]?hasContent?then(summary["RelationAutreFilmFilm"], "Relation autre film")}</span>
961 </a>
962 </li>
963 </#if>
964 <#if showCorpus>
965 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
966 <a href="#corpus" 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]
967 tw:[&.is-active]:border-prim" tabindex="-1">
968 <span>Corpus liés</span>
969 </a>
970 </li>
971 </#if>
972 <#if showComposingCorpus>
973 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
974 <a href="#corpuss-composing" 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]
975 tw:[&.is-active]:border-prim" tabindex="-1">
976 <span>Films composant le corpus</span>
977 </a>
978 </li>
979 </#if>
980 <#if showConsultation>
981 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
982 <a href="#consultation" class="js-summary-ancres-link tw:border-l-[0.125rem] tw:border-transparent tw:block tw:py-1 tw:text-base/[1.75rem] tw:font-title tw:pl-[0.625rem] tw:relative tw:left-[-0.125rem]
983 tw:[&.is-active]:border-prim" tabindex="-1">
984 <span>${summary["ConsultationFilm"]?hasContent?then(summary["ConsultationFilm"], "Consultation")}</span>
985 </a>
986 </li>
987 </#if>
988 <#if showMedia>
989 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
990 <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]
991 tw:[&.is-active]:border-prim" tabindex="-1">
992 <span>${summary["RessourcesMediaFilm"]?hasContent?then(summary["RessourcesMediaFilm"], "Ressources média")}</span>
993 </a>
994 </li>
995 </#if>
996 <#if showCollection>
997 <li class="tw:py-1 tw:first:pt-0 tw:last:pb-0 tw:lg:py-[0.625rem]">
998 <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]
999 tw:[&.is-active]:border-prim" tabindex="-1">
1000 <span>${summary["CollectionsLieesFilm"]?hasContent?then(summary["CollectionsLieesFilm"], "Collections liées")}</span>
1001 </a>
1002 </li>
1003 </#if>
1004 </ul>
1005 </div>
1006 </nav>
1007 </div>
1008
1009 <#if showIdentity>
1010 <div id="identite" class="js-summary-content" tabindex="-1"></div>
1011 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:pb-10">
1012 <h2 class="tw:text-prim tw:mb-5">${summary["IdentiteFilm"]?hasContent?then(summary["IdentiteFilm"], "Identité")}</h2>
1013
1014 <#if othTltsFull?hasContent>
1015 <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]">
1016 <p id="identite-othttl" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Autres titres
1017 :</p>
1018 <ul aria-labelledby="identite-othttl">
1019 <#list othTltsFull as othTlt>
1020 <#assign othTltList = [] />
1021
1022 <#if othTlt.values.otherTitleArticle?hasContent>
1023 <#assign othTltList = othTltList + [othTlt.values.otherTitleArticle] />
1024 </#if>
1025
1026 <#if othTlt.values.otherTitle?hasContent>
1027 <#assign othTltList = othTltList + [othTlt.values.otherTitle] />
1028 </#if>
1029
1030 <#if othTlt.values.otherTitleType?hasContent>
1031 <#assign othTltTypelabel = garance.getPicklistItemName(othTlt.values.otherTitleType, "picklistOtherTitleType") >
1032 <#assign othTltList = othTltList + ["(" + othTltTypelabel +")"] />
1033 </#if>
1034
1035 <#assign othTltCountry = ''>
1036 <#if othTlt.values.r_otherTitleCountry_c_thesaurusId != 0>
1037 <#assign othTltCountry = garance.getThesaurusByID(othTlt.values.r_otherTitleCountry_c_thesaurusId)>
1038 <#if othTltCountry?hasContent>
1039 <#assign othTltList = othTltList + ["(" + othTltCountry + ")"] />
1040 </#if>
1041 </#if>
1042
1043 <li>${othTltList?join(" ")}</li>
1044 </#list>
1045 </ul>
1046 </div>
1047 </#if>
1048
1049 <#if .dataModel["ObjectRelationship#C_Film#filmWork_workType"].getData()?hasContent>
1050 <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]">
1051 <span class="tw:font-bold tw:shrink-0">Type d'oeuvre :</span>
1052 <span>${.dataModel["ObjectRelationship#C_Film#filmWork_workType"].getData()}</span>
1053 </p>
1054 </#if>
1055
1056 <#if .dataModel["ObjectRelationship#C_Film#filmWork_cardinalite"].getData()?hasContent>
1057 <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]">
1058 <span class="tw:font-bold tw:shrink-0">N° d'épisode ou de partie :</span>
1059 <span>${.dataModel["ObjectRelationship#C_Film#filmWork_cardinalite"].getData()}</span>
1060 </p>
1061 </#if>
1062
1063 <#if .dataModel["ObjectRelationship#C_Film#filmWork_titleDateStart"].getData()?hasContent>
1064 <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]">
1065 <span class="tw:font-bold tw:shrink-0">Année de sortie dans le pays d'origine :</span>
1066 <span>${.dataModel["ObjectRelationship#C_Film#filmWork_titleDateStart"].getData()?datetime("dd/MM/yyyy HH:mm")?string("yyyy")}</span>
1067 </p>
1068 </#if>
1069 <#setting locale="fr_FR">
1070
1071 <#if viePresFull?hasContent>
1072 <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]">
1073 <p id="identite-viepres" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Date de
1074 sortie en France
1075 :</p>
1076 <ul aria-labelledby="identite-viepres">
1077 <#list viePresFull as viePres>
1078 <li>${viePres?string("dd/MM/yyyy")}</li>
1079 </#list>
1080 </ul>
1081 </div>
1082 </#if>
1083
1084 <#if .dataModel["ObjectRelationship#C_Film#filmWork_rcaLinkNumber"].getData()?hasContent>
1085 <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]">
1086 <span class="tw:font-bold tw:shrink-0">Numéro RCA / VISA :</span>
1087 <span>${.dataModel["ObjectRelationship#C_Film#filmWork_rcaLinkNumber"].getData()}</span>
1088 </p>
1089 </#if>
1090
1091
1092 <#if viesClassFull?hasContent>
1093 <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]">
1094 <p id="identite-vieclass" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">
1095 Classification :</p>
1096 <ul aria-labelledby="identite-vieclass">
1097 <#list viesClassFull as viesClass>
1098 <li>${viesClass.type}<#if viesClass.date?hasContent>
1099 - ${viesClass.date?string("dd/MM/yyyy")}</#if></li>
1100 </#list>
1101 </ul>
1102 </div>
1103 </#if>
1104
1105 <#if languesParlFull?hasContent>
1106 <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]">
1107 <span class="tw:font-bold tw:shrink-0">Langue :</span>
1108 <span>${languesParlFull?join(" - ")}</span>
1109 </p>
1110 </#if>
1111
1112 <#if catalogues?hasContent>
1113 <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]">
1114 <span class="tw:font-bold tw:shrink-0">Catalogue :</span>
1115 <span>
1116 <#list catalogues as catalogue>
1117 <#assign desc = "" />
1118 <#if catalogue.values.descriptionCatalogue?hasContent>
1119 <#assign desc = catalogue.values.descriptionCatalogue />
1120 </#if>
1121 <#if catalogue.values.descriptionCatalogueIdentifiant?hasContent>
1122 <#if desc?hasContent>
1123 <#assign desc = desc + " - n°" + catalogue.values.descriptionCatalogueIdentifiant />
1124 <#else>
1125 <#assign desc = "n°" + catalogue.values.descriptionCatalogueIdentifiant />
1126 </#if>
1127 </#if>
1128 ${desc}<#if !catalogue?isLast>, </#if>
1129 </#list>
1130 </span>
1131 </p>
1132 </#if>
1133
1134 <#if creditsProdFull?hasContent>
1135 <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]">
1136 <p id="identite-credprod" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">
1137 Société(s) de production :
1138 </p>
1139 <ul aria-labelledby="identite-credprod">
1140 <#list creditsProdFull as credProd>
1141 <li>
1142 <#if credProd.personne.id?hasContent>
1143 <a href="/l/${credProd.personne.id}"
1144 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]">
1145 ${credProd.personne.name}
1146 </a>
1147 <#else>
1148 ${credProd.personne.name}<#if getterUtil.getBoolean(credProd.presume)> (Présumé)</#if>
1149 </#if>
1150 </li>
1151 </#list>
1152 </ul>
1153 </div>
1154 </#if>
1155
1156 <#if viesPresFullOut?hasContent>
1157 <#list viesPresFullOut as viePresFullOut>
1158 <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]">
1159 <span class="tw:font-bold tw:shrink-0">${viePresFullOut.type} :</span>
1160 <span>${[
1161 (viePresFullOut.date?hasContent)?then(viePresFullOut.date?string("dd/MM/yyyy"), ''),
1162 viePresFullOut.country
1163 ]?filter(v->v?hasContent)?join(" - ")}
1164 </span>
1165 </p>
1166 </#list>
1167 </#if>
1168 </div>
1169 </#if>
1170
1171 <#if showDescription>
1172 <div id="description" class="js-summary-content" tabindex="-1"></div>
1173 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1174 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">
1175 <h2 class="tw:text-prim tw:mb-5">${summary["DescriptionFilm"]?hasContent?then(summary["DescriptionFilm"], "Description")}</h2>
1176 <#if .dataModel["ObjectRelationship#C_Film#filmWork_description"].getData()?hasContent>
1177 <div class="wysiwyg--notice tw:mb-10">
1178 <h3 class="tw:mb-5">Résumé</h3>
1179 <div class="js-read-more" data-clamp-line="8" data-line-height="1.75">
1180 ${.dataModel["ObjectRelationship#C_Film#filmWork_description"].getData()?replace("\n", "<br />")}
1181 </div>
1182 <button type="button"
1183 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]">
1184 <span>Lire plus</span>
1185 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1186 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1187 </button>
1188 </div>
1189 </#if>
1190
1191 <#if keywords?hasContent>
1192 <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]">
1193 <span class="tw:font-bold tw:shrink-0">Mots clés :</span>
1194 ${keywords?map(k->k.values.label)?join(", ")}
1195 </p>
1196 </#if>
1197
1198 <#if .dataModel["ObjectRelationship#C_Film#filmWork_genre"].getData()?hasContent>
1199 <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]">
1200 <span class="tw:font-bold tw:shrink-0">Genre :</span>
1201 ${.dataModel["ObjectRelationship#C_Film#filmWork_genre"].getData()}
1202 </p>
1203 </#if>
1204
1205 <#if contentGenres?hasContent>
1206 <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]">
1207 <span class="tw:font-bold tw:shrink-0">Genre(s) précis :</span>
1208 ${contentGenres?map(g->g.values.label)?join(", ")}
1209 </p>
1210 </#if>
1211
1212 <#if formesOeuvreAdaptee?hasContent>
1213 <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]">
1214 <span class="tw:font-bold tw:shrink-0">Forme de l'oeuvre adaptée :</span>
1215 ${formesOeuvreAdaptee?map(f->f.values.label)?join(", ")}
1216 </p>
1217 </#if>
1218
1219 <#if vocabulairesCinematographiques?hasContent>
1220 <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]">
1221 <span class="tw:font-bold tw:shrink-0">Technique cinématographique :</span>
1222 ${vocabulairesCinematographiques?map(v->v.values.label)?join(", ")}
1223 </p>
1224 </#if>
1225
1226 <#if viesProduction?hasContent>
1227 <#assign vieProductionThesaurusesLabels = viesProduction?filter(vp -> vp.values.r_vieProductionLieu_c_thesaurusId != 0)
1228 ?map(vp -> garance.getThesaurusByID(vp.values.r_vieProductionLieu_c_thesaurusId))>
1229 <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]">
1230 <span class="tw:font-bold tw:shrink-0">Lieu(x) de tournage :</span>
1231 ${vieProductionThesaurusesLabels?join(", ")}
1232 </p>
1233
1234 <#list viesProduction as vieProduction>
1235 <#if vieProduction.values.vieProductionLieuNote?hasContent>
1236 <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]">
1237 <span class="tw:font-bold tw:shrink-0">Note sur le lieu de tournage :</span>
1238 <div class="wysiwyg--notice">
1239 <div class="js-read-more" data-clamp-line="8" data-line-height="1.625">
1240 ${vieProduction.values.vieProductionLieuNote}
1241 </div>
1242 <button type="button"
1243 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]">
1244 <span>Lire plus</span>
1245 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1246 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1247 </button>
1248 </div>
1249 </div>
1250 </#if>
1251 </#list>
1252 </#if>
1253
1254
1255 <#if datesViesTournage?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="desc-vietourn" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">
1258 Date de tournage :</p>
1259 <ul aria-labelledby="desc-vietourn">
1260 <#list datesViesTournage as datesVieTournage>
1261 <li>${datesVieTournage.start}<#if datesVieTournage.end?hasContent>
1262 - ${datesVieTournage.end}</#if></li>
1263 </#list>
1264 </ul>
1265 </div>
1266 </#if>
1267
1268 <#if studiosTournage?hasContent>
1269 <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]">
1270 <p id="desc-studiotourn" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">
1271 Studio de tournage :
1272 </p>
1273 <ul aria-labelledby="desc-studiotourn">
1274 <#list studiosTournage as studioTournage>
1275 <li>${studioTournage.values.label}</li>
1276 </#list>
1277 </ul>
1278 </div>
1279 </#if>
1280
1281 <#if studiosEnreg?hasContent>
1282 <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]">
1283 <p id="desc-studioenreg" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">
1284 Studio d'enregistrement :
1285 </p>
1286 <ul aria-labelledby="desc-studioenreg">
1287 <#list studiosEnreg as studioEnreg>
1288 <li>${studioEnreg.values.label}</li>
1289 </#list>
1290 </ul>
1291 </div>
1292 </#if>
1293
1294 <#if labs?hasContent>
1295 <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]">
1296 <p id="desc-labs" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">
1297 Laboratoire :
1298 </p>
1299 <ul aria-labelledby="desc-labs">
1300 <#list labs as lab>
1301 <li>${lab.values.label}</li>
1302 </#list>
1303 </ul>
1304 </div>
1305 </#if>
1306
1307 <#if .dataModel["ObjectRelationship#C_Film#filmWork_notes"].getData()?hasContent>
1308 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mt-10">
1309 <h3 class="tw:mb-5">Note générale</h3>
1310 <div class="wysiwyg--notice js-read-more" data-clamp-line="8" data-line-height="1.75">
1311 ${.dataModel["ObjectRelationship#C_Film#filmWork_notes"].getData()?replace("\n", "<br />")}
1312 </div>
1313 <button type="button"
1314 class="tw:hidden tw:items-center tw:leading-[1.75rem] tw:mt-[1.875rem] 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]">
1315 <span>Lire plus</span>
1316 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1317 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1318 </button>
1319 </div>
1320 </#if>
1321 </div>
1322 </#if>
1323
1324 <#if showGenerique>
1325 <div id="generique" class="js-summary-content" tabindex="-1"></div>
1326 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1327 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">
1328 <h2 class="tw:text-prim tw:mb-5">${summary["GeneriqueFilm"]?hasContent?then(summary["GeneriqueFilm"], "Générique")}</h2>
1329
1330 <#if credRealsFull?hasContent>
1331 <div class="js-list-expand tw:mb-[0.625rem]">
1332 <p id="gene-real" class="tw:leading-[1.375rem] tw:font-bold">
1333 Réalisation :
1334 </p>
1335 <ul aria-labelledby="gene-real" class="tw:pl-5">
1336 <#list credRealsFull?keys as function>
1337 <li class="<#if (function?index > 4)>tw:hidden</#if> tw:leading-[1.625rem]">${function}
1338 :
1339 <#list credRealsFull[function] as realisation>
1340 <#if realisation.personne.id?hasContent>
1341 <a href="/l/${realisation.personne.id}"
1342 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]">
1343 ${realisation.personne.name}</a>
1344 <#else>${realisation.personne.name}</#if><#if getterUtil.getBoolean(realisation.presume)> (Présumé)</#if><#if getterUtil.getBoolean(realisation.credite)> (Non-crédité)</#if><#if !realisation?isLast>, </#if>
1345 </#list>
1346 </li>
1347 </#list>
1348 </ul>
1349 <#if (credRealsFull?size > 5)>
1350 <button type="button"
1351 class="js-expand tw:ml-5 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]">
1352 <span>Voir plus</span>
1353 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1354 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1355 </button>
1356 </#if>
1357 </div>
1358 </#if>
1359
1360
1361 <#if credEcritsFull?hasContent>
1362 <div class="js-list-expand tw:mb-[0.625rem]">
1363 <p id="gene-ecrit" class="tw:leading-[1.375rem] tw:font-bold">
1364 Écriture :
1365 </p>
1366 <ul aria-labelledby="gene-ecrit" class="tw:pl-5">
1367 <#list credEcritsFull?keys as function>
1368 <li class="<#if (function?index > 4)>tw:hidden</#if> tw:leading-[1.625rem]">${function}
1369 :
1370 <#list credEcritsFull[function] as ecrit>
1371 <#if ecrit.personne.id?hasContent>
1372 <a href="/l/${ecrit.personne.id}"
1373 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]">
1374 ${ecrit.personne.name}
1375 </a>
1376 <#else>${ecrit.personne.name}</#if><#if getterUtil.getBoolean(ecrit.presume)> (Présumé)</#if><#if getterUtil.getBoolean(ecrit.credite)> (Non-crédité)</#if><#if !ecrit?isLast>, </#if>
1377 </#list>
1378 </li>
1379 </#list>
1380 </ul>
1381 <#if (credEcritsFull?size > 5)>
1382 <button type="button"
1383 class="js-expand tw:ml-5 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]">
1384 <span>Voir plus</span>
1385 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1386 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1387 </button>
1388 </#if>
1389 </div>
1390 </#if>
1391
1392
1393 <#if credMusicsFull?hasContent>
1394 <div class="js-list-expand tw:mb-[0.625rem]">
1395 <p id="gene-music" class="tw:leading-[1.375rem] tw:font-bold">
1396 Musique :
1397 </p>
1398 <ul aria-labelledby="gene-music" class="tw:pl-5">
1399 <#list credMusicsFull?keys as function>
1400 <li class="<#if (function?index > 4)>tw:hidden</#if> tw:leading-[1.625rem]">${function}
1401 :
1402 <#list credMusicsFull[function] as music>
1403 <#if music.personne.id?hasContent>
1404 <a href="/l/${music.personne.id}"
1405 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]">
1406 ${music.personne.name}</a>
1407 <#else>${music.personne.name}</#if><#if getterUtil.getBoolean(music.presume)> (Présumé)</#if><#if getterUtil.getBoolean(music.credite)> (Non-crédité)</#if><#if !music?isLast>, </#if>
1408 </#list>
1409 </li>
1410 </#list>
1411 </ul>
1412 <#if (credMusicsFull?size > 5)>
1413 <button type="button"
1414 class="js-expand tw:ml-5 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]">
1415 <span>Voir plus</span>
1416 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1417 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1418 </button>
1419 </#if>
1420 </div>
1421 </#if>
1422
1423
1424 <#if credTechsFull?hasContent>
1425 <div class="js-list-expand tw:mb-[0.625rem]">
1426 <p id="gene-tech" class="tw:leading-[1.375rem] tw:font-bold">
1427 Équipe technique :
1428 </p>
1429 <ul aria-labelledby="gene-tech" class="tw:pl-5">
1430 <#list credTechsFull?keys as function>
1431 <li class="<#if (function?index > 4)>tw:hidden</#if> tw:leading-[1.625rem]">${function}
1432 :
1433 <#list credTechsFull[function] as tech>
1434 <#if tech.personne.id?hasContent>
1435 <a href="/l/${tech.personne.id}"
1436 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]">
1437 ${tech.personne.name}</a>
1438 <#else>${tech.personne.name}</#if><#if getterUtil.getBoolean(tech.presume)> (Présumé)</#if><#if getterUtil.getBoolean(tech.credite)> (Non-crédité)</#if><#if !tech?isLast>, </#if>
1439 </#list>
1440 </li>
1441 </#list>
1442 </ul>
1443 <#if (credTechsFull?size > 5)>
1444 <button type="button"
1445 class="js-expand tw:ml-5 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]">
1446 <span>Voir plus</span>
1447 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1448 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1449 </button>
1450 </#if>
1451 </div>
1452 </#if>
1453
1454 <#if credProdsFull?hasContent>
1455 <div class="js-list-expand tw:mb-[0.625rem]">
1456 <p id="gene-prod" class="tw:leading-[1.375rem] tw:font-bold">
1457 Production - Distribution :
1458 </p>
1459 <ul aria-labelledby="gene-prod" class="tw:pl-5">
1460 <#list credProdsFull?keys as function>
1461 <li class="<#if (function?index > 4)>tw:hidden</#if> tw:leading-[1.625rem]">${function}
1462 :
1463 <#list credProdsFull[function] as prod>
1464 <#if prod.personne.id?hasContent>
1465 <a href="/l/${prod.personne.id}"
1466 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]">
1467 ${prod.personne.name}</a>
1468 <#else>${prod.personne.name}</#if><#if getterUtil.getBoolean(prod.presume)> (Présumé)</#if><#if getterUtil.getBoolean(prod.credite)> (Non-crédité)</#if><#if !prod?isLast>, </#if>
1469 </#list>
1470 </li>
1471 </#list>
1472 </ul>
1473 <#if (credProdsFull?size > 5)>
1474 <button type="button"
1475 class="js-expand tw:ml-5 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]">
1476 <span>Voir plus</span>
1477 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1478 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1479 </button>
1480 </#if>
1481 </div>
1482 </#if>
1483
1484 <#if credIntersFull?hasContent>
1485 <div class="js-list-expand tw:mb-[0.625rem]">
1486 <p id="gene-cast" class="tw:leading-[1.375rem] tw:font-bold">
1487 Interprétation :
1488 </p>
1489 <ul aria-labelledby="gene-cast" class="tw:pl-5">
1490 <#list credIntersFull?keys as function>
1491 <li class="<#if (function?index > 4)>tw:hidden</#if> tw:leading-[1.625rem] js-read-more"
1492 data-clamp-line="8" data-line-height="1.625">${function}
1493 :
1494 <#list credIntersFull[function] as cast>
1495 <#if cast.personne.id?hasContent>
1496 <a href="/l/${cast.personne.id}"
1497 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]">
1498 ${cast.personne.name}</a>
1499 <#else>${cast.personne.name}</#if><#if cast.role?hasContent> (${cast.role})</#if><#if getterUtil.getBoolean(cast.presume)> (Présumé)</#if><#if getterUtil.getBoolean(cast.credite)> (Non-crédité)</#if><#if !cast?isLast>, </#if>
1500 </#list>
1501 </li>
1502 <button type="button"
1503 class="tw:hidden tw:items-center tw:leading-[1.75rem] 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]">
1504 <span>Voir plus</span>
1505 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1506 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1507 </button>
1508 </#list>
1509 </ul>
1510 <#if (credIntersFull?size > 5)>
1511 <button type="button"
1512 class="js-expand tw:ml-5 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]">
1513 <span>Voir plus</span>
1514 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem]
1515 tw:group-hover:rotate-180" aria-hidden="true"></span>
1516 </button>
1517 </#if>
1518 </div>
1519 </#if>
1520 </div>
1521 </#if>
1522
1523 <#if showTechnique>
1524 <div id="infos-techniques" class="js-summary-content" tabindex="-1"></div>
1525 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1526 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">
1527 <h2 class="tw:text-prim tw:mb-5">${summary["InformationsTechniquesFilm"]?hasContent?then(summary["InformationsTechniquesFilm"], "Informations techniques")}</h2>
1528
1529 <#if .dataModel["ObjectRelationship#C_Film#filmWork_typeDeMetrage"].getData()?hasContent>
1530 <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]">
1531 <span class="tw:font-bold tw:shrink-0">Métrage :</span>
1532 ${.dataModel["ObjectRelationship#C_Film#filmWork_typeDeMetrage"].getData()}
1533 </p>
1534 </#if>
1535
1536 <#if .dataModel["ObjectRelationship#C_Film#filmWork_workVariantQuantity"].getData()?hasContent>
1537 <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]">
1538 <span class="tw:font-bold tw:shrink-0">Durée d'origine :</span>
1539 ${.dataModel["ObjectRelationship#C_Film#filmWork_workVariantQuantity"].getData()}
1540 </p>
1541 </#if>
1542
1543 <#if .dataModel["ObjectRelationship#C_Film#filmWork_workVariantMetrage"].getData()?hasContent>
1544 <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]">
1545 <span class="tw:font-bold tw:shrink-0">Métrage d'origine :</span>
1546 ${.dataModel["ObjectRelationship#C_Film#filmWork_workVariantMetrage"].getData()}
1547 </p>
1548 </#if>
1549
1550 <#if techColors?hasContent>
1551 <#assign colors = techColors
1552 ?filter(tc -> tc.values.couleurNB?hasContent)
1553 ?map(tc->garance.getPicklistItemName(tc.values.couleurNB, "picklistCouleurNB"))
1554 ?join(", ")>
1555 <#assign techs = techColors
1556 ?filter(tc -> tc.values.r_workColourSystemFilm_c_thesaurusId != 0)
1557 ?map(tc->garance.getThesaurusByID(tc.values.r_workColourSystemFilm_c_thesaurusId))
1558 ?join(", ")>
1559 <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]">
1560 <span class="tw:font-bold tw:shrink-0">Couleur/NB :</span>
1561 ${colors}<#if techs?hasContent> (${techs})</#if>
1562 </p>
1563 </#if>
1564
1565 <#if .dataModel["ObjectRelationship#C_Film#filmWork_sonore"].getData()?hasContent>
1566 <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]">
1567 <span class="tw:font-bold tw:shrink-0">Sonore/muet :</span>
1568 ${.dataModel["ObjectRelationship#C_Film#filmWork_sonore"].getData()}
1569 </p>
1570 </#if>
1571
1572 <#if workSoundsFull?hasContent>
1573 <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]">
1574 <span class="tw:font-bold tw:shrink-0">Procédé sonore :</span>
1575 <#list workSoundsFull as sound>${sound.system}<#if sound.surround?hasContent> (${sound.surround})</#if></#list>
1576 </p>
1577 </#if>
1578
1579
1580 <#if techniquesImageFull?hasContent>
1581 <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]">
1582 <span class="tw:font-bold tw:shrink-0">Format d'origine :</span>
1583 <#list techniquesImageFull as techIm>${techIm.format}<#if techIm.cadrage?hasContent || getterUtil.getBoolean(techIm.relief)> (${techIm.cadrage}<#if getterUtil.getBoolean(techIm.relief)>, Relief</#if>)</#if><#if !techIm?isLast> ,</#if></#list>
1584 </p>
1585 </#if>
1586 </div>
1587 </#if>
1588
1589 <#if showPress>
1590 <div id="presse" class="js-summary-content" tabindex="-1"></div>
1591 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1592 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">
1593 <h2 class="tw:text-prim tw:mb-5">${summary["DansLaPresseFilm"]?hasContent?then(summary["DansLaPresseFilm"], "Dans la presse")}</h2>
1594
1595 <#if florileges?hasContent>
1596 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mt-5">
1597 <h3 class="tw:mb-5">Citations</h3>
1598 <div class="js-read-more" data-clamp-line="8" data-line-height="1.625">
1599 <#list florileges as florilege>
1600 <div class="wysiwyg--notice">
1601 <#if florilege.values.florilegeSource?hasContent>
1602 <h4 class="tw:font-txt tw:text-notice tw:font-bold tw:leading-[1.75rem]">${florilege.values.florilegeSource}
1603 :</h4>
1604 </#if>
1605 <#if florilege.values.florilege?hasContent>
1606 ${florilege.values.florilege}
1607 </#if>
1608 <#if florilege.values.florilegeDate?hasContent>${florilege.values.florilegeDate?string("dd/MM/yyyy")}</#if>
1609 </div>
1610 </#list>
1611 </div>
1612 <button type="button"
1613 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]">
1614 <span>Afficher toutes les citations</span>
1615 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem]
1616 tw:group-hover:rotate-180" aria-hidden="true"></span>
1617 </button>
1618 </div>
1619 </#if>
1620
1621
1622 <#if syntheses?hasContent>
1623 <div class="tw:bg-white tw:p-10 tw:border-l-[0.25rem] tw:border-solid tw:border-prim tw:mt-5">
1624 <h3 class="tw:mb-5">Panorama critique</h3>
1625 <div class="js-read-more" data-clamp-line="8" data-line-height="1.625">
1626 <#list syntheses as synthese>
1627 <div class="wysiwyg--notice">
1628 <#if synthese.values.syntheseSource?hasContent>
1629 <h4 class="tw:font-txt tw:text-notice tw:font-bold tw:leading-[1.75rem]">${synthese.values.syntheseSource}
1630 :</h4>
1631 </#if>
1632 <#if synthese.values.synthese?hasContent>
1633 ${synthese.values.synthese}
1634 </#if>
1635 <#if synthese.values.syntheseDate?hasContent>
1636 <p>${synthese.values.syntheseDate?string("dd/MM/yyyy")}</p></#if>
1637 </div>
1638 </#list>
1639 </div>
1640 <button type="button"
1641 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]">
1642 <span>Afficher tout le panorama critique</span>
1643 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem]
1644 tw:group-hover:rotate-180" aria-hidden="true"></span>
1645 </button>
1646 </div>
1647 </#if>
1648 </div>
1649 </#if>
1650
1651 <#if showAwards>
1652 <div id="recompenses" class="js-summary-content" tabindex="-1"></div>
1653 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1654 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">
1655 <h2 id="awards"
1656 class="tw:text-prim tw:mb-5">${summary["RecompensesEtNominationsFilm"]?hasContent?then(summary["RecompensesEtNominationsFilm"], "Récompenses et nominations")}</h2>
1657 <div class="wysiwyg">
1658 <ul aria-labelledby="awards">
1659 <#list awardsFull as award>
1660 <li class="tw:font-semibold!">${award?filter(a -> a?hasContent)?join(" - ")}</li>
1661 </#list>
1662 </ul>
1663 </div>
1664 </div>
1665 </#if>
1666
1667 <#if showExploitation>
1668 <div id="exploitation" class="js-summary-content" tabindex="-1"></div>
1669 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1670 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">
1671 <h2 class="tw:text-prim tw:mb-5">${summary["ExploitationFilm"]?hasContent?then(summary["ExploitationFilm"], "Exploitation")}</h2>
1672 <#assign exploitRefs = {"salle": "salles",
1673 "semaine": "semaines",
1674 "entree": "entrées la première semaine",
1675 "total": "entrées totales"
1676 }>
1677 <#if exploitationParis?hasContent>
1678 <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]">
1679 <span class="tw:font-bold tw:shrink-0">Exploitation Paris :</span>
1680 <#list exploitationParis?keys as type>
1681 ${exploitationParis[type]?number?string["#,###.##"]} ${exploitRefs[type]}<#if !type?isLast>, </#if>
1682 </#list>
1683 </p>
1684 </#if>
1685 <#if exploitationProvince?hasContent>
1686 <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]">
1687 <span class="tw:font-bold tw:shrink-0">Exploitation Région :</span>
1688 <#list exploitationProvince?keys as type>
1689 ${exploitationProvince[type]?number?string["#,###.##"]} ${exploitRefs[type]}<#if !type?isLast>, </#if>
1690 </#list>
1691 </p>
1692 </#if>
1693 <#if exploitationFrance?hasContent>
1694 <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]">
1695 <span class="tw:font-bold tw:shrink-0">Exploitation France :</span>
1696 <#list exploitationFrance?keys as type>
1697 ${exploitationFrance[type]?number?string["#,###.##"]} ${exploitRefs[type]}<#if !type?isLast>, </#if>
1698 </#list>
1699 </p>
1700 </#if>
1701 </div>
1702 </#if>
1703
1704 <#if showBibliographie>
1705 <div id="bibliographie" class="js-summary-content" tabindex="-1"></div>
1706 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1707 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">
1708 <h2 id="biblio"
1709 class="tw:text-prim tw:mb-5">${summary["BibliographieEditorialeFilm"]?hasContent?then(summary["BibliographieEditorialeFilm"], "Bibliographie éditoriale")}</h2>
1710 <div class="wysiwyg js-list-expand">
1711 <ul aria-labelledby="biblio">
1712 <#list digitalRefs as digitalRef>
1713 <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>
1714 </#list>
1715 </ul>
1716 <#if (digitalRefs?size > 5)>
1717 <button type="button"
1718 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]">
1719 <span>Voir plus</span>
1720 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1721 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1722 </button>
1723 </#if>
1724 </div>
1725 </div>
1726 </#if>
1727
1728 <#if showVariant>
1729 <div id="versions" class="js-summary-content" tabindex="-1"></div>
1730 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1731 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">
1732 <h2 class="tw:text-prim tw:mb-5">${summary["VersionsDuFilmFilm"]?hasContent?then(summary["VersionsDuFilmFilm"], "Versions du film")}</h2>
1733 <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]">
1734 <p id="variant-tl" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Type de version
1735 :</p>
1736 <div class="js-list-expand">
1737 <ul aria-labelledby="variant-tl">
1738 <#list variantChildren as variant>
1739 <li <#if (variant?index > 4)>class="tw:hidden"</#if>><#if variant.values.typeOfVariant?hasContent>${garance.getPicklistItemName(variant.values.typeOfVariant, "picklistTypeOfVariant")}</#if>
1740 - ${variant.values.titleComplete}<#if variant.values.varianteIdentificationNote?hasContent> - ${variant.values.varianteIdentificationNote}</#if></li>
1741 </#list>
1742 </ul>
1743 <#if (variantChildren?size > 5)>
1744 <button type="button"
1745 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]">
1746 <span>Voir plus</span>
1747 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1748 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1749 </button>
1750 </#if>
1751 <button id="popup-variant-toggle" role="button" class="btn btn-outline-primary tw:mt-5">
1752 Afficher les
1753 informations des versions
1754 </button>
1755 </div>
1756 </div>
1757 </div>
1758 </#if>
1759
1760 <#if showSerie>
1761 <div id="series" class="js-summary-content" tabindex="-1"></div>
1762 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1763 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">
1764 <h2 id="serie"
1765 class="tw:text-prim tw:mb-5">Séries liées</h2>
1766 <div class="wysiwyg js-list-expand">
1767 <ul aria-labelledby="serie">
1768 <#list seriesFull as serie>
1769 <li <#if (serie?index > 4)>class="tw:hidden"</#if>>
1770 <#if serie.id??>
1771 <a href="/l/${serie.id}"
1772 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]">
1773 ${serie.title}</a>
1774 <#else>${serie.title}</#if>
1775 </li>
1776 </#list>
1777 </ul>
1778 <#if (seriesFull?size > 5)>
1779 <button type="button"
1780 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]">
1781 <span>Voir plus</span>
1782 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1783 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1784 </button>
1785 </#if>
1786 </div>
1787 </div>
1788 </#if>
1789
1790 <#if showComposingSerie>
1791 <div id="series-composing" class="js-summary-content" tabindex="-1"></div>
1792 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1793 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">
1794 <h2 id="serie-composing"
1795 class="tw:text-prim tw:mb-5">Films composant la série</h2>
1796 <div class="wysiwyg js-list-expand">
1797 <ul aria-labelledby="serie-composing">
1798 <#list composingFull as composing>
1799 <li <#if (composing?index > 4)>class="tw:hidden"</#if>>
1800 <#if composing.id??>
1801 <a href="/l/${composing.id}"
1802 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]">
1803 ${composing.title}</a>
1804 <#else>${composing.title}</#if>
1805 </li>
1806 </#list>
1807 </ul>
1808 <#if (composingFull?size > 5)>
1809 <button type="button"
1810 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]">
1811 <span>Voir plus</span>
1812 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1813 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1814 </button>
1815 </#if>
1816 </div>
1817 </div>
1818 </#if>
1819
1820 <#if showEnsemble>
1821 <div id="ensemble" class="js-summary-content" tabindex="-1"></div>
1822 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1823 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">
1824 <h2 id="ensemble"
1825 class="tw:text-prim tw:mb-5">Ensembles liés</h2>
1826 <div class="wysiwyg js-list-expand">
1827 <ul aria-labelledby="ensemble">
1828 <#list ensembleFull as ensemble>
1829 <li <#if (ensemble?index > 4)>class="tw:hidden"</#if>>
1830 <#if ensemble.id??>
1831 <a href="/l/${ensemble.id}"
1832 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]">
1833 ${ensemble.title}</a>
1834 <#else>${ensemble.title}</#if>
1835 </li>
1836 </#list>
1837 </ul>
1838 <#if (ensembleFull?size > 5)>
1839 <button type="button"
1840 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]">
1841 <span>Voir plus</span>
1842 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1843 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1844 </button>
1845 </#if>
1846 </div>
1847 </div>
1848 </#if>
1849
1850 <#if showComposingEnsemble>
1851 <div id="ensembles-composing" class="js-summary-content" tabindex="-1"></div>
1852 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1853 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">
1854 <h2 id="ensemble-composing"
1855 class="tw:text-prim tw:mb-5">Films composant l'ensemble</h2>
1856 <div class="wysiwyg js-list-expand">
1857 <ul aria-labelledby="ensemble-composing">
1858 <#list composingFull as composing>
1859 <li <#if (composing?index > 4)>class="tw:hidden"</#if>>
1860 <#if composing.id??>
1861 <a href="/l/${composing.id}"
1862 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]">
1863 ${composing.title}</a>
1864 <#else>${composing.title}</#if>
1865 </li>
1866 </#list>
1867 </ul>
1868 <#if (composingFull?size > 5)>
1869 <button type="button"
1870 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]">
1871 <span>Voir plus</span>
1872 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1873 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1874 </button>
1875 </#if>
1876 </div>
1877 </div>
1878 </#if>
1879
1880 <#if showRelatedFilms>
1881 <div id="relations" class="js-summary-content" tabindex="-1"></div>
1882 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1883 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">
1884 <h2 id="relatedF"
1885 class="tw:text-prim tw:mb-5">${summary["RelationAutreFilmFilm"]?hasContent?then(summary["RelationAutreFilmFilm"], "Relation autre film")}</h2>
1886 <div class="wysiwyg js-list-expand">
1887 <ul aria-labelledby="relatedF">
1888 <#list relatedFilmsFull as rf>
1889 <li <#if (rf?index > 4)>class="tw:hidden"</#if>><#if rf.type?hasContent>${garance.getPicklistItemName(rf.type, "picklistFilmRelationType")} : </#if>
1890 <#if rf.id??>
1891 <a href="/l/${rf.id}"
1892 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]">
1893 ${rf.title}</a>
1894 <#else>${rf.title}</#if>
1895 </li>
1896 </#list>
1897 </ul>
1898 <#if (relatedFilmsFull?size > 5)>
1899 <button type="button"
1900 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]">
1901 <span>Voir plus</span>
1902 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1903 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1904 </button>
1905 </#if>
1906 </div>
1907 </div>
1908 </#if>
1909
1910 <#if showCorpus>
1911 <div id="corpus" class="js-summary-content" tabindex="-1"></div>
1912 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1913 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">
1914 <h2 id="corpus-tl"
1915 class="tw:text-prim tw:mb-5">Corpus liés</h2>
1916 <div class="wysiwyg">
1917 <ul aria-labelledby="corpus-tl" class="js-read-more" data-clamp-line="5"
1918 data-line-height="1.625">
1919 <#list corpusFull as corpus>
1920 <li>
1921 <#if corpus.id??>
1922 <a href="/l/${corpus.id}"
1923 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]">
1924 ${corpus.title}</a>
1925 <#else>${corpus.title}</#if>
1926 </li>
1927 </#list>
1928 </ul>
1929 <button type="button"
1930 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]">
1931 <span>Voir plus</span>
1932 <span class="icon-chevron-down tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem]
1933 tw:group-hover:rotate-180" aria-hidden="true"></span>
1934 </button>
1935 </div>
1936 </div>
1937 </#if>
1938
1939 <#if showComposingCorpus>
1940 <div id="corpuss-composing" class="js-summary-content" tabindex="-1"></div>
1941 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1942 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">
1943 <h2 id="corpus-composing"
1944 class="tw:text-prim tw:mb-5">Films composant le corpus</h2>
1945 <div class="wysiwyg js-list-expand">
1946 <ul aria-labelledby="corpus-composing">
1947 <#list composingFull as composing>
1948 <li <#if (composing?index > 4)>class="tw:hidden"</#if>>
1949 <#if composing.id??>
1950 <a href="/l/${composing.id}"
1951 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]">
1952 ${composing.title}</a>
1953 <#else>${composing.title}</#if>
1954 </li>
1955 </#list>
1956 </ul>
1957 <#if (composingFull?size > 5)>
1958 <button type="button"
1959 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]">
1960 <span>Voir plus</span>
1961 <span class="icon-chevron-down tw:inline-block tw:text-prim tw:text-base tw:transition-all tw:text-[0.875rem] tw:rotate-0
1962 tw:group-hover:rotate-180 tw:group-data-[expanded=true]:rotate-180" aria-hidden="true"></span>
1963 </button>
1964 </#if>
1965 </div>
1966 </div>
1967 </#if>
1968
1969 <#if showConsultation>
1970 <div id="consultation" class="js-summary-content" tabindex="-1"></div>
1971 <div class="summary-content-wrapper page-wrapper tw:lg:pl-[16.75rem] tw:py-10
1972 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">
1973 <h2 class="tw:text-prim tw:mb-5">${summary["ConsultationFilm"]?hasContent?then(summary["ConsultationFilm"], "Consultation")}</h2>
1974 <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]">
1975 <p id="consultation-tl" class="tw:leading-[1.375rem] tw:font-bold tw:shrink-0">Lieux de
1976 consultation du film et conditions d'accès
1977 :</p>
1978 <ul aria-labelledby="consultation-tl">
1979 <#assign consultationFull = {}>
1980 <#list filmConsultationsFull as consultation>
1981 <#assign lieu = consultation.values.lieuDeConsultation>
1982 <#assign acces = consultation.values.accesConditions>
1983 <#if consultationFull[lieu]??>
1984 <#if !(consultationFull[lieu]?seqContains(acces))>
1985 <#assign consultationFull = consultationFull + {lieu: consultationFull[lieu] + [acces]}>
1986 </#if>
1987 <#else>
1988 <#assign consultationFull = consultationFull + {lieu: [acces]}>
1989 </#if>
1990 </#list>
1991 <#list consultationFull as lieu, access>
1992 <li>${garance.getPicklistItemName(lieu, "picklistLieuDeConsultation")} -
1993 ${access?filter(v->v?hasContent)?map(a -> garance.getPicklistItemName(a, "picklistAccesConditions"))?join(" - ")}</li>
1994 </#list>
1995 </ul>
1996 </div>
1997 </div>
1998 </#if>
1999 </div>
2000 <#if showMedia>
2001 <#assign medias = []>
2002 <#if reproductionsVideos?hasContent>
2003 <#assign medias = medias + [{
2004 "type": "video",
2005 "title": "Vidéos",
2006 "reproductions": reproductionsVideos
2007 }]>
2008 </#if>
2009 <#if reproductionsImages?hasContent>
2010 <#assign medias = medias + [{
2011 "type": "image",
2012 "title": "Images",
2013 "reproductions": reproductionsImages
2014 }]>
2015 </#if>
2016 <div id="ressources" class="js-summary-content" tabindex="-1"></div>
2017 <div class="page-wrapper tw:py-10">
2018 <h2 id="ressources-tl"
2019 class="tw:text-prim tw:mb-5">${summary["RessourcesMediaFilm"]?hasContent?then(summary["RessourcesMediaFilm"], "Ressources média")}</h2>
2020 <@garance.displayMedia data=medias />
2021 </div>
2022 </#if>
2023 <#if showCollection>
2024 <div id="collections" class="js-summary-content" tabindex="-1"></div>
2025 <div class="page-wrapper tw:py-10">
2026 <h2 id="collections-tl"
2027 class="tw:text-prim tw:mb-5">${summary["CollectionsLieesFilm"]?hasContent?then(summary["CollectionsLieesFilm"], "Collections liées")}</h2>
2028 <@garance.displayCollection relatedObjectsFull />
2029 </div>
2030 <script type="module" async>
2031 import('photoswipe')
2032 import('photoswipe-lightbox')
2033 </script>
2034 </#if>
2035 </div>
2036</div>
2037
2038<#if showVariant>
2039 <div id="popup-variant"
2040 class="tw:hidden tw:[&.open]:flex tw:bg-beige tw:fixed tw:[&.open]:z-[989] tw:max-w-[64.25rem] tw:w-[calc(100vw-2.5rem)] tw:translate-x-[-50%] tw:[.open]:translate-y-[-50%] tw:inset-[50%] tw:h-fit tw:max-h-[calc(100vh-1.25rem)] tw:flex tw:flex-col">
2041 <div class="tw:bg-prim tw:text-white tw:items-center tw:justify-between tw:px-10 tw:px-10 tw:py-[0.375rem] tw:flex">
2042 <h3 class="tw:text-h2/[2.8125rem]">Versions pour ${filmEntry.values.titleComplete}</h3>
2043 <button class="js-close-variant tw:group" type="button">
2044 <span class="sr-only">Fermer</span>
2045 <span class="icon-cross tw:block tw:transition-all tw:text-base tw:text-white tw:group-hover:-rotate-90"
2046 aria-controls="popup-variant"></span>
2047 </button>
2048 </div>
2049
2050 <div class="tw:px-10 tw:py-5 tw:lg:px-20 tw:lg:py-10 tw:overflow-y-auto">
2051 <#list variantChildren as variant>
2052 <div class="accordion-variant tw:w-full tw:pt-10 tw:mb-10
2053 <#if !variant?isFirst>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</#if>"
2054 data-variant-id="${variant.objectEntryId}" data-loaded="false">
2055 <button class="accordion-variant-expand tw:group tw:flex tw:justify-between tw:w-full tw:items-center tw:text-left"
2056 aria-expanded="false" aria-controls="variant-content-${variant.objectEntryId}">
2057 <h3>
2058 <#if variant.values.typeOfVariant?hasContent>${garance.getPicklistItemName(variant.values.typeOfVariant, "picklistTypeOfVariant")}</#if>
2059 - ${variant.values.titleComplete}<#if variant.values.varianteIdentificationNote?hasContent> - ${variant.values.varianteIdentificationNote}</#if></h3>
2060 <span class="icon-chevron-down tw:transition-all tw:shrink-0 tw:text-prim tw:group-hover:rotate-180 tw:group-[&[aria-expanded=true]]:rotate-180"
2061 aria-hidden="true"></span>
2062 </button>
2063 <div id="variant-content-${variant.objectEntryId}"
2064 class="accordion-variant-content tw:hidden tw:[&.open]:block tw:pt-5">
2065 <span class="custom-loader tw:mx-auto"></span>
2066 <p class="sr-only">Chargement en cours</p>
2067 </div>
2068 </div>
2069 </#list>
2070 </div>
2071 </div>
2072</#if>