-
Se ha producido un error al procesar la plantilla.
The string doesn't match the expected date/time/date-time format. The string to parse was: "08.00". The expected format was: "HH:mm".
The nested reason given follows:
Unparseable date: "08.00"

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign timeActDate = pubTimeNovetatA...  [in template "20155#20195#1502331" at line 81, column 41]
----
1<#assign imagesFolder = themeDisplay.getPathThemeImages()> 
2<#assign groupId = getterUtil.getLong(groupId)> 
3<#assign group = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService").getGroup(groupId)> 
4<#assign colorClass = "hola-bcn-carrusel-standard--gray" /> 
5<#assign fullBody = "full-body__container" /> 
6<#assign isFundacio = false> 
7<#if currentURL?contains("fundacio")> 
8	<#assign isFundacio = true> 
9</#if> 
10 
11<#-- Sorting. ------------------------------------------------------------> 
12<#assign entriesMapList = []> 
13<#assign entriesMapListDespublished = []> 
14<#foreach currEntry in entries> 
15	<#assign renderer = currEntry.getAssetRenderer()> 
16	<#assign className = currEntry.getClassName()> 
17	<#if className == "com.liferay.journal.model.JournalArticle"> 
18		<#assign journalArticle = renderer.getArticle()> 
19		<#assign document = saxReaderUtil.read(journalArticle.getContent())> 
20		<#assign rootElement = document.getRootElement()> 
21 
22		<#assign tags = currEntry.getTags()> 
23        <#assign hasActivitatDestacadaTag = false> 
24        <#if tags?has_content> 
25            <#list tags as tag> 
26                <#if tag.name?? && tag.name == "activitat-destacada"> 
27                    <#assign hasActivitatDestacadaTag = true> 
28                </#if> 
29            </#list> 
30        </#if> 
31 
32		<#if !hasActivitatDestacadaTag> 
33			<#assign currentOrder = ""> 
34			<#assign orderSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='orderNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")>	 
35			<#if orderSel.selectSingleNode(rootElement)?has_content> 
36				<#assign currentOrder = orderSel.selectSingleNode(rootElement).getStringValue()> 
37			</#if> 
38			<#if !currentOrder?has_content || currentOrder == "null" > 
39				<#assign currentOrder = "99"> 
40			</#if> 
41 
42			<#assign typeNovetatAgenda = ""> 
43			<#assign typeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='typeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
44			<#if typeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
45				<#assign typeNovetatAgenda = typeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
46			</#if> 
47 
48			<#assign pubDateNovetatAgenda = ""> 
49			<#assign pubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
50			<#if pubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
51				<#assign pubDateNovetatAgenda = pubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
52			</#if> 
53 
54			<#assign pubTimeNovetatAgenda = ""> 
55			<#assign pubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='pubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
56			<#if pubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
57				<#assign pubTimeNovetatAgenda = pubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
58			</#if> 
59 
60			<#assign despubDateNovetatAgenda = ""> 
61			<#assign despubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
62			<#if despubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
63				<#assign despubDateNovetatAgenda = despubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
64			</#if> 
65 
66			<#assign despubTimeNovetatAgenda = ""> 
67			<#assign despubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
68			<#if despubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
69				<#assign despubTimeNovetatAgenda = despubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
70			</#if> 
71 
72			<#assign isExpiredNovetatAgenda = ""> 
73			<#assign isExpiredNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='isExpiredNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
74			<#if isExpiredNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
75				<#assign isExpiredNovetatAgenda = isExpiredNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
76			</#if> 
77 
78			<#assign isPublishedNA = false> 
79			<#if (pubDateNovetatAgenda?has_content)> 
80				<#if pubTimeNovetatAgenda?has_content> 
81					<#assign timeActDate = pubTimeNovetatAgenda?date["HH:mm"]> 
82					<#assign timeActFormat = timeActDate?string["HH:mm"]> 
83				<#else> 
84					<#assign timeActDate = ""> 
85					<#assign timeActFormat = ""> 
86				</#if> 
87				<#attempt>	 
88					<#assign dataAct = pubDateNovetatAgenda?date["yyyy-MM-dd"]> 
89					 
90					<#if timeActFormat?has_content && timeActFormat != ""> 
91						<#assign dataActMil = miliSeconds(timeActFormat dataAct?long)> 
92						<#assign dataAct = dateUtil.newDate(getterUtil.getLong(dataActMil))> 
93					</#if> 
94					<#assign dataActMil = dataAct?long> 
95					<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
96					<#assign isPublishedNA = (dataActMil - now ) < 0 /> 
97				<#recover> 
98				</#attempt> 
99			</#if> 
100 
101			<#assign isDespublishedNA = false> 
102			<#assign dataDespubMil = 4000000000000> 
103			<#if (despubDateNovetatAgenda?has_content)> 
104				<#if despubTimeNovetatAgenda?has_content> 
105					<#assign timeExpDate = despubTimeNovetatAgenda?date["HH:mm"]> 
106					<#assign timeExpFormat = timeExpDate?string["HH:mm"]> 
107				<#else> 
108					<#assign timeExpDate = ""> 
109					<#assign timeExpFormat = ""> 
110				</#if> 
111				<#attempt> 
112					<#assign dataExp = despubDateNovetatAgenda?date["yyyy-MM-dd"]> 
113					 
114					<#if timeExpFormat?has_content && timeExpFormat != ""> 
115						<#assign dataDespubMil = miliSeconds(timeExpFormat dataExp?long)> 
116						<#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataDespubMil))> 
117					</#if> 
118					<#assign dataDespubMil = dataExp?long> 
119					<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
120					<#assign isDespublishedNA = (dataDespubMil - now) < 0 /> 
121				<#recover> 
122				</#attempt> 
123			</#if> 
124 
125			<#assign isExpiredNA = false> 
126			<#if journalArticle.expirationDate??> 
127				<#assign dataExp = journalArticle.expirationDate?datetime> 
128				<#attempt> 
129					<#assign dataExpMil = dataExp?long> 
130					<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
131					<#assign isExpiredNA = (dataExpMil - now) < 0 /> 
132				<#recover> 
133				</#attempt> 
134			</#if> 
135 
136			<#assign showNovetatAgenda = false> 
137			<#if typeNovetatAgenda?has_content && typeNovetatAgenda == "1"> 
138				<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && !isDespublishedNA && isExpiredNovetatAgenda != "true"> 
139			<#else> 
140				<#assign showNovetatAgenda = isPublishedNA && !isExpiredNA && isExpiredNovetatAgenda != "true"> 
141			</#if> 
142 
143			<#if showNovetatAgenda> 
144				<#if isDespublishedNA> 
145					<#assign currEntryMap = {"entry" : currEntry , "order" : dataDespubMil?number}> 
146					<#assign entriesMapListDespublished = entriesMapListDespublished + [currEntryMap]> 
147				<#else> 
148					<#assign currEntryMap = {"entry" : currEntry , "order" : currentOrder?number}> 
149					<#assign entriesMapList = entriesMapList + [currEntryMap]> 
150				</#if> 
151			</#if> 
152		</#if> 
153	</#if> 
154</#foreach> 
155<#assign sortedEntriesMapList = entriesMapList?sort_by("order")> 
156<#assign sortedEntriesRootElems = []> 
157<#foreach currEntryMap in sortedEntriesMapList> 
158	<#assign sortedEntriesRootElems = sortedEntriesRootElems + [currEntryMap.entry]> 
159</#foreach> 
160<#assign sortedEntriesMapListDespublished = entriesMapListDespublished?sort_by("order")?reverse> 
161<#foreach currEntryMap in sortedEntriesMapListDespublished> 
162	<#assign sortedEntriesRootElems = sortedEntriesRootElems + [currEntryMap.entry]> 
163</#foreach> 
164<#-- END Sorting. --------------------------------------------------------> 
165 
166<#function miliSeconds dateString firstDate> 
167	<#assign params = dateString?split(":")> 
168	 
169	<#if params?size == 2> 
170		<#assign param1 = params[0]> 
171		<#assign param2 = params[1]> 
172		<#assign param1 = getterUtil.getLong(param1)*3600000> 
173		<#assign param2 = getterUtil.getLong(param2)*60000> 
174		<#assign finalMilSec = param1 + param2> 
175		<#assign finalMilSecLong = getterUtil.getLong(finalMilSec)> 
176		<#assign resultLong = firstDate + finalMilSecLong> 
177		 
178		<#return resultLong> 
179	</#if> 
180</#function> 
181 
182<#assign filterNumberList = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]> 
183 
184<section class="hola-bcn-carrusel-standard ${colorClass}"> 
185	<div class="hola-bcn-carrusel-standard-cont-ext hola-bcn-carrusel-standard-cont-ext-extra hola-bcn-carrusel-standard-cont-ext-grid ${fullBody}"> 
186		<div class="hola-bcn-carrusel-standard--container"> 
187			<div class=""> 
188				<h2 class="title title--1 assets-novetat-agenda-title"><@liferay.language key='label.bloc.novetatagenda.title.grid' /></h2> 
189			</div> 
190			<div class="assets-novetat-agenda-filter-container"> 
191				<ul class="assets-novetat-agenda-filter-list js_novetat-agenda-list"> 
192					<#list filterNumberList as filterNumber> 
193						<li> 
194							<button class="assets-novetat-agenda-filter-element" data-filter="${filterNumber}" onclick="javascript:handleFilteringNovetatAgenda(this);"> 
195								<@liferay.language key='label.bloc.novetatagenda.filter.${filterNumber}' /> 
196							</button> 
197						</li> 
198					</#list> 
199				</ul> 
200			</div> 
201			<div class="hola-bcn-carrusel-standard--outer mt-32"> 
202			<#if sortedEntriesRootElems?has_content> 
203				<#assign today = .now?date> 
204				<ul class="hola-bcn-carrusel-standard__items"> 
205					<#foreach curEntry in sortedEntriesRootElems> 
206						<#assign renderer = curEntry.getAssetRenderer()> 
207						<#assign className = renderer.getClassName()> 
208						<#assign dataPub = ""> 
209						<#assign dataDespub = ""> 
210						<#assign isExpired = false> 
211						<#if className == "com.liferay.journal.model.JournalArticle"> 
212							<#assign journalArticle = renderer.getArticle()> 
213							<#assign journalArticleId = journalArticle.getArticleId()> 
214							<#assign document = saxReaderUtil.read(journalArticle.getContent())> 
215							<#assign rootElement = document.getRootElement()> 
216							<#assign articleURL = renderer.getURLViewInContext(renderRequest, renderResponse, "")> 
217							<#assign newwindow = ""> 
218							<#if !isFundacio> 
219								<#if articleURL?contains("/fundacio-tmb")> 
220									<#assign link1 = articleURL?split("fundacio-tmb")> 
221									<#if (getterUtil.getInteger(link1?size)>0)> 
222										<#assign newwindow = "target='_blank'"> 
223										<#if articleURL?contains("pre3")> 
224											<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
225										<#else> 
226											<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage() + link1[1]> 
227										</#if> 
228									<#elseif getterUtil.getInteger(link1?size) == 0> 
229										<#assign newwindow = "target='_blank'"> 
230										<#if articleURL?contains("pre3")> 
231											<#assign articleURL = "https://pre3-fundacio.tmb.cat/" + locale.getLanguage()> 
232										<#else> 
233											<#assign articleURL = "https://fundacio.tmb.cat/" + locale.getLanguage()> 
234										</#if> 
235									</#if> 
236								</#if> 
237							</#if> 
238 
239							<#assign title = ""> 
240							<#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='titleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
241							<#if titleSel.selectSingleNode(rootElement)?has_content> 
242								<#assign title = titleSel.selectSingleNode(rootElement).getStringValue()> 
243							</#if> 
244							 
245							<#assign subtitle = ""> 
246							<#assign subtitleSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='subtitleGlobal']/dynamic-content[@language-id='" + locale + "']")> 
247							<#if subtitleSel.selectSingleNode(rootElement)?has_content> 
248								<#assign subtitle = subtitleSel.selectSingleNode(rootElement).getStringValue()> 
249							</#if> 
250 
251							<#assign initDateNovetatAgenda = ""> 
252							<#assign fromInitDateNovetatAgenda = ""> 
253							<#assign endDateNovetatAgenda = ""> 
254							<#assign whereNovetatAgenda = ""> 
255							<#assign novetatAgendaSel = rootElement.selectSingleNode("dynamic-element[@field-reference='blocInfoAgenda']")!""> 
256							<#if novetatAgendaSel?has_content> 
257								<#assign dateNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whenBlocInfoAgenda']")!""> 
258 
259								<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
260									<#assign initDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='initDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
261								</#if> 
262 
263								<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
264									<#assign fromInitDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='fromInitDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
265								</#if> 
266 
267								<#if dateNovetatAgendaSelSel?has_content && dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
268									<#assign endDateNovetatAgenda = dateNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='endDateBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
269								</#if> 
270 
271								<#assign whereNovetatAgendaSelSel = novetatAgendaSel.selectSingleNode("dynamic-element[@field-reference='whereBlocInfoAgenda']")!""> 
272								<#if whereNovetatAgendaSelSel?has_content && whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']")?has_content> 
273									<#assign whereNovetatAgenda = whereNovetatAgendaSelSel.selectSingleNode("dynamic-element[@field-reference='textWhereBlocInfoAgenda']/dynamic-content[@language-id='" + locale + "']").getStringValue()> 
274								</#if> 
275							</#if> 
276 
277							<#assign typeNovetatAgenda = ""> 
278							<#assign typeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='typeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
279							<#if typeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
280								<#assign typeNovetatAgenda = typeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
281							</#if> 
282 
283							<#assign filterNovetatAgenda = ""> 
284							<#assign filterNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='filterNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
285							<#if filterNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
286								<#assign filterNovetatAgenda = filterNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
287							</#if> 
288							 
289							<#assign imageNovetatAgenda = ""> 
290							<#assign imageNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='imageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
291							<#if imageNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
292								<#assign image = imageNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
293								<#assign imageNovetatAgenda = jsonFactoryUtil.createJSONObject(image).url!"">				 
294								<#if imageNovetatAgenda == ""> 
295									<#assign imageUuid = jsonFactoryUtil.createJSONObject(image).uuid!""> 
296									<#assign imageGroupId = jsonFactoryUtil.createJSONObject(image).groupId!themeDisplay.getScopeGroupId()> 
297									<#assign imageNovetatAgenda = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + imageGroupId + "/" + imageUuid>	 
298								</#if> 
299							</#if> 
300 
301							<#assign imageAltNovetatAgenda = ""> 
302							<#assign imageAltNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='altImageCardNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
303							<#if imageAltNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
304								<#assign imageAltNovetatAgenda = imageAltNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
305							</#if> 
306 
307							 <#assign despubDateNovetatAgenda = ""> 
308							<#assign despubDateNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubDateNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
309							<#if despubDateNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
310								<#assign despubDateNovetatAgenda = despubDateNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
311							</#if>   
312  
313							<#assign despubTimeNovetatAgenda = ""> 
314							<#assign despubTimeNovetatAgendaSel = saxReaderUtil.createXPath("dynamic-element[@field-reference='despubTimeNovetatAgenda']/dynamic-content[@language-id='" + locale + "']")> 
315							<#if despubTimeNovetatAgendaSel.selectSingleNode(rootElement)?has_content> 
316								<#assign despubTimeNovetatAgenda = despubTimeNovetatAgendaSel.selectSingleNode(rootElement).getStringValue()> 
317							</#if> 
318 
319							<#assign isDespublishedNA = false> 
320							<#if (despubDateNovetatAgenda?has_content)> 
321								<#if despubTimeNovetatAgenda?has_content> 
322									<#assign timeExpDate = despubTimeNovetatAgenda?date["HH:mm"]> 
323									<#assign timeExpFormat = timeExpDate?string["HH:mm"]> 
324								<#else> 
325									<#assign timeExpDate = ""> 
326									<#assign timeExpFormat = ""> 
327								</#if> 
328								<#attempt> 
329									<#assign dataExp = despubDateNovetatAgenda?date["yyyy-MM-dd"]> 
330									 
331									<#if timeExpFormat?has_content && timeExpFormat != ""> 
332										<#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)> 
333										<#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))> 
334									</#if> 
335									<#assign dataExpMil = dataExp?long> 
336									<#assign now = .now?long+timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(.now?long)> 
337									<#assign isDespublishedNA = (dataExpMil - now) < 0 /> 
338								<#recover> 
339								</#attempt> 
340							</#if> 
341 
342							<#if title?has_content> 
343								<li class="hola-bcn-carrusel-standard_new-li assets-novetat-agenda-element" data-filter="<#if filterNovetatAgenda?has_content>${filterNovetatAgenda}</#if>"> 
344									<a ${newwindow} class="hola-bcn-carrusel-standard_new <#if isDespublishedNA>hola-bcn-carrusel-standard_new-finished</#if>" href="${articleURL}"> 
345										<div class="hola-bcn-carrusel-standard__card-cover"> 
346											<div class="hola-bcn-carrusel-standard__card-cover-filter"></div> 
347											<img class="hola-bcn-carrusel-standard__image" src="${imageNovetatAgenda}" <#if imageAltNovetatAgenda?has_content>alt="${imageAltNovetatAgenda}"<#else>alt=""</#if>> 
348											<div class="hola-bcn-carrusel-standard-finished-text" <#if isDespublishedNA>style="display: block;"</#if>> 
349												<span><@liferay.language key='label.bloc.novetatagenda.finished' /></span> 
350											</div> 
351											<#if filterNovetatAgenda?has_content> 
352												<div class="hola-bcn-carrusel-standard-highlight"> 
353													<span><@liferay.language key='label.bloc.novetatagenda.filter.${filterNovetatAgenda}' /></span> 
354												</div> 
355											</#if> 
356										</div> 
357										<div class="hola-bcn-carrusel-standard-container"> 
358											<div> 
359												<h3 class="hola-bcn-carrusel-standard__card-title"> 
360													${title} 
361													<#if newwindow?? && newwindow?has_content> 
362														<span class="icon-external-black" alt="Enllaç extern" title="(Obre una nova finestra)"></span> 
363													</#if> 
364												</h3> 
365												<span class="hola-bcn-carrusel-standard__card-description"> 
366													${subtitle} 
367												</span> 
368											</div> 
369											<#if (initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content) || (whereNovetatAgenda?has_content)> 
370												<div class="hola-bcn-carrusel-standard_bottom-extra"> 
371													<#if initDateNovetatAgenda?has_content || endDateNovetatAgenda?has_content> 
372														<div class="hola-bcn-carrusel-standard-date"> 
373															<#if fromInitDateNovetatAgenda == "true"> 
374																<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> 
375															<#else> 
376																<#if initDateNovetatAgenda?has_content && !endDateNovetatAgenda?has_content> 
377																	<span><b><@liferay.language key='label.bloc.novetatagenda.when' /></b> ${initDateNovetatAgenda?date["yyyy-MM-dd"]?string("dd/MM/yyyy")}</span> 
378																<#else> 
379																	<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> 
380																</#if> 
381															</#if> 
382														</div> 
383													</#if> 
384													<#if whereNovetatAgenda?has_content> 
385														<div class="hola-bcn-carrusel-standard-where"> 
386															<span><b><@liferay.language key='label.bloc.novetatagenda.where' /> <span class="hola-bcn-carrusel-standard-where-inner">${whereNovetatAgenda}</span></b></span> 
387														</div> 
388													</#if> 
389												</div> 
390											</#if> 
391										</div> 
392									</a> 
393								</li> 
394							</#if> 
395						</#if> 
396					</#foreach> 
397				</ul> 
398				<div class="result-notfound-novetat-agenda"> 
399					<span><@liferay.language key='label.bloc-novetatagenda.notfound' /></span> 
400				</div> 
401				<div class="load-more assets-novetat-agenda-showmore"> 
402					<a href="javascript:void(0);" class="button button--a" onclick="paginateNovetatAgenda();"><@liferay.language key='view.more' /></a> 
403				</div> 
404			<#else> 
405				<div class="result-notfound-novetat-agenda"> 
406					<span><@liferay.language key='label.bloc-novetatagenda.notfound' /></span> 
407				</div> 
408			</#if> 
409			</div> 
410		</div> 
411	</div> 
412</section> 
413 
414<script> 
415	const ELEMENTS_PER_PAGE = 6; 
416 
417	handleFilteringNovetatAgenda($('.assets-novetat-agenda-filter-element').first()) 
418	slickAssetsNovetatsIAgenda(); 
419 
420	function handleFilteringNovetatAgenda(element) { 
421		$('.assets-novetat-agenda-filter-element').removeClass('checked'); 
422		$(element).addClass('checked'); 
423 
424		paginateNovetatAgenda(true); 
425
426 
427	function paginateNovetatAgenda(isInitial) { 
428		var actualElements = $('.assets-novetat-agenda-element.db').length; 
429		var maxElements = isInitial ? ELEMENTS_PER_PAGE : Math.trunc((actualElements / ELEMENTS_PER_PAGE) + 1) * ELEMENTS_PER_PAGE; 
430		var selectedFilter = $('.assets-novetat-agenda-filter-element.checked').length > 0 ? $('.assets-novetat-agenda-filter-element.checked').data('filter') : "1"; 
431		var qttElementsLoop = 0; 
432		$('.assets-novetat-agenda-element').each(function(index, item){ 
433			var filter = $(item).data("filter"); 
434			if(selectedFilter === filter || selectedFilter == "1"){ 
435				if(qttElementsLoop < maxElements) { 
436					$(item).addClass('db'); 
437					$(item).removeClass('dn'); 
438				} else { 
439					$(item).addClass('dn'); 
440					$(item).removeClass('db'); 
441
442				qttElementsLoop++; 
443			} else{ 
444				$(item).addClass('dn'); 
445				$(item).removeClass('db'); 
446
447		}); 
448 
449		if(qttElementsLoop > maxElements) { 
450			$('.assets-novetat-agenda-showmore').show(); 
451		} else { 
452			$('.assets-novetat-agenda-showmore').hide(); 
453
454 
455		if(qttElementsLoop > 0) { 
456			$('.result-notfound-novetat-agenda').hide(); 
457		} else { 
458			$('.result-notfound-novetat-agenda').show(); 
459
460
461 
462	function slickAssetsNovetatsIAgenda() { 
463		if($(".js_novetat-agenda-list").hasClass('slick-initialized')) { 
464            $(".js_novetat-agenda-list").slick("unslick"); 
465
466        $('.js_novetat-agenda-list .slick-toggle-play').remove(); 
467    	 
468		$('.js_novetat-agenda-list').slick({ 
469			arrows: true, 
470			dots: false, 
471			infinite: false, 
472			variableWidth: true, 
473			draggable: true, 
474			slidesToShow: 8, 
475			slidesToScroll: 3, 
476			nextArrow: '<button type="button" class="slick-next"><img class="slick-next__icon" src="${imagesFolder}/basic/24px/svg/chevron_right_red.svg" alt="Següent" title="Següent"/></button>', 
477			prevArrow: '<button type="button" class="slick-prev"><img class="slick-prev__icon" src="${imagesFolder}/basic/24px/svg/chevron_left_red.svg" alt="Anterior" title="Anterior"/></button>', 
478			responsive: [ 
479
480					breakpoint: 768, 
481					settings: { 
482						arrows: false, 
483						slidesToShow: 2, 
484						slidesToScroll: 2 
485
486
487
488		}); 
489
490 
491</script> 
Cerrar
© OpenStreetMap contributors
Volver arriba

¿Confirmas que quieres eliminar '{0}' de tus favoritos?

Recuerda que perderás la alerta que te permite recibir información de las alteraciones que se producen en esta línea

Has añadido la línea '{0}' a tus favoritos

Puedes activar una alerta para recibir en tu correo electrónico o en el móvil la información actualizada sobre las alteraciones programadas para esta línea:

No has activado ninguna alerta

¿Confirmas que quieres desactivar las alertas de tus favoritos?

Esta acción silenciará temporalmente todas las alertas que tienes configuradas, hasta que decidas volverlas a activar.

Has añadido la parada '{0}' a tus favoritos

Cambia el nombre de la parada para identificarla más fácilmente

Puedes activar una alerta para recibir en tu correo electrónico o en el móvil la información actualizada sobre las alteraciones programadas para esta línea::

No has activado ninguna alerta

Registrarse

Regístrate ahora y disfruta de todas las ventajas de JoTMBé

  • Una experiencia web personalizada

  • Configura alertas para tus líneas, paradas y estaciones favoritas

  • Agiliza tus búsquedas mediante tus sitios y trayectos

  • Gana premios y recompensas con el Programa de Puntos

O bien introduce tus datos

Contraseña muy débil

Contraseña débil
Contraseña básica
Contraseña segura
Contraseña muy segura
Requisitos mínimos de tu contraseña:
- Debe contener un mínimo de 8 caracteres
- Debe ser distinta del nombre de usuario
- Debe ser poco habitual, no vulnerable

¡Ya casi está! Confirma tu dirección de correo electrónico

Confirma tu dirección de correo electrónico

Hemos enviado un correo electrónico a la dirección para que puedas activar tu cuenta de usuario.

¿No lo has recibido?
Vuelve a enviar el correo electrónico

Condiciones del servicio

¿Ya tienes cuenta? Inicia la sesión

Todavía no has elegido ninguna contraseña. Hemos enviado un correo electrónico a emaildeusuari@gmail.com a través del cual podrás hacerlo.

Has configurado una alerta

Recuerda que puedes gestionar las alertas desde la sección Mis favoritos

label.jotmbe.modal.confirm-a2.title

Si también quieres recibir las alteraciones de circulación de la línea, debes añadirla a tus favoritos
Recuerda que puedes gestionar las alertas desde las sección tus favoritos

Has eliminado la {0} '{1}' de tus favoritos

Recuerda que puedes gestionar las alertas desde la sección Mis favoritos

Has eliminado tu cuenta de usuario

Has modificado tu perfil

Has modificado tus datos de acceso

Recuerda que la próxima vez que accedas a JoTMBé deberás hacerlo con los datos nuevos

Te hemos enviado un correo electrónico para restablecer la contraseña a la dirección de correo electrónico {0}.

Has modificado tu contraseña de acceso

Ya estás registrado como usuario nuevo de JoTMBé

Ya puedes guardar lugares y trayectos y añadir líneas, paradas y estaciones como favoritas. Así ganarás agilidad a la hora de realizar tus búsquedas y recibirás solo aquella información que te interesa.

Has eliminado esta dirección de tus lugares

Recuerda que puedes gestionar tus sitios y trayectos desde la sección Lugares y trayectos

Has eliminado este trayecto de tus trayectos

Recuerda que puedes gestionar tus sitios y trayectos desde la sección Lugares y trayectos

Restablecer la contraseña

¿Has olvidado tu contraseña?
Introduce la dirección de correo electrónico asociada a tu cuenta y te mandaremos un enlace para que puedas restablecer tu contraseña

¿Confirmas que quieres eliminar '{0}' de tus favoritos?

Recuerda que perderás la alerta que te permite recibir información de las alteraciones que se producen en esta línea

¿Confirmas que quieres eliminar tu cuenta de usuario?

Recuerda que perderás toda la información relacionada con tu cuenta y no podrás recibir información actualizada ni agilizar tus búsquedas

¿Confirmas que quieres eliminar esta dirección de tus lugares?

Recuerda que perderás la posibilidad de realizar búsquedas de una forma más ágil con este lugar

¿Confirmas que quieres eliminar este trayecto de tus trayectos?

Recuerda que perderás la posibilidad de realizar búsquedas de una forma más ágil con este trayecto

¿Confirmas que quieres eliminar esta dirección de tus lugares?

Recuerda que perderás la posibilidad de llevar a cabo búsquedas de una forma más ágil con este lugar

¿Confirmas que quieres eliminar este trayecto de tus trayectos?

Recuerda que perderás la posibilidad de llevar a cabo búsquedas de una forma más ágil con este trayecto

¿Confirmas que quieres eliminar '{0}' de tus favoritos?

Has añadido la parada ’{0}’ a tus favoritos

Recuerda que si también quieres recibir las alteraciones de circulación de la línea, debes añadirla a tus favoritos.


No has activado ninguna alerta

Guarda lugares para agilizar tus búsquedas

Introduce un alias como "casa" o "trabajo"

Registro de actividades de este tratamiento

Guarda lugares para agilizar tus búsquedas

Lugar

Error

Introduce un alias como "casa" o "trabajo"

Registro de actividades de este tratamiento

Has añadido la parada ’{0}’ a tus favoritos

Recuerda que si también quieres recibir las alteraciones de circulación de la línea, debes añadirla a tus favoritos.


No has activado ninguna alerta

Guarda lugares para agilizar tus búsquedas

Lugar

Error

Introduce un alias como "casa" o "trabajo"

Registro de actividades de este tratamiento

Guarda trayectos para agilizar tus búsquedas

Introduce un alias como "casa" o "trabajo"

Registro de actividades de este tratamiento

Guarda tus lugares y trayectos para agilizar tus búsquedas

Lugar

Error

Introduce un alias como "casa" o "trabajo"

Lugar

Error

Introduce un alias como "casa" o "trabajo"

Trayecto

Desde Carrer dels Penitents 7, Barcelona

Hasta Plaça de Catalunya 4, Barcelona

Introduce un alias como "casa" o "trabajo"

Registro de actividades de este tratamiento

Has añadido la parada ’{0}’ a tus favoritos

No se ha podido modificar la configuración en las notificaciones.

Debido a un problema de la comunicación con el servidor de TMB, no se han podido guardar los cambios realizados en la configuración de las notificaciones. Inténtalo más tarde y disculpa las molestias.

Se ha producido un error

Debido a un problema de la comunicación con el servidor de TMB, no se han podido guardar los cambios realizados en la configuración de las notificaciones. Inténtalo más tarde y disculpa las molestias.

App Icon

Descárgate TMB App

La app que se lleva