La participation citoyenne
Une erreur s'est produite en traitant le calibre.
Macro displayDefaultContent has no such argument: title
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¤tURL=" + 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 + "¤tURL=" + 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¤tURL=" +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 + "¤tURL=" + 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>