Qui sommes-nous ?
La Rochelle Technopole encourage et soutient l’innovation en accompagnant l’émergence de projets et la création d’entreprises.
Au service de votre projet !
Une erreur s'est produite en traitant le calibre.
No signature of method create matches the arguments
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 9<#assign typeJournalArticle = "com.liferay.portlet.journal.model.JournalArticle" /> 10<#assign typeBookmarksEntry = "com.liferay.portlet.bookmarks.model.BookmarksEntry" /> 11<#assign typeDLFileEntry = "com.liferay.portlet.documentlibrary.model.DLFileEntry" /> 12 13<#assign journalArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 14<#assign entry = assetEntryLocalService.getEntry(typeJournalArticle, journalArticle.getResourcePrimKey()) /> 15<#assign relatedAssetTypedLists = buildRelatedAssetTypedLists(entry, "false") /> 16 17<#assign jaClassNameId = classNameLocalService.getClassNameId(typeJournalArticle) /> 18 19<#assign pdfViewer = '/fu/js/pdfjs/web/viewer.html?zoom=page-fit&file=' /> 20 21<#assign anchorInProgress = "false" /> 22<#assign carouselNb = 0 /> 23<#assign anchorNb = 0 /> 24 25<#assign serviceContextThreadLocal = staticUtil["com.liferay.portal.service.ServiceContextThreadLocal"] /> 26<#assign themeDisplay = serviceContextThreadLocal.getServiceContext().getThemeDisplay() /> 27 28<article class="interior-article"> 29 30 <section class="interior-article-mainContent" > 31 32 <h2 class="interior-article-title">${.vars['reserved-article-title'].data}</h2> 33 34 <#if content.getSiblings()?has_content> 35 36 <#list content.getSiblings() as contenu> 37 38 <#assign zoomDisplay = "" /> 39 <#if contenu.is_zoom.getData() == "true"> 40 <#assign zoomDisplay = "zoomed-paragraph" /> 41 </#if> 42 <@displayContent contenu=contenu isZoom=zoomDisplay /> 43 44 </#list> 45 46 </#if> 47 48 <#if anchorInProgress == "true"> 49 </div> 50 </#if> 51 52 </section> 53 54 <#if relatedAssetTypedLists?? && relatedAssetTypedLists?has_content > 55 <@getCustomRelatedAssets relatedAssetTypedLists=relatedAssetTypedLists /> 56 </#if> 57 58</article> 59 60 61<#--************************************* 62** CONTENT BLOCKS DISPLAY 63*************************************--> 64 65<#macro displayContent contenu isZoom > 66 67 <#assign floatingMedia = "no-floating-media" /> 68 <#assign alignValue = contenu.Media.media_options.alignment.getData() /> 69 <#if alignValue == "fLeft" || alignValue == "fRight"> 70 <#assign floatingMedia = "floating-media" /> 71 </#if> 72 73 <#assign contentTitle = contenu.content_title.getData() /> 74 <#assign contentText = contenu.content_text.getData() /> 75 76 <#assign innerMedia = contenu.Media /> 77 <#assign mediaSrc = innerMedia.media_doc.getData()/> 78 <#assign urlIframePortlet = innerMedia.url_iframe_portlet.getData() /> 79 80 <#assign anchor = "" /> 81 <#if contenu.anchor?has_content> 82 <#assign anchor = contenu.anchor.getData() /> 83 </#if> 84 85 <#if contentTitle!="" || contentText!="" || mediaSrc!="" || urlIframePortlet !="" > 86 87 <#if anchor == "anchor-stop" && anchorInProgress == "true"> 88 </div> 89 <#assign anchor = "" /> 90 <#assign anchorInProgress = "false" /> 91 </#if> 92 93 <#if anchor != "" && contentTitle != "" && isZoom=""> 94 <#if anchorInProgress == "true"> 95 </div> 96 </#if> 97 <h3 id="${anchor}" class="anchor-title displayed"><button type="button" class="anchor-button" id="accord-btn-${anchorNb}" aria-controls="accord-sect-${anchorNb}" aria-expanded="true" data-anchor="${anchor}">${contentTitle}</button></h3> 98 <div class="anchor-content" role="region" id="accord-sect-${anchorNb}" aria-labelledby="accord-btn-${anchorNb}"> 99 <#assign anchorNb = anchorNb + 1 /> 100 <#assign anchorInProgress = "true" /> 101 </#if> 102 103 <div class="interior-article-paragraph ${isZoom} ${floatingMedia}"> 104 105 <#if contentTitle != "" > 106 <#if anchor == "" || anchor == "anchor-stop" > 107 <h3>${contentTitle}</h3> 108 <#else> 109 <#if isZoom != ""> 110 <h3 id="${anchor}" class="anchor-title displayed"><button type="button" class="anchor-button" id="accord-btn-${anchorNb}" aria-controls="accord-sect-${anchorNb}" aria-expanded="true" data-anchor="${anchor}">${contentTitle}</button></h3> 111 <div class="anchor-content" role="region" id="accord-sect-${anchorNb}" aria-labelledby="accord-btn-${anchorNb}"> 112 <#assign anchorNb = anchorNb + 1 /> 113 </#if> 114 </#if> 115 <#else> 116 <#if anchor != "" > 117 <a id="${anchor}" class="anchor-content"></a> 118 </#if> 119 </#if> 120 121 <#if floatingMedia == "no-floating-media" > 122 123 ${contentText?replace("<p></p>","")?replace('<blockquote>','<div class="blockquote">')?replace('</blockquote>','</div>')} 124 <#if innerMedia??> 125 <@getMedia media=innerMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet alignment=alignValue /> 126 </#if> 127 128 129 <#elseif floatingMedia == "floating-media"> 130 131 <#if innerMedia??> 132 <@getMedia media=innerMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet alignment=alignValue /> 133 </#if> 134 ${contentText?replace("<p></p>","")?replace('<blockquote>','<div class="blockquote">')?replace('</blockquote>','</div>')} 135 <div class="clear-float"></div> 136 137 </#if> 138 139 <#if contentTitle != "" && anchor != "" && anchor != "anchor-stop" && isZoom != ""> 140 </div> 141 </#if> 142 143 </div> 144 145 </#if> 146 147</#macro> 148 149 150<#--************************************* 151** MEDIA DISPLAY 152*************************************--> 153 154<#macro getMedia media mediaSrc urlIframePortlet alignment> 155 156 <#if mediaSrc != '' || urlIframePortlet != ''> 157 158 <#local mediaType = media.media_type.getData() /> 159 <#assign carouselWrapper = "" /> 160 <#if mediaType == "carousel"> 161 <#assign carouselWrapper = "interior-article-media-carousel-wrapper" /> 162 </#if> 163 <#local width = media.media_options.width.getData() /> 164 <#local displayWidth = '' /> 165 <#if width == 'null'> 166 <#local displayWidth = '' /> 167 <#elseif width != ""> 168 <#local displayWidth = 'style="width:'+width+'px;"' /> 169 </#if> 170 171 <#local height = media.media_options.height.getData() /> 172 <#if height == 'null'> 173 <#local height = '' /> 174 </#if> 175 <#local displayMode = media.media_options.display_mode.getData() /> 176 <#local imgMini = media.media_options.img_mini.getData() /> 177 <#local legend = media.media_options.legend.getData() /> 178 <#local altText = media.alt_text.getData() /> 179 <#if altText == 'null'> 180 <#local altText = '' /> 181 </#if> 182 183 <#local hasLegend = legend?length != 0 /> 184 <#if hasLegend> 185 <figure class="interior-article-media interior-article-media-${alignment} ${carouselWrapper}" ${displayWidth}> 186 <#else> 187 <div class="interior-article-media interior-article-media-${alignment} ${carouselWrapper}" ${displayWidth}> 188 </#if> 189 190 <#switch mediaType> 191 <#case "image"> 192 <#if displayMode == "normal"> 193 <@getImageMedia mediaSrc=mediaSrc urlIframePortlet=urlIframePortlet altText=altText height=height width=width /> 194 <#elseif displayMode == "popup"> 195 <@getImageMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height width=width /> 196 </#if> 197 <#break > 198 <#case "video"> 199 <#if displayMode == "normal"> 200 <@getVideoMedia imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height width=width /> 201 <#elseif displayMode == "popup"> 202 <@getVideoMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height width=width /> 203 </#if> 204 <#break > 205 <#case "pdf"> 206 <#if displayMode == "normal"> 207 <@getPdfMedia mediaSrc=mediaSrc altText=altText height=height /> 208 <#elseif displayMode == "popup"> 209 <@getPdfMediaPopup imgMini=imgMini mediaSrc=mediaSrc altText=altText height=height width=width /> 210 </#if> 211 <#break > 212 <#case "iframe"> 213 <#if displayMode == "normal"> 214 <@getIframeMedia urlIframePortlet=urlIframePortlet altText=altText height=height /> 215 <#elseif displayMode == "popup"> 216 <@getIframeMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height width=width /> 217 </#if> 218 <#break > 219 <#case "portlet"> 220 <#if displayMode == "normal"> 221 <@getPortletMedia urlIframePortlet=urlIframePortlet height=height /> 222 <#elseif displayMode == "popup"> 223 <@getPortletMediaPopup imgMini=imgMini urlIframePortlet=urlIframePortlet altText=altText height=height width=width /> 224 </#if> 225 <#break > 226 <#case "carousel"> 227 <#if displayMode == "normal"> 228 <@getCarouselMedia media=media altText=altText height=height width=width /> 229 <#assign carouselNb = carouselNb + 1 /> 230 <#elseif displayMode == "popup"> 231 <@getCarouselMediaPopup imgMini=imgMini media=media altText=altText height=height width=width /> 232 </#if> 233 <#break > 234 <#default> 235 </#switch> 236 237 <#if hasLegend> 238 <figcaption class="interior-article-media-legend">${legend}</figcaption> 239 </figure> 240 <#else> 241 </div> 242 </#if> 243 244 </#if> 245 246</#macro> 247 248 249<#macro getImageMedia mediaSrc urlIframePortlet altText height width > 250 <#local displayedHeight = '' /> 251 <#if height != ""> 252 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 253 </#if> 254 <#if urlIframePortlet != ""> 255 <#assign target = "href='"+ urlIframePortlet +"'" /> 256 <#if !isInternalLink(urlIframePortlet)> 257 <#assign target = target + " target='_blank' rel='noopener noreferrer'" /> 258 </#if> 259 <a ${target} title="${htmlUtil.escapeAttribute(altText)}"> 260 <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 261 </a> 262 <#else> 263 <img class="interior-article-media-image" src="${mediaSrc}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 264 </#if> 265</#macro> 266 267 268<#macro getImageMediaPopup imgMini mediaSrc altText height width > 269 <#if imgMini != ""> 270 <#local displayedHeight = '' /> 271 <#if height != ""> 272 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 273 </#if> 274 <a class="link-img" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 275 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 276 </a> 277 <#else> 278 <a class="link-img interior-article-moreContent-doc interior-article-doc" title="${htmlUtil.escapeAttribute(altText)}" href="${mediaSrc}"> 279 ${htmlUtil.escapeAttribute(altText)} 280 </a> 281 </#if> 282</#macro> 283 284 285<#macro getVideoMedia imgMini mediaSrc height altText width> 286 <#local displayedHeight = '' /> 287 <#if height != ""> 288 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 289 </#if> 290 <video class="interior-article-media-video" itemprop="url" poster="${imgMini}" title="${htmlUtil.escapeAttribute(altText)}" controls="" preload="metadata" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> > 291 <source itemprop="url" content="https://www2.larochelle-technopole.fr${mediaSrc}" src="${mediaSrc}" type="video/mp4"> 292 <a href="${mediaSrc}" download="">${htmlUtil.escapeAttribute(altText)}</a> 293 </video> 294</#macro> 295 296 297<#macro getVideoMediaPopup imgMini mediaSrc altText height width > 298 <#if imgMini != ""> 299 <#local displayedHeight = '' /> 300 <#if height != ""> 301 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 302 </#if> 303 <a class="link-video" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}"> 304 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 305 </a> 306 <#else> 307 <a class="link-video interior-article-moreContent-doc interior-article-doc" title="${htmlUtil.escapeAttribute(altText)}" href="${mediaSrc}"> 308 ${htmlUtil.escapeAttribute(altText)} 309 </a> 310 </#if> 311</#macro> 312 313 314<#macro getPdfMedia mediaSrc altText height > 315 <#local displayedHeight = '' /> 316 <#if height != ""> 317 <#local displayedHeight = 'style="height:'+height+'px;"' /> 318 </#if> 319 <iframe class="interior-article-media-iframe" src="${pdfViewer+mediaSrc}" loading="lazy" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} allowfullscreen ></iframe> 320</#macro> 321 322 323<#macro getPdfMediaPopup imgMini mediaSrc altText height width > 324 <#if imgMini != ""> 325 <#local displayedHeight = '' /> 326 <#if height != ""> 327 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 328 </#if> 329 <a class="link-pdf" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}" target="_blank" rel="noopener noreferrer"> 330 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 331 </a> 332 <#else> 333 <a class="link-pdf interior-article-moreContent-doc interior-article-doc" title="${htmlUtil.escapeAttribute(altText)}" href="${mediaSrc}" target="_blank" rel="noopener noreferrer"> 334 ${htmlUtil.escapeAttribute(altText)} 335 </a> 336 </#if> 337</#macro> 338 339 340<#macro getIframeMedia urlIframePortlet altText height > 341 <#local displayedHeight = '' /> 342 <#if height != ""> 343 <#local displayedHeight = 'style="height:'+height+'px;"' /> 344 </#if> 345 <#if urlIframePortlet?contains("youtube")> 346 <#local youtubeId = urlIframePortlet?substring(urlIframePortlet?index_of("embed/")+6) /> 347 <div class="interior-article-media-youtube-blocker" ${displayedHeight}> 348 <div class="youtube-blocker-img-wrapper"> 349 <img class="youtube-blocker-img" src="https://img.youtube.com/vi/${youtubeId}/0.jpg" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" /> 350 </div> 351 <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> 352 <div class="youtube-blocker-btn-wrapper"> 353 <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> 354 <a href="https://www.youtube.com/static?template=terms&gl=FR" class="youtube-blocker-btn" target="_blank" rel="noopener noreferrer">En savoir plus</a> 355 </div> 356 </div> 357 <#else> 358 <#assign ariaHidden = '' /> 359 <#if urlIframePortlet?contains("/carto/")> 360 <#assign ariaHidden = 'aria-hidden="true"' /> 361 </#if> 362 <iframe class="interior-article-media-iframe" src="${urlIframePortlet}" loading="lazy" title="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} ${ariaHidden} allowfullscreen ></iframe> 363 </#if> 364</#macro> 365 366 367<#macro getIframeMediaPopup imgMini urlIframePortlet altText height width > 368 <#if imgMini != ""> 369 <#local displayedHeight = '' /> 370 <#if height != ""> 371 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 372 </#if> 373 <a class="link-iframe" href="${urlIframePortlet}" title="${htmlUtil.escapeAttribute(altText)}" target="_blank" rel="noopener noreferrer"> 374 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 375 </a> 376 <#else> 377 <a class="link-iframe interior-article-moreContent-doc interior-article-doc" title="${htmlUtil.escapeAttribute(altText)}" href="${urlIframePortlet}" target="_blank" rel="noopener noreferrer"> 378 ${htmlUtil.escapeAttribute(altText)} 379 </a> 380 </#if> 381</#macro> 382 383 384<#macro getCarouselMedia media altText height width > 385 386 <#local ratioDisplay = "" /> 387 <#if height != "" && width != "" > 388 <#local ratio = height?number / width?number * 100 /> 389 <#local ratioDisplay = 'style="padding-top:' + ratio + '%"' /> 390 </#if> 391 392 <div class="carousel" id="carousel-${carouselNb}" data-carousel="carousel-${carouselNb}" ${ratioDisplay}> 393 394 <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> 395 <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> 396 397 <#list media.media_doc.getSiblings() as node> 398 <#if node_index == 0> 399 <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}"> 400 <#else> 401 <img id="carousel-${carouselNb}-img-${node_index}" data-carousel="carousel-${carouselNb}" data-img="${node_index}" class="carousel-img carousel-img-noDisplay" src="/lr-technopole-theme/images/blank.png" data-src="${node.getData()}" alt="${altText}"> 402 </#if> 403 </#list> 404 405 </div> 406 407</#macro> 408 409 410<#macro getCarouselMediaPopup imgMini media altText height width > 411 <#local diapos = "" /> 412 <#list media.media_doc.getSiblings() as node> 413 <#if node_index != 0> 414 <#local diapos = diapos + "," /> 415 </#if> 416 <#local diapos = diapos + node.getData() /> 417 </#list> 418 <#if imgMini != ""> 419 <#local displayedHeight = '' /> 420 <#if height != ""> 421 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 422 </#if> 423 <a class="link-diapo" href="${mediaSrc}" title="${htmlUtil.escapeAttribute(altText)}" data-diapos="${diapos}"> 424 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${htmlUtil.escapeAttribute(altText)}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 425 </a> 426 <#else> 427 <a class="link-diapo interior-article-moreContent-doc interior-article-doc" title="${htmlUtil.escapeAttribute(altText)}" href="${mediaSrc}" data-diapos="${diapos}"> 428 ${htmlUtil.escapeAttribute(altText)} 429 </a> 430 </#if> 431</#macro> 432 433 434<#macro getPortletMedia urlIframePortlet height > 435 436 <#local displayedHeight = '' /> 437 <#if height != ""> 438 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 439 </#if> 440 441 <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 442 <#local hasQueryString = urlIframePortlet?contains('?') /> 443 <#local queryString = '' /> 444 <#local instanceId = '' /> 445 <#local portletName = urlIframePortlet /> 446 <#local portletId = urlIframePortlet /> 447 <#local fullPortletName = '' /> 448 449 <#if hasInstanceId> 450 <#if hasQueryString> 451 <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..urlIframePortlet?index_of('?')-1] /> 452 <#else> 453 <#local instanceId = urlIframePortlet[(urlIframePortlet?index_of('INSTANCE')+9)..] /> 454 </#if> 455 <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('INSTANCE'))-2] /> 456 <#else> 457 <#if hasQueryString> 458 <#local portletName = urlIframePortlet[0..(urlIframePortlet?index_of('?'))-1] /> 459 </#if> 460 </#if> 461 462 <#if hasQueryString> 463 <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 464 </#if> 465 466 <#if hasInstanceId> 467 <#local fullPortletName = portletName+'_INSTANCE_'+instanceId /> 468 <#else> 469 <#local fullPortletName = portletName /> 470 </#if> 471 472 <#local divId = "embedded-portlet-" + fullPortletName + randomNamespace /> 473 <#local plid = themeDisplay.plid /> 474 475 <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice') || urlIframePortlet?contains('cuCreate')> 476 477 <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive¤tURL=" + themeDisplay.getURLCurrent() /> 478 479 <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="" data-querystring="${queryString}" ${displayedHeight}></div> 480 481 <#else> 482 483 <#local plid = themeDisplay.plid /> 484 <#local portletURL = portletURLFactory.create(renderRequest, fullPortletName, plid, "RENDER_PHASE") /> 485 <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 486 ${portletURL.setWindowState(windowState)} 487 <#local remoteUrl = portletURL.toString() + "&" + queryString + "¤tURL=" + themeDisplay.getURLCurrent() /> 488 489 <div id="${divId}" class="embedded-portlet" data-portlet="${fullPortletName}" data-remote-url="${remoteUrl}" data-querystring="${queryString}" ${displayedHeight}></div> 490 491 </#if> 492 493</#macro> 494 495 496<#macro getPortletMediaPopup imgMini urlIframePortlet altText height width > 497 498 <#local displayedHeight = '' /> 499 <#if height != ""> 500 <#local displayedHeight = 'style="max-height:'+height+'px;"' /> 501 </#if> 502 503 <#local hasInstanceId = urlIframePortlet?contains('INSTANCE') /> 504 <#local hasQueryString = urlIframePortlet?contains('?') /> 505 <#local portletId = urlIframePortlet /> 506 <#local queryString = '' /> 507 508 <#if hasInstanceId> 509 <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of(instanceId))] /> 510 </#if> 511 <#if hasQueryString> 512 <#local portletId = urlIframePortlet[0..(urlIframePortlet?index_of('?')-1)] /> 513 <#local queryString = urlIframePortlet[(urlIframePortlet?index_of('?')+1)..] /> 514 </#if> 515 516 <#local divId = "embedded-portlet-" + portletId /> 517 518 <#if themeDisplay?? && themeDisplay.plid?? > 519 520 <#local plid = themeDisplay.plid /> 521 522 <#if urlIframePortlet?contains('cdalrEService') || urlIframePortlet?contains('cdalrEservice')> 523 524 <#local queryString = queryString +"&p_l_id="+plid+"&p_p_lifecycle=0&p_p_mode=view&p_p_state=exclusive¤tURL=" +themeDisplay.getURLCurrent() /> 525 526 <#local formPictoClass = "" /> 527 <#if urlIframePortlet?contains('FiberOpticalConnectionRequest')> 528 <#local formPictoClass = "eservice-form-opener-picto-fiber" /> 529 <#elseif urlIframePortlet?contains('AntContact')> 530 <#local formPictoClass = "eservice-form-opener-picto-contact" /> 531 <#elseif urlIframePortlet?contains('ReinscriptionConservatoire')> 532 <#local formPictoClass = "eservice-form-opener-picto-music" /> 533 <#elseif urlIframePortlet?contains('ContactUs')> 534 <#local formPictoClass = "eservice-form-opener-picto-contact" /> 535 <#elseif urlIframePortlet?contains('JobApplication')> 536 <#local formPictoClass = "eservice-form-opener-picto-job" /> 537 <#elseif urlIframePortlet?contains('WastebinRepair')> 538 <#local formPictoClass = "eservice-form-opener-picto-wastebin" /> 539 <#elseif urlIframePortlet?contains('WastewaterConnection')> 540 <#local formPictoClass = "eservice-form-opener-picto-water" /> 541 <#elseif urlIframePortlet?contains('WastesortingTour')> 542 <#local formPictoClass = "eservice-form-opener-picto-altriane" /> 543 </#if> 544 545 <div class="link-portlet eservice-form-opener" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="" tabindex="0"> 546 <div class="eservice-form-opener-picto ${formPictoClass}"></div> 547 <p class="eservice-form-opener-text">${htmlUtil.escapeAttribute(altText)}</p> 548 </div> 549 550 <#else> 551 552 <#local portletClass = "link-portlet" /> 553 <#if urlIframePortlet?contains('19_WAR')> 554 <#local portletClass = "link-portlet planning-cmd-opener" /> 555 </#if> 556 <#local plid = themeDisplay.plid /> 557 <#local portletURL = portletURLFactory.create(renderRequest, portletId, plid, "RENDER_PHASE") /> 558 <#local windowState = windowStateFactory.getWindowState("EXCLUSIVE") /> 559 ${portletURL.setWindowState(windowState)} 560 <#local remoteUrl = portletURL.toString() + "&" + queryString + "¤tURL=" + themeDisplay.getURLCurrent() /> 561 562 <div class="${portletClass}" data-divId="${divId}" data-portlet="${portletId}" data-querystring="${queryString}" data-remote-url="${remoteUrl}" tabindex="0"> 563 <img class="interior-article-media-image" src="${imgMini}" loading="lazy" alt="${altText}" ${displayedHeight} <#if width!=""> width="${width}"</#if> <#if height!=""> height="${height}"</#if> /> 564 </div> 565 566 </#if> 567 568 </#if> 569 570</#macro> 571 572 573<#--************************************* 574** RELATED CONTENT 575*************************************--> 576 577<#function buildRelatedAssetTypedLists entry info > 578 <#assign relatedAssetTypedLists = {} /> 579 <#assign infos = "" /> 580 <#assign assetLinks = assetLinkLocalService.getDirectLinks(entry.getEntryId()) /> 581 582 <#list assetLinks as assetLink> 583 <#if assetLink.getEntryId1() == entry.getEntryId() > 584 <#assign assetLinkEntry = assetEntryLocalService.getEntry(assetLink.getEntryId2()) /> 585 <#else> 586 <#assign assetLinkEntry = assetEntryLocalService.getEntry(assetLink.getEntryId1()) /> 587 </#if> 588 589 <#if assetLinkEntry?? && assetLinkEntry.isVisible() > 590 <#assign linkedAssetRenderer = assetLinkEntry.getAssetRenderer() /> 591 592 <#if linkedAssetRenderer.hasViewPermission(permissionChecker) > 593 594 <#assign type = assetLinkEntry.getClassName() /> 595 596 <#assign newEntry = [{"assetEntry":assetLinkEntry,"assetLink":assetLink}] /> 597 <#if relatedAssetTypedLists?keys?seq_contains(type)> 598 <#assign relatedAssetTypedList = relatedAssetTypedLists[type] + newEntry /> 599 <#else> 600 <#assign relatedAssetTypedList = newEntry /> 601 </#if> 602 <#assign relatedAssetTypedLists = relatedAssetTypedLists + {type : relatedAssetTypedList} /> 603 </#if> 604 </#if> 605 </#list> 606 607 <#if info == "true"> 608 <#return infos /> 609 <#else> 610 <#return relatedAssetTypedLists /> 611 </#if> 612 <#return {} /> 613</#function> 614 615 616<#macro getCustomRelatedAssets relatedAssetTypedLists> 617 <#local hasRelatedAssets = "false" /> 618 <#if relatedAssetTypedLists[typeDLFileEntry]?? && relatedAssetTypedLists[typeDLFileEntry]?size != 0> 619 <#local hasRelatedAssets = "true" /> 620 </#if> 621 <#if hasRelatedAssets == "true" > 622 <aside class="interior-article-moreContent-container"> 623 <#if relatedAssetTypedLists[typeDLFileEntry]?? && relatedAssetTypedLists[typeDLFileEntry]?has_content > 624 <@getRelatedDocuments assets=relatedAssetTypedLists[typeDLFileEntry] /> 625 </#if> 626 </aside> 627 </#if> 628</#macro> 629 630 631<#macro getRelatedDocuments assets> 632 633 <#if assets?has_content && assets?size != 0> 634 635 <ul class="interior-article-moreContent-docs"> 636 637 <#local orderedAssets = getOrderedAssets(assets) /> 638 <#list orderedAssets?reverse as assetMap> 639 640 <#local assetDocEntry = assetMap.assetEntry /> 641 <#local docEntry = dlFileEntryLocalService.getFileEntry(assetDocEntry.getClassPK()) /> 642 643 <#if assetDocEntry.getAssetRenderer()??> 644 645 <#local linkedAssetRenderer = assetDocEntry.getAssetRenderer() /> 646 647 <#local assetLinkEntryTitle = assetDocEntry.getTitle(locale) /> 648 <#local assetLinkEntryDescription = assetDocEntry.getDescription(locale) /> 649 <#local assetURL = linkedAssetRenderer.getURLDownload(themeDisplay) /> 650 651 <#local extension = docEntry.getLatestFileVersion(true).getExtension() /> 652 <#local extensionType = "" /> 653 <#switch extension> 654 <#case "pdf"> 655 <#local extensionType = "link-pdf" /> 656 <#break> 657 <#case "jpg"> 658 <#local extensionType = "link-img" /> 659 <#break> 660 <#case "png"> 661 <#local extensionType = "link-img" /> 662 <#break> 663 <#case "mp4"> 664 <#local extensionType = "link-video" /> 665 <#break> 666 <#default> 667 </#switch> 668 669 <#local target = " href='"+ assetURL +"'" /> 670 671 <li class="interior-article-moreContent-doc-item" data-entry-id="${assetDocEntry.entryId}"> 672 <a ${target} class="inner-link interior-article-moreContent-doc ${extensionType}" title="${htmlUtil.escapeAttribute(assetLinkEntryDescription)}" > 673 ${assetLinkEntryTitle} <span class="interior-article-moreContent-aria">Ouvrir dans un nouvel onglet</span> 674 </a> 675 </li> 676 677 </#if> 678 679 </#list> 680 681 </ul> 682 683 </#if> 684 685</#macro> 686 687 688<#function getOrderedAssets assets> 689 <#local orderedAssets = [] /> 690 <#local assetsWithDate = [] /> 691 <#list assets as assetMap> 692 <#local asset = assetMap.assetEntry /> 693 <#local modifiedDate = asset.getModifiedDate() /> 694 <#local assetsWithDate = assetsWithDate + [{'assetMap':assetMap,'modifiedDate':modifiedDate}] /> 695 </#list> 696 <#list assetsWithDate?sort_by('modifiedDate') as orderedAsset> 697 <#local orderedAssets = orderedAssets + [orderedAsset.assetMap] /> 698 </#list> 699 <#return orderedAssets> 700</#function> 701 702 703<#function getOrderedDocs docs> 704 <#local orderedDocs = [] /> 705 <#local docsWithDate = [] /> 706 <#list docs as docMap> 707 <#local doc = assetEntryLocalService.getEntry(docMap.getGroupId(),docMap.getUuid()) /> 708 <#local modifiedDate = doc.getModifiedDate() /> 709 <#local docsWithDate = docsWithDate + [{'docMap':docMap,'modifiedDate':modifiedDate}] /> 710 </#list> 711 <#list docsWithDate?sort_by('modifiedDate') as orderedDoc> 712 <#local orderedDocs = orderedDocs + [orderedDoc.docMap] /> 713 </#list> 714 <#return orderedDocs> 715</#function> 716 717 718<#function isInternalLink link> 719 <#local internal = link?contains("www.agglo-larochelle.fr") || link?contains("www2.agglo-larochelle.fr") || link?contains("www-new.agglo-larochelle.fr") || !link?contains("//")> 720 <#return internal> 721</#function> 722 723 724<#function getField journalArticle fieldName> 725 <#local fieldValue = ''/> 726 <#local document = saxReaderUtil.read(journalArticle.getContent()) /> 727 <#local rootElement = document.getRootElement() /> 728 <#if (rootElement?? && rootElement?has_content)> 729 <#local xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='"+fieldName+"']/dynamic-content") /> 730 <#if (validator.isNotNull(xPathSelector))> 731 <#local nbNodes = xPathSelector.selectNodes(rootElement)?size /> 732 <#if (nbNodes > 0)> 733 <#local fieldValue = xPathSelector.selectSingleNode(rootElement).getStringValue() /> 734 </#if> 735 </#if> 736 <#return fieldValue /> 737 </#if> 738 </#function>