Errorea gertatu da txantiloia prozesatzerakoan.
Java method "com.sun.proxy.$Proxy1002.getCalendarBooking(long)" threw an exception when invoked on com.sun.proxy.$Proxy1002 object "com.liferay.calendar.service.impl.CalendarBookingLocalServiceImpl@4a80f05a"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign calendarBooking = CalendarBoo... [in template "20907#20945#44248578" at line 42, column 5]
----
1<#assign HttpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"] />
2<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
3<#assign AssetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DlAppServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppServiceUtil"] />
6<#assign url = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()>
7<#assign calendarBookingId = HttpUtil.getParameter(url,"entryId")>
8<#assign instanceIndex = HttpUtil.getParameter(url,"instanceIndex")>
9<#assign parameters = HttpUtil.getParameterMap(url)>
10<#list parameters as key, parameter>
11 <#if key?contains("entryId") && parameter[0]!="">
12 <#assign calendarBookingId = parameter[0]>
13 <#elseif key?contains("instanceIndex") && parameter[0]!="">
14 <#assign instanceIndex = parameter[0]>
15 </#if>
16</#list>
17
18<#assign BuscadorAgendaService = serviceLocator.findService("net.izfe.gipuzkoa.agenda.buscador.api.BuscadorAgendaService") />
19<#assign CalendarBookingLocalService = serviceLocator.findService("com.liferay.calendar.service.CalendarBookingLocalService") />
20<#assign currentCompleteURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
21
22<#assign calendarBookingIdNumber = -1>
23<#attempt>
24 <#if calendarBookingId != "" >
25 <#assign calendarBookingIdNumber = calendarBookingId?number>
26 </#if>
27<#recover>
28 <#assign calendarBookingIdNumber = -1>
29</#attempt>
30
31<#assign instanceIndexNumber = -1>
32<#attempt>
33 <#if instanceIndex != "" >
34 <#assign instanceIndexNumber = instanceIndex?number>
35 </#if>
36<#recover>
37 <#assign instanceIndexNumber = -1>
38</#attempt>
39
40
41<#if calendarBookingIdNumber != -1 >
42 <#assign calendarBooking = CalendarBookingLocalService.getCalendarBooking(calendarBookingIdNumber) />
43 <#if instanceIndexNumber != -1 >
44 <#assign evento = BuscadorAgendaService.getEvento(calendarBookingIdNumber, instanceIndexNumber, themeDisplay.getLocale(), themeDisplay.getPortalURL()) />
45 <#else>
46 <#assign evento = BuscadorAgendaService.getEvento(calendarBookingIdNumber, themeDisplay.getLocale(), themeDisplay.getPortalURL()) />
47 </#if>
48 <#assign images_folder = themeDisplay.getPathThemeImages() />
49
50 <#assign fileEntryId = "" />
51 <#assign assetEntry = AssetEntryLocalService.fetchEntry("com.liferay.calendar.model.CalendarBooking", evento.calendarBookingId) />
52 <#assign assetLinks = AssetLinkLocalService.getLinks(assetEntry.getEntryId()) />
53 <#list assetLinks as assetLink>
54 <#if assetLink.getEntryId1() != assetEntry.getEntryId()>
55 <#assign assetLinkEntry = AssetEntryLocalService.getAssetEntry(assetLink.getEntryId1()) />
56
57 <#if assetLinkEntry.mimeType?starts_with("image/")>
58 <#assign dlFileEntry = DLFileEntryLocalService.getDLFileEntry(assetLinkEntry.getClassPK()) />
59 <#assign fileEntryId = dlFileEntry.getFileEntryId() />
60 </#if>
61 </#if>
62 </#list>
63
64 <@liferay_util["html-top"]>
65 <#if evento.title?has_content >
66 <meta property="og:title" content='${evento.title}'>
67 </#if>
68 <#if evento.imagenPath?has_content >
69 <meta property="og:image" content='${evento.imagenPath}'>
70 </#if>
71 <#if evento.direccion?has_content >
72 <meta property="og:description" content='${evento.direccion}'>
73 </#if>
74 <meta property="og:url" content='${currentCompleteURL}'>
75 </@>
76
77 <div class="container mt-4 mb-4">
78 <div class="row">
79 <div class="col-12 col-md-8">
80 <h2 class="izfe-semibold mb-4">
81 ${evento.title}
82 </h2>
83
84 <!-- SEPARAR FECHAS Y HORAS-->
85
86 <#attempt>
87 <#assign fechaInicio = evento.getStartDate() />
88 <#recover>
89 <#assign fechaInicio = "" />
90 </#attempt>
91
92 <#attempt>
93 <#assign horaInicio = evento.getStartOnlyTime() />
94 <#recover>
95 <#assign horaInicio = "" />
96 </#attempt>
97
98 <#attempt>
99 <#assign fechaFin = evento.getEndDate() />
100 <#recover>
101 <#assign fechaFin = "" />
102 </#attempt>
103
104 <#attempt>
105 <#assign horaFin = evento.getEndOnlyTime() />
106 <#recover>
107 <#assign horaFin = "" />
108 </#attempt>
109
110 <div class="izfe-bg-blue-dark p-2">
111 <#if fechaInicio == fechaFin >
112 <div class="d-flex align-items-center ml-3">
113 <div class="izfe-icon-calendar-time-white"></div>
114 <p class="text-white izfe-semibold mb-0 ml-2 izfe-h4">
115
116 <#if fechaInicio != "" >
117 <span class="mr-1">
118 ${fechaInicio}
119 </span>
120 </#if>
121
122 <#if fechaFin != "" && fechaFin != fechaInicio >
123 -
124 <span class="ml-1">
125 ${fechaFin}
126 </span>
127 <#elseif !evento.isAllDay()>
128 <span class="ml-3 mr-1">
129 ${horaInicio}
130 </span>
131 -
132 <span class="ml-1">
133 ${horaFin}
134 </span>
135 </#if>
136 </p>
137 </div>
138 <#else>
139 <div class="d-flex align-items-center ml-3">
140 <div class="izfe-icon-calendar-time-white"></div>
141 <p class="text-white izfe-semibold mb-0 ml-2 izfe-h4">
142 ${fechaInicio}
143 </p>
144 <span class="text-white izfe-semibold ml-2 mr-2">-</span>
145 <p class="text-white izfe-semibold mb-0 izfe-h4">
146 ${fechaFin}
147 </p>
148 </div>
149 </#if>
150 </div>
151
152 <#if evento.localizacion?has_content || evento.direccion?has_content>
153 <div class="izfe-evento-localizacion-direccion d-flex align-items-center pl-3 pr-3 pt-2 pb-2">
154 <div class="d-flex flex-column flex-lg-row align-items-lg-center">
155 <#if evento.urlDireccion != "">
156 <a class="ml-2 d-flex align-items-center" href="${evento.urlDireccion}" target="_blank">
157 <div class="izfe-icon-ubicacion-blue"></div>
158 <p class="izfe-semibold mb-0 ml-2 izfe-h5">
159 <#if evento.direccion?has_content >
160 ${evento.direccion}
161 </#if>
162 <#if evento.direccion?has_content && evento.localizacion?has_content>
163 <span class="ml-1 mr-1">/</span>
164 </#if>
165 <#if evento.localizacion?has_content >
166 ${evento.localizacion}
167 </#if>
168 </p>
169 </a>
170 <#else>
171 <div class="ml-2 d-flex align-items-center">
172 <div class="izfe-icon-ubicacion"></div>
173 <p class="izfe-semibold mb-0 ml-2 izfe-h5">
174 <#if evento.direccion?has_content >
175 ${evento.direccion}</p>
176 </#if>
177 <#if evento.direccion?has_content && evento.localizacion?has_content>
178 <span class="ml-1 mr-1">/</span>
179 </#if>
180 <#if evento.localizacion?has_content >
181 ${evento.localizacion}
182 </#if>
183 </p>
184 </div>
185 </#if>
186 </div>
187 </div>
188 </#if>
189
190 <div class="row mt-4">
191 <div class="col-12" id="izfe-evento-descripcion">
192 <#if evento.descripcion != "">
193 ${evento.descripcion}
194 <#-- ${HtmlUtil.render(evento.descripcion)} -->
195 </#if>
196 </div>
197 </div>
198 </div>
199
200 <div class="col-12 col-md-4">
201 <#attempt>
202 <#if fileEntryId?has_content>
203 <@adaptive_media_image["img"]
204 alt=""
205 fileVersion=DlAppServiceUtil.getFileEntry(fileEntryId).getFileVersion()
206 class="w-100 mb-3" />
207 <#elseif evento.imagenPath != "" >
208 <img
209 alt="${evento.title?replace('"',' ')}"
210 title="${evento.title?replace('"',' ')}"
211 class="w-100 mb-3"
212 src="${evento.imagenPath}"
213 />
214 <#else>
215 <img
216 alt="img-not-found"
217 title="img-not-found"
218 class="w-100"
219 src="${images_folder}/izfe/img-not-found.png"
220 />
221 </#if>
222 <#recover>
223
224 </#attempt>
225
226
227 <#assign listaCategorias = evento.listaCategorias />
228
229 <#if listaCategorias?has_content >
230 <div class="d-flex flex-wrap">
231 <#list listaCategorias as categoria >
232 <p class="text-blue-second text-uppercase mb-0 mr-2">
233 ${categoria.getName()}
234 </p>
235 </#list>
236 </div>
237
238 <hr/>
239 </#if>
240
241 <#if evento.webEvento != "" >
242 <a class="izfe-btn-blue d-block text-center" href="${evento.webEvento}" target="_blank">
243 <@liferay.language key="DGN.mas-informacion-evento" />
244 </a>
245 </#if>
246 </div>
247 </div>
248
249
250
251 <div class="row mt-4 mb-4" id="izfe-evento-relacionados">
252 <#assign categoriasEventoActual = evento.listaCategorias />
253 <#assign categoriasIds = [] />
254
255 <#if categoriasEventoActual?has_content >
256 <#list categoriasEventoActual as categoriaEventoActual >
257 <#assign categoriasIds = categoriasIds + [categoriaEventoActual.categoryId] />
258 </#list>
259 </#if>
260
261
262 <#assign eventosRelacionados = BuscadorAgendaService.listaProximosEventos(themeDisplay.getCompanyId(), themeDisplay.getLocale(), themeDisplay.getPortalURL(), categoriasIds,
263 3, [themeDisplay.getLayout().getGroupId()]) />
264
265 <#if eventosRelacionados?has_content>
266 <#assign mostrarTituloRelacionados = true>
267 <#assign contadorRelacionados = 0 >
268
269 <#list eventosRelacionados as eventoRelacionado>
270 <#if eventoRelacionado.calendarBookingId != evento.calendarBookingId >
271
272 <#attempt>
273 <#assign fechaInicioRelacionado = eventoRelacionado.getStartDate() />
274 <#recover>
275 <#assign fechaInicioRelacionado = "" />
276 </#attempt>
277
278 <#attempt>
279 <#assign horaInicioRelacionado = eventoRelacionado.getStartOnlyTime() />
280 <#recover>
281 <#assign horaInicioRelacionado = "" />
282 </#attempt>
283
284 <#attempt>
285 <#assign fechaFinRelacionado = eventoRelacionado.getEndDate() />
286 <#recover>
287 <#assign fechaFinRelacionado = "" />
288 </#attempt>
289
290 <#attempt>
291 <#assign horaFinRelacionado = eventoRelacionado.getEndOnlyTime() />
292 <#recover>
293 <#assign horaFinRelacionado = "" />
294 </#attempt>
295
296
297 <#if mostrarTituloRelacionados >
298 <div class="col-12">
299 <h3 class="izfe-semibold mb-3">
300 <@liferay.language key="DGN.otros-eventos"/>
301 </h3>
302 </div>
303 </#if>
304
305 <#if contadorRelacionados < 3 >
306 <div class="izfe-agenda-relacionado col-12 col-lg-4 mb-3 mb-lg-0">
307 <#assign urlRelacionado="/agenda/evento?entryId="+eventoRelacionado.calendarBookingId />
308 <#if eventoRelacionado.isRecurring() >
309 <#assign urlRelacionado=urlRelacionado+"&instanceIndex=" + eventoRelacionado.getInstanceIndex() />
310 </#if>
311 <a href="${urlRelacionado}">
312 <div class="izfe-bg-blue-dark-second eventoRelacionado p-2 ">
313 <div class="text-white d-flex align-items-center">
314 <span class="d-none">
315 ${fechaInicioRelacionado} - ${fechaFinRelacionado}
316
317 </span>
318 <#if fechaInicioRelacionado != "" >
319 <p class="small text-white mr-1">
320 ${fechaInicioRelacionado}
321 </p>
322 </#if>
323 <#if fechaFinRelacionado != "" && fechaFinRelacionado != fechaInicioRelacionado >
324 <p>-</p>
325 <p class="small text-white ml-1">
326 ${fechaFinRelacionado}
327 </p>
328 <#else>
329 <p class="small text-white ml-2 mr-1">
330 ${horaInicioRelacionado}
331 </p>
332 <p>-</p>
333 <p class="small text-white ml-1">
334 ${horaFinRelacionado}
335 </p>
336 </#if>
337 </div>
338 <h3 class="text-white izfe-h4">${eventoRelacionado.title}</h3>
339 <p class="small text-white">${eventoRelacionado.localizacion}</p>
340 </div>
341 </a>
342 </div>
343 </#if>
344 <#assign contadorRelacionados++ />
345 <#assign mostrarTituloRelacionados = false />
346 </#if>
347 </#list>
348 </#if>
349 </div>
350 </div>
351
352
353 <style>
354 #izfe-evento-descripcion *{
355 font-family: 'Poppins', Helvetica, Arial, sans-serif !important;
356 font-size: 15px !important;
357 line-height: 20px;
358 }
359 #izfe-evento-relacionados a{
360 text-decoration: none !important;
361 }
362 #izfe-evento-relacionados a:hover *{
363 opacity: .7;
364 }
365
366 #izfe-evento-relacionados .eventoRelacionado {
367 min-height: 175px;
368 }
369 .izfe-evento-localizacion-direccion{
370 border: 1.5px solid #004996;
371 }
372
373 .izfe-float-left{
374 float: left;
375 }
376 .izfe-float-right{
377 float: left;
378 }
379 </style>
380 <script>
381 $(document).ready(function() {
382 var canonicalUrlParameters = "";
383 var currentUrl = window.location.href;
384 var urlParams = new URLSearchParams(window.location.search);
385 urlParams.forEach(function(value, key) {
386 if (""==canonicalUrlParameters) {
387 canonicalUrlParameters = "?";
388 } else {
389 canonicalUrlParameters += "&";
390 }
391 canonicalUrlParameters += key + "=" + value;
392 });
393
394 // Obtener el <link rel="canonical">
395 var canonicalLink = $('link[rel="canonical"]');
396 canonicalLink.attr('href',canonicalLink.attr('href') + canonicalUrlParameters);
397
398 // Obtener todos los <link rel="alternate">
399 $('link[rel="alternate"]').each(function() {
400 $(this).attr('href',$(this).attr('href') + canonicalUrlParameters);
401 });
402 });
403 </script>
404</#if>