Avisos de servei
T’ajudem a planificar el teu trajecte amb informació actualitzada sobre afectacions al servei de metro i de bus i recomanacions de transport.
S'ha produït un error mentre es processava la plantilla.
Java method "com.sun.proxy.$Proxy831.getArticleDisplay(long, String, String, String, com.liferay.portal.kernel.theme.ThemeDisplay)" threw an exception when invoked on com.sun.proxy.$Proxy831 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@6de602b9"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign webContent = journalArticleLo... [in template "20155#20195#94836" at line 132, column 9] ----
1<#assign imagesFolder = themeDisplay.getPathThemeImages()>
2<#macro myDisplayDate(start, end, fromDate)>
3 <#assign result = "">
4 <#if start?has_content && end?has_content>
5 <#assign result = languageUtil.get(locale,'events.date.from') + " " + start + " " + languageUtil.get(locale,'events.date.to') + " " + end>
6 </#if>
7 <#if !end?has_content>
8 <#if getterUtil.getBoolean(fromDate)>
9 <#assign result = languageUtil.get(locale,'events.date.starting') + " " + start>
10 <#else>
11 <#assign result = start>
12 </#if>
13 </#if>
14
15 ${result}
16</#macro>
17<#---->
18<#-- Request parameters-->
19<#---->
20<#assign weekend = portalUtil.getOriginalServletRequest(request).getParameter("s")!"">
21<#assign type = portalUtil.getOriginalServletRequest(request).getParameter("t")!"">
22<#assign date = portalUtil.getOriginalServletRequest(request).getParameter("d")!"">
23<#assign q = portalUtil.getOriginalServletRequest(request).getParameter("q")!"">
24<#assign today = .now>
25<#if !weekend?has_content>
26 <#assign weekend = "">
27</#if>
28<#if !type?has_content>
29 <#assign type = "">
30</#if>
31<#assign typeLocalized = "">
32<#if "on" == weekend>
33 <#assign weekend = true>
34<#else>
35 <#assign weekend = false>
36</#if>
37<#if !date?has_content>
38 <#assign date = "">
39<#else>
40 <#assign searchDate = date?date["yyyy-MM-dd"]>
41</#if>
42<#if !q?has_content>
43 <#assign q = "">
44</#if>
45<#-- Structure fields-->
46<#assign structureId = portletPreferences["anyClassTypeJournalArticleAssetRendererFactory"][0]>
47<#assign structureService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")>
48
49<#assign structure = structureService.getDDMStructure(getterUtil.getLong(structureId))>
50<#assign ddmFormFieldsMap = structure.getDDMForm().getDDMFormFieldsMap(true)>
51<#assign ddmEventType = ddmFormFieldsMap["eventType"]>
52<#assign ddmOptions = ddmEventType.getProperties()["options"]>
53<#assign options = ddmOptions.getOptions()>
54
55<#assign groupId = getterUtil.getLong(groupId)>
56<#assign group = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService").getGroup(groupId)>
57<#assign feedUrl = group.getExpandoBridge().getAttribute("ESDEVENIMENTS_FEED_URL")>
58<#assign feedUrl = "/" + locale.getLanguage() + feedUrl>
59<#-- Sorting banners pel camp order. ------------------------------------------------------------->
60<#assign Integer = 0>
61<#assign n = entries?size-1>
62<#assign entriesMapList = []>
63<#foreach currEntry in entries>
64 <#if currEntry?? && currEntry.getAssetRenderer()?has_content>
65 <#assign renderer = currEntry.getAssetRenderer()>
66 <#assign className = currEntry.getClassName()>
67 <#if className == "com.liferay.journal.model.JournalArticle">
68 <#assign journalArticle = renderer.getArticle()>
69 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
70 <#assign rootElement = document.getRootElement()>
71 <#assign orderSel = saxReaderUtil.createXPath("dynamic-element[@name='order']/dynamic-content[@language-id='" + locale + "']")>
72 <#if orderSel.selectSingleNode(rootElement)?has_content>
73 <#assign currentOrder = orderSel.selectSingleNode(rootElement).getStringValue()>
74 </#if>
75 <#if !currentOrder?has_content || currentOrder == "null" >
76 <#assign currentOrder = "99">
77 </#if>
78 <#assign currEntryMap = {"entry" : currEntry , "order" : currentOrder?number}>
79 <#assign entriesMapList = entriesMapList + [currEntryMap]>
80 </#if>
81 </#if>
82</#foreach>
83<#assign sortedEntriesMapList = entriesMapList?sort_by("order")>
84<#assign sortedEntriesRootElems = []>
85<#foreach currEntryMap in sortedEntriesMapList>
86 <#assign sortedEntriesRootElems = sortedEntriesRootElems + [currEntryMap.entry]>
87</#foreach>
88<#-- Sorting banners pel camp order. ------------------------------------------------------------->
89<#--set($sortedEntriesRootElems = [])-->
90<#assign destacados = []>
91<#assign otros = []>
92<#assign isHighlighted = false>
93<#foreach curEntry in sortedEntriesRootElems>
94 <#assign renderer = curEntry.getAssetRenderer()>
95 <#assign journalArticle = renderer.getArticle()>
96 <#assign journalArticleId = journalArticle.getArticleId()>
97 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
98 <#assign rootElement = document.getRootElement()>
99 <#assign availableLocalesString = rootElement.attributeValue("available-locales") >
100 <#assign availableLocales = availableLocalesString?split(",")>
101 <#if availableLocales?seq_contains(locale)>
102 <#assign highlightedSelector = saxReaderUtil.createXPath("dynamic-element[@name='highlighted']/dynamic-content[@language-id='" + locale + "']")>
103 <#assign isHighlighted = "">
104 <#if highlightedSelector.selectSingleNode(rootElement)?has_content>
105 <#assign isHighlighted = highlightedSelector.selectSingleNode(rootElement).getStringValue()>
106 </#if>
107
108 <#assign dataInici = "">
109 <#assign dataIniciSelector = saxReaderUtil.createXPath("dynamic-element[@name='start']/dynamic-content[@language-id='" + locale + "']")>
110 <#if dataIniciSelector.selectSingleNode(rootElement)?has_content>
111 <#assign dataInici = dataIniciSelector.selectSingleNode(rootElement).getStringValue()>
112 </#if>
113
114 <#assign dataFi = "">
115 <#assign dataFiSelector = saxReaderUtil.createXPath("dynamic-element[@name='end']/dynamic-content[@language-id='" + locale + "']")>
116 <#if dataFiSelector.selectSingleNode(rootElement)?has_content>
117 <#assign dataFi = dataFiSelector.selectSingleNode(rootElement).getStringValue()>
118 </#if>
119 <#if !tmbPortalUtil.isExpiredContent(renderer.getArticle(), locale, "pubDate", "pubTime", "expDate", "expTime", "isExpire")>
120 <#if getterUtil.getBoolean(isHighlighted)>
121 <#assign destacados = destacados + [curEntry]>
122 <#else>
123 <#assign otros = otros + [curEntry]>
124 </#if>
125 </#if>
126 </#if>
127</#foreach>
128<#if !sortedEntriesRootElems?has_content>
129 <#assign group = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService").getGroup(groupId)>
130 <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
131 <#assign articleId = group.getExpandoBridge().getAttribute("CONTENT_ESDEVENIMENTS_SENSE_RESULTATS")!"">
132 <#assign webContent = journalArticleLocalService.getArticleDisplay(groupId, articleId, "", locale, themeDisplay).getContent()>
133 <#if webContent?has_content>
134 ${webContent}
135 <#else>
136 <h2 class="page-avis__title">
137 <@liferay.language key="events.no-events-page.title"/>
138 </h2>
139
140 </#if>
141 <#--*
142 <section class="page-avis">
143 <div class="page-avis__cover">
144 <img class="page-avis__cover-item" src="https://placehold.it/464x464" alt="">
145 </div>
146
147 <h2 class="page-avis__title">
148 #language("events.no-events-page.title")</h2>
149 <p class="page-avis__intro">
150 #language("events.no-events-page.text")</p>
151
152 <ul class="page-avis__actions">
153 <li class="page-avis__action">
154 <a href="" class="button button--a">
155 #language("events.no-events-page.link1")</a>
156 </li>
157 <li class="page-avis__action">
158 <a href="" class="button button--a">
159 #language("events.no-events-page.link2")</a>
160 </li>
161 </ul>
162 </section>
163 *-->
164</#if>
165<#if (sortedEntriesRootElems?has_content)>
166 <div class="sidebar-body">
167 <div class="sidebar-body__container">
168 <div class="grid__row">
169 <div class="primary grid__col-12 ">
170 <form action="#" class="filter filter--alteracions filter--mobile" id="f__form__avis">
171 <section class="collapsible-content js-collapsible">
172 <header class="collapsible-content__header">
173 <h2 class="collapsible-content__title js-collapsible__title">
174 <@liferay.language key="label.with.filter"/>
175 </h2>
176 </header>
177
178 <div class="collapsible-content__body js-collapsible__content">
179
180 <div class="filter__block">
181
182 <div class="filter__fields filter__fields--3">
183
184 <div class="form__field form__field--select">
185 <div class="form__field__label">
186 <label for="f__tipus__avis">
187 <@liferay.language key="notice.type"/>
188 </label>
189 </div>
190 <div class="form__field__control">
191 <select id="f__tipus__avis" name="t">
192 <option value="">
193 <@liferay.language key="events.all"/>
194 </option>
195 <#foreach option in options?keys>
196 <#assign value = options[option].getString(locale)>
197 <option value="${option}" <#if option == type>selected </#if>>${value}</option>
198 </#foreach>
199 </select>
200 </div>
201 </div>
202
203 <div class="form__field">
204 <div class="form__field__label">
205 <label for="f__data__avis">
206 <@liferay.language key="date"/>
207 </label>
208 </div>
209 <div class="form__field__control">
210 <input id="f__data__avis" type="date" placeholder="dd/mm/aa" name="d" value="${date}"/>
211 </div>
212 </div>
213
214 <div class="form__field">
215 <div class="form__field__label">
216 <label for="f__data__avis" style="display: flex; align-items: center;">
217 <@liferay.language key="events.search.placeholder"/>
218 <div class="branch-info-tooltip has-tooltip-click has-tooltip--c" tabindex="0" style="position: relative; background: url(${themeDisplay.pathThemeRoot}/images/basic/24px/svg/ico-info-black.svg) left top no-repeat;">
219 <span class="password-strength__info-label">
220 <div style="background-color: #ffffff;">
221 <ul class="appointment-ul" style="color: #000000;width: 100%;">
222 <li style="color: #656565;">
223 <div>
224 <@liferay.language key="events.search.info"/>
225 </div>
226 </li>
227 </ul>
228 </div>
229 </span>
230 </div>
231 </label>
232 </div>
233 <div class="form__field__control">
234 <input id="f__text__avis" type="search" placeholder="<@liferay.language key="events.search.placeholder"/>
235 " name="q" value="${q}"/>
236
237 </div>
238 <div class="filter__actions" style="display:none">
239 <button type="submit" class="button button--a">
240 <@liferay.language key="view"/>
241 </button>
242 </div>
243 </div>
244
245 </div>
246 </div>
247 </div>
248 </section>
249 </form>
250 </div>
251 </div>
252 </div>
253 <#--end
254 -->
255 <#--*
256 <div class="map map--avis">
257 <div class="map__infowindow">
258 <div class="map__infowindow-content">
259 <div class="map__infowindow-title">
260 Serveis mínims per aturades parcials al metro</div>
261 <div class="map__infowindow-date">
262 16.03.2013 – 26.05.2013</div>
263 </div>
264 <button class="map__infowindow-close">
265 Tançar</button>
266 </div>
267
268 <div class="map__container">
269 Aquí va el mapa</div>
270 <ul class="map__actions">
271 <li class="map__action map__action--zoom">
272 <button class="map__action-zoom map__action-zoom--in">
273 Ampliar</button>
274 </li>
275 <li class="map__action map__action--zoom">
276 <button class="map__action-zoom map__action-zoom--out">
277 Disminuir</button>
278 </li>
279 <li class="map__action map__action--modal">
280 <button class="map__action-modal">
281 Abrir en una modal</button>
282 </li>
283 </ul>
284 </div>
285 *-->
286
287 <#if (destacados?has_content)>
288 <section class="events-v2">
289 <div class="sidebar-body__container">
290 <ul class="events-v2__items js__events-v2-slider" id="list-events-destacados-ul">
291
292 <#--*
293 <li class="events-v2__item">
294 <div class="events-v2__card events-v2__card--alt">
295 <div class="events-v2__card-cover" style="background-image: url(https://placehold.it/416x240);">
296 <img src="https://placehold.it/416x240" alt="Altell il·lustrat, per Pau Gasol i Carles Murillo" class="events-v2__card-cover-item">
297 </div>
298 <div class="events-v2__card-details">
299 <h2 class="events-v2__card-title">
300 Altell il·lustrat, per Pau Gasol i Carles Murillo</h2>
301 <div class="events-v2__card-date">
302 03/05/2019</div>
303 <p class="events-v2__card-description">
304 Quisque sed viverra sapien. Praesent aliquam in lectus.</p>
305 </div>
306 </div>
307 </li>
308 *-->
309 <#assign count = 0>
310 <#foreach curEntry in destacados>
311 <#--solo permitimos los 4 primeros destacados-->
312
313 <#if (count>3)>
314 <#break>
315 </#if>
316
317 <#assign renderer = curEntry.getAssetRenderer()>
318 <#assign journalArticle = renderer.getArticle()>
319 <#assign journalArticleId = journalArticle.getArticleId()>
320 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
321 <#assign rootElement = document.getRootElement()>
322 <#assign availableLocalesString = rootElement.attributeValue("available-locales") >
323 <#assign availableLocales = availableLocalesString?split(",")>
324 <#if availableLocales?seq_contains(locale)>
325 <#assign title = "">
326 <#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@name='title']/dynamic-content[@language-id='" + locale + "']")>
327 <#if titleSel.selectSingleNode(rootElement)?has_content>
328 <#assign title = titleSel.selectSingleNode(rootElement).getStringValue()>
329 </#if>
330
331 <#assign dataInici = "">
332 <#assign dataIniciSelector = saxReaderUtil.createXPath("dynamic-element[@name='start']/dynamic-content[@language-id='ca_ES']")>
333 <#if dataIniciSelector.selectSingleNode(rootElement)?has_content>
334 <#assign dataInici = dataIniciSelector.selectSingleNode(rootElement).getStringValue()>
335 </#if>
336
337 <#assign dataFi = "">
338 <#assign dataFiSelector = saxReaderUtil.createXPath("dynamic-element[@name='end']/dynamic-content[@language-id='ca_ES']")>
339 <#if dataFiSelector.selectSingleNode(rootElement)?has_content>
340 <#assign dataFi = dataFiSelector.selectSingleNode(rootElement).getStringValue()>
341 </#if>
342
343 <#assign descripcio = "">
344 <#assign descripcioSelector = saxReaderUtil.createXPath("dynamic-element[@name='text']/dynamic-content[@language-id='" + locale + "']")>
345 <#if descripcioSelector.selectSingleNode(rootElement)?has_content>
346 <#assign descripcio = descripcioSelector.selectSingleNode(rootElement).getStringValue()>
347 </#if>
348
349 <#assign eventType = "">
350 <#assign eventTypeSelector = saxReaderUtil.createXPath("dynamic-element[@name='eventType']/dynamic-content[@language-id='" + locale + "']")>
351 <#if eventTypeSelector.selectSingleNode(rootElement)?has_content>
352 <#assign eventType = eventTypeSelector.selectSingleNode(rootElement).getStringValue()?trim>
353 </#if>
354
355 <#assign incident = "">
356 <#assign incidentSelector = saxReaderUtil.createXPath("dynamic-element[@name='incident']/dynamic-content[@language-id='" + locale + "']")>
357 <#if incidentSelector.selectSingleNode(rootElement)?has_content>
358 <#assign incident = incidentSelector.selectSingleNode(rootElement).getStringValue()?trim>
359 </#if>
360
361
362 <#assign link = "">
363 <#assign isExternalLink = true>
364 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='externalLink']/dynamic-content[@language-id='" + locale + "']")>
365 <#if xPathSelector.selectSingleNode(rootElement)?has_content>
366 <#assign link = xPathSelector.selectSingleNode(rootElement).getStringValue()>
367 </#if>
368
369 <#assign titleLinkTitle = "">
370 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='titleLinkTitle']/dynamic-content[@language-id='" + locale + "']")>
371 <#if xPathSelector.selectSingleNode(rootElement)?has_content>
372 <#assign titleLinkTitle = xPathSelector.selectSingleNode(rootElement).getStringValue()>
373 </#if>
374
375 <#assign imatge = "">
376 <#assign imatgeSelector = saxReaderUtil.createXPath("dynamic-element[@name='highlightedImage']/dynamic-content[@language-id='" + locale + "']")>
377 <#if imatgeSelector.selectSingleNode(rootElement)?has_content>
378 <#assign imatge = imatgeSelector.selectSingleNode(rootElement).getStringValue()?trim>
379 </#if>
380
381 <#assign fromStart = "">
382 <#assign fromStartSelector = saxReaderUtil.createXPath("dynamic-element[@name='fromDate']/dynamic-content[@language-id='ca_ES']")>
383 <#if fromStartSelector.selectSingleNode(rootElement)?has_content>
384 <#assign fromStart = fromStartSelector.selectSingleNode(rootElement).getStringValue()>
385 </#if>
386
387 <#assign line = "">
388 <#assign lineSel = saxReaderUtil.createXPath("dynamic-element[@name='line']/dynamic-content[@language-id='" + locale + "']")>
389 <#if lineSel.selectSingleNode(rootElement)?has_content>
390 <#assign line = lineSel.selectSingleNode(rootElement).getStringValue()?trim>
391 </#if>
392
393 <#if !link?has_content>
394 <#assign link = renderer.getURLViewInContext(renderRequest, renderResponse, "")>
395 <#assign isExternalLink = false>
396 </#if>
397 <#if (dataInici?has_content)>
398 <#assign dataInici = dateUtil.getDate(dateUtil.newDate(dataInici?date["yyyy-MM-dd"]?long), "dd/MM/yyyy", locale)>
399 <#assign fromDate = dataInici?date["dd/MM/yyyy"]>
400 </#if>
401 <#if (dataFi?has_content)>
402 <#assign dataFi = dateUtil.getDate(dateUtil.newDate(dataFi?date["yyyy-MM-dd"]?long), "dd/MM/yyyy", locale)>
403 <#assign toDate = dataFi?date["dd/MM/yyyy"]>
404 </#if>
405
406 <li class="events-v2__item" data-type="${eventType}" data-start="<#if fromDate?has_content>${fromDate?long} </#if>" data-end="<#if toDate?has_content>${toDate?long}</#if>" data-title="${line?lower_case}" data-starting="${getterUtil.getBoolean(fromStart)?string("true", "false")}">
407 <div class="events-v2__card <#if getterUtil.getBoolean(incident)>events-v2__card--alt </#if>">
408 <a href="${link}" title="${titleLinkTitle}" <#if isExternalLink>target="_blank"</#if>>
409 <#if !imatge?has_content>
410
411 </#if>
412 <#if imatge?has_content && imatge != "">
413 <#assign imageTitle = jsonFactoryUtil.createJSONObject(imatge).title!"">
414 <#assign imageUrl = jsonFactoryUtil.createJSONObject(imatge).url!"">
415 <#if imageUrl == "">
416 <#assign imageUuid = jsonFactoryUtil.createJSONObject(imatge).uuid!"">
417 <#assign imageGroupId = jsonFactoryUtil.createJSONObject(imatge).groupId!themeDisplay.getScopeGroupId()>
418 <#assign imageUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + imageGroupId + "/" + imageUuid>
419 </#if>
420 <#else>
421 <#assign imageUrl = imagesFolder + "/image_events/no-image.png">
422 </#if>
423
424
425 <div class="events-v2__card-cover" style="background-image: url(${imageUrl});">
426 <img src="${imageUrl}" alt="${title}" class="events-v2__card-cover-item">
427 </div>
428 <div class="events-v2__card-details">
429 <h2 class="events-v2__card-title">
430 ${title}
431 </h2>
432 <div class="events-v2__card-date">
433 <#call myDisplayDate(dataInici, dataFi, fromStart)>
434 </div>
435 <p class="events-v2__card-description">${descripcio}</p>
436 </div>
437 </a>
438 </div>
439 </li>
440 <#assign count = count + 1>
441 </#if>
442 </#foreach>
443 </ul>
444 </div>
445</section>
446</#if>
447
448<div class="sidebar-body__container">
449 <div class="grid__row">
450 <div class="primary grid__col-12 ">
451 <ul class="list list--events list--avis" id="list-events-ul">
452
453 <#foreach curEntry in otros>
454 <#assign renderer = curEntry.getAssetRenderer()>
455 <#assign journalArticle = renderer.getArticle()>
456 <#assign journalArticleId = journalArticle.getArticleId()>
457 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
458 <#assign rootElement = document.getRootElement()>
459 <#assign availableLocalesString = rootElement.attributeValue("available-locales") >
460 <#assign availableLocales = availableLocalesString?split(",")>
461 <#if availableLocales?seq_contains(locale)>
462 <#assign title = "">
463 <#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@name='title']/dynamic-content[@language-id='" + locale + "']")>
464 <#if titleSel.selectSingleNode(rootElement)?has_content>
465 <#assign title = titleSel.selectSingleNode(rootElement).getStringValue()>
466 </#if>
467 <#assign dataInici = "">
468 <#assign dataIniciSelector = saxReaderUtil.createXPath("dynamic-element[@name='start']/dynamic-content[@language-id='ca_ES']")>
469 <#if dataIniciSelector.selectSingleNode(rootElement)?has_content>
470 <#assign dataInici = dataIniciSelector.selectSingleNode(rootElement).getStringValue()>
471 </#if>
472
473 <#assign dataFi = "">
474 <#assign dataFiSelector = saxReaderUtil.createXPath("dynamic-element[@name='end']/dynamic-content[@language-id='ca_ES']")>
475 <#if dataFiSelector.selectSingleNode(rootElement)?has_content>
476 <#assign dataFi = dataFiSelector.selectSingleNode(rootElement).getStringValue()>
477 </#if>
478
479 <#assign descripcio = "">
480 <#assign descripcioSelector = saxReaderUtil.createXPath("dynamic-element[@name='text']/dynamic-content[@language-id='" + locale + "']")>
481 <#if descripcioSelector.selectSingleNode(rootElement)?has_content>
482 <#assign descripcio = descripcioSelector.selectSingleNode(rootElement).getStringValue()>
483 </#if>
484
485 <#assign eventType = "">
486 <#assign eventTypeSelector = saxReaderUtil.createXPath("dynamic-element[@name='eventType']/dynamic-content[@language-id='" + locale + "']")>
487 <#if eventTypeSelector.selectSingleNode(rootElement)?has_content>
488 <#assign eventType = eventTypeSelector.selectSingleNode(rootElement).getStringValue()?trim>
489 </#if>
490
491 <#--set($capDeSetmanaSelector = $saxReaderUtil.createXPath("dynamic-element[@name='weekend']/dynamic-content[@language-id='$locale']"))-->
492 <#--set($capDeSetmana = $capDeSetmanaSelector.selectSingleNode($rootElement).getStringValue()?trim)-->
493 <#assign incident = "">
494 <#assign incidentSelector = saxReaderUtil.createXPath("dynamic-element[@name='incident']/dynamic-content[@language-id='" + locale + "']")>
495 <#if incidentSelector.selectSingleNode(rootElement)?has_content>
496 <#assign incident = incidentSelector.selectSingleNode(rootElement).getStringValue()?trim>
497 </#if>
498
499 <#assign link = "">
500 <#assign isExternalLink = true>
501 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='externalLink']/dynamic-content[@language-id='" + locale + "']")>
502 <#if xPathSelector.selectSingleNode(rootElement)?has_content>
503 <#assign link = xPathSelector.selectSingleNode(rootElement).getStringValue()>
504 </#if>
505
506 <#assign titleLinkTitle = "">
507 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='titleLinkTitle']/dynamic-content[@language-id='" + locale + "']")>
508 <#if xPathSelector.selectSingleNode(rootElement)?has_content>
509 <#assign titleLinkTitle = xPathSelector.selectSingleNode(rootElement).getStringValue()>
510 </#if>
511
512 <#assign line = "">
513 <#assign lineSel = saxReaderUtil.createXPath("dynamic-element[@name='line']/dynamic-content[@language-id='" + locale + "']")>
514 <#if lineSel.selectSingleNode(rootElement)?has_content>
515 <#assign line = lineSel.selectSingleNode(rootElement).getStringValue()?trim>
516 </#if>
517
518 <#assign fromStartSelector = saxReaderUtil.createXPath("dynamic-element[@name='fromDate']/dynamic-content[@language-id='" + locale + "']")>
519 <#if fromStartSelector.selectSingleNode(rootElement)?has_content>
520 <#assign fromStart = fromStartSelector.selectSingleNode(rootElement).getStringValue()>
521 </#if>
522
523 <#if !link?has_content>
524 <!--<#assign link = renderer.getURLViewInContext(renderRequest, renderResponse, "")>-->
525 <#assign link = "/-/"+journalArticle.getUrlTitle() />
526 <#assign isExternalLink = false>
527 </#if>
528
529 <#if (getterUtil.getLong(dataInici)>0)>
530 <#assign fromDate = dateUtil.newDate(getterUtil.getLong(dataInici))>
531 </#if>
532
533 <#if (getterUtil.getLong(dataFi)>0)>
534 <#assign toDate = dateUtil.newDate(getterUtil.getLong(dataFi))>
535 </#if>
536
537
538 <li class="list__item"
539 data-type="${eventType}" data-start="<#if fromDate?has_content>${fromDate?long} </#if>" data-end="<#if toDate?has_content>${toDate?long}</#if>" data-title="${line?lower_case}" data-starting="${getterUtil.getBoolean(fromStart)?string("true", "false")}">
540 <a href="${link}" title="${titleLinkTitle}" <#if isExternalLink>target="_blank"</#if>>
541
542 <article class="event-unit <#if getterUtil.getBoolean(incident)>event-unit--incident </#if>">
543
544 <h2 class="event-unit__title">
545 <#if (title?length>50)>
546 <#assign newTitle = title?substring(0, 47)>
547 ${newTitle}
548 <#else>
549 ${title}
550 </#if>
551 </h2>
552
553 <p class="event-unit__type">
554
555 <#if eventType == "t-1">
556 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/Esports-36x36.png" alt="<@liferay.language key="events.sports"/>">
557 <#elseif eventType == "t-2">
558 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/Barcelona-36x36.png" alt="<@liferay.language key="events.culture"/>">
559 <#elseif eventType == "t-3">
560 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/fires-36x36.png" alt="<@liferay.language key="events.exhibitions"/>">
561 <#elseif eventType == "t-4">
562 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/festes-36x36.png" alt="<@liferay.language key="events.celebrations"/>">
563 <#elseif eventType == "t-5">
564 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/ico_Bus_36.png" alt="<@liferay.language key="events.bus"/>">
565 <#elseif eventType == "t-6">
566 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/ico_Metro_36.png" alt="<@liferay.language key="events.metro"/>">
567 <#elseif eventType == "t-7">
568 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/Concerts-36x36.png" alt="<@liferay.language key="events.concerts"/>">
569 <#elseif eventType == "t-8">
570 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/futbol-36x36.png" alt="<@liferay.language key="events.football"/>">
571 <#elseif eventType == "t-9">
572 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/Avisos-36x36.png" alt="<@liferay.language key="events.disturbance"/>">
573 <#elseif eventType == "t-10">
574 <img class="event-unit__type__icon" src="${imagesFolder}/image_events/pictos_36x36/Bus-Metro-36x36.png" alt="<@liferay.language key="events.altres"/>">
575 </#if>
576 </p>
577
578 <#if (dataInici?has_content)>
579 <#assign dataInici = dateUtil.getDate(dateUtil.newDate(dataInici?date["yyyy-MM-dd"]?long), "dd/MM/yyyy", locale)>
580 </#if>
581 <#if (dataFi?has_content)>
582 <#assign dataFi = dateUtil.getDate(dateUtil.newDate(dataFi?date["yyyy-MM-dd"]?long), "dd/MM/yyyy", locale)>
583 </#if>
584
585 <p class="event-unit__date">
586 <#call myDisplayDate(dataInici,dataFi,fromStart)>
587 </p>
588
589 <#if (descripcio?length>35)>
590 <#assign newDescripcio = descripcio?substring(0, 32)>
591 <p class="event-unit__description">${newDescripcio}...</p>
592 <#else>
593 <p class="event-unit__description">${descripcio}</p>
594 </#if>
595 </article>
596 </a>
597 </li>
598
599 </#if>
600 </#foreach>
601 <#--for-->
602 </ul>
603
604 <div class="events-no-results" style="display:none">
605 <label>
606 <@liferay.language key="events.no-results"/>
607 </label>
608 </div>
609
610 <div class="load-more" style="display: none;">
611 <a href="#" class="button button--a" onclick="pageResults(moreResults); return false;">
612 <@liferay.language key="view.more"/>
613 </a>
614 </div>
615 </div>
616 </div>
617</div>
618<#--end-->
619
620</div>
621</#if>
622<script>
623 $(document).ready(function() {
624 $("#f__tipus__avis,#f__data__avis").on("change",function(){
625 //$("#f__form__avis").submit();
626 filterEvents();
627 });
628
629 $("#f__text__avis").on("keyup",function(event){
630 //if(event.which == 13){
631 event.preventDefault();
632 filterEvents();
633 //$("#f__form__avis").submit();
634 //}
635 });
636 filterEvents();
637 setCloseTooltip();
638 });
639
640 function setCloseTooltip() {
641 setTimeout(() => {
642 $('.has-tooltip-click .jotmbe__tooltip').append('<a role="button" tabindex="0" name="tooltip-img-close" style="cursor:pointer; top: 8px; right: 8px;" class="va-suggest__flyout-close popup-close" href="javascript: void(0)">X</a>');
643 $('.has-tooltip-click .jotmbe__tooltip a[name="tooltip-img-close"]').on('keypress click', function (e) {
644 e.stopPropagation();
645 var tooltipParent = $(this).parents('.has-tooltip-click');
646 tooltipParent.children('.jotmbe__tooltip').attr('aria-hidden', true);
647 tooltipParent.children('.jotmbe__tooltip').hide();
648 tooltipParent.focus();
649 });
650 }, 3000);
651 }
652
653 function filterEvents(){
654 filterDestacadosEvents()
655 filterOtrosEvents();
656 }
657
658 function filterDestacadosEvents(){
659 destacados = $("#list-events-destacados-ul .events-v2__item");
660 destacados = dofilterEvents(destacados);
661
662 if(destacados.length>0){
663 $(".events-v2").show()
664 }else{
665 $(".events-v2").hide();
666 }
667
668 if(destacados.length>0){
669 $(destacados).show();
670 }
671
672 }
673
674
675 function filterOtrosEvents(){
676 var otros = $("#list-events-ul .list__item");
677 otros = dofilterEvents(otros);
678 if(otros.length>0 || destacados.length>0){
679 $(".events-no-results").hide();
680 }else{
681 $(".events-no-results").show();
682 }
683 pageResults($(otros));
684 }
685
686 function prepareDate(time){
687 return new Date(time).setHours(0,0,0,0);
688 }
689
690 function dofilterEvents(events){
691 events.hide();
692
693 var t= $("#f__tipus__avis").val().replace(/^\s+|\s+$/gm,'');
694 var q= $("#f__text__avis").val().replace(/^\s+|\s+$/gm,'');
695 var d= $("#f__data__avis").val().replace(/^\s+|\s+$/gm,'');
696
697 if(t != ""){
698 events = events.filter("[data-type='" + t + "']");
699 }
700
701 if(q != ""){
702 //events = events.filter("[data-title*='" + q.toLowerCase() + "']");
703
704 var eventsMatch = [];
705 for(var i = 0; i < events.length; i++) {
706 var lines = $(events[i]).attr("data-title") ? $(events[i]).attr("data-title").split(',') : [];
707 for(var j = 0; j < lines.length; j++) {
708 if(lines[j].trim().toLowerCase() === q.trim().toLowerCase()) {
709 eventsMatch.push(events[i]);
710 break;
711 }
712 }
713 }
714
715 events = eventsMatch;
716 }
717
718 if(d != ""){
719 var filterDate = new Date(d).setHours(0,0,0,0);
720 //console.log("filterDate: " + filterDate );
721
722 events = jQuery.grep(events, function(event, index) {
723 var result = false;
724 var start = parseFloat($(event).data("start"));
725 if(!isNaN(start)){
726 start = prepareDate(start);
727 }
728 var end = parseFloat($(event).data("end"));
729 if(!isNaN(end)){
730 end = prepareDate(end);
731 }
732 var starting = $(event).data("starting");
733 //console.log("filter:" + filterDate,"start:"+ start,"end:" + end,"starting:" + starting);
734
735 if(!isNaN(start) && !isNaN(end)){ //fecha inicio y fecha fin
736 if(filterDate >= start && filterDate <= end ){
737 result = true;
738 }
739 }else if(!isNaN(start) && isNaN(end)){ //solo fecha inicio
740 if(starting){
741 if(filterDate >= start){
742 result = true;
743 }
744 }else{
745 if(filterDate == start){
746 result = true;
747 }
748 }
749 }else if(isNaN(start) && !isNaN(end)){ //solo fecha fin
750 if(filterDate <= end){
751 result = true;
752 }
753 }else{
754 //ninguna fecha
755 //!start && !end
756 result = true;
757 }
758 return result;
759 });
760 }
761 return events;
762 }
763
764 var moreResults = [];
765 var pageSize = 12;
766 function pageResults(results){
767 var resultsToShow = results;
768 if(results.length>pageSize){
769 var resultsToShow = results.slice(0,pageSize);
770 moreResults = results.slice(pageSize,results.length);
771 $(".load-more").show();
772 }else{
773 $(".load-more").hide();
774 }
775 resultsToShow.show();
776 }
777
778
779</script>
780
781
782<style>
783 .events-v2__card-title{
784 height:40px;
785 overflow:hidden;
786 text-overflow: ellipsis;
787 }
788 .events-v2__card-date{
789 height:30px;
790 overflow:hidden;
791 text-overflow: ellipsis;
792 }
793 .branch-info-tooltip {
794 width: 1rem;
795 height: 1rem;
796 background-size: 1rem !important;
797 display: inline-flex;
798 margin-left: 5px;
799 }
800 .branch-info-tooltip.has-tooltip--c .jotmbe__tooltip {
801 min-width: 240px !important;
802 top: 55px !important;
803 z-index: 10;
804 }
805 @media (max-width: 960px) {
806 .branch-info-tooltip.has-tooltip--c .jotmbe__tooltip {
807 left: -180px !important;
808 }
809 }
810
811</style>