Come and play piano in Diagonal!

A pilot project to host a piano permanently and bring music closer to the users.

When: From 23.03.2025


Where: Diagonal Station


Access: Access valdating the transport ticket

Transports Metropolitans de Barcelona (TMB) through its Foundation has once again collaborated with the prestigious Maria Canals Piano Competition, which took place from March 23 to April 3.

This edition celebrated the 70th anniversary of the competition with an exhibition titled Maria Canals, a competition with soul and the Centenary of the metro.

At the Espai Mercè Sala, two pianos were placed: a grand piano, like the one installed in previous years, which was available to the public, choirs, and music schools for 15 days, and a second upright piano, which was installed with the intention of remaining there permanently.

A pilot project to bring music closer to all users.

Taking advantage of both celebrations, the two organizations started the experience of leaving a piano permanently in the lobby of the L5 at Diagonal station.

The piano invites passengers to accept the challenge of stopping, sitting down, and playing its keys. If the initiative is evaluated positively, the plan is for the upright piano to stay permanently in the network so that anyone who wishes can play it.

For now, this is a pilot project aimed at improving the travel experience. We hope the results are positive, and that we can enjoy piano musical performances in the metro for a long time.

We are opening the Espai Mercè Sala for La Nit dels Museus (The Museum Night)

Visit us on the night from 17th to 18th May.

When: 17.05.2025


Where: Espai Mercè Sala (Diagonal station)


Access: Free access with transportation ticket validation.

Once again, TMB joins La Nit dels Museus (The Night of the Museums) by opening the exhibition hall of Diagonal station to the public.

Have you ever entered a museum when night falls? On Saturday, May 17th, from 7:00 PM to 1:00 AM, you have the chance to do so! La Nit dels Museus arrives with a new edition full of proposals and experiences across 94 spaces. In addition to the open doors, you'll find up to 94 extraordinary activities, ranging from concerts and recitals to mapping projections, workshops, and performances, as well as guided tours that will give a new dimension to the collections and exhibitions.

This year, new venues that did not participate last year are included, and spaces from Badalona, Cornellà de Llobregat, Esplugues de Llobregat, L'Hospitalet de Llobregat, Sant Adrià de Besòs, Santa Coloma de Gramenet, and Sant Joan Despí are also participating again, opening their doors to make this evening a great event.

So now you know: check the program, plan your route, and make sure to find out if you need to make a reservation in advance for any activity.

We are presenting the exhibitionMaria Canals, a contest with soul

The Maria Canals International Piano Competition and TMB celebrate together, after a long collaboration, three anniversaries arriving hand in hand in 2025: the hundredth anniversary of the Barcelona metro, the fifteenth anniversary of Espai Mercè Sala, and the 70th anniversary of the musical contest.

To celebrate, Espai Mercè Sala hosts a commemorative exhibition of the Maria Canals competition, which can be seen until June 21.

This exhibition reviews all the activities and milestones achieved over time as a promoter of professional performers, as well as its educational and social work, with the aim of highlighting the vitality of the project in the present.

Visit this photographic retrospective, which includes quotes and brief audiovisuals that pay tribute to the people who have been part of the competition's history, founded in 1954 by pianist and pedagogue Maria Canals.

Discover more on the exhibition's webpage.

Come to the exhibit... and play the piano!

This special evening will be enlivened with the piano music that the Maria Canals association has donated to TMB, and which is located in front of Espai Mercè Sala.

During the event, the piano will feature spontaneous performers and associations of friends and music lovers such as Orpheus (classical music), AMUC (Metro and Street Musicians), and Taller de Músics, creating an open jam session for anyone who wants to join.

We look forward to seeing you there!

An error occurred while processing the template.
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> 
An error occurred while processing the template.
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> 
An error occurred while processing the template.
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>