Vine a tocar el piano a Diagonal!

Una prova pilot per acollir un piano de forma fixa i apropar la música als usuaris.

Quan: Des de 23.03.2025


On: Estació Diagonal


Accés: Accés validant el bitllet de transport

Transports Metropolitans de Barcelona (TMB) a través de la seva Fundació, ha col·laborat un any més amb el prestigiós Concurs de Piano Maria Canals, que es va celebrar del 23 de març al 3 d'abril.

En aquesta edició es van celebrar els 70 anys del concurs amb una exposició sota el títol Maria Canals, un concurs amb ànima i el Centenari del metro.

A l'Espai Mercè Sala s'hi van col·locar dos pianos: un de mitja cua, com el que s'hi ha instal·lat altres anys, que va estar a disposició de la ciutadania, de corals i d'escoles de música durant 15 dies, i un segon piano de paret, que es va instal·lar amb la vocació que hi quedi de manera permanent.

 

Una prova pilot per acostar la música a tots els usuaris i usuàries

Aprofitant sengles celebracions, ambdues entitats van iniciar l'experiència de deixar un piano de forma permanent al vestíbul de l'L5 de l'estació Diagonal.

El piano convida els passatgers a acceptar el repte d'aturar-s'hi, seure i fer sonar les seves tecles. Si la iniciativa s'avalua com a positiva, la previsió és que el piano de paret es quedi de forma permanent a la xarxa per tal que tothom qui ho vulgui el pugui tocar.

De moment, es tracta d'una prova pilot que vol millorar l'experiència de viatge. Esperem que els resultats siguin positius i puguem gaudir per molt de temps de les intervencions musicals de piano al metro.

Obrim l'Espai Mercè Sala per La Nit dels Museus

Visita'ns la nit del 17 al 18 de maig.

Quan: 17.05.2025


On: Espai Mercè Sala (Estació Diagonal)


Accés: Accés lliure amb validació del títol de transport

Un any més, TMB se suma a La Nit dels Museus obirnt al públic la sala d'exposicions de l'estació Diagonal.

Has entrat mai en un museu quan cau la nit? Dissabte, 17 de maig, de 19.00 a 01.00 hores, tens l’oportunitat de fer-ho! Arriba La Nit dels Museus amb una nova edició plena de propostes i experiències en 94 espais. A més de les portes obertes, trobaràs fins a 94 activitats extraordinàries, des de concerts i recitals fins a mapatges, tallers i actuacions, així com visites guiades que donaran una nova dimensió a les col·leccions i exposicions.

Enguany s’hi incorporen equipaments que no hi van participar l’any passat i també tornen a participar-hi espais de Badalona, Cornellà de Llobregat, Esplugues de Llobregat, l’Hospitalet de Llobregat, Sant Adrià de Besòs, Santa Coloma de Gramenet i Sant Joan Despí, que obriran les portes per fer d’aquesta vetllada un gran esdeveniment.

Així que ja ho saps: consulta la programació, planifica la ruta i assegura’t d’esbrinar si cal reserva prèvia per a alguna activitat. 

Et presentem l'exposició Maria Canals, un cocurs amb ànima

El Concurs Internacional de Piano Maria Canals i TMB celebren junts, després d’una llarga col·laboració, tres onomàstiques que arriben de la mà aquest 2025: els cent anys del metro de Barcelona, els quinze anys de l'Espai Mercè Sala i el 70è aniversari del certamen musical.

Per celebrar-ho, l'Espai Mercè Sala acull una exposició commemorativa del concurs Maria Canals que es pot veure fins al 21 de juny.

Aquesta exposició repassa totes les activitats i fites aconseguides al llarg del temps com a promotor d’intèrprets professionals, així com també la seva labor educativa i social, amb l'objectiu de posar de relleu la vitalitat del projecte en el present.

Visita aquesta retrospectiva fotogràfica inclou cites i breus audiovisuals que reten homenatge a les persones que han format part de la trajectòria del concurs, fundat el 1954 per la pianista i pedagoga Maria Canals.

Descobreix-ne més a la pàgina de l'exposició.

Vine a l'exposició... a tocar el piano!

Aquesta vetllada especial estarà amenitzada amb la música del piano que l’associació Maria Canals ha cedit a TMB, i que està situat al davant de l’Espai Mercè Sala.

Durant l'esdeveniment, el piano comptarà amb intèrprets espontanis i d’associacions d’amics i amants de la música com Orpheus (de música clàssica), AMUC (Músics del Metro i del Carrer) i Taller de Músics, generant una jam session oberta a tothom qui s’hi vulgui afegir.

T'hi esperem!

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#1502536" 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#1502536" 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.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"> 
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 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.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"> 
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 newwindow = ""> 
642								<#if !isFundacio> 
643									<#if articleURL?contains("/fundacio-tmb")> 
644										<#assign link1 = articleURL?split("fundacio-tmb")> 
645										<#if (getterUtil.getInteger(link1?size)>0)> 
646											<#assign newwindow = "target='_blank'"> 
647											<#if articleURL?contains("pre3")> 
648												<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
649											<#else> 
650												<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
651											</#if> 
652										<#elseif getterUtil.getInteger(link1?size) == 0> 
653											<#assign newwindow = "target='_blank'"> 
654											<#if articleURL?contains("pre3")> 
655												<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage()> 
656											<#else> 
657												<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage()> 
658											</#if> 
659										</#if> 
660									</#if> 
661								<#else> 
662									<#if articleURL?contains("/web/tmb")> 
663										<#assign link1 = articleURL?split("web/tmb")> 
664										<#if (getterUtil.getInteger(link1?size)>0)> 
665											<#assign newwindow = "target='_blank'"> 
666											<#if articleURL?contains("pre3")> 
667												<#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage() + link1[1]> 
668											<#else> 
669												<#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage() + link1[1]> 
670											</#if> 
671										<#elseif getterUtil.getInteger(link1?size) == 0> 
672											<#assign newwindow = "target='_blank'"> 
673											<#if articleURL?contains("pre3")> 
674												<#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage()> 
675											<#else> 
676												<#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage()> 
677											</#if> 
678										</#if> 
679									</#if> 
680								</#if> 
681 
682								<#assign title = ""> 
683								<#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='titleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
684								<#if titleSel.selectSingleNode(rootElement)?has_content> 
685									<#assign title = titleSel.selectSingleNode(rootElement).getStringValue()> 
686								</#if> 
687								 
688								<#assign subtitle = ""> 
689								<#assign subtitleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='subtitleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
690								<#if subtitleSel.selectSingleNode(rootElement)?has_content> 
691									<#assign subtitle = subtitleSel.selectSingleNode(rootElement).getStringValue()> 
692								</#if> 
693 
694								<#assign initDateNovetatAgenda = ""> 
695								<#assign fromInitDateNovetatAgenda = ""> 
696								<#assign endDateNovetatAgenda = ""> 
697								<#assign whereNovetatAgenda = ""> 
698								<#assign novetatAgendaSel = rootElement.selectSingleNode("dynamic-element[@field-reference='blocInfoAgenda']")!""> 
699								<#if novetatAgendaSel?has_content> 
700									<#assign dateNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whenBlocInfoAgenda']")!""> 
701 
702									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
703										<#assign initDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
704									</#if> 
705 
706									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
707										<#assign fromInitDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
708									</#if> 
709 
710									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
711										<#assign endDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
712									</#if> 
713 
714									<#assign whereNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whereBlocInfoAgenda']")!""> 
715									<#if whereNovetatAgendaSelSel?has_content && whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
716										<#assign whereNovetatAgenda = whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
717									</#if> 
718								</#if> 
719 
720								<#assign typeNovetatAgenda = ""> 
721								<#assign typeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='typeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
722								<#if typeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
723									<#assign typeNovetatAgenda = typeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
724								</#if> 
725 
726								<#assign filterNovetatAgenda = ""> 
727								<#assign filterNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='filterNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
728								<#if filterNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
729									<#assign filterNovetatAgenda = filterNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
730								</#if> 
731								 
732								<#assign imageNovetatAgenda = ""> 
733								<#assign imageNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='imageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
734								<#if imageNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
735									<#assign image = imageNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
736									<#assign imageUuid = jsonFactoryUtil.createJSONObject(image).uuid!""> 
737									<#assign imageNovetatAgenda = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + groupId + "/" + imageUuid> 
738								</#if> 
739 
740								<#assign imageAltNovetatAgenda = ""> 
741								<#assign imageAltNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='altImageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
742								<#if imageAltNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
743									<#assign imageAltNovetatAgenda = imageAltNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
744								</#if> 
745 
746								<#assign pubDateNovetatAgenda = ""> 
747								<#assign pubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
748								<#if pubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
749									<#assign pubDateNovetatAgenda = pubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
750								</#if> 
751 
752								<#assign pubTimeNovetatAgenda = ""> 
753								<#assign pubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
754								<#if pubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
755									<#assign pubTimeNovetatAgenda = pubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
756								</#if> 
757 
758								<#assign despubDateNovetatAgenda = ""> 
759								<#assign despubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
760								<#if despubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
761									<#assign despubDateNovetatAgenda = despubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
762								</#if> 
763 
764								<#assign despubTimeNovetatAgenda = ""> 
765								<#assign despubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
766								<#if despubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
767									<#assign despubTimeNovetatAgenda = despubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
768								</#if> 
769 
770								<#assign isExpiredNovetatAgenda = ""> 
771								<#assign isExpiredNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='isExpiredNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
772								<#if isExpiredNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
773									<#assign isExpiredNovetatAgenda = isExpiredNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
774								</#if> 
775 
776								<#assign isPublishedNA = false> 
777								<#if (pubDateNovetatAgenda?has_content)> 
778									<#if pubTimeNovetatAgenda?has_content> 
779										<#assign timeActDate = pubTimeNovetatAgenda?date["HH:mm"]> 
780										<#assign timeActFormat = timeActDate?string["HH:mm"]> 
781									<#else> 
782										<#assign timeActDate = ""> 
783										<#assign timeActFormat = ""> 
784									</#if> 
785									<#attempt>	 
786										<#assign dataAct = pubDateNovetatAgenda?date["yyyy-MM-dd"]> 
787										 
788										<#if timeActFormat?has_content && timeActFormat != ""> 
789											<#assign dataActMil = miliSeconds(timeActFormat dataAct?long)> 
790											<#assign dataAct = dateUtil.newDate(getterUtil.getLong(dataActMil))> 
791										</#if> 
792										<#assign dataActMil = dataAct?long> 
793										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
794										<#assign isPublishedNA = (dataActMil - now ) < 0 /> 
795									<#recover> 
796									</#attempt> 
797								</#if> 
798 
799								<#assign isDespublishedNA = false> 
800								<#if (despubDateNovetatAgenda?has_content)> 
801									<#if despubTimeNovetatAgenda?has_content> 
802										<#assign timeExpDate = despubTimeNovetatAgenda?date["HH:mm"]> 
803										<#assign timeExpFormat = timeExpDate?string["HH:mm"]> 
804									<#else> 
805										<#assign timeExpDate = ""> 
806										<#assign timeExpFormat = ""> 
807									</#if> 
808									<#attempt> 
809										<#assign dataExp = despubDateNovetatAgenda?date["yyyy-MM-dd"]> 
810										 
811										<#if timeExpFormat?has_content && timeExpFormat != ""> 
812											<#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)> 
813											<#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))> 
814										</#if> 
815										<#assign dataExpMil = dataExp?long> 
816										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
817										<#assign isDespublishedNA = (dataExpMil - now) < 0 /> 
818									<#recover> 
819									</#attempt> 
820								</#if> 
821 
822								<#assign isExpiredNA = false> 
823								<#if journalArticle.expirationDate??> 
824									<#assign dataExp = journalArticle.expirationDate?datetime> 
825									<#attempt> 
826										<#assign dataExpMil = dataExp?long> 
827										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
828										<#assign isExpiredNA = (dataExpMil - now) < 0 /> 
829									<#recover> 
830									</#attempt> 
831								</#if> 
832 
833								<#assign showNovetatAgenda = false> 
834								<#if typeNovetatAgenda?has_content && typeNovetatAgenda == "1"> 
835									<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && !isDespublishedNA && isExpiredNovetatAgenda != "true"> 
836								<#else> 
837									<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && isExpiredNovetatAgenda != "true"> 
838								</#if> 
839 
840								<#if showNovetatAgenda> 
841									<#if title?has_content> 
842										<li class="hola-bcn-carrusel-standard_new-li"> 
843											<a ${newwindow} class="hola-bcn-carrusel-standard_new <#if isDespublishedNA>hola-bcn-carrusel-standard_new-finished</#if>" href="${articleURL}"> 
844												<div class="hola-bcn-carrusel-standard__card-cover"> 
845													<div class="hola-bcn-carrusel-standard__card-cover-filter"></div> 
846													<img class="hola-bcn-carrusel-standard__image" src="${imageNovetatAgenda}" <#if imageAltNovetatAgenda?has_content>alt="${imageAltNovetatAgenda}"<#else>alt=""</#if>> 
847													<div class="hola-bcn-carrusel-standard-finished-text" <#if isDespublishedNA>style="display: block;"</#if>> 
848														<span><@liferay.language key='label.bloc.novetatagenda.finished' /></span> 
849													</div> 
850													<#if filterNovetatAgenda?has_content> 
851														<div class="hola-bcn-carrusel-standard-highlight"> 
852															<span><@liferay.language key='label.bloc.novetatagenda.filter.${filterNovetatAgenda}' /></span> 
853														</div> 
854													</#if> 
855												</div> 
856												<div class="hola-bcn-carrusel-standard-container"> 
857													<div> 
858														<h3 class="hola-bcn-carrusel-standard__card-title"> 
859															${title} 
860															<#if newwindow?? && newwindow?has_content> 
861																<span class="icon-external-black" alt="Enllaç extern" title="(Obre una nova finestra)"></span> 
862															</#if> 
863														</h3> 
864														<span class="hola-bcn-carrusel-standard__card-description"> 
865															${subtitle} 
866														</span> 
867													</div> 
868													<#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content || (whereNovetatAgenda?has_content)> 
869														<div class="hola-bcn-carrusel-standard_bottom-extra"> 
870															<#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content> 
871																<div class="hola-bcn-carrusel-standard-date"> 
872																	<#if fromInitDateNovetatAgenda == "true"> 
873																		<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> 
874																	<#else> 
875																		<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> 
876																	</#if> 
877																</div> 
878															</#if> 
879															<#if whereNovetatAgenda?has_content> 
880																<div class="hola-bcn-carrusel-standard-where"> 
881																	<span><b><@liferay.language key='label.bloc.novetatagenda.where' /> <span class="hola-bcn-carrusel-standard-where-inner">${whereNovetatAgenda}</span></b></span> 
882																</div> 
883															</#if> 
884														</div> 
885													</#if> 
886												</div> 
887											</a> 
888										</li> 
889									</#if> 
890								</#if> 
891							</#if> 
892						</#list> 
893					</ul> 
894				</div> 
895			</div> 
896		</div> 
897	</section> 
898 
899	<script type="text/javascript"> 
900 
901		$(document).ready(function() { 
902			initSliderBcnStandard(); 
903		}); 
904 
905		function initSliderBcnStandard() { 
906			if($(".js__hola-bcn-standard-slider").hasClass('slick-initialized')) { 
907				$(".js__hola-bcn-standard-slider").slick("unslick"); 
908
909 
910			$('.js__hola-bcn-standard-slider').slick({ 
911				slidesToShow: 3, 
912				slidesToScroll: 1, 
913				arrows: false, 
914				dots: false, 
915				draggable: false, 
916				infinite: false, 
917				responsive: [ 
918
919						breakpoint: 767, 
920						settings: { 
921							variableWidth: true, 
922							slidesToShow: 2, 
923							slidesToScroll: 1, 
924							arrows: false, 
925							dots: true, 
926							draggable: true, 
927							infinite: true 
928
929
930
931			}); 
932
933 
934	</script> 
935</#if> 
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#1502536" 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#1502536" 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.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"> 
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 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.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"> 
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 newwindow = ""> 
642								<#if !isFundacio> 
643									<#if articleURL?contains("/fundacio-tmb")> 
644										<#assign link1 = articleURL?split("fundacio-tmb")> 
645										<#if (getterUtil.getInteger(link1?size)>0)> 
646											<#assign newwindow = "target='_blank'"> 
647											<#if articleURL?contains("pre3")> 
648												<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
649											<#else> 
650												<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
651											</#if> 
652										<#elseif getterUtil.getInteger(link1?size) == 0> 
653											<#assign newwindow = "target='_blank'"> 
654											<#if articleURL?contains("pre3")> 
655												<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage()> 
656											<#else> 
657												<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage()> 
658											</#if> 
659										</#if> 
660									</#if> 
661								<#else> 
662									<#if articleURL?contains("/web/tmb")> 
663										<#assign link1 = articleURL?split("web/tmb")> 
664										<#if (getterUtil.getInteger(link1?size)>0)> 
665											<#assign newwindow = "target='_blank'"> 
666											<#if articleURL?contains("pre3")> 
667												<#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage() + link1[1]> 
668											<#else> 
669												<#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage() + link1[1]> 
670											</#if> 
671										<#elseif getterUtil.getInteger(link1?size) == 0> 
672											<#assign newwindow = "target='_blank'"> 
673											<#if articleURL?contains("pre3")> 
674												<#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage()> 
675											<#else> 
676												<#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage()> 
677											</#if> 
678										</#if> 
679									</#if> 
680								</#if> 
681 
682								<#assign title = ""> 
683								<#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='titleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
684								<#if titleSel.selectSingleNode(rootElement)?has_content> 
685									<#assign title = titleSel.selectSingleNode(rootElement).getStringValue()> 
686								</#if> 
687								 
688								<#assign subtitle = ""> 
689								<#assign subtitleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='subtitleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
690								<#if subtitleSel.selectSingleNode(rootElement)?has_content> 
691									<#assign subtitle = subtitleSel.selectSingleNode(rootElement).getStringValue()> 
692								</#if> 
693 
694								<#assign initDateNovetatAgenda = ""> 
695								<#assign fromInitDateNovetatAgenda = ""> 
696								<#assign endDateNovetatAgenda = ""> 
697								<#assign whereNovetatAgenda = ""> 
698								<#assign novetatAgendaSel = rootElement.selectSingleNode("dynamic-element[@field-reference='blocInfoAgenda']")!""> 
699								<#if novetatAgendaSel?has_content> 
700									<#assign dateNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whenBlocInfoAgenda']")!""> 
701 
702									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
703										<#assign initDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
704									</#if> 
705 
706									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
707										<#assign fromInitDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
708									</#if> 
709 
710									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
711										<#assign endDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
712									</#if> 
713 
714									<#assign whereNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whereBlocInfoAgenda']")!""> 
715									<#if whereNovetatAgendaSelSel?has_content && whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
716										<#assign whereNovetatAgenda = whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
717									</#if> 
718								</#if> 
719 
720								<#assign typeNovetatAgenda = ""> 
721								<#assign typeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='typeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
722								<#if typeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
723									<#assign typeNovetatAgenda = typeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
724								</#if> 
725 
726								<#assign filterNovetatAgenda = ""> 
727								<#assign filterNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='filterNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
728								<#if filterNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
729									<#assign filterNovetatAgenda = filterNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
730								</#if> 
731								 
732								<#assign imageNovetatAgenda = ""> 
733								<#assign imageNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='imageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
734								<#if imageNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
735									<#assign image = imageNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
736									<#assign imageUuid = jsonFactoryUtil.createJSONObject(image).uuid!""> 
737									<#assign imageNovetatAgenda = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + groupId + "/" + imageUuid> 
738								</#if> 
739 
740								<#assign imageAltNovetatAgenda = ""> 
741								<#assign imageAltNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='altImageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
742								<#if imageAltNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
743									<#assign imageAltNovetatAgenda = imageAltNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
744								</#if> 
745 
746								<#assign pubDateNovetatAgenda = ""> 
747								<#assign pubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
748								<#if pubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
749									<#assign pubDateNovetatAgenda = pubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
750								</#if> 
751 
752								<#assign pubTimeNovetatAgenda = ""> 
753								<#assign pubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
754								<#if pubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
755									<#assign pubTimeNovetatAgenda = pubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
756								</#if> 
757 
758								<#assign despubDateNovetatAgenda = ""> 
759								<#assign despubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
760								<#if despubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
761									<#assign despubDateNovetatAgenda = despubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
762								</#if> 
763 
764								<#assign despubTimeNovetatAgenda = ""> 
765								<#assign despubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
766								<#if despubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
767									<#assign despubTimeNovetatAgenda = despubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
768								</#if> 
769 
770								<#assign isExpiredNovetatAgenda = ""> 
771								<#assign isExpiredNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='isExpiredNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
772								<#if isExpiredNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
773									<#assign isExpiredNovetatAgenda = isExpiredNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
774								</#if> 
775 
776								<#assign isPublishedNA = false> 
777								<#if (pubDateNovetatAgenda?has_content)> 
778									<#if pubTimeNovetatAgenda?has_content> 
779										<#assign timeActDate = pubTimeNovetatAgenda?date["HH:mm"]> 
780										<#assign timeActFormat = timeActDate?string["HH:mm"]> 
781									<#else> 
782										<#assign timeActDate = ""> 
783										<#assign timeActFormat = ""> 
784									</#if> 
785									<#attempt>	 
786										<#assign dataAct = pubDateNovetatAgenda?date["yyyy-MM-dd"]> 
787										 
788										<#if timeActFormat?has_content && timeActFormat != ""> 
789											<#assign dataActMil = miliSeconds(timeActFormat dataAct?long)> 
790											<#assign dataAct = dateUtil.newDate(getterUtil.getLong(dataActMil))> 
791										</#if> 
792										<#assign dataActMil = dataAct?long> 
793										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
794										<#assign isPublishedNA = (dataActMil - now ) < 0 /> 
795									<#recover> 
796									</#attempt> 
797								</#if> 
798 
799								<#assign isDespublishedNA = false> 
800								<#if (despubDateNovetatAgenda?has_content)> 
801									<#if despubTimeNovetatAgenda?has_content> 
802										<#assign timeExpDate = despubTimeNovetatAgenda?date["HH:mm"]> 
803										<#assign timeExpFormat = timeExpDate?string["HH:mm"]> 
804									<#else> 
805										<#assign timeExpDate = ""> 
806										<#assign timeExpFormat = ""> 
807									</#if> 
808									<#attempt> 
809										<#assign dataExp = despubDateNovetatAgenda?date["yyyy-MM-dd"]> 
810										 
811										<#if timeExpFormat?has_content && timeExpFormat != ""> 
812											<#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)> 
813											<#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))> 
814										</#if> 
815										<#assign dataExpMil = dataExp?long> 
816										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
817										<#assign isDespublishedNA = (dataExpMil - now) < 0 /> 
818									<#recover> 
819									</#attempt> 
820								</#if> 
821 
822								<#assign isExpiredNA = false> 
823								<#if journalArticle.expirationDate??> 
824									<#assign dataExp = journalArticle.expirationDate?datetime> 
825									<#attempt> 
826										<#assign dataExpMil = dataExp?long> 
827										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
828										<#assign isExpiredNA = (dataExpMil - now) < 0 /> 
829									<#recover> 
830									</#attempt> 
831								</#if> 
832 
833								<#assign showNovetatAgenda = false> 
834								<#if typeNovetatAgenda?has_content && typeNovetatAgenda == "1"> 
835									<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && !isDespublishedNA && isExpiredNovetatAgenda != "true"> 
836								<#else> 
837									<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && isExpiredNovetatAgenda != "true"> 
838								</#if> 
839 
840								<#if showNovetatAgenda> 
841									<#if title?has_content> 
842										<li class="hola-bcn-carrusel-standard_new-li"> 
843											<a ${newwindow} class="hola-bcn-carrusel-standard_new <#if isDespublishedNA>hola-bcn-carrusel-standard_new-finished</#if>" href="${articleURL}"> 
844												<div class="hola-bcn-carrusel-standard__card-cover"> 
845													<div class="hola-bcn-carrusel-standard__card-cover-filter"></div> 
846													<img class="hola-bcn-carrusel-standard__image" src="${imageNovetatAgenda}" <#if imageAltNovetatAgenda?has_content>alt="${imageAltNovetatAgenda}"<#else>alt=""</#if>> 
847													<div class="hola-bcn-carrusel-standard-finished-text" <#if isDespublishedNA>style="display: block;"</#if>> 
848														<span><@liferay.language key='label.bloc.novetatagenda.finished' /></span> 
849													</div> 
850													<#if filterNovetatAgenda?has_content> 
851														<div class="hola-bcn-carrusel-standard-highlight"> 
852															<span><@liferay.language key='label.bloc.novetatagenda.filter.${filterNovetatAgenda}' /></span> 
853														</div> 
854													</#if> 
855												</div> 
856												<div class="hola-bcn-carrusel-standard-container"> 
857													<div> 
858														<h3 class="hola-bcn-carrusel-standard__card-title"> 
859															${title} 
860															<#if newwindow?? && newwindow?has_content> 
861																<span class="icon-external-black" alt="Enllaç extern" title="(Obre una nova finestra)"></span> 
862															</#if> 
863														</h3> 
864														<span class="hola-bcn-carrusel-standard__card-description"> 
865															${subtitle} 
866														</span> 
867													</div> 
868													<#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content || (whereNovetatAgenda?has_content)> 
869														<div class="hola-bcn-carrusel-standard_bottom-extra"> 
870															<#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content> 
871																<div class="hola-bcn-carrusel-standard-date"> 
872																	<#if fromInitDateNovetatAgenda == "true"> 
873																		<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> 
874																	<#else> 
875																		<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> 
876																	</#if> 
877																</div> 
878															</#if> 
879															<#if whereNovetatAgenda?has_content> 
880																<div class="hola-bcn-carrusel-standard-where"> 
881																	<span><b><@liferay.language key='label.bloc.novetatagenda.where' /> <span class="hola-bcn-carrusel-standard-where-inner">${whereNovetatAgenda}</span></b></span> 
882																</div> 
883															</#if> 
884														</div> 
885													</#if> 
886												</div> 
887											</a> 
888										</li> 
889									</#if> 
890								</#if> 
891							</#if> 
892						</#list> 
893					</ul> 
894				</div> 
895			</div> 
896		</div> 
897	</section> 
898 
899	<script type="text/javascript"> 
900 
901		$(document).ready(function() { 
902			initSliderBcnStandard(); 
903		}); 
904 
905		function initSliderBcnStandard() { 
906			if($(".js__hola-bcn-standard-slider").hasClass('slick-initialized')) { 
907				$(".js__hola-bcn-standard-slider").slick("unslick"); 
908
909 
910			$('.js__hola-bcn-standard-slider').slick({ 
911				slidesToShow: 3, 
912				slidesToScroll: 1, 
913				arrows: false, 
914				dots: false, 
915				draggable: false, 
916				infinite: false, 
917				responsive: [ 
918
919						breakpoint: 767, 
920						settings: { 
921							variableWidth: true, 
922							slidesToShow: 2, 
923							slidesToScroll: 1, 
924							arrows: false, 
925							dots: true, 
926							draggable: true, 
927							infinite: true 
928
929
930
931			}); 
932
933 
934	</script> 
935</#if> 
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#1502536" 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#1502536" 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.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"> 
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 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.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"> 
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 newwindow = ""> 
642								<#if !isFundacio> 
643									<#if articleURL?contains("/fundacio-tmb")> 
644										<#assign link1 = articleURL?split("fundacio-tmb")> 
645										<#if (getterUtil.getInteger(link1?size)>0)> 
646											<#assign newwindow = "target='_blank'"> 
647											<#if articleURL?contains("pre3")> 
648												<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
649											<#else> 
650												<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
651											</#if> 
652										<#elseif getterUtil.getInteger(link1?size) == 0> 
653											<#assign newwindow = "target='_blank'"> 
654											<#if articleURL?contains("pre3")> 
655												<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage()> 
656											<#else> 
657												<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage()> 
658											</#if> 
659										</#if> 
660									</#if> 
661								<#else> 
662									<#if articleURL?contains("/web/tmb")> 
663										<#assign link1 = articleURL?split("web/tmb")> 
664										<#if (getterUtil.getInteger(link1?size)>0)> 
665											<#assign newwindow = "target='_blank'"> 
666											<#if articleURL?contains("pre3")> 
667												<#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage() + link1[1]> 
668											<#else> 
669												<#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage() + link1[1]> 
670											</#if> 
671										<#elseif getterUtil.getInteger(link1?size) == 0> 
672											<#assign newwindow = "target='_blank'"> 
673											<#if articleURL?contains("pre3")> 
674												<#assign articleURL = "https://pre3.tmb.cat/" + locale.getLanguage()> 
675											<#else> 
676												<#assign articleURL = "https://www.tmb.cat/" + locale.getLanguage()> 
677											</#if> 
678										</#if> 
679									</#if> 
680								</#if> 
681 
682								<#assign title = ""> 
683								<#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='titleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
684								<#if titleSel.selectSingleNode(rootElement)?has_content> 
685									<#assign title = titleSel.selectSingleNode(rootElement).getStringValue()> 
686								</#if> 
687								 
688								<#assign subtitle = ""> 
689								<#assign subtitleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='subtitleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
690								<#if subtitleSel.selectSingleNode(rootElement)?has_content> 
691									<#assign subtitle = subtitleSel.selectSingleNode(rootElement).getStringValue()> 
692								</#if> 
693 
694								<#assign initDateNovetatAgenda = ""> 
695								<#assign fromInitDateNovetatAgenda = ""> 
696								<#assign endDateNovetatAgenda = ""> 
697								<#assign whereNovetatAgenda = ""> 
698								<#assign novetatAgendaSel = rootElement.selectSingleNode("dynamic-element[@field-reference='blocInfoAgenda']")!""> 
699								<#if novetatAgendaSel?has_content> 
700									<#assign dateNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whenBlocInfoAgenda']")!""> 
701 
702									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
703										<#assign initDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
704									</#if> 
705 
706									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
707										<#assign fromInitDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
708									</#if> 
709 
710									<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
711										<#assign endDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
712									</#if> 
713 
714									<#assign whereNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whereBlocInfoAgenda']")!""> 
715									<#if whereNovetatAgendaSelSel?has_content && whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
716										<#assign whereNovetatAgenda = whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
717									</#if> 
718								</#if> 
719 
720								<#assign typeNovetatAgenda = ""> 
721								<#assign typeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='typeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
722								<#if typeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
723									<#assign typeNovetatAgenda = typeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
724								</#if> 
725 
726								<#assign filterNovetatAgenda = ""> 
727								<#assign filterNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='filterNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
728								<#if filterNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
729									<#assign filterNovetatAgenda = filterNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
730								</#if> 
731								 
732								<#assign imageNovetatAgenda = ""> 
733								<#assign imageNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='imageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
734								<#if imageNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
735									<#assign image = imageNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
736									<#assign imageUuid = jsonFactoryUtil.createJSONObject(image).uuid!""> 
737									<#assign imageNovetatAgenda = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + groupId + "/" + imageUuid> 
738								</#if> 
739 
740								<#assign imageAltNovetatAgenda = ""> 
741								<#assign imageAltNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='altImageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
742								<#if imageAltNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
743									<#assign imageAltNovetatAgenda = imageAltNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
744								</#if> 
745 
746								<#assign pubDateNovetatAgenda = ""> 
747								<#assign pubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
748								<#if pubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
749									<#assign pubDateNovetatAgenda = pubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
750								</#if> 
751 
752								<#assign pubTimeNovetatAgenda = ""> 
753								<#assign pubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
754								<#if pubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
755									<#assign pubTimeNovetatAgenda = pubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
756								</#if> 
757 
758								<#assign despubDateNovetatAgenda = ""> 
759								<#assign despubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
760								<#if despubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
761									<#assign despubDateNovetatAgenda = despubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
762								</#if> 
763 
764								<#assign despubTimeNovetatAgenda = ""> 
765								<#assign despubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
766								<#if despubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
767									<#assign despubTimeNovetatAgenda = despubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
768								</#if> 
769 
770								<#assign isExpiredNovetatAgenda = ""> 
771								<#assign isExpiredNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='isExpiredNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
772								<#if isExpiredNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
773									<#assign isExpiredNovetatAgenda = isExpiredNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
774								</#if> 
775 
776								<#assign isPublishedNA = false> 
777								<#if (pubDateNovetatAgenda?has_content)> 
778									<#if pubTimeNovetatAgenda?has_content> 
779										<#assign timeActDate = pubTimeNovetatAgenda?date["HH:mm"]> 
780										<#assign timeActFormat = timeActDate?string["HH:mm"]> 
781									<#else> 
782										<#assign timeActDate = ""> 
783										<#assign timeActFormat = ""> 
784									</#if> 
785									<#attempt>	 
786										<#assign dataAct = pubDateNovetatAgenda?date["yyyy-MM-dd"]> 
787										 
788										<#if timeActFormat?has_content && timeActFormat != ""> 
789											<#assign dataActMil = miliSeconds(timeActFormat dataAct?long)> 
790											<#assign dataAct = dateUtil.newDate(getterUtil.getLong(dataActMil))> 
791										</#if> 
792										<#assign dataActMil = dataAct?long> 
793										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
794										<#assign isPublishedNA = (dataActMil - now ) < 0 /> 
795									<#recover> 
796									</#attempt> 
797								</#if> 
798 
799								<#assign isDespublishedNA = false> 
800								<#if (despubDateNovetatAgenda?has_content)> 
801									<#if despubTimeNovetatAgenda?has_content> 
802										<#assign timeExpDate = despubTimeNovetatAgenda?date["HH:mm"]> 
803										<#assign timeExpFormat = timeExpDate?string["HH:mm"]> 
804									<#else> 
805										<#assign timeExpDate = ""> 
806										<#assign timeExpFormat = ""> 
807									</#if> 
808									<#attempt> 
809										<#assign dataExp = despubDateNovetatAgenda?date["yyyy-MM-dd"]> 
810										 
811										<#if timeExpFormat?has_content && timeExpFormat != ""> 
812											<#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)> 
813											<#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))> 
814										</#if> 
815										<#assign dataExpMil = dataExp?long> 
816										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
817										<#assign isDespublishedNA = (dataExpMil - now) < 0 /> 
818									<#recover> 
819									</#attempt> 
820								</#if> 
821 
822								<#assign isExpiredNA = false> 
823								<#if journalArticle.expirationDate??> 
824									<#assign dataExp = journalArticle.expirationDate?datetime> 
825									<#attempt> 
826										<#assign dataExpMil = dataExp?long> 
827										<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
828										<#assign isExpiredNA = (dataExpMil - now) < 0 /> 
829									<#recover> 
830									</#attempt> 
831								</#if> 
832 
833								<#assign showNovetatAgenda = false> 
834								<#if typeNovetatAgenda?has_content && typeNovetatAgenda == "1"> 
835									<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && !isDespublishedNA && isExpiredNovetatAgenda != "true"> 
836								<#else> 
837									<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && isExpiredNovetatAgenda != "true"> 
838								</#if> 
839 
840								<#if showNovetatAgenda> 
841									<#if title?has_content> 
842										<li class="hola-bcn-carrusel-standard_new-li"> 
843											<a ${newwindow} class="hola-bcn-carrusel-standard_new <#if isDespublishedNA>hola-bcn-carrusel-standard_new-finished</#if>" href="${articleURL}"> 
844												<div class="hola-bcn-carrusel-standard__card-cover"> 
845													<div class="hola-bcn-carrusel-standard__card-cover-filter"></div> 
846													<img class="hola-bcn-carrusel-standard__image" src="${imageNovetatAgenda}" <#if imageAltNovetatAgenda?has_content>alt="${imageAltNovetatAgenda}"<#else>alt=""</#if>> 
847													<div class="hola-bcn-carrusel-standard-finished-text" <#if isDespublishedNA>style="display: block;"</#if>> 
848														<span><@liferay.language key='label.bloc.novetatagenda.finished' /></span> 
849													</div> 
850													<#if filterNovetatAgenda?has_content> 
851														<div class="hola-bcn-carrusel-standard-highlight"> 
852															<span><@liferay.language key='label.bloc.novetatagenda.filter.${filterNovetatAgenda}' /></span> 
853														</div> 
854													</#if> 
855												</div> 
856												<div class="hola-bcn-carrusel-standard-container"> 
857													<div> 
858														<h3 class="hola-bcn-carrusel-standard__card-title"> 
859															${title} 
860															<#if newwindow?? && newwindow?has_content> 
861																<span class="icon-external-black" alt="Enllaç extern" title="(Obre una nova finestra)"></span> 
862															</#if> 
863														</h3> 
864														<span class="hola-bcn-carrusel-standard__card-description"> 
865															${subtitle} 
866														</span> 
867													</div> 
868													<#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content || (whereNovetatAgenda?has_content)> 
869														<div class="hola-bcn-carrusel-standard_bottom-extra"> 
870															<#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content> 
871																<div class="hola-bcn-carrusel-standard-date"> 
872																	<#if fromInitDateNovetatAgenda == "true"> 
873																		<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> 
874																	<#else> 
875																		<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> 
876																	</#if> 
877																</div> 
878															</#if> 
879															<#if whereNovetatAgenda?has_content> 
880																<div class="hola-bcn-carrusel-standard-where"> 
881																	<span><b><@liferay.language key='label.bloc.novetatagenda.where' /> <span class="hola-bcn-carrusel-standard-where-inner">${whereNovetatAgenda}</span></b></span> 
882																</div> 
883															</#if> 
884														</div> 
885													</#if> 
886												</div> 
887											</a> 
888										</li> 
889									</#if> 
890								</#if> 
891							</#if> 
892						</#list> 
893					</ul> 
894				</div> 
895			</div> 
896		</div> 
897	</section> 
898 
899	<script type="text/javascript"> 
900 
901		$(document).ready(function() { 
902			initSliderBcnStandard(); 
903		}); 
904 
905		function initSliderBcnStandard() { 
906			if($(".js__hola-bcn-standard-slider").hasClass('slick-initialized')) { 
907				$(".js__hola-bcn-standard-slider").slick("unslick"); 
908
909 
910			$('.js__hola-bcn-standard-slider').slick({ 
911				slidesToShow: 3, 
912				slidesToScroll: 1, 
913				arrows: false, 
914				dots: false, 
915				draggable: false, 
916				infinite: false, 
917				responsive: [ 
918
919						breakpoint: 767, 
920						settings: { 
921							variableWidth: true, 
922							slidesToShow: 2, 
923							slidesToScroll: 1, 
924							arrows: false, 
925							dots: true, 
926							draggable: true, 
927							infinite: true 
928
929
930
931			}); 
932
933 
934	</script> 
935</#if>