Novedades y agenda

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>
Siente el metro
Para visualizar este vídeo de YouTube, debes aceptar las cookies de marketing y de redes sociales. ¡Gracias!
Centenario del Metro de Barcelona
Barcelona celebra cien años de la entrada en servicio del Gran Metro, la primera línea de metro de la ciudad.
¡Descubre todo lo que hemos preparado para celebrarlo!
Cerrar
© OpenStreetMap contributors