Contact - Contact

Contact

Une erreur s'est produite en traitant le calibre.
Expression plid is undefined on line 424, column 55 in 10154#10192#15572964.
1<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetEntryLocalService") /> 
2<#assign classNameLocalService = serviceLocator.findService("com.liferay.portal.service.ClassNameLocalService") /> 
3<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetLinkLocalService") /> 
4<#assign bookmarksEntryLocalService = serviceLocator.findService("com.liferay.portlet.bookmarks.service.BookmarksEntryLocalService") /> 
5<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService") /> 
6<#assign journalStructureLocalService = serviceLocator.findService("com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalService") /> 
7<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService") /> 
8<#assign resourcePermissionLocalService = serviceLocator.findService("com.liferay.portal.service.ResourcePermissionLocalService") /> 
9<#assign roleLocalService = serviceLocator.findService("com.liferay.portal.service.RoleLocalService") /> 
10<#assign typeJournalArticle = "com.liferay.portlet.journal.model.JournalArticle" /> 
11<#assign typeBookmarksEntry = "com.liferay.portlet.bookmarks.model.BookmarksEntry" /> 
12<#assign typeDLFileEntry = "com.liferay.portlet.documentlibrary.model.DLFileEntry" /> 
13 
14<#assign journalArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
15<#assign entry = assetEntryLocalService.getEntry(typeJournalArticle, journalArticle.getResourcePrimKey()) /> 
16 
17<#assign serviceContextThreadLocal = staticUtil["com.liferay.portal.service.ServiceContextThreadLocal"] /> 
18<#assign themeDisplay = serviceContextThreadLocal.getServiceContext().getThemeDisplay() /> 
19 
20<#assign layout = themeDisplay['plid'] /> 
21<#assign layoutService = serviceLocator.findService("com.liferay.portal.service.LayoutLocalService") /> 
22<#assign layoutObject = layoutService.getLayout(layout?number) /> 
23 
24<#assign jaClassNameId = classNameLocalService.getClassNameId(typeJournalArticle) /> 
25 
26<#assign pdfViewer = '/fu/js/pdfjs/web/viewer.html?zoom=page-fit&file=' /> 
27 
28<#assign carouselNb = 0 /> 
29 
30 
31<div class="interior-article-container"> 
32 
33    <article class="interior-article interior-article-displayed"> 
34         
35        <section class="interior-article-mainContent" > 
36             
37            <div class="interior-article-title-wrapper"> 
38                <h1 class="interior-article-title">${.vars['reserved-article-title'].data}</h1> 
39            </div> 
40             
41            <p class="interior-article-chapo">${Accroche.getData()}</p> 
42                 
43            <#if content.getSiblings()?has_content> 
44             
45                <#list content.getSiblings() as contenu> 
46                     
47                    <#assign contentDisplay = contenu.content_display.getData() /> 
48                    <#if contentDisplay == "default" > 
49                        <@displayDefaultContent contenu=contenu isZoom="" isAccordion="" /> 
50                    <#elseif contentDisplay == "zoom" > 
51                        <@displayDefaultContent contenu=contenu isZoom="zoomed-paragraph" isAccordion="" /> 
52                    <#elseif contentDisplay == "accordion" > 
53                        <@displayDefaultContent contenu=contenu isZoom="" isAccordion="accordion-paragraph" /> 
54                    <#elseif contentDisplay == "corail" > 
55                        <@displayDefaultContent contenu=contenu isZoom="corail-paragraph" isAccordion="" title=articleTitle /> 
56                    </#if> 
57 
58                </#list> 
59             
60            </#if> 
61              
62        </section> 
63         
64    </article> 
65     
66</div> 
67 
68 
69<#--************************************* 
70** CONTENT BLOCKS DISPLAY 
71*************************************--> 
72 
73<#macro displayDefaultContent contenu isZoom isAccordion > 
74     
75    <#assign floatingMedia = "no-floating-media" /> 
76    <#assign alignValue = contenu.Media.media_options.alignment.getData() /> 
77    <#if alignValue == "flexLeft" || alignValue == "flexRight"> 
78        <#assign floatingMedia = "flex-media" /> 
79    </#if> 
80     
81    <#assign portletMedia = "" /> 
82    <#assign typeValue =  contenu.Media.media_type.getData() /> 
83    <#if typeValue == "portlet"> 
84        <#assign portletMedia = "portlet-media" /> 
85    </#if> 
86     
87    <#assign contentTitle = contenu.content_title.getData() /> 
88    <#assign contentText = contenu.content_text.getData() /> 
89     
90    <#assign innerMedia = contenu.Media /> 
91    <#assign mediaSrc = contenu.Media.media_doc.getData()/> 
92    <#assign urlIframePortlet = contenu.Media.url_iframe_portlet.getData() /> 
93     
94    <#if mediaSrc == "" && urlIframePortlet == "" > 
95        <#assign floatingMedia = "no-floating-media" /> 
96        <#assign portletMedia = "" /> 
97    </#if> 
98 
99    <#assign titleAlone = "" /> 
100    <#if contentTitle!="" && contentText=="" && mediaSrc=="" && urlIframePortlet =="" > 
101        <#assign titleAlone = "title-alone" /> 
102    </#if> 
103 
104    <#assign noTitle = "" /> 
105    <#if contentTitle=="" > 
106        <#assign noTitle = "no-title" /> 
107    </#if> 
108     
109    <#if contentTitle!="" || contentText!="" || mediaSrc!="" || urlIframePortlet !="" > 
110         
111        <#if contenu.anchor?has_content> 
112            <#assign anchor = contenu.anchor.getData() /> 
113            <#if anchor != "" > 
114                <#assign anchor = 'id="'+anchor+'"' /> 
115            </#if> 
116        </#if> 
117         
118        <#if isAccordion=="accordion-paragraph"> 
119            <div class="interior-article-paragraph ${isZoom} ${floatingMedia} ${portletMedia} ${titleAlone} ${noTitle}"> 
120        <#else> 
121            <div ${anchor} class="interior-article-paragraph ${isZoom} ${floatingMedia} ${portletMedia} ${titleAlone} ${noTitle}"> 
122        </#if> 
123             
124            <#if contentTitle != '' > 
125                <#if isAccordion=="accordion-paragraph"> 
126                    <h3 ${anchor} class="accordion-title accordion-title-expanded"><button type="button" class="accordion-title-button">${contentTitle}</button></h3> 
127                </#if> 
128            </#if> 
129             
130            <#if isAccordion=="accordion-paragraph"> 
131                <div class="accordion-content"> 
132            </#if> 
133             
134            <#if floatingMedia == "no-floating-media" > 
135                 
136                <#if contentTitle != '' && isAccordion=='' > 
137                    <h3>${contentTitle}</h3> 
138                </#if> 
139                ${contentText?replace("<p></p>","")?replace('<blockquote>','<div class="blockquote">')?replace('</blockquote>','</div>')} 
140                <#if innerMedia??> 
141                    <@getMedia media=innerMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet alignment=alignValue /> 
142                </#if> 
143                 
144                 
145             <#elseif floatingMedia == "flex-media"> 
146              
147                <div class="flex-display flex-media-paragraph ${alignValue}"> 
148                    <div class="flex-media-paragraph-content"> 
149                        <#if contentTitle != '' && isAccordion=='' > 
150                            <h3>${contentTitle}</h3> 
151                        </#if> 
152                        ${contentText?replace("<p></p>","")?replace('<blockquote>','<div class="blockquote">')?replace('</blockquote>','</div>')} 
153                    </div> 
154                    <#if innerMedia??> 
155                        <@getMedia media=innerMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet alignment=alignValue /> 
156                    </#if> 
157                </div> 
158                 
159            </#if> 
160             
161            <#if isAccordion=="accordion-paragraph"> 
162                </div> 
163            </#if> 
164             
165        </div> 
166         
167    </#if> 
168     
169</#macro> 
170 
171 
172<#--************************************* 
173** MEDIA DISPLAY 
174*************************************--> 
175 
176<#macro getMedia media mediaSrc urlIframePortlet alignment> 
177     
178    <#if mediaSrc != '' || urlIframePortlet != ''> 
179         
180        <#local mediaType = media.media_type.getData() /> 
181        <#assign carouselWrapper = "" /> 
182        <#if mediaType == "carousel"> 
183            <#assign carouselWrapper = "interior-article-media-carousel-wrapper" /> 
184        </#if> 
185        <#local width = media.media_options.width.getData() /> 
186        <#local displayWidth = '' /> 
187        <#if width == 'null'> 
188            <#local displayWidth = '' /> 
189        <#elseif width != ""> 
190            <#local displayWidth = 'style="width:'+width+'px;"' /> 
191        </#if> 
192         
193        <#local height = media.media_options.height.getData() /> 
194        <#if height == 'null'> 
195            <#local height = '' /> 
196        </#if> 
197        <#local displayMode = media.media_options.display_mode.getData() /> 
198        <#local imgMini = media.media_options.img_mini.getData() /> 
199        <#local legend = media.media_options.legend.getData() /> 
200        <#local altText = media.alt_text.getData() /> 
201        <#if altText == 'null'> 
202            <#local altText = '' /> 
203        </#if> 
204         
205        <#local hasLegend = legend?length != 0 /> 
206        <#if hasLegend> 
207            <figure class="interior-article-media interior-article-media-${alignment} ${carouselWrapper}" ${displayWidth}> 
208        <#else> 
209            <div class="interior-article-media interior-article-media-${alignment} ${carouselWrapper}" ${displayWidth}> 
210        </#if> 
211                 
212            <#switch mediaType> 
213                <#case "image"> 
214                    <#if displayMode == "normal"> 
215                       <@getImageMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet altText=altText height=height /> 
216                    <#elseif displayMode == "popup"> 
217                        <@getImageMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
218                    </#if> 
219                    <#break > 
220                <#case "video"> 
221                    <#if displayMode == "normal"> 
222                       <@getVideoMedia imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
223                    <#elseif displayMode == "popup"> 
224                        <@getVideoMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
225                    </#if> 
226                    <#break > 
227                <#case "pdf"> 
228                    <#if displayMode == "normal"> 
229                       <@getPdfMedia mediaSrc=mediaSrc altText=altText height=height /> 
230                    <#elseif displayMode == "popup"> 
231                        <@getPdfMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
232                    </#if> 
233                    <#break > 
234                <#case "iframe"> 
235                    <#if displayMode == "normal"> 
236                       <@getIframeMedia urlIframePortlet=urlIframePortlet altText=altText height=height /> 
237                    <#elseif displayMode == "popup"> 
238                        <@getIframeMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height /> 
239                    </#if> 
240                    <#break > 
241                <#case "portlet"> 
242                urlIframePortlet=${urlIframePortlet} 
243                    <#if displayMode == "normal"> 
244                       <@getPortletMedia urlIframePortlet=urlIframePortlet height=height /> 
245                    <#elseif displayMode == "popup"> 
246                        <@getPortletMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height /> 
247                    </#if> 
248                    <#break > 
249                <#case "carousel"> 
250                    <#if displayMode == "normal"> 
251                       <@getCarouselMedia media=media altText=altText height=height width=width /> 
252                       <#assign carouselNb = carouselNb + 1 /> 
253                    <#elseif displayMode == "popup"> 
254                        <@getCarouselMediaPopup imgMini=imgMini media=media altText=altText height=height /> 
255                    </#if> 
256                    <#break > 
257                <#default> 
258            </#switch> 
259             
260        <#if hasLegend> 
261                <figcaption class="interior-article-media-legend">${legend}</figcaption> 
262            </figure> 
263        <#else> 
264            </div> 
265        </#if> 
266         
267    </#if> 
268     
269</#macro> 
270 
271 
272<#macro getImageMedia mediaSrc urlIframePortlet altText height > 
273    <#local displayedHeight = '' /> 
274    <#if height != ""> 
275        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
276    </#if> 
277    <#if urlIframePortlet != ""> 
278        <#assign target = "href='"+ urlIframePortlet +"'" /> 
279        <#if !isInternalLink(urlIframePortlet)> 
280            <#assign target = target + " target='_blank' rel='noopener noreferrer'" /> 
281        </#if> 
282        <a ${target} title="${htmlUtil.escapeAttribute(altText)}"> 
283            <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
284        </a> 
285    <#else> 
286        <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
287    </#if> 
288</#macro> 
289 
290 
291<#macro getImageMediaPopup imgMini mediaSrc altText height > 
292    <#local displayedHeight = '' /> 
293    <#if height != ""> 
294        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
295    </#if> 
296    <a class="link-img" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 
297        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
298    </a> 
299</#macro> 
300 
301 
302<#macro getVideoMedia imgMini mediaSrc height altText> 
303    <div class="lazy-video" data-video="${mediaSrc}" data-height="${height}" data-text="${htmlUtil.escapeAttribute(altText)}" data-poster="${imgMini}" ></div> 
304</#macro> 
305 
306 
307<#macro getVideoMediaPopup imgMini mediaSrc altText height > 
308    <#local displayedHeight = '' /> 
309    <#if height != ""> 
310        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
311    </#if> 
312    <a class="link-video" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 
313        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
314    </a> 
315</#macro> 
316 
317 
318<#macro getPdfMedia mediaSrc altText height > 
319    <#local displayedHeight = '' /> 
320    <#if height != ""> 
321        <#local displayedHeight = 'style="height:'+height+'px;"' /> 
322    </#if> 
323    <iframe class="interior-article-media-iframe" src="${pdfViewer+mediaSrc}" loading="lazy" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} allowfullscreen ></iframe> 
324</#macro> 
325 
326 
327<#macro getPdfMediaPopup imgMini mediaSrc altText height > 
328    <#local displayedHeight = '' /> 
329    <#if height != ""> 
330        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
331    </#if> 
332    <a class="link-pdf" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 
333        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
334    </a> 
335</#macro> 
336 
337 
338<#macro getIframeMedia urlIframePortlet altText height > 
339    <#local displayedHeight = '' /> 
340    <#if height != ""> 
341        <#local displayedHeight = 'style="height:'+height+'px;"' /> 
342    </#if> 
343    <#if urlIframePortlet?contains("youtube")> 
344        <#local youtubeId = urlIframePortlet?substring(urlIframePortlet?index_of("embed/")+6) /> 
345        <div class="interior-article-media-youtube-blocker" ${displayedHeight}> 
346            <div class="youtube-blocker-img-wrapper"> 
347                <img class="youtube-blocker-img" src="https://img.youtube.com/vi/${youtubeId}/0.jpg" loading="lazy" alt="" /> 
348            </div> 
349            <p class="youtube-blocker-text">Cette vidéo est fournie par la plateforme YouTube. En la visionnant vous acceptez les conditions d'utilisation de YouTube.</p> 
350            <div class="youtube-blocker-btn-wrapper"> 
351                <button type="button" class="youtube-blocker-btn" data-src="${urlIframePortlet?replace('youtube.com','youtube-nocookie.com')}?autoplay=1" data-title="${htmlUtil.escapeAttribute(altText)}">Voir la vidéo</button> 
352                <a href="https://www.youtube.com/static?template=terms&gl=FR" class="youtube-blocker-btn" target="_blank" rel="noopener noreferrer">En savoir plus</a> 
353            </div> 
354        </div> 
355    <#else> 
356        <iframe class="interior-article-media-iframe" src="${urlIframePortlet}" loading="lazy" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} allowfullscreen ></iframe> 
357    </#if> 
358</#macro> 
359 
360 
361<#macro getIframeMediaPopup imgMini urlIframePortlet altText height > 
362    <#local displayedHeight = '' /> 
363    <#if height != ""> 
364        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
365    </#if> 
366    <a class="link-iframe" href="${urlIframePortlet}" title="${htmlUtil.escapeAttribute(altText)}"> 
367        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
368    </a> 
369</#macro> 
370 
371 
372<#macro getPortletMedia urlIframePortlet height > 
373     
374    <#local displayedHeight = '' /> 
375    <#if height != ""> 
376        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
377    </#if> 
378     
379    <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 
380    <#local hasQueryString = urlIframePortlet?contains('?') /> 
381    <#local queryString = '' /> 
382    <#local instanceId = '' /> 
383    <#local portletName = urlIframePortlet /> 
384    <#local portletId = urlIframePortlet /> 
385    <#local fullPortletName = '' /> 
386     
387    <#if hasInstanceId> 
388        <#if hasQueryString> 
389            <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..urlIframePortlet?index_of('?')-1] /> 
390        <#else> 
391            <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..] /> 
392        </#if> 
393        <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('INSTANCE'))-2] /> 
394    <#else> 
395        <#if hasQueryString> 
396            <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('?'))-1] /> 
397        </#if> 
398    </#if> 
399     
400    <#if hasQueryString> 
401        <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 
402    </#if> 
403     
404    <#if hasInstanceId> 
405        <#local fullPortletName = portletName+'_INSTANCE_'+instanceId /> 
406    <#else> 
407         <#local fullPortletName = portletName /> 
408    </#if> 
409 
410    <#local divId = "embedded-portlet-" + fullPortletName + randomNamespace /> 
411     
412    <#-- 
413    <code class="hide"> 
414        urlIframePortlet=${urlIframePortlet} 
415        portletName=${portletName} 
416        instanceId=${instanceId} 
417        queryString=${queryString} 
418        fullPortletName=${fullPortletName} 
419    </code> 
420    --> 
421     
422    <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice') || urlIframePortlet?contains('cuCreate')> 
423         
424        <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive&currentURL=" + themeDisplay.getURLCurrent() /> 
425 
426        <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="" data-querystring="${queryString}" ${displayedHeight}></div> 
427         
428    <#else> 
429         
430        <#local plid = themeDisplay.plid /> 
431        <#local portletURL = portletURLFactory.create(renderRequest, fullPortletName, plid, "RENDER_PHASE") /> 
432        <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 
433        ${portletURL.setWindowState(windowState)} 
434        <#local remoteUrl = portletURL.toString() + "&" + queryString + "&currentURL=" + themeDisplay.getURLCurrent() /> 
435         
436        <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="${remoteUrl}" data-querystring="${queryString}" ${displayedHeight}></div> 
437         
438    </#if> 
439     
440</#macro> 
441 
442 
443<#macro getPortletMediaPopup imgMini urlIframePortlet altText height > 
444     
445    <#local displayedHeight = '' /> 
446    <#if height != ""> 
447        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
448    </#if> 
449 
450    <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 
451    <#local hasQueryString = urlIframePortlet?contains('?') /> 
452    <#local portletId = urlIframePortlet /> 
453    <#local queryString = '' /> 
454     
455    <#if hasInstanceId> 
456        <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of(instanceId))] /> 
457    </#if> 
458    <#if hasQueryString> 
459        <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of('?')-1)] /> 
460        <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 
461    </#if> 
462     
463    <#local divId = "embedded-portlet-" + portletId /> 
464         
465    <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice')> 
466         
467        <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive&currentURL=" +themeDisplay.getURLCurrent() /> 
468         
469        <div class="link-portlet eservice-form-opener" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="" tabindex="0"> 
470            <div class="eservice-form-opener-picto"></div> 
471            <p class="eservice-form-opener-text">${htmlUtil.escapeAttribute(altText)}</p> 
472        </div> 
473 
474    <#else> 
475         
476        <#local portletClass = "link-portlet" /> 
477        <#if urlIframePortlet?contains('19_WAR')> 
478            <#local portletClass = "link-portlet planning-cmd-opener" /> 
479        </#if> 
480        <#local plid = themeDisplay.plid /> 
481        <#local portletURL = portletURLFactory.create(renderRequest, portletId, plid, "RENDER_PHASE") /> 
482        <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 
483        ${portletURL.setWindowState(windowState)} 
484        <#local remoteUrl = portletURL.toString() + "&" + queryString + "&currentURL=" + themeDisplay.getURLCurrent() /> 
485         
486        <div class="${portletClass}" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="${remoteUrl}" tabindex="0"> 
487            <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${altText}" ${displayedHeight} /> 
488        </div> 
489     
490    </#if> 
491     
492</#macro> 
493 
494 
495<#macro getCarouselMedia media altText height width >  
496     
497    <#local ratioDisplay = "" /> 
498    <#if height != "" && width != "" > 
499        <#local ratio = height?number / width?number * 100 /> 
500        <#local ratioDisplay = 'style="padding-top:' + ratio + '%"' /> 
501    </#if> 
502     
503    <div class="carousel" id="carousel-${carouselNb}" data-carousel="carousel-${carouselNb}" ${ratioDisplay}> 
504         
505        <button type="button" id="carousel-${carouselNb}-arrow-prev" data-carousel="carousel-${carouselNb}" data-direction="prev" class="carousel-arrow carousel-arrow-prev"><span class="sr-only">Image précédente</span></button> 
506        <button type="button" id="carousel-${carouselNb}-arrow-next" data-carousel="carousel-${carouselNb}" data-direction="next" class="carousel-arrow carousel-arrow-next"><span class="sr-only">Image suivante</span></button> 
507 
508        <#list media.media_doc.getSiblings() as node> 
509            <#if node_index == 0> 
510                <img id="carousel-${carouselNb}-img-${node_index}" data-carousel="carousel-${carouselNb}" data-img="${node_index}" class="carousel-img carousel-img-displayed" src="${node.getData()}" data-src="" alt="${altText}"> 
511            <#else> 
512                <img id="carousel-${carouselNb}-img-${node_index}" data-carousel="carousel-${carouselNb}" data-img="${node_index}" class="carousel-img carousel-img-noDisplay" src="/pru-vls-theme/images/blank.png" data-src="${node.getData()}" alt="${altText}"> 
513            </#if> 
514        </#list> 
515 
516    </div> 
517 
518</#macro> 
519 
520 
521<#macro getCarouselMediaPopup imgMini media altText height > 
522    <#local diapos = "" /> 
523    <#list media.media_doc.getSiblings() as node> 
524        <#if node_index != 0> 
525            <#local diapos = diapos + "," /> 
526        </#if> 
527        <#local diapos = diapos + node.getData() /> 
528    </#list> 
529    <#local displayedHeight = '' /> 
530    <#if height != ""> 
531        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
532    </#if> 
533    <a class="link-diapo" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}" data-diapos="${diapos}"> 
534        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
535    </a> 
536</#macro> 
537 
538 
539<#function isInternalLink link> 
540  <#local internal = link?contains("www.larochelle-zerocarbone.fr") || link?contains("www2.larochelle-zerocarbone.fr") || !link?contains("//")> 
541  <#return internal> 
542</#function>