Dunes Fertiles : la ferme maraîchère du quartier
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 © 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 © 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 <#local hasLegend = legend?length != 0 /> 320 <#if hasLegend> 321 <figure class="interior-article-media interior-article-media-${alignment} ${carouselWrapper}" ${displayWidth}> 322 <#else> 323 <div class="interior-article-media interior-article-media-${alignment} ${carouselWrapper}" ${displayWidth}> 324 </#if> 325 326 <#switch mediaType> 327 <#case "image"> 328 <#if displayMode == "normal"> 329 <@getImageMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet altText=altText height=height /> 330 <#elseif displayMode == "popup"> 331 <@getImageMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 332 </#if> 333 <#break > 334 <#case "video"> 335 <#if displayMode == "normal"> 336 <@getVideoMedia imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 337 <#elseif displayMode == "popup"> 338 <@getVideoMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 339 </#if> 340 <#break > 341 <#case "pdf"> 342 <#if displayMode == "normal"> 343 <@getPdfMedia mediaSrc=mediaSrc altText=altText height=height /> 344 <#elseif displayMode == "popup"> 345 <@getPdfMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height /> 346 </#if> 347 <#break > 348 <#case "iframe"> 349 <#if displayMode == "normal"> 350 <@getIframeMedia urlIframePortlet=urlIframePortlet altText=altText height=height /> 351 <#elseif displayMode == "popup"> 352 <@getIframeMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height /> 353 </#if> 354 <#break > 355 <#case "portlet"> 356 urlIframePortlet=${urlIframePortlet} 357 <#if displayMode == "normal"> 358 <@getPortletMedia urlIframePortlet=urlIframePortlet height=height /> 359 <#elseif displayMode == "popup"> 360 <@getPortletMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height /> 361 </#if> 362 <#break > 363 <#case "carousel"> 364 <#if displayMode == "normal"> 365 <@getCarouselMedia media=media altText=altText height=height width=width /> 366 <#assign carouselNb = carouselNb + 1 /> 367 <#elseif displayMode == "popup"> 368 <@getCarouselMediaPopup imgMini=imgMini media=media altText=altText height=height /> 369 </#if> 370 <#break > 371 <#default> 372 </#switch> 373 374 <#if hasLegend> 375 <figcaption class="interior-article-media-legend">${legend}</figcaption> 376 </figure> 377 <#else> 378 </div> 379 </#if> 380 381 </#if> 382 383</#macro> 384 385 386<#macro getImageMedia mediaSrc urlIframePortlet altText height > 387 <#local displayedHeight = '' /> 388 <#if height != ""> 389 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 390 </#if> 391 <#if urlIframePortlet != ""> 392 <#assign target = "href='"+ urlIframePortlet +"'" /> 393 <#if !isInternalLink(urlIframePortlet)> 394 <#assign target = target + " target='_blank' rel='noopener noreferrer'" /> 395 </#if> 396 <a ${target} title="${htmlUtil.escapeAttribute(altText)}"> 397 <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 398 </a> 399 <#else> 400 <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 401 </#if> 402</#macro> 403 404 405<#macro getImageMediaPopup imgMini mediaSrc altText height > 406 <#local displayedHeight = '' /> 407 <#if height != ""> 408 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 409 </#if> 410 <a class="link-img" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 411 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 412 </a> 413</#macro> 414 415 416<#macro getVideoMedia imgMini mediaSrc height altText> 417 <div class="lazy-video" data-video="${mediaSrc}" data-height="${height}" data-text="${htmlUtil.escapeAttribute(altText)}" data-poster="${imgMini}" ></div> 418</#macro> 419 420 421<#macro getVideoMediaPopup imgMini mediaSrc altText height > 422 <#local displayedHeight = '' /> 423 <#if height != ""> 424 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 425 </#if> 426 <a class="link-video" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 427 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 428 </a> 429</#macro> 430 431 432<#macro getPdfMedia mediaSrc altText height > 433 <#local displayedHeight = '' /> 434 <#if height != ""> 435 <#local displayedHeight = 'style="height:'+height+'px;"' /> 436 </#if> 437 <iframe class="interior-article-media-iframe" src="${pdfViewer+mediaSrc}" loading="lazy" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} allowfullscreen ></iframe> 438</#macro> 439 440 441<#macro getPdfMediaPopup imgMini mediaSrc altText height > 442 <#local displayedHeight = '' /> 443 <#if height != ""> 444 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 445 </#if> 446 <a class="link-pdf" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 447 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 448 </a> 449</#macro> 450 451 452<#macro getIframeMedia urlIframePortlet altText height > 453 <#local displayedHeight = '' /> 454 <#if height != ""> 455 <#local displayedHeight = 'style="height:'+height+'px;"' /> 456 </#if> 457 <#if urlIframePortlet?contains("youtube")> 458 <#local youtubeId = urlIframePortlet?substring(urlIframePortlet?index_of("embed/")+6) /> 459 <div class="interior-article-media-youtube-blocker" ${displayedHeight}> 460 <div class="youtube-blocker-img-wrapper"> 461 <img class="youtube-blocker-img" src="https://img.youtube.com/vi/${youtubeId}/0.jpg" loading="lazy" alt="" /> 462 </div> 463 <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> 464 <div class="youtube-blocker-btn-wrapper"> 465 <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> 466 <a href="https://www.youtube.com/static?template=terms&gl=FR" class="youtube-blocker-btn" target="_blank" rel="noopener noreferrer">En savoir plus</a> 467 </div> 468 </div> 469 <#else> 470 <iframe class="interior-article-media-iframe" data-src="${urlIframePortlet}" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} allowfullscreen ></iframe> 471 </#if> 472</#macro> 473 474 475<#macro getIframeMediaPopup imgMini urlIframePortlet altText height > 476 <#local displayedHeight = '' /> 477 <#if height != ""> 478 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 479 </#if> 480 <a class="link-iframe" href="${urlIframePortlet}" title="${htmlUtil.escapeAttribute(altText)}"> 481 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 482 </a> 483</#macro> 484 485 486<#macro getPortletMedia urlIframePortlet height > 487 488 <#local displayedHeight = '' /> 489 <#if height != ""> 490 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 491 </#if> 492 493 <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 494 <#local hasQueryString = urlIframePortlet?contains('?') /> 495 <#local queryString = '' /> 496 <#local instanceId = '' /> 497 <#local portletName = urlIframePortlet /> 498 <#local portletId = urlIframePortlet /> 499 <#local fullPortletName = '' /> 500 501 <#if hasInstanceId> 502 <#if hasQueryString> 503 <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..urlIframePortlet?index_of('?')-1] /> 504 <#else> 505 <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..] /> 506 </#if> 507 <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('INSTANCE'))-2] /> 508 <#else> 509 <#if hasQueryString> 510 <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('?'))-1] /> 511 </#if> 512 </#if> 513 514 <#if hasQueryString> 515 <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 516 </#if> 517 518 <#if hasInstanceId> 519 <#local fullPortletName = portletName+'_INSTANCE_'+instanceId /> 520 <#else> 521 <#local fullPortletName = portletName /> 522 </#if> 523 524 <#local divId = "embedded-portlet-" + fullPortletName + randomNamespace /> 525 526 <#-- 527 <code class="hide"> 528 urlIframePortlet=${urlIframePortlet} 529 portletName=${portletName} 530 instanceId=${instanceId} 531 queryString=${queryString} 532 fullPortletName=${fullPortletName} 533 </code> 534 --> 535 536 <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice') || urlIframePortlet?contains('cuCreate')> 537 538 <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive¤tURL=" + themeDisplay.getURLCurrent() /> 539 540 <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="" data-querystring="${queryString}" ${displayedHeight}></div> 541 542 <#else> 543 544 <#local plid = themeDisplay.plid /> 545 <#local portletURL = portletURLFactory.create(renderRequest, fullPortletName, plid, "RENDER_PHASE") /> 546 <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 547 ${portletURL.setWindowState(windowState)} 548 <#local remoteUrl = portletURL.toString() + "&" + queryString + "¤tURL=" + themeDisplay.getURLCurrent() /> 549 550 <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="${remoteUrl}" data-querystring="${queryString}" ${displayedHeight}></div> 551 552 </#if> 553 554</#macro> 555 556 557<#macro getPortletMediaPopup imgMini urlIframePortlet altText height > 558 559 <#local displayedHeight = '' /> 560 <#if height != ""> 561 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 562 </#if> 563 564 <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 565 <#local hasQueryString = urlIframePortlet?contains('?') /> 566 <#local portletId = urlIframePortlet /> 567 <#local queryString = '' /> 568 569 <#if hasInstanceId> 570 <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of(instanceId))] /> 571 </#if> 572 <#if hasQueryString> 573 <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of('?')-1)] /> 574 <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 575 </#if> 576 577 <#local divId = "embedded-portlet-" + portletId /> 578 579 <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice')> 580 581 <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive¤tURL=" +themeDisplay.getURLCurrent() /> 582 583 <div class="link-portlet eservice-form-opener" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="" tabindex="0"> 584 <div class="eservice-form-opener-picto"></div> 585 <p class="eservice-form-opener-text">${htmlUtil.escapeAttribute(altText)}</p> 586 </div> 587 588 <#else> 589 590 <#local portletClass = "link-portlet" /> 591 <#if urlIframePortlet?contains('19_WAR')> 592 <#local portletClass = "link-portlet planning-cmd-opener" /> 593 </#if> 594 <#local plid = themeDisplay.plid /> 595 <#local portletURL = portletURLFactory.create(renderRequest, portletId, plid, "RENDER_PHASE") /> 596 <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 597 ${portletURL.setWindowState(windowState)} 598 <#local remoteUrl = portletURL.toString() + "&" + queryString + "¤tURL=" + themeDisplay.getURLCurrent() /> 599 600 <div class="${portletClass}" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="${remoteUrl}" tabindex="0"> 601 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${altText}" ${displayedHeight} /> 602 </div> 603 604 </#if> 605 606</#macro> 607 608 609<#macro getCarouselMedia media altText height width > 610 611 <#local ratioDisplay = "" /> 612 <#if height != "" && width != "" > 613 <#local ratio = height?number / width?number * 100 /> 614 <#local ratioDisplay = 'style="padding-top:' + ratio + '%"' /> 615 </#if> 616 617 <div class="carousel" id="carousel-${carouselNb}" data-carousel="carousel-${carouselNb}" ${ratioDisplay}> 618 619 <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> 620 <button type="button" id="carousel-${carouselNb}-arrow-next" data-carousel="carousel-${carouselNb}" data-direction="next" class="carousel-arrow carousel-arrow-next">Image suivante</button> 621 622 <#list media.media_doc.getSiblings() as node> 623 <#if node_index == 0> 624 <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}"> 625 <#else> 626 <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}"> 627 </#if> 628 </#list> 629 630 </div> 631 632</#macro> 633 634 635<#macro getCarouselMediaPopup imgMini media altText height > 636 <#local diapos = "" /> 637 <#list media.media_doc.getSiblings() as node> 638 <#if node_index != 0> 639 <#local diapos = diapos + "," /> 640 </#if> 641 <#local diapos = diapos + node.getData() /> 642 </#list> 643 <#local displayedHeight = '' /> 644 <#if height != ""> 645 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 646 </#if> 647 <a class="link-diapo" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}" data-diapos="${diapos}"> 648 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} /> 649 </a> 650</#macro>