S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing: ==> detallAgenda.elementsDetallAgenda.getSiblings()[0].titleDetallAgenda [in template "20155#20195#1501272" at line 308, column 85] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #if detallAgenda?? && 0 < detallAgend... [in template "20155#20195#1501272" at line 308, column 1] ----
1<#assign imagesFolder = themeDisplay.getPathThemeImages()>
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
3<#assign currentURL = request.getRequestURL() />
4<#assign isFundacio = false>
5<#if currentURL?contains("fundacio")>
6 <#assign isFundacio = true>
7</#if>
8
9<#function miliSeconds dateString firstDate>
10 <#assign params = dateString?split(":")>
11
12 <#if params?size == 2>
13 <#assign param1 = params[0]>
14 <#assign param2 = params[1]>
15 <#assign param1 = getterUtil.getLong(param1)*3600000>
16 <#assign param2 = getterUtil.getLong(param2)*60000>
17 <#assign finalMilSec = param1 + param2>
18 <#assign finalMilSecLong = getterUtil.getLong(finalMilSec)>
19 <#assign resultLong = firstDate + finalMilSecLong>
20
21 <#return resultLong>
22 </#if>
23</#function>
24
25<#-- header-image -->
26
27<#if upperImage?? && upperImage.getData()?has_content>
28 <div class="header-image">
29 <img src="${upperImage.getData()}" <#if upperImageAlt?? && upperImageAlt.getData()?has_content>alt="${upperImageAlt.getData()}"</#if>>
30 </div>
31</#if>
32
33
34<#-- breadcrumbs -->
35
36<div class="full-body__container breadcrumbs" style="float: unset; margin-right: auto; padding-bottom: 22px; padding-top: 22px;">
37 <p class="breadcrumbs__title"><@liferay.language key='header.breadcrumbs.text' />:</p>
38 <#if liferay_portlet?has_content><@liferay.breadcrumbs /></#if>
39</div>
40
41
42<#-- TITOL I SUBTITOL -->
43
44<#if titleGlobal?? && titleGlobal.getData()?has_content || subtitleGlobal?? && subtitleGlobal.getData()?has_content>
45 <div class="full-body__container basicav2-titol-subtitol">
46 <#if titleGlobal?? && titleGlobal.getData()?has_content><h1>${titleGlobal.getData()}</h1></#if>
47 <#if subtitleGlobal?? && subtitleGlobal.getData()?has_content><p>${subtitleGlobal.getData()}</p></#if>
48 </div>
49</#if>
50
51
52<#-- bloc-info-agenda -->
53
54<#if blocInfoAgenda?? && ((blocInfoAgenda.whenBlocInfoAgenda.initDateBlocInfoAgenda?? && blocInfoAgenda.whenBlocInfoAgenda.initDateBlocInfoAgenda.getData()?has_content) || (blocInfoAgenda.whereBlocInfoAgenda.textWhereBlocInfoAgenda?? && blocInfoAgenda.whereBlocInfoAgenda.textWhereBlocInfoAgenda.getData()?has_content) || (blocInfoAgenda.accesBlocInfoAgenda.textAccesBlocInfoAgenda?? && blocInfoAgenda.accesBlocInfoAgenda.textAccesBlocInfoAgenda.getData()?has_content)) && (!blocInfoAgenda.hideBlocInfoAgenda?? || !getterUtil.getBoolean(blocInfoAgenda.hideBlocInfoAgenda.getData()))>
55 <div class="full-body__container bloc-info-agenda">
56 <div class="bloc-info-agenda-elements">
57 <#if blocInfoAgenda.whenBlocInfoAgenda.initDateBlocInfoAgenda?? && blocInfoAgenda.whenBlocInfoAgenda.initDateBlocInfoAgenda.getData()?has_content>
58 <div class="bloc-info-agenda-element">
59 <#if blocInfoAgenda.whenBlocInfoAgenda.imageWhenBlocInfoAgenda?? && blocInfoAgenda.whenBlocInfoAgenda.imageWhenBlocInfoAgenda.getData()?has_content>
60 <img class="bloc-info-agenda-img" src="${blocInfoAgenda.whenBlocInfoAgenda.imageWhenBlocInfoAgenda.getData()}">
61 <#else>
62 <img class="bloc-info-agenda-img" src="${imagesFolder}/basic/24px/svg/calendar.svg">
63 </#if>
64 <#if blocInfoAgenda.whenBlocInfoAgenda.fromInitDateBlocInfoAgenda?? && blocInfoAgenda.whenBlocInfoAgenda.fromInitDateBlocInfoAgenda.getData()?has_content && getterUtil.getBoolean(blocInfoAgenda.whenBlocInfoAgenda.fromInitDateBlocInfoAgenda.getData())>
65 <div class="bloc-info-agenda-text"><p><@liferay.language key="label.bloc.novetatagenda.when"/> <b><@liferay.language key='label.bloc.novetatagenda.from' /> ${blocInfoAgenda.whenBlocInfoAgenda.initDateBlocInfoAgenda.getData()?date["yyyy-MM-dd"]?string("dd.MM.yyyy")}</b></p></div>
66 <#else>
67 <div class="bloc-info-agenda-text"><p><@liferay.language key="label.bloc.novetatagenda.when"/> <b>${blocInfoAgenda.whenBlocInfoAgenda.initDateBlocInfoAgenda.getData()?date["yyyy-MM-dd"]?string("dd.MM.yyyy")}<#if blocInfoAgenda.whenBlocInfoAgenda.endDateBlocInfoAgenda?? && blocInfoAgenda.whenBlocInfoAgenda.endDateBlocInfoAgenda.getData()?has_content> <@liferay.language key="label.bloc.novetatagenda.to"/> ${blocInfoAgenda.whenBlocInfoAgenda.endDateBlocInfoAgenda.getData()?date["yyyy-MM-dd"]?string("dd.MM.yyyy")}</#if></b></p></div>
68 </#if>
69 </div>
70 <hr>
71 </#if>
72 <#if blocInfoAgenda.whereBlocInfoAgenda.textWhereBlocInfoAgenda?? && blocInfoAgenda.whereBlocInfoAgenda.textWhereBlocInfoAgenda.getData()?has_content>
73 <div class="bloc-info-agenda-element">
74 <#if blocInfoAgenda.whereBlocInfoAgenda.imageWhereBlocInfoAgenda?? && blocInfoAgenda.whereBlocInfoAgenda.imageWhereBlocInfoAgenda.getData()?has_content>
75 <img class="bloc-info-agenda-img" src="${blocInfoAgenda.whereBlocInfoAgenda.imageWhereBlocInfoAgenda.getData()}">
76 <#else>
77 <img class="bloc-info-agenda-img" src="${imagesFolder}/basic/24px/svg/location_on.svg">
78 </#if>
79 <div class="bloc-info-agenda-text"><p><@liferay.language key="label.bloc.novetatagenda.where"/> <b>${blocInfoAgenda.whereBlocInfoAgenda.textWhereBlocInfoAgenda.getData()}</b></p></div>
80 </div>
81 <hr>
82 </#if>
83 <#if blocInfoAgenda.accesBlocInfoAgenda.textAccesBlocInfoAgenda?? && blocInfoAgenda.accesBlocInfoAgenda.textAccesBlocInfoAgenda.getData()?has_content>
84 <div class="bloc-info-agenda-element">
85 <#if blocInfoAgenda.accesBlocInfoAgenda.imageAccesBlocInfoAgenda?? && blocInfoAgenda.accesBlocInfoAgenda.imageAccesBlocInfoAgenda.getData()?has_content>
86 <img class="bloc-info-agenda-img" src="${blocInfoAgenda.accesBlocInfoAgenda.imageAccesBlocInfoAgenda.getData()}">
87 <#else>
88 <img class="bloc-info-agenda-img" src="${imagesFolder}/basic/24px/svg/ticket.svg">
89 </#if>
90 <div class="bloc-info-agenda-text"><p><@liferay.language key="label.bloc.novetatagenda.acces"/> <b>${blocInfoAgenda.accesBlocInfoAgenda.textAccesBlocInfoAgenda.getData()}</b></p></div>
91 </div>
92 </#if>
93 </div>
94 <#if blocInfoAgenda.textBottomBlocInfoAgenda?? && blocInfoAgenda.textBottomBlocInfoAgenda.getData()?has_content>
95 <div class="bloc-info-agenda-bottom">
96 <span>${blocInfoAgenda.textBottomBlocInfoAgenda.getData()}</span>
97 </div>
98 </#if>
99 </div>
100</#if>
101
102<#-- text-center -->
103
104<#if textCenter?? && textCenter.getData()?has_content>
105 <div class="full-body__container text-center-basic">
106 ${textCenter.getData()}
107 </div>
108</#if>
109
110
111<#-- image-center -->
112
113<#if imageCenter?? && imageCenter.getData()?has_content>
114 <div class="full-body__container image-center-basic">
115 <img src="${imageCenter.getData()}">
116 </div>
117</#if>
118
119
120<#-- TEXT-CARRUSEL-IMATGES -->
121
122<#if textCarruselImatges1?? && 0 < textCarruselImatges1.elementsFieldSet.getSiblings()?size && textCarruselImatges1.elementsFieldSet.getSiblings()[0].elementsFieldSetFieldSet.image?? && textCarruselImatges1.elementsFieldSet.getSiblings()[0].elementsFieldSetFieldSet.image.getData()?has_content && (!textCarruselImatges1.hideTextCarruselImatges?? || !getterUtil.getBoolean(textCarruselImatges1.hideTextCarruselImatges.getData()))>
123 <#assign entriesMapList = []>
124 <#foreach elem in textCarruselImatges1.elementsFieldSet.getSiblings()>
125 <#if elem.elementsFieldSetFieldSet.order?has_content>
126 <#assign currentOrder = elem.elementsFieldSetFieldSet.order.getData()>
127 </#if>
128 <#if !currentOrder?has_content || currentOrder == "null">
129 <#assign currentOrder = "99">
130 </#if>
131 <#assign currEntryMap = {"entry" : elem.elementsFieldSetFieldSet , "order" : currentOrder?number}>
132 <#assign entriesMapList = entriesMapList + [currEntryMap]>
133 </#foreach>
134
135 <#assign sortedEntriesMapList = entriesMapList?sort_by("order")>
136 <#assign sortedEntriesRootElems = []>
137
138 <#foreach currEntryMap in sortedEntriesMapList>
139 <#assign sortedEntriesRootElems = sortedEntriesRootElems + [currEntryMap.entry]>
140 </#foreach>
141
142 <#assign leftContent = "">
143 <#if textCarruselImatges1.titleHeader?? && textCarruselImatges1.titleHeader.getData()?has_content && textCarruselImatges1.descHeader?? && textCarruselImatges1.descHeader?has_content>
144 <#assign leftContent = "true">
145 </#if>
146
147 <div class="full-body__container hero-carousel-new hero-carousel hero-carousel--super hero-carousel-banner-alt <#if !leftContent?has_content>hero-carousel-banner-solo</#if>">
148 <#if leftContent?has_content>
149 <div class="hero-carousel__container-banner">
150 <h2 class="hero-carousel-banner-alt-title">
151 ${textCarruselImatges1.titleHeader.getData()}
152 </h2>
153 <p class="hero-carousel-banner-alt-desc">
154 ${textCarruselImatges1.descHeader.getData()}
155 </p>
156 </div>
157 </#if>
158 <div aria-live="polite" aria-atomic="false" aria-relevant="all" class="slick-list draggable">
159 <div class="hero-carousel__container js-carousel-banner-al_1 is-playing"
160 data-prev-text='<@liferay.language key="label.carousel.prev"/>'
161 data-next-text='<@liferay.language key="label.carousel.next"/>'
162 data-pagination-text='<@liferay.language key="label.carousel.outstanding"/>'
163 data-stop-text='<@liferay.language key="label.carousel.pause"/>'
164 data-play-text='<@liferay.language key="label.carousel.start"/>'>
165 <#if sortedEntriesRootElems?has_content>
166 <#foreach element in sortedEntriesRootElems>
167 <div class="hero hero--super">
168 <div class="hero__container">
169 <#if element.typeLink.getData() == "video">
170 <a href="#" onclick='showVideoModalBanner(`${element.External_Link.getData()}`);return false;' class="hero__link" <#if element.titleLink?? && element.titleLink.getData()?has_content>title="${element.titleLink.getData()}"</#if>>
171 <#else>
172 <a class="hero__link" <#if element.titleLink?? && element.titleLink.getData()?has_content>title="${element.titleLink.getData()}"</#if> <#if element.typeLink.getData() == "extern"> href="${element.External_Link.getData()}" target="_blank" <#elseif element.typeLink.getData() == "intern" && element.Internal_Link?? && element.Internal_Link.getFriendlyUrl()?has_content> href="${element.Internal_Link.getFriendlyUrl()}" target="_self" <#elseif element.typeLink.getData() == "intern" && element.External_Link?? && element.External_Link.getData()?has_content> href="${element.External_Link.getData()}" target="_self" </#if>>
173 </#if>
174 <div class="hero__media <#if (!element.titleElem?? || !element.titleElem.getData()?has_content) && (!element.descElem?? || !element.descElem.getData()?has_content)>hero__media-no-fade</#if>">
175 <#if element.typeLink.getData() == "video">
176 <div class="hero__media-video__container">
177 <span class="hero__media-video__img">
178 </span>
179 </div>
180 </#if>
181 <img class="hero__image hero__image-new lazyload" data-src="${element.image.getData()}" <#if element.altImage?? && element.altImage.getData()?has_content>alt="${element.altImage.getData()}"</#if>>
182 </div>
183 <div class="hero__content white__banner">
184 <p class="hero__title" >
185 ${element.titleElem.getData()}
186 <#if element.typeLink.getData() == "extern">
187 <span class="window-warning">
188 <img class="window-warning__icon" src="${imagesFolder}/basic/16px/png/icone-obrir-fora-blanc-16x16.png" alt="<@liferay.language key="label.externalLink.alt"/>" title="<@liferay.language key="label.externalLink.title"/>">
189 </span>
190 </#if>
191 </p>
192 <p class="hero__desc-alt" >
193 ${element.descElem.getData()}
194 </p>
195 </div>
196 </a>
197 </div>
198 </div>
199 </#foreach>
200 </#if>
201 </div>
202 </div>
203 </div>
204
205 <div class="dialog">
206 <div id="carrusel-banner-video" class="u-hidden">
207 <div class="dialog__body dialog__body--jotmbe" id="carrusel-banner-video-content">
208 </div>
209 </div>
210 </div>
211 <script type="text/javascript">
212 initSliderCarruselBanner1();
213
214 function initSliderCarruselBanner1() {
215 if($(".js-carousel-banner-al_1").hasClass('slick-initialized')) {
216 $(".js-carousel-banner-al_1").slick("unslick");
217 }
218 $('.js-carousel-banner-al_1 .slick-toggle-play').remove();
219 $('.js-carousel-banner-al_1').slick({
220 slidesToShow: 1,
221 arrows: true,
222 draggable: true,
223 infinite: false,
224 variableWidth: false,
225 autoplaySpeed: 4000,
226 dots: true,
227 nextArrow: '<button type="button" class="slick-next"><img class="slick-next__icon slick-next__icon-normal" src="${imagesFolder}/basic/18px/svg/arrow-next-black.svg" alt=\'<@liferay.language key="label.next"/>\'/><img class="slick-next__icon slick-next__icon-disabled" src="${imagesFolder}/basic/18px/svg/arrow-next-gray.svg" alt=\'<@liferay.language key="label.next"/>\'/></button>',
228 prevArrow: '<button type="button" class="slick-prev"><img class="slick-prev__icon slick-prev__icon-normal" src="${imagesFolder}/basic/18px/svg/arrow-prev-black.svg" alt=\'<@liferay.language key="label.prev"/>\'/><img class="slick-prev__icon slick-prev__icon-disabled" src="${imagesFolder}/basic/18px/svg/arrow-prev-gray.svg" alt=\'<@liferay.language key="label.prev"/>\'/></button>',
229 responsive: [
230 {
231 breakpoint: 767,
232 settings: {
233 slidesToShow: 1,
234 arrows: false,
235 variableWidth: true,
236 dots: true
237 }
238 }
239 ]
240 }).each(function () {
241 var carousel = $(this),
242 toggleButton,
243 toggleIcon;
244
245 carousel.find('.slick-next__icon').attr({
246 'alt': carousel.data('next-text')
247 });
248
249 carousel.find('.slick-prev__icon').attr({
250 'alt': carousel.data('prev-text')
251 });
252 });
253
254 if ($('.hero-carousel__container .hero').length == 1) {
255 $('.hero-carousel__container .slick-toggle-play').hide();
256 }
257
258 $('.slick-cloned[aria-describedby]').removeAttr('aria-describedby');
259 if($(".js-carousel-banner-al_1 .slick-dots").length > 0) {
260 setDotsPositionBanner1();
261 }
262 }
263
264 function showVideoModalBanner(link) {
265 const start = link.indexOf("v=") + 2;
266 const end = start + 2 + 11;
267
268 TMB.dialog.newModal(langJotmbeClose, "dialog--jotmbe__no-footer dialog--jotmbe__no-icon dialog--jotmbe__with-actions dialog-video-iframe", "carrusel-banner-video", "");
269 $('#carrusel-banner-video-content').html('<iframe class="home-carrusel-video-iframe" src="https://www.youtube.com/embed/'+link.substring(start, end)+'" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>');
270 }
271 function setDotsPositionBanner1() {
272 $(".js-carousel-banner-al_1 .slick-dots").appendTo($(".js-carousel-banner-al_1").parent());
273 }
274
275 window.addEventListener('resize', function(event){
276 const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
277 if($(".js-carousel-banner-al_1 .slick-dots").length > 0 && width > 768) {
278 setDotsPositionBanner1();
279 }
280 });
281
282 </script>
283</#if>
284
285
286<#-- BASICA-TITOL-TEXT -->
287
288<#if basicaTitolText?? && 0 < basicaTitolText.elementsBasica.getSiblings()?size && (basicaTitolText.elementsBasica.getSiblings()[0].titleBasica.getData()?has_content || basicaTitolText.elementsBasica.getSiblings()[0].contentBasica.getData()?has_content) && (!basicaTitolText.hideBasicaTitolText?? || !getterUtil.getBoolean(basicaTitolText.hideBasicaTitolText.getData()))>
289 <div class="full-body__container basica-titol-text">
290 <#foreach elem in basicaTitolText.elementsBasica.getSiblings()>
291 <div class="basica-titol-text-wrapper">
292 <#if elem.titleBasica?? && elem.titleBasica.getData()?has_content><h2 class="">${elem.titleBasica.getData()}</h2></#if>
293 <#if elem.contentBasica?? && elem.contentBasica.getData()?has_content><div class="basica-titol-text-content">${elem.contentBasica.getData()}</div></#if>
294 </div>
295 <#foreach subelem in elem.subelementsBasica.getSiblings()>
296 <div class="basica-titol-text-wrapper">
297 <#if subelem.subelementTitleBasica?? && subelem.subelementTitleBasica.getData()?has_content><h3>${subelem.subelementTitleBasica.getData()}</h3></#if>
298 <#if subelem.subelementContentBasica?? && subelem.subelementContentBasica.getData()?has_content><div class="basica-titol-text-content">${subelem.subelementContentBasica.getData()}</div></#if>
299 </div>
300 </#foreach>
301 </#foreach>
302 </div>
303</#if>
304
305
306<#-- bloc-detall-agenda -->
307
308<#if detallAgenda?? && 0 < detallAgenda.elementsDetallAgenda.getSiblings()?size && (detallAgenda.elementsDetallAgenda.getSiblings()[0].titleDetallAgenda.getData()?has_content || detallAgenda.elementsDetallAgenda.getSiblings()[0].contentDetallAgenda.getData()?has_content) && (!detallAgenda.hideDetallAgenda?? || !getterUtil.getBoolean(detallAgenda.hideDetallAgenda.getData()))>
309 <div class="full-body__container detall-agenda">
310 <#foreach elem in detallAgenda.elementsDetallAgenda.getSiblings()>
311 <div class="detall-agenda-wrapper">
312 <#if elem.titleDetallAgenda?? && elem.titleDetallAgenda.getData()?has_content><h2 class="">${elem.titleDetallAgenda.getData()}</h2></#if>
313 <#if elem.contentDetallAgenda?? && elem.contentDetallAgenda.getData()?has_content><div class="detall-agenda-content">${elem.contentDetallAgenda.getData()}</div></#if>
314 </div>
315 </#foreach>
316 <div class="detall-agenda-buttons-wrapper">
317 <#foreach subelem in detallAgenda.buttonsDetallAgenda.getSiblings()>
318 <a title="<#if subelem.accessibleTitleButtons?? && subelem.accessibleTitleButtons.getData()?has_content>${subelem.accessibleTitleButtons.getData()}</#if>" type="button" class="button button--a" <#if subelem.linkTypeDetallAgenda.getData() == "extern" && subelem.External_LinkDetallAgenda?? && subelem.External_LinkDetallAgenda.getData()?has_content> href="${subelem.External_LinkDetallAgenda.getData()}" rel="external" target="_blank" <#elseif subelem.linkTypeDetallAgenda.getData() == "intern" && subelem.Internal_LinkDetallAgenda?? && subelem.Internal_LinkDetallAgenda.getFriendlyUrl()?has_content> href="${subelem.Internal_LinkDetallAgenda.getFriendlyUrl()}" target="_self" <#elseif subelem.linkTypeDetallAgenda.getData() == "intern" && subelem.External_LinkDetallAgenda?? && subelem.External_LinkDetallAgenda.getData()?has_content> href="${subelem.External_LinkDetallAgenda.getData()}" target="_self" </#if>>
319 <span class="button__label">${subelem.linkTextDetallAgenda.getData()}</span>
320 </a>
321 </#foreach>
322 </div>
323 </div>
324</#if>
325
326
327<#-- DT_PP_TITULO_VIDEO -->
328
329<#if stPpVideo?? && stPpVideo.linkFieldSet.link.getData()?has_content && (!stPpVideo.hideStPpVideo?? || !getterUtil.getBoolean(stPpVideo.hideStPpVideo.getData()))>
330 <style>
331 .points-video__video-cover.no_video::after{
332 background: none;
333 }
334 </style>
335 <#assign hasLink = false>
336 <#if stPpVideo.linkHeader?? && stPpVideo.linkHeader.getData()?has_content && stPpVideo.linkHeaderText?? && stPpVideo.linkHeaderText.getData()?has_content>
337 <#assign hasLink = true>
338 </#if>
339 <section class="points-video bg-gray pt-56">
340 <div class="main__container">
341 <div class="full-body">
342 <div class="full-body__container points-video__header-extra-container">
343 <#if stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()?has_content && stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()?trim?has_content>
344 <a name="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()}" id="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()}">
345 </a>
346 </#if>
347 <#if stPpVideo.titol?? && stPpVideo.titol.getData()?has_content>
348 <div class="points-video__header">
349 <div class="points-video__header-extra" <#if !hasLink>style="justify-content: center; margin-right: 0;"</#if>>
350 <h2 class="points-video__title">
351 ${stPpVideo.titol.getData()}</h2>
352 <#if hasLink>
353 <a class="points-video__subtitle-link" href="${stPpVideo.linkHeader.getData()}">${stPpVideo.linkHeaderText.getData()}</a>
354 </#if>
355 </div>
356 <p class="points-video__description" <#if !hasLink>style="text-align: center; max-width: 100%;"</#if>>
357 ${stPpVideo.descriptiu.getData()}</p>
358 </div>
359 </#if>
360
361 <div class="points-video__video-item cookieconsent-optin-marketing media-unit__content" id="marketingCookies">
362 <#if stPpVideo.linkFieldSet.link.getData()?has_content>
363 <#assign start = stPpVideo.linkFieldSet.link.getData()?index_of("v=") + 2>
364 <#--13 because v= + 11 char for youtube ids
365 -->
366 <#assign end = start + 11>
367 <a href="${stPpVideo.linkFieldSet.link.getData()}" class="points-video__video-stPpVideo.linkFieldSet.link" title="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}"
368 rel="dialog-video" data-video="${stPpVideo.linkFieldSet.link.getData()?substring(start, end)}">
369 <div class="points-video__video-cover" style="background-image: url(${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()});">
370 <img src="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()}" alt="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideoFieldSetFieldSet.alt.getData()}" class="points-video__video-image">
371 </div>
372 <#if stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()?has_content>
373 <p class="points-video__caption">
374 ${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}</p>
375 </#if>
376 </a>
377 <#else>
378 <a class="points-video__video-link" title="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}">
379 <div class="points-video__video-cover no_video" style="background-image: url(${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()});">
380 <img src="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()}" alt="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideoFieldSetFieldSet.alt.getData()}" class="points-video__video-image">
381 </div>
382 <#if stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()?has_content>
383 <p class="points-video__caption">
384 ${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}</p>
385 </#if>
386 </a>
387
388 </#if>
389 </div>
390 <div class='cookieconsent-optout-marketing media-unit__content'>
391 <@liferay.language key="cookiebot.youtube.no-marketing"/>
392 </div>
393 <#if hasLink>
394 <a class="points-video__subtitle-link-mobile" href="${stPpVideo.linkHeader.getData()}">${stPpVideo.linkHeaderText.getData()}</a>
395 </#if>
396 </div>
397 </div>
398 </div>
399 </section>
400 <section class="video-dialog js__video-dialog u-hidden">
401 <div class="u-hidden" id="fragment-show-video">
402 <div class="video-dialog__panel">
403 <header class="video-dialog__header">
404 <button class="video-dialog__close js__video-dialog-close">
405 Cerrar</button>
406 </header>
407 <div class="video-dialog__content">
408 <div class="video-dialog__inner js__video-dialog-container">
409 <iframe data-cookieconsent="marketing" data-cookieblock-src="https://www.youtube.com/embed/${stPpVideo.linkFieldSet.link.getData()?substring(start, end)}" frameborder="0" class="video-dialog__media" allow="encrypted-media" allowfullscreen="">
410 </iframe>
411 </div>
412 </div>
413 </div>
414 </div>
415 <div class="video-dialog__overlay js__video-dialog-close">
416 </div>
417 </section>
418</#if>
419
420
421<#-- TEXT-CARRUSEL-IMATGES-ALT -->
422
423<#if textCarruselImatges2?? && 0 < textCarruselImatges2.elementsFieldSetAlt.getSiblings()?size && textCarruselImatges2.elementsFieldSetAlt.getSiblings()[0].elementsFieldSetFieldSetAlt.imageAlt?? && textCarruselImatges2.elementsFieldSetAlt.getSiblings()[0].elementsFieldSetFieldSetAlt.imageAlt.getData()?has_content && (!textCarruselImatges2.hideTextCarruselImatgesAlt?? || !getterUtil.getBoolean(textCarruselImatges2.hideTextCarruselImatgesAlt.getData()))>
424 <#assign imagesFolder = themeDisplay.getPathThemeImages()>
425
426 <#assign entriesMapList = []>
427 <#foreach elem in textCarruselImatges2.elementsFieldSetAlt.getSiblings()>
428 <#if elem.elementsFieldSetFieldSetAlt.order?has_content>
429 <#assign currentOrder = elem.elementsFieldSetFieldSetAlt.order.getData()>
430 </#if>
431 <#if !currentOrder?has_content || currentOrder == "null">
432 <#assign currentOrder = "99">
433 </#if>
434 <#assign currEntryMap = {"entry" : elem.elementsFieldSetFieldSetAlt , "order" : currentOrder?number}>
435 <#assign entriesMapList = entriesMapList + [currEntryMap]>
436 </#foreach>
437
438 <#assign sortedEntriesMapList = entriesMapList?sort_by("order")>
439 <#assign sortedEntriesRootElems = []>
440
441 <#foreach currEntryMap in sortedEntriesMapList>
442 <#assign sortedEntriesRootElems = sortedEntriesRootElems + [currEntryMap.entry]>
443 </#foreach>
444
445 <#assign leftContent = "">
446 <#if textCarruselImatges2.titleHeaderAlt?? && textCarruselImatges2.titleHeaderAlt.getData()?has_content && textCarruselImatges2.descHeaderAlt?? && textCarruselImatges2.descHeaderAlt?has_content>
447 <#assign leftContent = "true">
448 </#if>
449
450 <div class="full-body__container hero-carousel-new hero-carousel hero-carousel--super hero-carousel-banner-alt <#if !leftContent?has_content>hero-carousel-banner-solo</#if>">
451 <#if leftContent?has_content>
452 <div class="hero-carousel__container-banner">
453 <h2 class="hero-carousel-banner-alt-title">
454 ${textCarruselImatges2.titleHeaderAlt.getData()}
455 </h2>
456 <p class="hero-carousel-banner-alt-desc">
457 ${textCarruselImatges2.descHeaderAlt.getData()}
458 </p>
459 </div>
460 </#if>
461 <div aria-live="polite" aria-atomic="false" aria-relevant="all" class="slick-list draggable">
462 <div class="hero-carousel__container js-carousel-banner-al_alt is-playing"
463 data-prev-text='<@liferay.language key="label.carousel.prev"/>'
464 data-next-text='<@liferay.language key="label.carousel.next"/>'
465 data-pagination-text='<@liferay.language key="label.carousel.outstanding"/>'
466 data-stop-text='<@liferay.language key="label.carousel.pause"/>'
467 data-play-text='<@liferay.language key="label.carousel.start"/>'>
468 <#if sortedEntriesRootElems?has_content>
469 <#foreach element in sortedEntriesRootElems>
470 <div class="hero hero--super">
471 <div class="hero__container">
472 <#if element.typeLinkAlt.getData() == "video">
473 <a href="#" onclick='showVideoModalBanner(`${element.External_LinkAlt.getData()}`);return false;' class="hero__link" <#if element.titleLinkAlt?? && element.titleLinkAlt.getData()?has_content>title="${element.titleLinkAlt.getData()}"</#if>>
474 <#else>
475 <a class="hero__link" <#if element.titleLinkAlt?? && element.titleLinkAlt.getData()?has_content>title="${element.titleLinkAlt.getData()}"</#if> <#if element.typeLinkAlt.getData() == "extern"> href="${element.External_LinkAlt.getData()}" target="_blank" <#elseif element.typeLinkAlt.getData() == "intern" && element.Internal_Link?? && element.Internal_Link.getFriendlyUrl()?has_content> href="${element.Internal_Link.getFriendlyUrl()}" target="_self" <#elseif element.typeLinkAlt.getData() == "intern" && element.External_LinkAlt?? && element.External_LinkAlt.getData()?has_content> href="${element.External_LinkAlt.getData()}" target="_self" </#if>>
476 </#if>
477 <div class="hero__media <#if (!element.titleElemAlt?? || !element.titleElemAlt.getData()?has_content) && (!element.descElemAlt?? || !element.descElemAlt.getData()?has_content)>hero__media-no-fade</#if>">
478 <#if element.typeLinkAlt.getData() == "video">
479 <div class="hero__media-video__container">
480 <span class="hero__media-video__img">
481 </span>
482 </div>
483 </#if>
484 <img class="hero__image hero__image-new lazyload" data-src="${element.imageAlt.getData()}" <#if element.altImage?? && element.altImage.getData()?has_content>alt="${element.altImage.getData()}"</#if>>
485 </div>
486 <div class="hero__content white__banner">
487 <p class="hero__title" >
488 ${element.titleElemAlt.getData()}
489 <#if element.typeLinkAlt.getData() == "extern">
490 <span class="window-warning">
491 <img class="window-warning__icon" src="${imagesFolder}/basic/16px/png/icone-obrir-fora-blanc-16x16.png" alt="<@liferay.language key="label.externalLink.alt"/>" title="<@liferay.language key="label.externalLink.title"/>">
492 </span>
493 </#if>
494 </p>
495 <p class="hero__desc-alt" >
496 ${element.descElemAlt.getData()}
497 </p>
498 </div>
499 </a>
500 </div>
501 </div>
502 </#foreach>
503 </#if>
504 </div>
505 </div>
506 </div>
507
508 <div class="dialog">
509 <div id="carrusel-banner-video" class="u-hidden">
510 <div class="dialog__body dialog__body--jotmbe" id="carrusel-banner-video-content">
511 </div>
512 </div>
513 </div>
514 <script type="text/javascript">
515 initSliderCarruselBanner2();
516
517 function initSliderCarruselBanner2() {
518 if($(".js-carousel-banner-al_alt").hasClass('slick-initialized')) {
519 $(".js-carousel-banner-al_alt").slick("unslick");
520 }
521 $('.js-carousel-banner-al_alt .slick-toggle-play').remove();
522 $('.js-carousel-banner-al_alt').slick({
523 slidesToShow: 1,
524 arrows: true,
525 draggable: true,
526 infinite: false,
527 variableWidth: false,
528 autoplaySpeed: 4000,
529 dots: true,
530 nextArrow: '<button type="button" class="slick-next"><img class="slick-next__icon slick-next__icon-normal" src="${imagesFolder}/basic/18px/svg/arrow-next-black.svg" alt=\'<@liferay.language key="label.next"/>\'/><img class="slick-next__icon slick-next__icon-disabled" src="${imagesFolder}/basic/18px/svg/arrow-next-gray.svg" alt=\'<@liferay.language key="label.next"/>\'/></button>',
531 prevArrow: '<button type="button" class="slick-prev"><img class="slick-prev__icon slick-prev__icon-normal" src="${imagesFolder}/basic/18px/svg/arrow-prev-black.svg" alt=\'<@liferay.language key="label.prev"/>\'/><img class="slick-prev__icon slick-prev__icon-disabled" src="${imagesFolder}/basic/18px/svg/arrow-prev-gray.svg" alt=\'<@liferay.language key="label.prev"/>\'/></button>',
532 responsive: [
533 {
534 breakpoint: 767,
535 settings: {
536 slidesToShow: 1,
537 arrows: false,
538 variableWidth: true,
539 dots: true
540 }
541 }
542 ]
543 }).each(function () {
544 var carousel = $(this),
545 toggleButton,
546 toggleIcon;
547
548 carousel.find('.slick-next__icon').attr({
549 'alt': carousel.data('next-text')
550 });
551
552 carousel.find('.slick-prev__icon').attr({
553 'alt': carousel.data('prev-text')
554 });
555 });
556
557 if ($('.hero-carousel__container .hero').length == 1) {
558 $('.hero-carousel__container .slick-toggle-play').hide();
559 }
560
561 $('.slick-cloned[aria-describedby]').removeAttr('aria-describedby');
562 if($(".js-carousel-banner-al_alt .slick-dots").length > 0) {
563 setDotsPositionBanner2();
564 }
565 }
566
567 function showVideoModalBanner2(link) {
568 const start = link.indexOf("v=") + 2;
569 const end = start + 2 + 11;
570
571 TMB.dialog.newModal(langJotmbeClose, "dialog--jotmbe__no-footer dialog--jotmbe__no-icon dialog--jotmbe__with-actions dialog-video-iframe", "carrusel-banner-video", "");
572 $('#carrusel-banner-video-content').html('<iframe class="home-carrusel-video-iframe" src="https://www.youtube.com/embed/'+link.substring(start, end)+'" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>');
573 }
574 function setDotsPositionBanner2() {
575 $(".js-carousel-banner-al_alt .slick-dots").appendTo($(".js-carousel-banner-al_alt").parent());
576 }
577
578 window.addEventListener('resize', function(event){
579 const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
580 if($(".js-carousel-banner-al_alt .slick-dots").length > 0 && width > 768) {
581 setDotsPositionBanner2();
582 }
583 });
584
585 </script>
586</#if>
587
588
589<#-- CARRUSEL-TRES-CARD -->
590
591<#if referencesFieldSet?? && 0 < referencesFieldSet.getSiblings()?size && referencesFieldSet.getSiblings()[0].referenceId.getData()?has_content && (!hideTresCards?? || !getterUtil.getBoolean(hideTresCards.getData()))>
592 <#assign colorClass = "" />
593 <#assign fullBody = "" />
594 <#if fondoColorCarruselCards?? && fondoColorCarruselCards.getData()??>
595 <#if fondoColorCarruselCards.getData()=="blanc">
596 <#assign colorClass = "hola-bcn-carrusel-standard--white" />
597 <#assign fullBody = "full-body__container" />
598 <#else>
599 <#assign colorClass = "hola-bcn-carrusel-standard--gray" />
600 <#assign fullBody = "full-body__container" />
601 </#if>
602 </#if>
603
604 <section class="hola-bcn-carrusel-standard ${colorClass}">
605 <div class="hola-bcn-carrusel-standard-cont-ext hola-bcn-carrusel-standard-cont-ext-extra hola-bcn-carrusel-standard-cont-ext-flex ${fullBody}">
606 <div class="hola-bcn-carrusel-standard--container">
607 <div class="hola-bcn-carrusel-standard--outer">
608 <div class="hola-bcn-carrusel-standard_new-header">
609 <h2 class="title title--1 hola-bcn-carrusel-standard__title hola-bcn-carrusel-standard__title_new">${titleCarruselCards.getData()}</h2>
610 <p class="hola-bcn-carrusel-standard__intro-text">${subtitleCarruselCards.getData()}</p>
611 </div>
612 <ul id="result-list" class="hola-bcn-carrusel-standard__items js__hola-bcn-standard-slider">
613 <#assign tmbGroupId = 20182>
614 <#assign fundacioGroupId = 79790>
615 <#list referencesFieldSet.getSiblings() as element>
616 <#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
617 <#assign articleId = element.referenceId.getData()>
618 <#assign groupId = getterUtil.getLong(groupId)>
619 <#attempt>
620 <#assign journalArticle = JournalArticleLocalService.getArticle(groupId, articleId) />
621 <#recover>
622 <#if groupId == tmbGroupId>
623 <#assign groupId = fundacioGroupId>
624 <#else>
625 <#assign groupId = tmbGroupId>
626 </#if>
627 <#attempt>
628 <#assign journalArticle = JournalArticleLocalService.getArticle(groupId, articleId)!>
629 <#recover>
630 <#assign journalArticle = "">
631 </#attempt>
632 </#attempt>
633 <#if journalArticle?has_content && journalArticle != "">
634 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
635 <#assign rootElement = document.getRootElement()>
636
637 <#assign resourceprimKey = journalArticle.getResourcePrimKey()>
638 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourceprimKey)>
639 <#assign assetRenderer = assetEntry.getAssetRenderer()>
640 <#assign articleURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, "")>
641 <#assign articleFriendlyURL = assetRenderer.getUrlTitle()>
642 <#assign newwindow = "">
643 <#if !articleURL?has_content>
644 <#assign newwindow = "target='_blank'">
645 <#if !isFundacio>
646 <#if currentURL?contains("pre3")>
647 <#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
648 <#else>
649 <#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
650 </#if>
651 <#else>
652 <#if currentURL?contains("pre3")>
653 <#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
654 <#else>
655 <#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
656 </#if>
657 </#if>
658 </#if>
659
660 <#assign title = "">
661 <#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='titleGlobal']/dynamic-content[@language-id='" + locale + "']")>
662 <#if titleSel.selectSingleNode(rootElement)?has_content>
663 <#assign title = titleSel.selectSingleNode(rootElement).getStringValue()>
664 </#if>
665
666 <#assign subtitle = "">
667 <#assign subtitleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='subtitleGlobal']/dynamic-content[@language-id='" + locale + "']")>
668 <#if subtitleSel.selectSingleNode(rootElement)?has_content>
669 <#assign subtitle = subtitleSel.selectSingleNode(rootElement).getStringValue()>
670 </#if>
671
672 <#assign initDateNovetatAgenda = "">
673 <#assign fromInitDateNovetatAgenda = "">
674 <#assign endDateNovetatAgenda = "">
675 <#assign whereNovetatAgenda = "">
676 <#assign novetatAgendaSel = rootElement.selectSingleNode("dynamic-element[@field-reference='blocInfoAgenda']")!"">
677 <#if novetatAgendaSel?has_content>
678 <#assign dateNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whenBlocInfoAgenda']")!"">
679
680 <#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
681 <#assign initDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
682 </#if>
683
684 <#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
685 <#assign fromInitDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
686 </#if>
687
688 <#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
689 <#assign endDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
690 </#if>
691
692 <#assign whereNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whereBlocInfoAgenda']")!"">
693 <#if whereNovetatAgendaSelSel?has_content && whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
694 <#assign whereNovetatAgenda = whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
695 </#if>
696 </#if>
697
698 <#assign typeNovetatAgenda = "">
699 <#assign typeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='typeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
700 <#if typeNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
701 <#assign typeNovetatAgenda = typeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
702 </#if>
703
704 <#assign filterNovetatAgenda = "">
705 <#assign filterNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='filterNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
706 <#if filterNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
707 <#assign filterNovetatAgenda = filterNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
708 </#if>
709
710 <#assign imageNovetatAgenda = "">
711 <#assign imageNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='imageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
712 <#if imageNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
713 <#assign image = imageNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
714 <#assign imageUuid = jsonFactoryUtil.createJSONObject(image).uuid!"">
715 <#assign imageNovetatAgenda = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + groupId + "/" + imageUuid>
716 </#if>
717
718 <#assign imageAltNovetatAgenda = "">
719 <#assign imageAltNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='altImageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
720 <#if imageAltNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
721 <#assign imageAltNovetatAgenda = imageAltNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
722 </#if>
723
724 <#assign pubDateNovetatAgenda = "">
725 <#assign pubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
726 <#if pubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
727 <#assign pubDateNovetatAgenda = pubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
728 </#if>
729
730 <#assign pubTimeNovetatAgenda = "">
731 <#assign pubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
732 <#if pubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
733 <#assign pubTimeNovetatAgenda = pubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
734 </#if>
735
736 <#assign despubDateNovetatAgenda = "">
737 <#assign despubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
738 <#if despubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
739 <#assign despubDateNovetatAgenda = despubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
740 </#if>
741
742 <#assign despubTimeNovetatAgenda = "">
743 <#assign despubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
744 <#if despubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
745 <#assign despubTimeNovetatAgenda = despubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
746 </#if>
747
748 <#assign isExpiredNovetatAgenda = "">
749 <#assign isExpiredNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='isExpiredNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
750 <#if isExpiredNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
751 <#assign isExpiredNovetatAgenda = isExpiredNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
752 </#if>
753
754 <#assign isPublishedNA = false>
755 <#if (pubDateNovetatAgenda?has_content)>
756 <#if pubTimeNovetatAgenda?has_content>
757 <#assign timeActDate = pubTimeNovetatAgenda?date["HH:mm"]>
758 <#assign timeActFormat = timeActDate?string["HH:mm"]>
759 <#else>
760 <#assign timeActDate = "">
761 <#assign timeActFormat = "">
762 </#if>
763 <#attempt>
764 <#assign dataAct = pubDateNovetatAgenda?date["yyyy-MM-dd"]>
765
766 <#if timeActFormat?has_content && timeActFormat != "">
767 <#assign dataActMil = miliSeconds(timeActFormat dataAct?long)>
768 <#assign dataAct = dateUtil.newDate(getterUtil.getLong(dataActMil))>
769 </#if>
770 <#assign dataActMil = dataAct?long>
771 <#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)>
772 <#assign isPublishedNA = (dataActMil - now ) < 0 />
773 <#recover>
774 </#attempt>
775 </#if>
776
777 <#assign isDespublishedNA = false>
778 <#if (despubDateNovetatAgenda?has_content)>
779 <#if despubTimeNovetatAgenda?has_content>
780 <#assign timeExpDate = despubTimeNovetatAgenda?date["HH:mm"]>
781 <#assign timeExpFormat = timeExpDate?string["HH:mm"]>
782 <#else>
783 <#assign timeExpDate = "">
784 <#assign timeExpFormat = "">
785 </#if>
786 <#attempt>
787 <#assign dataExp = despubDateNovetatAgenda?date["yyyy-MM-dd"]>
788
789 <#if timeExpFormat?has_content && timeExpFormat != "">
790 <#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)>
791 <#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))>
792 </#if>
793 <#assign dataExpMil = dataExp?long>
794 <#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)>
795 <#assign isDespublishedNA = (dataExpMil - now) < 0 />
796 <#recover>
797 </#attempt>
798 </#if>
799
800 <#assign isExpiredNA = false>
801 <#if journalArticle.expirationDate??>
802 <#assign dataExp = journalArticle.expirationDate?datetime>
803 <#attempt>
804 <#assign dataExpMil = dataExp?long>
805 <#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)>
806 <#assign isExpiredNA = (dataExpMil - now) < 0 />
807 <#recover>
808 </#attempt>
809 </#if>
810
811 <#assign showNovetatAgenda = false>
812 <#if typeNovetatAgenda?has_content && typeNovetatAgenda == "1">
813 <#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && !isDespublishedNA && isExpiredNovetatAgenda != "true">
814 <#else>
815 <#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && isExpiredNovetatAgenda != "true">
816 </#if>
817
818 <#if showNovetatAgenda>
819 <#if title?has_content>
820 <li class="hola-bcn-carrusel-standard_new-li">
821 <a ${newwindow} class="hola-bcn-carrusel-standard_new <#if isDespublishedNA>hola-bcn-carrusel-standard_new-finished</#if>" href="${articleURL}">
822 <div class="hola-bcn-carrusel-standard__card-cover">
823 <div class="hola-bcn-carrusel-standard__card-cover-filter"></div>
824 <img class="hola-bcn-carrusel-standard__image" src="${imageNovetatAgenda}" <#if imageAltNovetatAgenda?has_content>alt="${imageAltNovetatAgenda}"<#else>alt=""</#if>>
825 <div class="hola-bcn-carrusel-standard-finished-text" <#if isDespublishedNA>style="display: block;"</#if>>
826 <span><@liferay.language key='label.bloc.novetatagenda.finished' /></span>
827 </div>
828 <#if filterNovetatAgenda?has_content>
829 <div class="hola-bcn-carrusel-standard-highlight">
830 <span><@liferay.language key='label.bloc.novetatagenda.filter.${filterNovetatAgenda}' /></span>
831 </div>
832 </#if>
833 </div>
834 <div class="hola-bcn-carrusel-standard-container">
835 <div>
836 <h3 class="hola-bcn-carrusel-standard__card-title">
837 ${title}
838 <#if newwindow?? && newwindow?has_content>
839 <span class="icon-external-black" alt="Enllaç extern" title="(Obre una nova finestra)"></span>
840 </#if>
841 </h3>
842 <span class="hola-bcn-carrusel-standard__card-description">
843 ${subtitle}
844 </span>
845 </div>
846 <#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content || (whereNovetatAgenda?has_content)>
847 <div class="hola-bcn-carrusel-standard_bottom-extra">
848 <#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content>
849 <div class="hola-bcn-carrusel-standard-date">
850 <#if fromInitDateNovetatAgenda == "true">
851 <span><b><@liferay.language key='label.bloc.novetatagenda.when' /></b> <@liferay.language key='label.bloc.novetatagenda.from' /> ${initDateNovetatAgenda?date["yyyy-MM-dd"]?string("dd/MM/yyyy")}</span>
852 <#else>
853 <span><b><@liferay.language key='label.bloc.novetatagenda.when' /></b> <@liferay.language key='label.bloc.novetatagenda.from' /> ${initDateNovetatAgenda?date["yyyy-MM-dd"]?string("dd/MM/yyyy")}<#if endDateNovetatAgenda?has_content> <@liferay.language key='label.bloc.novetatagenda.to' /> ${endDateNovetatAgenda?date["yyyy-MM-dd"]?string("dd/MM/yyyy")}</#if></span>
854 </#if>
855 </div>
856 </#if>
857 <#if whereNovetatAgenda?has_content>
858 <div class="hola-bcn-carrusel-standard-where">
859 <span><b><@liferay.language key='label.bloc.novetatagenda.where' /> <span class="hola-bcn-carrusel-standard-where-inner">${whereNovetatAgenda}</span></b></span>
860 </div>
861 </#if>
862 </div>
863 </#if>
864 </div>
865 </a>
866 </li>
867 </#if>
868 </#if>
869 </#if>
870 </#list>
871 </ul>
872 </div>
873 </div>
874 </div>
875 </section>
876
877 <script type="text/javascript">
878
879 $(document).ready(function() {
880 initSliderBcnStandard();
881 });
882
883 function initSliderBcnStandard() {
884 if($(".js__hola-bcn-standard-slider").hasClass('slick-initialized')) {
885 $(".js__hola-bcn-standard-slider").slick("unslick");
886 }
887
888 $('.js__hola-bcn-standard-slider').slick({
889 slidesToShow: 3,
890 slidesToScroll: 1,
891 arrows: false,
892 dots: false,
893 draggable: false,
894 infinite: false,
895 responsive: [
896 {
897 breakpoint: 767,
898 settings: {
899 variableWidth: true,
900 slidesToShow: 2,
901 slidesToScroll: 1,
902 arrows: false,
903 dots: true,
904 draggable: true,
905 infinite: true
906 }
907 }
908 ]
909 });
910 }
911
912 </script>
913</#if>