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¤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>