Réhabilitation des "600" et des "200"

Une erreur s'est produite en traitant le calibre.
Error on line 85, column 47 in 10154#10192#15572961
Expecting a string, date or number here, Expression ouvrage is instead a com.liferay.portal.freemarker.LiferayTemplateModel
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    <#assign coords_lat = ""> 
34    <#assign coords_lon = ""> 
35    <#if coords.getSiblings()?has_content> 
36        <#list coords.getSiblings() as coord> 
37            <#if coord_index == 0> 
38                <#assign coords_lat = coord.coords_lat.getData() /> 
39                <#assign coords_lon = coord.coords_lat.getData() /> 
40            </#if> 
41        </#list> 
42    </#if> 
43 
44    <article class="interior-article interior-article-displayed"> 
45         
46        <section class="interior-article-mainContent" > 
47             
48            <div class="interior-article-title-wrapper"> 
49                <h1 class="interior-article-title">${.vars['reserved-article-title'].data}</h1> 
50            </div> 
51             
52            <p class="interior-article-chapo">${Accroche.getData()}</p> 
53                 
54            <#if content.getSiblings()?has_content> 
55             
56                <#list content.getSiblings() as contenu> 
57                     
58                    <#assign contentDisplay = contenu.content_display.getData() /> 
59                    <#if contentDisplay == "default" > 
60                        <@displayDefaultContent contenu=contenu isZoom="" isAccordion="" /> 
61                    <#elseif contentDisplay == "zoom" > 
62                        <@displayDefaultContent contenu=contenu isZoom="zoomed-paragraph" isAccordion="" /> 
63                    <#elseif contentDisplay == "accordion" > 
64                        <@displayDefaultContent contenu=contenu isZoom="" isAccordion="accordion-paragraph" /> 
65                    <#elseif contentDisplay == "corail" > 
66                        <@displayDefaultContent contenu=contenu isZoom="corail-paragraph" isAccordion="" title=articleTitle /> 
67                    </#if> 
68 
69                </#list> 
70             
71            </#if> 
72 
73            <#if ouvrage.getData() != "" || entreprise.getData() != "" || calendrier.getData() != "" || budget.getData() != "" || coords.coords_lat.getData() != "" && coords.coords_lon.getData() != ""> 
74                 
75                <aside class="fiche-technique-wrapper"> 
76                    <#if ouvrage.getData() != "" || entreprise.getData() != "" || calendrier.getData() != "" || budget.getData() != ""> 
77                        <div class="fiche-technique-container"> 
78                            <#if home_page_img.getData() != ""> 
79                                <img class="fiche-technique-img" src="${home_page_img.getData()}" loading="lazy" alt="" width="300" height="300" /> 
80                            </#if> 
81                            <dl class="fiche-technique"> 
82                                <#if ouvrage.getData() != ""> 
83                                    <div class="fiche-technique-detail"> 
84                                        <dt>Maîtrise d'ouvrage</dt> 
85                                        <dd>${ouvrage}</dd> 
86                                    </div> 
87                                </#if> 
88                                <#if entreprise.getData() != ""> 
89                                    <div class="fiche-technique-detail"> 
90                                        <dt>Entreprise(s)</dt> 
91                                        <dd>${entreprise}</dd> 
92                                    </div> 
93                                </#if> 
94                                <#if calendrier.getData() != ""> 
95                                    <div class="fiche-technique-detail"> 
96                                        <dt>Calendrier</dt> 
97                                        <dd>${calendrier}</dd> 
98                                    </div> 
99                                </#if> 
100                                <#if budget.getData() != ""> 
101                                    <div class="fiche-technique-detail"> 
102                                        <dt>Budget</dt> 
103                                        <dd>${budget}</dd> 
104                                    </div> 
105                                </#if> 
106                            </dl> 
107                        </div> 
108                    </#if> 
109                    <#if coords.coords_lat.getData() != "" && coords.coords_lon.getData() != ""> 
110                        <aside id="map-viewer" class="map-viewer-vignette" tabindex="0"> 
111 
112                            <div id="layer-switcher"></div> 
113 
114                            <div id="zoom-buttons"> 
115                                <button type="button" id="zoom-in" class="zoom-button" title="Zoomer"></button> 
116                                <button type="button" id="zoom-out" class="zoom-button" title="Dézoomer"></button> 
117                            </div> 
118                             
119                            <div id="map-logos"> 
120                                <div id="agglo-logo" class="map-logo" title="Données &copy; Agglo La Rochelle"> 
121                                    <img class="header-logo-img" src="/pru-vls-theme/images/logo-cda.svg" width="90" height="24" alt="Agglo La Rochelle" /> 
122                                </div> 
123                                <div id="ign-logo" class="map-logo" title="Fond orthophoto &copy; IGN/Géoportail"> 
124                                    <img class="header-logo-img" src="/pru-vls-theme/images/visu-carto/logo-ign.png" width="22" height="24" alt="IGN" /> 
125                                </div> 
126                            </div> 
127                             
128                            <div id="map-buttons"> 
129                                <button type="button" id="full-screen" class="map-button" title="Plein écran"></button> 
130                            </div> 
131                             
132                            <div id="graphic-scale"></div> 
133                             
134                        </aside> 
135                    </#if> 
136                </aside> 
137                 
138                <p class="link-more link-more-news"> 
139                    <a class="link-more-news-href" href="/les-chantiers-du-pru">Tous les chantiers en cours</a> 
140                </p> 
141                 
142            </#if> 
143              
144        </section> 
145         
146    </article> 
147     
148</div> 
149 
150<script> 
151         
152    var chantiersLayer = new Array(); 
153 
154    <#assign stateChantier = "finished" /> 
155    <#if state.getData() == '["inProgress"]'> 
156        <#assign stateChantier = "inProgress" /> 
157    <#elseif state.getData() == '["toCome"]'> 
158        <#assign stateChantier = "toCome" /> 
159    </#if> 
160 
161    <#if coords.getSiblings()?has_content> 
162        <#list coords.getSiblings() as coord> 
163            <#assign coords_lat = coord.coords_lat.getData() /> 
164            <#assign coords_lon = coord.coords_lat.getData() /> 
165            <#assign coords_name = coord.coords_name.getData() /> 
166            <#if coords_lat != "" && coords_lon != "" && coords_name != ""> 
167 
168            var layer = { 
169                'name': '${coords_name}', 
170                'center': [parseFloat('${coords_lon}'),parseFloat('${coords_lat}')], 
171                'state': '${state}' 
172
173             
174            chantiersLayer.push(layer); 
175 
176        </#if> 
177        </#list> 
178    </#if> 
179     
180</script> 
181 
182 
183<#--************************************* 
184** CONTENT BLOCKS DISPLAY 
185*************************************--> 
186 
187<#macro displayDefaultContent contenu isZoom isAccordion > 
188     
189    <#assign floatingMedia = "no-floating-media" /> 
190    <#assign alignValue = contenu.Media.media_options.alignment.getData() /> 
191    <#if alignValue == "flexLeft" || alignValue == "flexRight"> 
192        <#assign floatingMedia = "flex-media" /> 
193    </#if> 
194     
195    <#assign portletMedia = "" /> 
196    <#assign typeValue =  contenu.Media.media_type.getData() /> 
197    <#if typeValue == "portlet"> 
198        <#assign portletMedia = "portlet-media" /> 
199    </#if> 
200     
201    <#assign contentTitle = contenu.content_title.getData() /> 
202    <#assign contentText = contenu.content_text.getData() /> 
203     
204    <#assign innerMedia = contenu.Media /> 
205    <#assign mediaSrc = contenu.Media.media_doc.getData()/> 
206    <#assign urlIframePortlet = contenu.Media.url_iframe_portlet.getData() /> 
207     
208    <#if mediaSrc == "" && urlIframePortlet == "" > 
209        <#assign floatingMedia = "no-floating-media" /> 
210        <#assign portletMedia = "" /> 
211    </#if> 
212 
213    <#assign titleAlone = "" /> 
214    <#if contentTitle!="" && contentText=="" && mediaSrc=="" && urlIframePortlet =="" > 
215        <#assign titleAlone = "title-alone" /> 
216    </#if> 
217 
218    <#assign noTitle = "" /> 
219    <#if contentTitle=="" > 
220        <#assign noTitle = "no-title" /> 
221    </#if> 
222     
223    <#if contentTitle!="" || contentText!="" || mediaSrc!="" || urlIframePortlet !="" > 
224         
225        <#if contenu.anchor?has_content> 
226            <#assign anchor = contenu.anchor.getData() /> 
227            <#if anchor != "" > 
228                <#assign anchor = 'id="'+anchor+'"' /> 
229            </#if> 
230        </#if> 
231         
232        <#if isAccordion=="accordion-paragraph"> 
233            <div class="interior-article-paragraph ${isZoom} ${floatingMedia} ${portletMedia} ${titleAlone} ${noTitle}"> 
234        <#else> 
235            <div ${anchor} class="interior-article-paragraph ${isZoom} ${floatingMedia} ${portletMedia} ${titleAlone} ${noTitle}"> 
236        </#if> 
237             
238            <#if contentTitle != '' > 
239                <#if isAccordion=="accordion-paragraph"> 
240                    <h3 ${anchor} class="accordion-title accordion-title-expanded"><button type="button" class="accordion-title-button">${contentTitle}</button></h3> 
241                </#if> 
242            </#if> 
243             
244            <#if isAccordion=="accordion-paragraph"> 
245                <div class="accordion-content"> 
246            </#if> 
247             
248            <#if floatingMedia == "no-floating-media" > 
249                 
250                <#if contentTitle != '' && isAccordion=='' > 
251                    <h3>${contentTitle}</h3> 
252                </#if> 
253                ${contentText?replace("<p></p>","")} 
254                <#if innerMedia??> 
255                    <@getMedia media=innerMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet alignment=alignValue /> 
256                </#if> 
257                 
258                 
259             <#elseif floatingMedia == "flex-media"> 
260              
261                <div class="flex-display flex-media-paragraph ${alignValue}"> 
262                    <div class="flex-media-paragraph-content"> 
263                        <#if contentTitle != '' && isAccordion=='' > 
264                            <h3>${contentTitle}</h3> 
265                        </#if> 
266                        ${contentText?replace("<p></p>","")} 
267                    </div> 
268                    <#if innerMedia??> 
269                        <@getMedia media=innerMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet alignment=alignValue /> 
270                    </#if> 
271                </div> 
272                 
273            </#if> 
274             
275            <#if isAccordion=="accordion-paragraph"> 
276                </div> 
277            </#if> 
278             
279        </div> 
280         
281    </#if> 
282     
283</#macro> 
284 
285 
286<#--************************************* 
287** MEDIA DISPLAY 
288*************************************--> 
289 
290<#macro getMedia media mediaSrc urlIframePortlet alignment> 
291     
292    <#if mediaSrc != '' || urlIframePortlet != ''> 
293         
294        <#local mediaType = media.media_type.getData() /> 
295        <#assign carouselWrapper = "" /> 
296        <#if mediaType == "carousel"> 
297            <#assign carouselWrapper = "interior-article-media-carousel-wrapper" /> 
298        </#if> 
299        <#local width = media.media_options.width.getData() /> 
300        <#local displayWidth = '' /> 
301        <#if width == 'null'> 
302            <#local displayWidth = '' /> 
303        <#elseif width != ""> 
304            <#local displayWidth = 'style="width:'+width+'px;"' /> 
305        </#if> 
306         
307        <#local height = media.media_options.height.getData() /> 
308        <#if height == 'null'> 
309            <#local height = '' /> 
310        </#if> 
311        <#local displayMode = media.media_options.display_mode.getData() /> 
312        <#local imgMini = media.media_options.img_mini.getData() /> 
313        <#local legend = media.media_options.legend.getData() /> 
314        <#local altText = media.alt_text.getData() /> 
315        <#if altText == 'null'> 
316            <#local altText = '' /> 
317        </#if> 
318         
319        <figure class="interior-article-media interior-article-media-${alignment} ${carouselWrapper}" ${displayWidth}> 
320                 
321            <#switch mediaType> 
322                <#case "image"> 
323                    <#if displayMode == "normal"> 
324                       <@getImageMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet altText=altText height=height /> 
325                    <#elseif displayMode == "popup"> 
326                        <@getImageMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
327                    </#if> 
328                    <#break > 
329                <#case "video"> 
330                    <#if displayMode == "normal"> 
331                       <@getVideoMedia imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
332                    <#elseif displayMode == "popup"> 
333                        <@getVideoMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
334                    </#if> 
335                    <#break > 
336                <#case "pdf"> 
337                    <#if displayMode == "normal"> 
338                       <@getPdfMedia mediaSrc=mediaSrc altText=altText height=height /> 
339                    <#elseif displayMode == "popup"> 
340                        <@getPdfMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 
341                    </#if> 
342                    <#break > 
343                <#case "iframe"> 
344                    <#if displayMode == "normal"> 
345                       <@getIframeMedia urlIframePortlet=urlIframePortlet altText=altText height=height /> 
346                    <#elseif displayMode == "popup"> 
347                        <@getIframeMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height /> 
348                    </#if> 
349                    <#break > 
350                <#case "portlet"> 
351                urlIframePortlet=${urlIframePortlet} 
352                    <#if displayMode == "normal"> 
353                       <@getPortletMedia urlIframePortlet=urlIframePortlet height=height /> 
354                    <#elseif displayMode == "popup"> 
355                        <@getPortletMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height /> 
356                    </#if> 
357                    <#break > 
358                <#case "carousel"> 
359                    <#if displayMode == "normal"> 
360                       <@getCarouselMedia media=media altText=altText height=height width=width /> 
361                       <#assign carouselNb = carouselNb + 1 /> 
362                    <#elseif displayMode == "popup"> 
363                        <@getCarouselMediaPopup imgMini=imgMini media=media altText=altText height=height /> 
364                    </#if> 
365                    <#break > 
366                <#default> 
367            </#switch> 
368             
369            <#local hasLegend = legend?length != 0 /> 
370            <#if hasLegend> 
371                <figcaption class="interior-article-media-legend">${legend}</figcaption> 
372            </#if> 
373 
374        </figure> 
375         
376    </#if> 
377     
378</#macro> 
379 
380 
381<#macro getImageMedia mediaSrc urlIframePortlet altText height > 
382    <#local displayedHeight = '' /> 
383    <#if height != ""> 
384        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
385    </#if> 
386    <#if urlIframePortlet != ""> 
387        <#assign target = "href='"+ urlIframePortlet +"'" /> 
388        <#if !isInternalLink(urlIframePortlet)> 
389            <#assign target = target + " target='_blank' rel='noopener noreferrer'" /> 
390        </#if> 
391        <a ${target} title="${htmlUtil.escapeAttribute(altText)}"> 
392            <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
393        </a> 
394    <#else> 
395        <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
396    </#if> 
397</#macro> 
398 
399 
400<#macro getImageMediaPopup imgMini mediaSrc altText height > 
401    <#local displayedHeight = '' /> 
402    <#if height != ""> 
403        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
404    </#if> 
405    <a class="link-img" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 
406        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
407    </a> 
408</#macro> 
409 
410 
411<#macro getVideoMedia imgMini mediaSrc height altText> 
412    <div class="lazy-video" data-video="${mediaSrc}" data-height="${height}" data-text="${htmlUtil.escapeAttribute(altText)}" data-poster="${imgMini}" ></div> 
413</#macro> 
414 
415 
416<#macro getVideoMediaPopup imgMini mediaSrc altText height > 
417    <#local displayedHeight = '' /> 
418    <#if height != ""> 
419        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
420    </#if> 
421    <a class="link-video" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 
422        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
423    </a> 
424</#macro> 
425 
426 
427<#macro getPdfMedia mediaSrc altText height > 
428    <#local displayedHeight = '' /> 
429    <#if height != ""> 
430        <#local displayedHeight = 'style="height:'+height+'px;"' /> 
431    </#if> 
432    <iframe class="interior-article-media-iframe" src="${pdfViewer+mediaSrc}" loading="lazy" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} allowfullscreen ></iframe> 
433</#macro> 
434 
435 
436<#macro getPdfMediaPopup imgMini mediaSrc altText height > 
437    <#local displayedHeight = '' /> 
438    <#if height != ""> 
439        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
440    </#if> 
441    <a class="link-pdf" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 
442        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
443    </a> 
444</#macro> 
445 
446 
447<#macro getIframeMedia urlIframePortlet altText height > 
448    <#local displayedHeight = '' /> 
449    <#if height != ""> 
450        <#local displayedHeight = 'style="height:'+height+'px;"' /> 
451    </#if> 
452    <#if urlIframePortlet?contains("youtube")> 
453        <#local youtubeId = urlIframePortlet?substring(urlIframePortlet?index_of("embed/")+6) /> 
454        <div class="interior-article-media-youtube-blocker" ${displayedHeight}> 
455            <div class="youtube-blocker-img-wrapper"> 
456                <img class="youtube-blocker-img" src="https://img.youtube.com/vi/${youtubeId}/0.jpg" loading="lazy" alt="" /> 
457            </div> 
458            <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> 
459            <div class="youtube-blocker-btn-wrapper"> 
460                <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> 
461                <a href="https://www.youtube.com/static?template=terms&gl=FR" class="youtube-blocker-btn" target="_blank" rel="noopener noreferrer">En savoir plus</a> 
462            </div> 
463        </div> 
464    <#else> 
465        <iframe class="interior-article-media-iframe" data-src="${urlIframePortlet}" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} allowfullscreen ></iframe> 
466    </#if> 
467</#macro> 
468 
469 
470<#macro getIframeMediaPopup imgMini urlIframePortlet altText height > 
471    <#local displayedHeight = '' /> 
472    <#if height != ""> 
473        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
474    </#if> 
475    <a class="link-iframe" href="${urlIframePortlet}" title="${htmlUtil.escapeAttribute(altText)}"> 
476        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
477    </a> 
478</#macro> 
479 
480 
481<#macro getPortletMedia urlIframePortlet height > 
482     
483    <#local displayedHeight = '' /> 
484    <#if height != ""> 
485        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
486    </#if> 
487     
488    <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 
489    <#local hasQueryString = urlIframePortlet?contains('?') /> 
490    <#local queryString = '' /> 
491    <#local instanceId = '' /> 
492    <#local portletName = urlIframePortlet /> 
493    <#local portletId = urlIframePortlet /> 
494    <#local fullPortletName = '' /> 
495     
496    <#if hasInstanceId> 
497        <#if hasQueryString> 
498            <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..urlIframePortlet?index_of('?')-1] /> 
499        <#else> 
500            <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..] /> 
501        </#if> 
502        <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('INSTANCE'))-2] /> 
503    <#else> 
504        <#if hasQueryString> 
505            <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('?'))-1] /> 
506        </#if> 
507    </#if> 
508     
509    <#if hasQueryString> 
510        <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 
511    </#if> 
512     
513    <#if hasInstanceId> 
514        <#local fullPortletName = portletName+'_INSTANCE_'+instanceId /> 
515    <#else> 
516         <#local fullPortletName = portletName /> 
517    </#if> 
518 
519    <#local divId = "embedded-portlet-" + fullPortletName + randomNamespace /> 
520     
521    <#-- 
522    <code class="hide"> 
523        urlIframePortlet=${urlIframePortlet} 
524        portletName=${portletName} 
525        instanceId=${instanceId} 
526        queryString=${queryString} 
527        fullPortletName=${fullPortletName} 
528    </code> 
529    --> 
530     
531    <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice') || urlIframePortlet?contains('cuCreate')> 
532         
533        <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive&currentURL=" + themeDisplay.getURLCurrent() /> 
534 
535        <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="" data-querystring="${queryString}" ${displayedHeight}></div> 
536         
537    <#else> 
538         
539        <#local plid = themeDisplay.plid /> 
540        <#local portletURL = portletURLFactory.create(renderRequest, fullPortletName, plid, "RENDER_PHASE") /> 
541        <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 
542        ${portletURL.setWindowState(windowState)} 
543        <#local remoteUrl = portletURL.toString() + "&" + queryString + "&currentURL=" + themeDisplay.getURLCurrent() /> 
544         
545        <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="${remoteUrl}" data-querystring="${queryString}" ${displayedHeight}></div> 
546         
547    </#if> 
548     
549</#macro> 
550 
551 
552<#macro getPortletMediaPopup imgMini urlIframePortlet altText height > 
553     
554    <#local displayedHeight = '' /> 
555    <#if height != ""> 
556        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
557    </#if> 
558 
559    <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 
560    <#local hasQueryString = urlIframePortlet?contains('?') /> 
561    <#local portletId = urlIframePortlet /> 
562    <#local queryString = '' /> 
563     
564    <#if hasInstanceId> 
565        <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of(instanceId))] /> 
566    </#if> 
567    <#if hasQueryString> 
568        <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of('?')-1)] /> 
569        <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 
570    </#if> 
571     
572    <#local divId = "embedded-portlet-" + portletId /> 
573         
574    <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice')> 
575         
576        <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive&currentURL=" +themeDisplay.getURLCurrent() /> 
577         
578        <div class="link-portlet eservice-form-opener" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="" tabindex="0"> 
579            <div class="eservice-form-opener-picto"></div> 
580            <p class="eservice-form-opener-text">${htmlUtil.escapeAttribute(altText)}</p> 
581        </div> 
582 
583    <#else> 
584         
585        <#local portletClass = "link-portlet" /> 
586        <#if urlIframePortlet?contains('19_WAR')> 
587            <#local portletClass = "link-portlet planning-cmd-opener" /> 
588        </#if> 
589        <#local plid = themeDisplay.plid /> 
590        <#local portletURL = portletURLFactory.create(renderRequest, portletId, plid, "RENDER_PHASE") /> 
591        <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 
592        ${portletURL.setWindowState(windowState)} 
593        <#local remoteUrl = portletURL.toString() + "&" + queryString + "&currentURL=" + themeDisplay.getURLCurrent() /> 
594         
595        <div class="${portletClass}" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="${remoteUrl}" tabindex="0"> 
596            <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${altText}" ${displayedHeight} /> 
597        </div> 
598     
599    </#if> 
600     
601</#macro> 
602 
603 
604<#macro getCarouselMedia media altText height width >  
605     
606    <#local ratioDisplay = "" /> 
607    <#if height != "" && width != "" > 
608        <#local ratio = height?number / width?number * 100 /> 
609        <#local ratioDisplay = 'style="padding-top:' + ratio + '%"' /> 
610    </#if> 
611     
612    <div class="carousel" id="carousel-${carouselNb}" data-carousel="carousel-${carouselNb}" ${ratioDisplay}> 
613         
614        <button type="button" id="carousel-${carouselNb}-arrow-prev" data-carousel="carousel-${carouselNb}" data-direction="prev" class="carousel-arrow carousel-arrow-prev">Image précédente</button> 
615        <button type="button" id="carousel-${carouselNb}-arrow-next" data-carousel="carousel-${carouselNb}" data-direction="next" class="carousel-arrow carousel-arrow-next">Image suivante</button> 
616 
617        <#list media.media_doc.getSiblings() as node> 
618            <#if node_index == 0> 
619                <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}"> 
620            <#else> 
621                <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}"> 
622            </#if> 
623        </#list> 
624 
625    </div> 
626 
627</#macro> 
628 
629 
630<#macro getCarouselMediaPopup imgMini media altText height > 
631    <#local diapos = "" /> 
632    <#list media.media_doc.getSiblings() as node> 
633        <#if node_index != 0> 
634            <#local diapos = diapos + "," /> 
635        </#if> 
636        <#local diapos = diapos + node.getData() /> 
637    </#list> 
638    <#local displayedHeight = '' /> 
639    <#if height != ""> 
640        <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 
641    </#if> 
642    <a class="link-diapo" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}" data-diapos="${diapos}"> 
643        <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 
644    </a> 
645</#macro>