Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> BuscadorAgendaService.getEvento(calendarBookingId?number, themeDisplay.getLocale(), themeDisplay.getPortalURL()) [in template "20907#20945#44248578" at line 9, column 23] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign evento = BuscadorAgendaServic... [in template "20907#20945#44248578" at line 9, column 5] ----
1<#assign HttpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"] />
2<#assign url = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()>
3<#assign calendarBookingId = HttpUtil.getParameter(url,"entryId")>
4<#assign BuscadorAgendaService = serviceLocator.findService("net.izfe.gipuzkoa.agenda.buscador.api.BuscadorAgendaService") />
5<#assign currentCompleteURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
6
7
8<#if calendarBookingId?has_content >
9 <#assign evento = BuscadorAgendaService.getEvento(calendarBookingId?number, themeDisplay.getLocale(), themeDisplay.getPortalURL()) />
10 <#assign images_folder = themeDisplay.getPathThemeImages() />
11
12 <@liferay_util["html-top"]>
13 <#if evento.title?has_content >
14 <meta property="og:title" content='${evento.title}'>
15 </#if>
16 <#if evento.imagenPath?has_content >
17 <meta property="og:image" content='${evento.imagenPath}'>
18 </#if>
19 <#if evento.direccion?has_content >
20 <meta property="og:description" content='${evento.direccion}'>
21 </#if>
22 <meta property="og:url" content='${currentCompleteURL}'>
23 </@>
24
25 <div class="container mt-4 mb-4">
26 <div class="row">
27 <div class="col-12 col-md-8">
28 <h2 class="izfe-semibold mb-4">
29 ${evento.title}
30 </h2>
31
32 <!-- SEPARAR FECHAS Y HORAS-->
33
34 <#attempt>
35 <#assign fechaInicio = evento.getStartDate() />
36 <#assign fechaInicio = BuscadorAgendaService.formatearFechaPorIdioma(fechaInicio, themeDisplay.getLanguageId()) />
37 <#recover>
38 <#assign fechaInicio = "" />
39 </#attempt>
40
41 <#attempt>
42 <#assign horaInicio = evento.getStartOnlyTime() />
43 <#recover>
44 <#assign horaInicio = "" />
45 </#attempt>
46
47 <#attempt>
48 <#assign fechaFin = evento.getEndDate() />
49 <#assign fechaFin = BuscadorAgendaService.formatearFechaPorIdioma(fechaFin, themeDisplay.getLanguageId()) />
50 <#recover>
51 <#assign fechaFin = "" />
52 </#attempt>
53
54 <#attempt>
55 <#assign horaFin = evento.getEndOnlyTime() />
56 <#recover>
57 <#assign horaFin = "" />
58 </#attempt>
59
60 <div class="izfe-bg-blue-dark p-2">
61 <#if fechaInicio == fechaFin >
62 <div class="d-flex align-items-center ml-3">
63 <div class="izfe-icon-calendar-time-white"></div>
64 <p class="text-white izfe-semibold mb-0 ml-2 izfe-h4">
65
66 <#if fechaInicio != "" >
67 <span class="mr-1">
68 ${fechaInicio}
69 </span>
70 </#if>
71
72 <#if fechaFin != "" && fechaFin != fechaInicio >
73 -
74 <span class="ml-1">
75 ${fechaFin}
76 </span>
77 <#else>
78 <span class="ml-3 mr-1">
79 ${horaInicio}
80 </span>
81 -
82 <span class="ml-1">
83 ${horaFin}
84 </span>
85 </#if>
86 </p>
87 </div>
88 <#else>
89 <div class="d-flex align-items-center ml-3">
90 <div class="izfe-icon-calendar-time-white"></div>
91 <p class="text-white izfe-semibold mb-0 ml-2 izfe-h4">
92 ${fechaInicio}
93 </p>
94 <span class="text-white izfe-semibold ml-2 mr-2">-</span>
95 <p class="text-white izfe-semibold mb-0 izfe-h4">
96 ${fechaFin}
97 </p>
98 </div>
99 </#if>
100 </div>
101
102 <#if evento.localizacion?has_content || evento.direccion?has_content>
103 <div class="izfe-evento-localizacion-direccion d-flex align-items-center pl-3 pr-3 pt-2 pb-2">
104 <div class="d-flex flex-column flex-lg-row align-items-lg-center">
105 <#if evento.urlDireccion != "">
106 <a class="ml-2 d-flex align-items-center" href="${evento.urlDireccion}" target="_blank">
107 <div class="izfe-icon-ubicacion-blue"></div>
108 <p class="izfe-semibold mb-0 ml-2 izfe-h5">
109 <#if evento.direccion?has_content >
110 ${evento.direccion}
111 </#if>
112 <#if evento.direccion?has_content && evento.localizacion?has_content>
113 <span class="ml-1 mr-1">/</span>
114 </#if>
115 <#if evento.localizacion?has_content >
116 ${evento.localizacion}
117 </#if>
118 </p>
119 </a>
120 <#else>
121 <div class="ml-2 d-flex align-items-center">
122 <div class="izfe-icon-ubicacion"></div>
123 <p class="izfe-semibold mb-0 ml-2 izfe-h5">
124 <#if evento.direccion?has_content >
125 ${evento.direccion}</p>
126 </#if>
127 <#if evento.direccion?has_content && evento.localizacion?has_content>
128 <span class="ml-1 mr-1">/</span>
129 </#if>
130 <#if evento.localizacion?has_content >
131 ${evento.localizacion}
132 </#if>
133 </p>
134 </div>
135 </#if>
136 </div>
137 </div>
138 </#if>
139
140 <div class="row mt-4">
141 <div class="col-12" id="izfe-evento-descripcion">
142 <#if evento.descripcion != "">
143 ${evento.descripcion}
144 <#-- ${HtmlUtil.render(evento.descripcion)} -->
145 </#if>
146 </div>
147 </div>
148 </div>
149
150 <div class="col-12 col-md-4">
151 <#attempt>
152 <#if evento.imagenPath != "" >
153 <img
154 alt="${evento.title?replace('"',' ')}"
155 title="${evento.title?replace('"',' ')}"
156 class="w-100 mb-3"
157 src="${evento.imagenPath}"
158 />
159 <#else>
160 <img
161 alt="img-not-found"
162 title="img-not-found"
163 class="w-100"
164 src="${images_folder}/izfe/img-not-found.png"
165 />
166 </#if>
167 <#recover>
168
169 </#attempt>
170
171
172 <#assign listaCategorias = evento.listaCategorias />
173
174 <#if listaCategorias?has_content >
175 <div class="d-flex flex-wrap">
176 <#list listaCategorias as categoria >
177 <p class="text-blue-second text-uppercase mb-0 mr-2">
178 ${categoria.getName()}
179 </p>
180 </#list>
181 </div>
182
183 <hr/>
184 </#if>
185
186 <#if evento.webEvento != "" >
187 <a class="izfe-btn-blue d-block text-center" href="${evento.webEvento}" target="_blank">
188 <@liferay.language key="DGN.mas-informacion-evento" />
189 </a>
190 </#if>
191 </div>
192 </div>
193
194
195
196 <div class="row mt-4 mb-4" id="izfe-evento-relacionados">
197 <#assign categoriasEventoActual = evento.listaCategorias />
198 <#assign categoriasIds = [] />
199
200 <#if categoriasEventoActual?has_content >
201 <#list categoriasEventoActual as categoriaEventoActual >
202 <#assign categoriasIds = categoriasIds + [categoriaEventoActual.categoryId] />
203 </#list>
204 </#if>
205
206
207 <#assign eventosRelacionados = BuscadorAgendaService.listaProximosEventos(themeDisplay.getCompanyId(), themeDisplay.getLocale(), themeDisplay.getPortalURL(), categoriasIds,
208 3, [themeDisplay.getLayout().getGroupId()]) />
209
210 <#if eventosRelacionados?has_content>
211 <#assign mostrarTituloRelacionados = true>
212 <#assign contadorRelacionados = 0 >
213
214 <#list eventosRelacionados as eventoRelacionado>
215 <#if eventoRelacionado.calendarBookingId != evento.calendarBookingId >
216
217 <#attempt>
218 <#assign fechaInicioRelacionado = eventoRelacionado.getStartDate() />
219 <#assign fechaInicioRelacionado = BuscadorAgendaService.formatearFechaPorIdioma(fechaInicioRelacionado, themeDisplay.getLanguageId()) />
220 <#recover>
221 <#assign fechaInicioRelacionado = "" />
222 </#attempt>
223
224 <#attempt>
225 <#assign horaInicioRelacionado = eventoRelacionado.getStartOnlyTime() />
226 <#recover>
227 <#assign horaInicioRelacionado = "" />
228 </#attempt>
229
230 <#attempt>
231 <#assign fechaFinRelacionado = eventoRelacionado.getEndDate() />
232 <#assign fechaFinRelacionado = BuscadorAgendaService.formatearFechaPorIdioma(fechaFinRelacionado, themeDisplay.getLanguageId()) />
233 <#recover>
234 <#assign fechaFinRelacionado = "" />
235 </#attempt>
236
237 <#attempt>
238 <#assign horaFinRelacionado = eventoRelacionado.getEndOnlyTime() />
239 <#recover>
240 <#assign horaFinRelacionado = "" />
241 </#attempt>
242
243
244 <#if mostrarTituloRelacionados >
245 <div class="col-12">
246 <h3 class="izfe-semibold mb-3">
247 <@liferay.language key="DGN.otros-eventos"/>
248 </h3>
249 </div>
250 </#if>
251
252 <#if contadorRelacionados < 3 >
253 <div class="izfe-agenda-relacionado col-12 col-lg-4 mb-3 mb-lg-0">
254 <a href="/agenda/evento?entryId=${eventoRelacionado.calendarBookingId}">
255 <div class="izfe-bg-blue-dark-second eventoRelacionado p-2 ">
256 <div class="text-white d-flex align-items-center">
257 <span class="d-none">
258 ${fechaInicioRelacionado} - ${fechaFinRelacionado}
259
260 </span>
261 <#if fechaInicioRelacionado != "" >
262 <p class="small text-white mr-1">
263 ${fechaInicioRelacionado}
264 </p>
265 </#if>
266 <#if fechaFinRelacionado != "" && fechaFinRelacionado != fechaInicioRelacionado >
267 <p>-</p>
268 <p class="small text-white ml-1">
269 ${fechaFinRelacionado}
270 </p>
271 <#else>
272 <p class="small text-white ml-2 mr-1">
273 ${horaInicioRelacionado}
274 </p>
275 <p>-</p>
276 <p class="small text-white ml-1">
277 ${horaFinRelacionado}
278 </p>
279 </#if>
280 </div>
281 <h3 class="text-white izfe-h4">${eventoRelacionado.title}</h3>
282 <p class="small text-white">${eventoRelacionado.localizacion}</p>
283 </div>
284 </a>
285 </div>
286 </#if>
287 <#assign contadorRelacionados++ />
288 <#assign mostrarTituloRelacionados = false />
289 </#if>
290 </#list>
291 </#if>
292 </div>
293 </div>
294
295
296 <style>
297 #izfe-evento-descripcion *{
298 font-family: 'Poppins', Helvetica, Arial, sans-serif !important;
299 font-size: 15px !important;
300 line-height: 20px;
301 }
302 #izfe-evento-relacionados a{
303 text-decoration: none !important;
304 }
305 #izfe-evento-relacionados a:hover *{
306 opacity: .7;
307 }
308
309 #izfe-evento-relacionados .eventoRelacionado {
310 min-height: 175px;
311 }
312 .izfe-evento-localizacion-direccion{
313 border: 1.5px solid #004996;
314 }
315
316 .izfe-float-left{
317 float: left;
318 }
319 .izfe-float-right{
320 float: left;
321 }
322 </style>
323</#if>