S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> title [in template "20155#20195#1501272" at line 634, column 202]
----
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: ${title} [in template "20155#20195#1501272" at line 634, column 200]
----
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"
173 <#if element.typeLink.getData() == "extern">
174 href="${element.External_Link.getData()}" target="_blank" title="<@liferay.language key="label.externalLink.title"/>"
175 <#elseif element.typeLink.getData() == "intern" && element.Internal_Link?? && element.Internal_Link.getFriendlyUrl()?has_content>
176 href="${element.Internal_Link.getFriendlyUrl()}" target="_self"
177 <#if element.titleLink?? && element.titleLink.getData()?has_content>title="${element.titleLink.getData()}"</#if>
178 <#elseif element.typeLink.getData() == "intern" && element.External_Link?? && element.External_Link.getData()?has_content>
179 href="${element.External_Link.getData()}" target="_self"
180 <#if element.titleLink?? && element.titleLink.getData()?has_content>title="${element.titleLink.getData()}"</#if>
181 </#if>
182 >
183 </#if>
184 <div class="hero__media <#if (!element.titleElem?? || !element.titleElem.getData()?has_content) && (!element.descElem?? || !element.descElem.getData()?has_content)>hero__media-no-fade</#if>">
185 <#if element.typeLink.getData() == "video">
186 <div class="hero__media-video__container">
187 <span class="hero__media-video__img">
188 </span>
189 </div>
190 </#if>
191 <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>>
192 </div>
193 <div class="hero__content white__banner">
194 <p class="hero__title" >
195 ${element.titleElem.getData()}
196 </p>
197 <p class="hero__desc-alt" >
198 ${element.descElem.getData()}
199 </p>
200 </div>
201 </a>
202 </div>
203 </div>
204 </#foreach>
205 </#if>
206 </div>
207 </div>
208 </div>
209
210 <div class="dialog">
211 <div id="carrusel-banner-video" class="u-hidden">
212 <div class="dialog__body dialog__body--jotmbe" id="carrusel-banner-video-content">
213 </div>
214 </div>
215 </div>
216 <script type="text/javascript">
217 initSliderCarruselBanner1();
218
219 function initSliderCarruselBanner1() {
220 if($(".js-carousel-banner-al_1").hasClass('slick-initialized')) {
221 $(".js-carousel-banner-al_1").slick("unslick");
222 }
223 $('.js-carousel-banner-al_1 .slick-toggle-play').remove();
224 $('.js-carousel-banner-al_1').slick({
225 slidesToShow: 1,
226 arrows: true,
227 draggable: true,
228 infinite: false,
229 variableWidth: false,
230 autoplaySpeed: 4000,
231 dots: true,
232 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>',
233 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>',
234 responsive: [
235 {
236 breakpoint: 767,
237 settings: {
238 slidesToShow: 1,
239 arrows: false,
240 variableWidth: true,
241 dots: true
242 }
243 }
244 ]
245 }).each(function () {
246 var carousel = $(this),
247 toggleButton,
248 toggleIcon;
249
250 carousel.find('.slick-next__icon').attr({
251 'alt': carousel.data('next-text')
252 });
253
254 carousel.find('.slick-prev__icon').attr({
255 'alt': carousel.data('prev-text')
256 });
257 });
258
259 if ($('.hero-carousel__container .hero').length == 1) {
260 $('.hero-carousel__container .slick-toggle-play').hide();
261 }
262
263 $('.slick-cloned[aria-describedby]').removeAttr('aria-describedby');
264 if($(".js-carousel-banner-al_1 .slick-dots").length > 0) {
265 setDotsPositionBanner1();
266 }
267 }
268
269 function showVideoModalBanner(link) {
270 const start = link.indexOf("v=") + 2;
271 const end = start + 2 + 11;
272
273 TMB.dialog.newModal(langJotmbeClose, "dialog--jotmbe__no-footer dialog--jotmbe__no-icon dialog--jotmbe__with-actions dialog-video-iframe", "carrusel-banner-video", "", "Modal-");
274 $('#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>');
275 }
276 function setDotsPositionBanner1() {
277 $(".js-carousel-banner-al_1 .slick-dots").appendTo($(".js-carousel-banner-al_1").parent());
278 }
279
280 window.addEventListener('resize', function(event){
281 const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
282 if($(".js-carousel-banner-al_1 .slick-dots").length > 0 && width > 768) {
283 setDotsPositionBanner1();
284 }
285 });
286
287 </script>
288</#if>
289
290
291<#-- BASICA-TITOL-TEXT -->
292
293<#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()))>
294 <div class="full-body__container basica-titol-text">
295 <#foreach elem in basicaTitolText.elementsBasica.getSiblings()>
296 <div class="basica-titol-text-wrapper">
297 <#if elem.titleBasica?? && elem.titleBasica.getData()?has_content><h2 class="">${elem.titleBasica.getData()}</h2></#if>
298 <#if elem.contentBasica?? && elem.contentBasica.getData()?has_content><div class="basica-titol-text-content">${elem.contentBasica.getData()}</div></#if>
299 </div>
300 <#foreach subelem in elem.subelementsBasica.getSiblings()>
301 <div class="basica-titol-text-wrapper">
302 <#if subelem.subelementTitleBasica?? && subelem.subelementTitleBasica.getData()?has_content><h3>${subelem.subelementTitleBasica.getData()}</h3></#if>
303 <#if subelem.subelementContentBasica?? && subelem.subelementContentBasica.getData()?has_content><div class="basica-titol-text-content">${subelem.subelementContentBasica.getData()}</div></#if>
304 </div>
305 </#foreach>
306 </#foreach>
307 </div>
308</#if>
309
310
311<#-- bloc-detall-agenda -->
312
313<#if detallAgenda?? && (!detallAgenda.hideDetallAgenda?? || !getterUtil.getBoolean(detallAgenda.hideDetallAgenda.getData()))>
314 <#assign hasElementDetallAgenda = false>
315 <#if detallAgenda.elementsDetallAgenda??
316 && detallAgenda.elementsDetallAgenda.getSiblings()??
317 && (detallAgenda.elementsDetallAgenda.getSiblings()?size > 0)>
318 <#assign firstSibling = detallAgenda.elementsDetallAgenda.getSiblings()[0]>
319 <#if (firstSibling.titleDetallAgenda?? && firstSibling.titleDetallAgenda.getData()?has_content)
320 || (firstSibling.contentDetallAgenda?? && firstSibling.contentDetallAgenda.getData()?has_content)>
321 <#assign hasElementDetallAgenda = true>
322 </#if>
323 </#if>
324
325 <div class="full-body__container detall-agenda" <#if !hasElementDetallAgenda>style="margin-top:0;"</#if>>
326 <#if detallAgenda.elementsDetallAgenda.getSiblings()??>
327 <#assign siblings = detallAgenda.elementsDetallAgenda.getSiblings()>
328 <#if siblings?size gt 0>
329 <#foreach elem in siblings>
330 <div class="detall-agenda-wrapper">
331 <#if elem.titleDetallAgenda?? && elem.titleDetallAgenda.getData()?has_content>
332 <h2 class="">${elem.titleDetallAgenda.getData()}</h2>
333 </#if>
334 <#if elem.contentDetallAgenda?? && elem.contentDetallAgenda.getData()?has_content>
335 <div class="detall-agenda-content">${elem.contentDetallAgenda.getData()}</div>
336 </#if>
337 </div>
338 </#foreach>
339 </#if>
340 </#if>
341
342
343 <#if detallAgenda.buttonsDetallAgenda??
344 && detallAgenda.buttonsDetallAgenda.getSiblings()??
345 && (detallAgenda.buttonsDetallAgenda.getSiblings()?size > 0)
346 && detallAgenda.buttonsDetallAgenda.getSiblings()[0].linkTextDetallAgenda??
347 && detallAgenda.buttonsDetallAgenda.getSiblings()[0].linkTextDetallAgenda.getData()?has_content>
348 <div class="detall-agenda-buttons-wrapper">
349 <#foreach subelem in detallAgenda.buttonsDetallAgenda.getSiblings()>
350 <a title="<#if subelem.accessibleTitleButtons?? && subelem.accessibleTitleButtons.getData()?has_content>${subelem.accessibleTitleButtons.getData()}</#if>"
351 type="button"
352 class="button button--a"
353 <#if subelem.linkTypeDetallAgenda.getData() == "extern"
354 && subelem.External_LinkDetallAgenda??
355 && subelem.External_LinkDetallAgenda.getData()?has_content>
356 href="${subelem.External_LinkDetallAgenda.getData()}"
357 rel="external"
358 target="_blank"
359 <#elseif subelem.linkTypeDetallAgenda.getData() == "intern"
360 && subelem.Internal_LinkDetallAgenda??
361 && subelem.Internal_LinkDetallAgenda.getFriendlyUrl()?has_content>
362 href="${subelem.Internal_LinkDetallAgenda.getFriendlyUrl()}"
363 target="_self"
364 <#elseif subelem.linkTypeDetallAgenda.getData() == "intern"
365 && subelem.External_LinkDetallAgenda??
366 && subelem.External_LinkDetallAgenda.getData()?has_content>
367 href="${subelem.External_LinkDetallAgenda.getData()}"
368 target="_self"
369 </#if>>
370 <span class="button__label">${subelem.linkTextDetallAgenda.getData()}</span>
371 </a>
372 </#foreach>
373 </div>
374 </#if>
375 </div>
376</#if>
377
378
379
380
381<#-- DT_PP_TITULO_VIDEO -->
382
383<#if stPpVideo?? && stPpVideo.linkFieldSet.link.getData()?has_content && (!stPpVideo.hideStPpVideo?? || !getterUtil.getBoolean(stPpVideo.hideStPpVideo.getData()))>
384 <style>
385 .points-video__video-cover.no_video::after{
386 background: none;
387 }
388 </style>
389 <#assign hasLink = false>
390 <#if stPpVideo.linkHeader?? && stPpVideo.linkHeader.getData()?has_content && stPpVideo.linkHeaderText?? && stPpVideo.linkHeaderText.getData()?has_content>
391 <#assign hasLink = true>
392 </#if>
393 <section class="points-video bg-gray pt-56">
394 <div class="main__container">
395 <div class="full-body">
396 <div class="full-body__container points-video__header-extra-container">
397 <#if stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()?has_content && stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()?trim?has_content>
398 <a name="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()}" id="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.ancoraVideo.getData()}">
399 </a>
400 </#if>
401 <#if stPpVideo.titol?? && stPpVideo.titol.getData()?has_content>
402 <div class="points-video__header">
403 <div class="points-video__header-extra" <#if !hasLink>style="justify-content: center; margin-right: 0;"</#if>>
404 <h2 class="points-video__title">
405 ${stPpVideo.titol.getData()}</h2>
406 <#if hasLink>
407 <a class="points-video__subtitle-link" href="${stPpVideo.linkHeader.getData()}">${stPpVideo.linkHeaderText.getData()}</a>
408 </#if>
409 </div>
410 <p class="points-video__description" <#if !hasLink>style="text-align: center; max-width: 100%;"</#if>>
411 ${stPpVideo.descriptiu.getData()}</p>
412 </div>
413 </#if>
414
415 <div class="points-video__video-item cookieconsent-optin-marketing media-unit__content" id="marketingCookies">
416 <#if stPpVideo.linkFieldSet.link.getData()?has_content>
417 <#assign start = stPpVideo.linkFieldSet.link.getData()?index_of("v=") + 2>
418 <#--13 because v= + 11 char for youtube ids
419 -->
420 <#assign end = start + 11>
421 <a href="${stPpVideo.linkFieldSet.link.getData()}" class="points-video__video-stPpVideo.linkFieldSet.link" title="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}"
422 rel="dialog-video" data-video="${stPpVideo.linkFieldSet.link.getData()?substring(start, end)}">
423 <div class="points-video__video-cover" style="background-image: url(${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()});">
424 <img src="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()}" alt="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideoFieldSetFieldSet.alt.getData()}" class="points-video__video-image">
425 </div>
426 <#if stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()?has_content>
427 <p class="points-video__caption">
428 ${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}</p>
429 </#if>
430 </a>
431 <#else>
432 <a class="points-video__video-link" title="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}">
433 <div class="points-video__video-cover no_video" style="background-image: url(${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()});">
434 <img src="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideo.getData()}" alt="${stPpVideo.linkFieldSet.linkFieldSetFieldSet.imgVideoFieldSet.imgVideoFieldSetFieldSet.alt.getData()}" class="points-video__video-image">
435 </div>
436 <#if stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()?has_content>
437 <p class="points-video__caption">
438 ${stPpVideo.linkFieldSet.linkFieldSetFieldSet.descriptiuVideo.getData()}</p>
439 </#if>
440 </a>
441
442 </#if>
443 </div>
444 <div class='cookieconsent-optout-marketing media-unit__content'>
445 <@liferay.language key="cookiebot.youtube.no-marketing"/>
446 </div>
447 <#if hasLink>
448 <a class="points-video__subtitle-link-mobile" href="${stPpVideo.linkHeader.getData()}">${stPpVideo.linkHeaderText.getData()}</a>
449 </#if>
450 </div>
451 </div>
452 </div>
453 </section>
454 <section class="video-dialog js__video-dialog u-hidden <#if stPpVideo.linkFieldSet.link?? && stPpVideo.linkFieldSet.link.getData()?has_content>${stPpVideo.linkFieldSet.link.getData()?substring(start, end)}</#if>">
455 <div class="u-hidden" id="fragment-show-video">
456 <div class="video-dialog__panel">
457 <header class="video-dialog__header">
458 <button class="video-dialog__close js__video-dialog-close">
459 Cerrar</button>
460 </header>
461 <div class="video-dialog__content">
462 <div class="video-dialog__inner js__video-dialog-container">
463 <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="">
464 </iframe>
465 </div>
466 </div>
467 </div>
468 </div>
469 <div class="video-dialog__overlay js__video-dialog-close">
470 </div>
471 </section>
472</#if>
473
474
475<#-- TEXT-CARRUSEL-IMATGES-ALT -->
476
477<#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()))>
478 <#assign imagesFolder = themeDisplay.getPathThemeImages()>
479
480 <#assign entriesMapList = []>
481 <#foreach elem in textCarruselImatges2.elementsFieldSetAlt.getSiblings()>
482 <#if elem.elementsFieldSetFieldSetAlt.order?has_content>
483 <#assign currentOrder = elem.elementsFieldSetFieldSetAlt.order.getData()>
484 </#if>
485 <#if !currentOrder?has_content || currentOrder == "null">
486 <#assign currentOrder = "99">
487 </#if>
488 <#assign currEntryMap = {"entry" : elem.elementsFieldSetFieldSetAlt , "order" : currentOrder?number}>
489 <#assign entriesMapList = entriesMapList + [currEntryMap]>
490 </#foreach>
491
492 <#assign sortedEntriesMapList = entriesMapList?sort_by("order")>
493 <#assign sortedEntriesRootElems = []>
494
495 <#foreach currEntryMap in sortedEntriesMapList>
496 <#assign sortedEntriesRootElems = sortedEntriesRootElems + [currEntryMap.entry]>
497 </#foreach>
498
499 <#assign leftContent = "">
500 <#if textCarruselImatges2.titleHeaderAlt?? && textCarruselImatges2.titleHeaderAlt.getData()?has_content && textCarruselImatges2.descHeaderAlt?? && textCarruselImatges2.descHeaderAlt?has_content>
501 <#assign leftContent = "true">
502 </#if>
503
504 <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>">
505 <#if leftContent?has_content>
506 <div class="hero-carousel__container-banner">
507 <h2 class="hero-carousel-banner-alt-title">
508 ${textCarruselImatges2.titleHeaderAlt.getData()}
509 </h2>
510 <p class="hero-carousel-banner-alt-desc">
511 ${textCarruselImatges2.descHeaderAlt.getData()}
512 </p>
513 </div>
514 </#if>
515 <div aria-live="polite" aria-atomic="false" aria-relevant="all" class="slick-list draggable">
516 <div class="hero-carousel__container js-carousel-banner-al_alt is-playing"
517 data-prev-text='<@liferay.language key="label.carousel.prev"/>'
518 data-next-text='<@liferay.language key="label.carousel.next"/>'
519 data-pagination-text='<@liferay.language key="label.carousel.outstanding"/>'
520 data-stop-text='<@liferay.language key="label.carousel.pause"/>'
521 data-play-text='<@liferay.language key="label.carousel.start"/>'>
522 <#if sortedEntriesRootElems?has_content>
523 <#foreach element in sortedEntriesRootElems>
524 <div class="hero hero--super">
525 <div class="hero__container">
526 <#if element.typeLinkAlt.getData() == "video">
527 <a href="#" onclick='showVideoModalBanner(`${element.External_LinkAlt.getData()}`);return false;' class="hero__link"
528 <#if element.titleLinkAlt?? && element.titleLinkAlt.getData()?has_content>
529 title="${element.titleLinkAlt.getData()}"
530 </#if>
531 >
532 <#else>
533 <a class="hero__link"
534 <#if element.typeLinkAlt.getData() == "extern">
535 href="${element.External_LinkAlt.getData()}" target="_blank" title="<@liferay.language key="label.externalLink.title"/>"
536 <#elseif element.typeLinkAlt.getData() == "intern" && element.Internal_LinkAlt?? && element.Internal_LinkAlt.getFriendlyUrl()?has_content>
537 href="${element.Internal_LinkAlt.getFriendlyUrl()}" target="_self"
538 <#if element.titleLinkAlt?? && element.titleLinkAlt.getData()?has_content>title="${element.titleLinkAlt.getData()}"</#if>
539 <#elseif element.typeLinkAlt.getData() == "intern" && element.External_LinkAlt?? && element.External_LinkAlt.getData()?has_content>
540 href="${element.External_LinkAlt.getData()}" target="_self"
541 <#if element.titleLinkAlt?? && element.titleLinkAlt.getData()?has_content>title="${element.titleLinkAlt.getData()}"</#if>
542 </#if>
543 >
544 </#if>
545 <div class="hero__media <#if (!element.titleElemAlt?? || !element.titleElemAlt.getData()?has_content) && (!element.descElemAlt?? || !element.descElemAlt.getData()?has_content)>hero__media-no-fade</#if>">
546 <#if element.typeLinkAlt.getData() == "video">
547 <div class="hero__media-video__container">
548 <span class="hero__media-video__img">
549 </span>
550 </div>
551 </#if>
552 <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>>
553 </div>
554 <div class="hero__content white__banner">
555 <p class="hero__title" >
556 ${element.titleElemAlt.getData()}
557 </p>
558 <p class="hero__desc-alt" >
559 ${element.descElemAlt.getData()}
560 </p>
561 </div>
562 </a>
563 </div>
564 </div>
565 </#foreach>
566 </#if>
567 </div>
568 </div>
569 </div>
570
571 <div class="dialog">
572 <div id="carrusel-banner-video" class="u-hidden">
573 <div class="dialog__body dialog__body--jotmbe" id="carrusel-banner-video-content">
574 </div>
575 </div>
576 </div>
577 <script type="text/javascript">
578 initSliderCarruselBanner2();
579
580 function initSliderCarruselBanner2() {
581 if($(".js-carousel-banner-al_alt").hasClass('slick-initialized')) {
582 $(".js-carousel-banner-al_alt").slick("unslick");
583 }
584 $('.js-carousel-banner-al_alt .slick-toggle-play').remove();
585 $('.js-carousel-banner-al_alt').slick({
586 slidesToShow: 1,
587 arrows: true,
588 draggable: true,
589 infinite: false,
590 variableWidth: false,
591 autoplaySpeed: 4000,
592 dots: true,
593 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>',
594 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>',
595 responsive: [
596 {
597 breakpoint: 767,
598 settings: {
599 slidesToShow: 1,
600 arrows: false,
601 variableWidth: true,
602 dots: true
603 }
604 }
605 ]
606 }).each(function () {
607 var carousel = $(this),
608 toggleButton,
609 toggleIcon;
610
611 carousel.find('.slick-next__icon').attr({
612 'alt': carousel.data('next-text')
613 });
614
615 carousel.find('.slick-prev__icon').attr({
616 'alt': carousel.data('prev-text')
617 });
618 });
619
620 if ($('.hero-carousel__container .hero').length == 1) {
621 $('.hero-carousel__container .slick-toggle-play').hide();
622 }
623
624 $('.slick-cloned[aria-describedby]').removeAttr('aria-describedby');
625 if($(".js-carousel-banner-al_alt .slick-dots").length > 0) {
626 setDotsPositionBanner2();
627 }
628 }
629
630 function showVideoModalBanner2(link) {
631 const start = link.indexOf("v=") + 2;
632 const end = start + 2 + 11;
633
634 TMB.dialog.newModal(langJotmbeClose, "dialog--jotmbe__no-footer dialog--jotmbe__no-icon dialog--jotmbe__with-actions dialog-video-iframe", "carrusel-banner-video", "", "Modal-${title}");
635 $('#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>');
636 }
637 function setDotsPositionBanner2() {
638 $(".js-carousel-banner-al_alt .slick-dots").appendTo($(".js-carousel-banner-al_alt").parent());
639 }
640
641 window.addEventListener('resize', function(event){
642 const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
643 if($(".js-carousel-banner-al_alt .slick-dots").length > 0 && width > 768) {
644 setDotsPositionBanner2();
645 }
646 });
647
648 </script>
649</#if>
650
651
652<#-- CARRUSEL-TRES-CARD -->
653
654<#if referencesFieldSet?? && 0 < referencesFieldSet.getSiblings()?size && referencesFieldSet.getSiblings()[0].referenceId.getData()?has_content && (!hideTresCards?? || !getterUtil.getBoolean(hideTresCards.getData()))>
655 <#assign colorClass = "" />
656 <#assign fullBody = "" />
657 <#if fondoColorCarruselCards?? && fondoColorCarruselCards.getData()??>
658 <#if fondoColorCarruselCards.getData()=="blanc">
659 <#assign colorClass = "hola-bcn-carrusel-standard--white" />
660 <#assign fullBody = "full-body__container" />
661 <#else>
662 <#assign colorClass = "hola-bcn-carrusel-standard--gray" />
663 <#assign fullBody = "full-body__container" />
664 </#if>
665 </#if>
666
667 <section class="hola-bcn-carrusel-standard ${colorClass}">
668 <div class="hola-bcn-carrusel-standard-cont-ext hola-bcn-carrusel-standard-cont-ext-extra hola-bcn-carrusel-standard-cont-ext-flex ${fullBody}">
669 <div class="hola-bcn-carrusel-standard--container">
670 <div class="hola-bcn-carrusel-standard--outer">
671 <div class="hola-bcn-carrusel-standard_new-header">
672 <h2 class="title title--1 hola-bcn-carrusel-standard__title hola-bcn-carrusel-standard__title_new">
673 <#if titleCarruselCards?? && titleCarruselCards.getData()?has_content>
674 ${titleCarruselCards.getData()}
675 <#else>
676 <@liferay.language key="title.carrusel.cards.default" />
677 </#if>
678 </h2>
679 <p class="hola-bcn-carrusel-standard__intro-text">${subtitleCarruselCards.getData()}</p>
680 </div>
681 <ul id="result-list" class="hola-bcn-carrusel-standard__items js__hola-bcn-standard-slider">
682 <#assign tmbGroupId = 20182>
683 <#assign fundacioGroupId = 79790>
684 <#list referencesFieldSet.getSiblings() as element>
685 <#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
686 <#assign articleId = element.referenceId.getData()>
687 <#assign groupId = getterUtil.getLong(groupId)>
688 <#attempt>
689 <#assign journalArticle = JournalArticleLocalService.getArticle(groupId, articleId) />
690 <#recover>
691 <#if groupId == tmbGroupId>
692 <#assign groupId = fundacioGroupId>
693 <#else>
694 <#assign groupId = tmbGroupId>
695 </#if>
696 <#attempt>
697 <#assign journalArticle = JournalArticleLocalService.getArticle(groupId, articleId)!>
698 <#recover>
699 <#assign journalArticle = "">
700 </#attempt>
701 </#attempt>
702 <#if journalArticle?has_content && journalArticle != "">
703 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
704 <#assign rootElement = document.getRootElement()>
705
706 <#assign resourceprimKey = journalArticle.getResourcePrimKey()>
707 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourceprimKey)>
708 <#assign assetRenderer = assetEntry.getAssetRenderer()>
709 <#assign articleURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, "")>
710 <#assign articleFriendlyURL = assetRenderer.getUrlTitle()>
711 <#assign newwindow = "">
712 <#if !articleURL?has_content>
713 <#assign newwindow = "target='_blank'">
714 <#if !isFundacio>
715 <#if currentURL?contains("pre3")>
716 <#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
717 <#else>
718 <#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
719 </#if>
720 <#else>
721 <#if currentURL?contains("pre3")>
722 <#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
723 <#else>
724 <#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage() + "/w/" + articleFriendlyURL>
725 </#if>
726 </#if>
727 </#if>
728
729 <#assign title = "">
730 <#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='titleGlobal']/dynamic-content[@language-id='" + locale + "']")>
731 <#if titleSel.selectSingleNode(rootElement)?has_content>
732 <#assign title = titleSel.selectSingleNode(rootElement).getStringValue()>
733 </#if>
734
735 <#assign subtitle = "">
736 <#assign subtitleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='subtitleGlobal']/dynamic-content[@language-id='" + locale + "']")>
737 <#if subtitleSel.selectSingleNode(rootElement)?has_content>
738 <#assign subtitle = subtitleSel.selectSingleNode(rootElement).getStringValue()>
739 </#if>
740
741 <#assign initDateNovetatAgenda = "">
742 <#assign fromInitDateNovetatAgenda = "">
743 <#assign endDateNovetatAgenda = "">
744 <#assign whereNovetatAgenda = "">
745 <#assign novetatAgendaSel = rootElement.selectSingleNode("dynamic-element[@field-reference='blocInfoAgenda']")!"">
746 <#if novetatAgendaSel?has_content>
747 <#assign dateNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whenBlocInfoAgenda']")!"">
748
749 <#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
750 <#assign initDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
751 </#if>
752
753 <#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
754 <#assign fromInitDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
755 </#if>
756
757 <#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
758 <#assign endDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
759 </#if>
760
761 <#assign whereNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whereBlocInfoAgenda']")!"">
762 <#if whereNovetatAgendaSelSel?has_content && whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content>
763 <#assign whereNovetatAgenda = whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()>
764 </#if>
765 </#if>
766
767 <#assign typeNovetatAgenda = "">
768 <#assign typeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='typeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
769 <#if typeNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
770 <#assign typeNovetatAgenda = typeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
771 </#if>
772
773 <#assign filterNovetatAgenda = "">
774 <#assign filterNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='filterNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
775 <#if filterNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
776 <#assign filterNovetatAgenda = filterNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
777 </#if>
778
779 <#assign imageNovetatAgenda = "">
780 <#assign imageNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='imageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
781 <#if imageNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
782 <#assign image = imageNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
783 <#assign imageUuid = jsonFactoryUtil.createJSONObject(image).uuid!"">
784 <#assign imageNovetatAgenda = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + groupId + "/" + imageUuid>
785 </#if>
786
787 <#assign imageAltNovetatAgenda = "">
788 <#assign imageAltNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='altImageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
789 <#if imageAltNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
790 <#assign imageAltNovetatAgenda = imageAltNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
791 </#if>
792
793 <#assign pubDateNovetatAgenda = "">
794 <#assign pubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
795 <#if pubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
796 <#assign pubDateNovetatAgenda = pubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
797 </#if>
798
799 <#assign pubTimeNovetatAgenda = "">
800 <#assign pubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
801 <#if pubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
802 <#assign pubTimeNovetatAgenda = pubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
803 </#if>
804
805 <#assign despubDateNovetatAgenda = "">
806 <#assign despubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
807 <#if despubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
808 <#assign despubDateNovetatAgenda = despubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
809 </#if>
810
811 <#assign despubTimeNovetatAgenda = "">
812 <#assign despubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
813 <#if despubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
814 <#assign despubTimeNovetatAgenda = despubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
815 </#if>
816
817 <#assign isExpiredNovetatAgenda = "">
818 <#assign isExpiredNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='isExpiredNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>
819 <#if isExpiredNovetatAgendaSel.selectSingleNode(rootElement)?has_content>
820 <#assign isExpiredNovetatAgenda = isExpiredNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()>
821 </#if>
822
823 <#assign isPublishedNA = false>
824 <#if (pubDateNovetatAgenda?has_content)>
825 <#if pubTimeNovetatAgenda?has_content>
826 <#assign timeActDate = pubTimeNovetatAgenda?date["HH:mm"]>
827 <#assign timeActFormat = timeActDate?string["HH:mm"]>
828 <#else>
829 <#assign timeActDate = "">
830 <#assign timeActFormat = "">
831 </#if>
832 <#attempt>
833 <#assign dataAct = pubDateNovetatAgenda?date["yyyy-MM-dd"]>
834
835 <#if timeActFormat?has_content && timeActFormat != "">
836 <#assign dataActMil = miliSeconds(timeActFormat dataAct?long)>
837 <#assign dataAct = dateUtil.newDate(getterUtil.getLong(dataActMil))>
838 </#if>
839 <#assign dataActMil = dataAct?long>
840 <#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)>
841 <#assign isPublishedNA = (dataActMil - now ) < 0 />
842 <#recover>
843 </#attempt>
844 </#if>
845
846 <#assign isDespublishedNA = false>
847 <#if (despubDateNovetatAgenda?has_content)>
848 <#if despubTimeNovetatAgenda?has_content>
849 <#assign timeExpDate = despubTimeNovetatAgenda?date["HH:mm"]>
850 <#assign timeExpFormat = timeExpDate?string["HH:mm"]>
851 <#else>
852 <#assign timeExpDate = "">
853 <#assign timeExpFormat = "">
854 </#if>
855 <#attempt>
856 <#assign dataExp = despubDateNovetatAgenda?date["yyyy-MM-dd"]>
857
858 <#if timeExpFormat?has_content && timeExpFormat != "">
859 <#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)>
860 <#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))>
861 </#if>
862 <#assign dataExpMil = dataExp?long>
863 <#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)>
864 <#assign isDespublishedNA = (dataExpMil - now) < 0 />
865 <#recover>
866 </#attempt>
867 </#if>
868
869 <#assign isExpiredNA = false>
870 <#if journalArticle.expirationDate??>
871 <#assign dataExp = journalArticle.expirationDate?datetime>
872 <#attempt>
873 <#assign dataExpMil = dataExp?long>
874 <#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)>
875 <#assign isExpiredNA = (dataExpMil - now) < 0 />
876 <#recover>
877 </#attempt>
878 </#if>
879
880 <#assign showNovetatAgenda = false>
881 <#if typeNovetatAgenda?has_content && typeNovetatAgenda == "1">
882 <#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && !isDespublishedNA && isExpiredNovetatAgenda != "true">
883 <#else>
884 <#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && isExpiredNovetatAgenda != "true">
885 </#if>
886
887 <#if showNovetatAgenda>
888 <#if title?has_content>
889 <li class="hola-bcn-carrusel-standard_new-li">
890 <a ${newwindow} class="hola-bcn-carrusel-standard_new <#if isDespublishedNA>hola-bcn-carrusel-standard_new-finished</#if>" href="${articleURL}">
891 <div class="hola-bcn-carrusel-standard__card-cover">
892 <div class="hola-bcn-carrusel-standard__card-cover-filter"></div>
893 <img class="hola-bcn-carrusel-standard__image" src="${imageNovetatAgenda}" <#if imageAltNovetatAgenda?has_content>alt="${imageAltNovetatAgenda}"<#else>alt=""</#if>>
894 <div class="hola-bcn-carrusel-standard-finished-text" <#if isDespublishedNA>style="display: block;"</#if>>
895 <span><@liferay.language key='label.bloc.novetatagenda.finished' /></span>
896 </div>
897 <#if filterNovetatAgenda?has_content>
898 <div class="hola-bcn-carrusel-standard-highlight">
899 <span><@liferay.language key='label.bloc.novetatagenda.filter.${filterNovetatAgenda}' /></span>
900 </div>
901 </#if>
902 </div>
903 <div class="hola-bcn-carrusel-standard-container">
904 <div>
905 <h3 class="hola-bcn-carrusel-standard__card-title">
906 ${title}
907 <#if newwindow?? && newwindow?has_content>
908 <span class="icon-external-black" alt="Enllaç extern" title="(Obre una nova finestra)"></span>
909 </#if>
910 </h3>
911 <span class="hola-bcn-carrusel-standard__card-description">
912 ${subtitle}
913 </span>
914 </div>
915 <#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content || (whereNovetatAgenda?has_content)>
916 <div class="hola-bcn-carrusel-standard_bottom-extra">
917 <#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content>
918 <div class="hola-bcn-carrusel-standard-date">
919 <#if fromInitDateNovetatAgenda == "true">
920 <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>
921 <#else>
922 <#if initDateNovetatAgenda?has_content && !endDateNovetatAgenda?has_content>
923 <span><b><@liferay.language key='label.bloc.novetatagenda.when' /></b> ${initDateNovetatAgenda?date["yyyy-MM-dd"]?string("dd/MM/yyyy")}</span>
924 <#else>
925 <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>
926 </#if>
927 </#if>
928 </div>
929 </#if>
930 <#if whereNovetatAgenda?has_content>
931 <div class="hola-bcn-carrusel-standard-where">
932 <span><b><@liferay.language key='label.bloc.novetatagenda.where' /> <span class="hola-bcn-carrusel-standard-where-inner">${whereNovetatAgenda}</span></b></span>
933 </div>
934 </#if>
935 </div>
936 </#if>
937 </div>
938 </a>
939 </li>
940 </#if>
941 </#if>
942 </#if>
943 </#list>
944 </ul>
945 </div>
946 </div>
947 </div>
948 </section>
949
950 <script type="text/javascript">
951
952 $(document).ready(function() {
953 initSliderBcnStandard();
954 });
955
956 function initSliderBcnStandard() {
957 if($(".js__hola-bcn-standard-slider").hasClass('slick-initialized')) {
958 $(".js__hola-bcn-standard-slider").slick("unslick");
959 }
960
961 $('.js__hola-bcn-standard-slider').slick({
962 slidesToShow: 3,
963 slidesToScroll: 1,
964 arrows: false,
965 dots: false,
966 draggable: false,
967 infinite: false,
968 responsive: [
969 {
970 breakpoint: 767,
971 settings: {
972 variableWidth: true,
973 slidesToShow: 1,
974 slidesToScroll: 1,
975 arrows: false,
976 dots: true,
977 draggable: true,
978 infinite: true
979 }
980 }
981 ]
982 });
983 }
984
985 </script>
986</#if>
