Publicador de contenidos

Se ha producido un error al procesar la plantilla.
Java method "com.sun.proxy.$Proxy627.getCalendarBooking(long)" threw an exception when invoked on com.sun.proxy.$Proxy627 object "com.liferay.calendar.service.impl.CalendarBookingLocalServiceImpl@1f8dfa54"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign calendarBooking = CalendarBoo...  [in template "21222#21260#41707205" at line 50, column 5]
----
1<#assign BuscadorAgendaService = serviceLocator.findService("net.izfe.gipuzkoa.agenda.buscador.api.BuscadorAgendaService") /> 
2<#assign CalendarBookingLocalService = serviceLocator.findService("com.liferay.calendar.service.CalendarBookingLocalService") /> 
3<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
4<#assign AssetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") /> 
5<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") /> 
6<#assign DlAppServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppServiceUtil"] /> 
7 
8<#assign HttpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"] /> 
9<#assign url = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()> 
10<#assign calendarBookingId = HttpUtil.getParameter(url,"entryId")> 
11<#assign instanceIndex = HttpUtil.getParameter(url,"instanceIndex")> 
12<#assign parameters = HttpUtil.getParameterMap(url)> 
13<#list parameters as key, parameter> 
14    <#if key?contains("entryId") && parameter[0]!=""> 
15        <#assign calendarBookingId = parameter[0]> 
16    <#elseif key?contains("instanceIndex") && parameter[0]!=""> 
17        <#assign instanceIndex = parameter[0]> 
18    </#if> 
19</#list> 
20 
21<#assign default_category_background_color = "6c757d"> 
22<#assign default_category_text_color = "fff"> 
23 
24<#if themeDisplay.getLocale() == "es_ES" > 
25    <#assign abrir_mapa ="Abrir mapa en otra ventana"> 
26    <#assign mas_informacion_es ="Más información sobre el evento "> 
27    <#assign mas_informacion_eus =""> 
28    <#assign add_calendario ="Añadir a calendario"> 
29    <#assign add_calendar ="Añadir a Google Calendar"> 
30<#else> 
31    <#assign abrir_mapa ="Ireki mapa beste leiho batean"> 
32    <#assign mas_informacion_eus =" ekitaldiari buruz"> 
33    <#assign mas_informacion_es ="Informazio gehiago"> 
34    <#assign add_calendario ="Egutegira gehitu"> 
35    <#assign add_calendar ="Google Calendar-era gehitu"> 
36</#if> 
37 
38<#attempt> 
39  <#assign calendarBookingIdNumber = calendarBookingId?number> 
40<#recover> 
41  <#assign calendarBookingIdNumber = -1> 
42</#attempt> 
43<#attempt> 
44  <#assign instanceIndexNumber = instanceIndex?number> 
45<#recover> 
46  <#assign instanceIndexNumber = -1> 
47</#attempt> 
48 
49<#if calendarBookingIdNumber != -1 > 
50    <#assign calendarBooking = CalendarBookingLocalService.getCalendarBooking(calendarBookingIdNumber) /> 
51    <#if instanceIndexNumber != -1 > 
52        <#assign evento = BuscadorAgendaService.getEvento(calendarBookingIdNumber, instanceIndexNumber, themeDisplay.getLocale(), themeDisplay.getPortalURL()) /> 
53    <#else> 
54        <#assign evento = BuscadorAgendaService.getEvento(calendarBookingIdNumber, themeDisplay.getLocale(), themeDisplay.getPortalURL()) /> 
55    </#if> 
56    <#assign startDate=evento.getStartDate()> 
57    <#assign endDate=evento.getEndDate()> 
58    <#assign images_folder = themeDisplay.getPathThemeImages() /> 
59	<#assign direccion="" /> 
60    <#if evento.direccion?has_content >  
61        <#assign direccion=direccion+evento.direccion /> 
62    </#if> 
63    <#if evento.direccion?has_content && evento.localizacion?has_content> 
64        <#assign direccion=direccion+"/" /> 
65    </#if> 
66    <#if evento.localizacion?has_content > 
67        <#assign direccion=direccion+evento.localizacion /> 
68    </#if>      
69  
70 	<#assign fileEntryId = "" /> 
71 	<#assign assetEntry = AssetEntryLocalService.fetchEntry("com.liferay.calendar.model.CalendarBooking", evento.calendarBookingId) /> 
72 	<#assign assetLinks = AssetLinkLocalService.getLinks(assetEntry.getEntryId()) /> 
73 	<#list assetLinks as assetLink> 
74 		<#if assetLink.getEntryId1() != assetEntry.getEntryId()> 
75 			<#assign assetLinkEntry = AssetEntryLocalService.getAssetEntry(assetLink.getEntryId1()) /> 
76 			 
77 			<#if assetLinkEntry.mimeType?starts_with("image/")> 
78 				<#assign dlFileEntry = DLFileEntryLocalService.getDLFileEntry(assetLinkEntry.getClassPK()) /> 
79 				<#assign fileEntryId = dlFileEntry.getFileEntryId() /> 
80 			</#if> 
81 		</#if> 
82 	</#list>	                        
83 
84    <@liferay_util["html-top"]> 
85        <#if evento.title?has_content > 
86            <title>${evento.title}</title> 
87            <meta property="og:title" content='${evento.title}'> 
88        </#if> 
89        <#if evento.imagenPath?has_content > 
90            <meta property="og:image" content='${evento.imagenPath}'> 
91        </#if> 
92        <#if evento.direccion?has_content > 
93            <meta property="og:description" content='${evento.direccion}'> 
94        </#if> 
95        <meta property="og:url" content='${themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()}'> 
96    </@> 
97  
98    <div id="izfe-detalles-evento" class="mt-4 mb-4">   
99        <div class="row flex-column-reverse flex-md-row"> 
100            <div class="col-12 col-md-8"> 
101                <h2 class="mb-4"> 
102                    ${evento.title} 
103                </h2> 
104 
105                <!-- SEPARAR FECHAS Y HORAS--> 
106                <#attempt> 
107                    <#assign fechaInicio = startDate />																											   
108                <#recover> 
109                    <#assign fechaInicio = "" /> 
110                </#attempt> 
111 
112                <#attempt> 
113                    <#assign horaInicio = evento.getStartOnlyTime() /> 
114                <#recover> 
115                    <#assign horaInicio = "" /> 
116                </#attempt> 
117 
118                <#attempt> 
119                    <#assign fechaFin = endDate />																										 
120                <#recover> 
121                    <#assign fechaFin = "" /> 
122                </#attempt> 
123 
124                <#attempt> 
125                    <#assign horaFin = evento.getEndOnlyTime() /> 
126                <#recover> 
127                    <#assign horaFin = "" /> 
128                </#attempt> 
129 
130                <#-- D A T A --> 
131                <div class="izfe-bg-blue-dark p-2"> 
132                    <#if fechaInicio == fechaFin > 
133                        <div class="d-flex align-items-center ml-3"> 
134                            <div class="izfe-icon-calendar-time-white"></div> 
135                            <p class="text-white  mb-0 ml-2"> 
136 
137                                <#if fechaInicio != "" > 
138                                    <span class="mr-1"> 
139                                        ${fechaInicio} 
140                                    </span> 
141                                </#if> 
142 
143                                <#if fechaFin != "" && fechaFin != fechaInicio> 
144
145                                    <span class="ml-1"> 
146                                        ${fechaFin} 
147                                    </span> 
148                                <#elseif !evento.isAllDay()> 
149                                    <span class="ml-3 mr-1"> 
150                                        ${horaInicio} 
151                                    </span> 
152
153                                    <span class="ml-1"> 
154                                        ${horaFin} 
155                                    </span> 
156                                </#if>      
157 
158                            </p> 
159                        </div> 
160                    <#else> 
161                        <div class="d-flex align-items-center ml-3"> 
162                            <div class="izfe-icon-calendar-time-white"></div> 
163                            <p class="text-white  mb-0 ml-2">${fechaInicio}</p> 
164                            <span class="text-white  ml-2 mr-2">-</span> 
165                            <p class="text-white  mb-0">${fechaFin}</p> 
166                        </div> 
167                    </#if> 
168                </div> 
169                 
170                <#-- K O K A P E N A --> 
171                <#if evento.localizacion?has_content || evento.direccion?has_content> 
172                    <div class="izfe-evento-localizacion-direccion d-flex align-items-center pl-3 pr-3 pt-2 pb-2"> 
173                        <div class="d-flex flex-column flex-lg-row align-items-lg-center">                           
174                         
175                            <#if evento.urlDireccion != ""> 
176                                <a class="ml-2 d-flex align-items-center" aria-label="${abrir_mapa}" href="${evento.urlDireccion}" target="_blank"> 
177                                    <div class="izfe-icon-ubicacion-blue"></div> 
178                                    <p class="mb-0 ml-2"> 
179                                        <#if evento.direccion?has_content >                                 
180                                            ${evento.direccion} 
181                                        </#if> 
182                                        <#if evento.direccion?has_content && evento.localizacion?has_content> 
183                                            <span class="ml-1 mr-1">/</span> 
184                                        </#if> 
185                                        <#if evento.localizacion?has_content > 
186                                            ${evento.localizacion}  
187                                        </#if>                             
188                                    </p> 
189                                </a> 
190                            <#else> 
191                                <div class="ml-2 d-flex align-items-center"> 
192                                    <div class="izfe-icon-ubicacion"></div> 
193                                    <p class=" mb-0 ml-2"> 
194                                        <#if evento.direccion?has_content >                               
195                                            ${evento.direccion}</p> 
196                                        </#if> 
197                                        <#if evento.direccion?has_content && evento.localizacion?has_content> 
198                                            <span class="ml-1 mr-1">/</span> 
199                                        </#if> 
200                                        <#if evento.localizacion?has_content > 
201                                            ${evento.localizacion}  
202                                        </#if> 
203                                    </p> 
204                                </div> 
205                            </#if> 
206                        </div>  
207                    </div> 
208                </#if> 
209                 
210                <#-- H I Z K U N T Z A --> 
211                <#if evento.localizacion?has_content || evento.direccion?has_content> 
212                    <div class="izfe-evento-localizacion-direccion d-flex align-items-center pl-3 pr-3 pt-2 pb-2"> 
213                        <div class="d-flex flex-column flex-lg-row align-items-lg-center"> 
214                            <span class="ml-2 d-flex align-items-center"> 
215                             
216                                <div class="izfe-icon-ubicacion-blue "  
217                                    style="display: block; 
218                                        background-image: url('https://www.pasaia.eus/documents/90521/41645111/Icon-Hizkuntza.svg/e76a1109-9132-6b42-e169-f825c3c42a46?t=1736329809854'); 
219                                        background-size: 100% auto;background-repeat: no-repeat;background-position: center center;width: 20px;height: 20px;"> 
220                                </div> 
221                                <p class="mb-0 ml-2"> 
222                                    <#list evento.getListaCategorias() as category> 
223                                        <#if category.properties?has_content && category.properties["folderId"]?has_content && category.properties["icon"]?has_content && category.properties["uuid"]?has_content && category.properties["folderId"] == "41645111"> 
224                                            <img class="izfe-icon mr-2" alt="${category.name}" src="/documents/${themeDisplay.getScopeGroupId()}/${category.properties["folderId"]}/${category.properties["icon"]}/${category.properties["uuid"]}" /> 
225										</#if> 
226                                    </#list> 
227                                </p> 
228                            </span> 
229                        </div> 
230                    </div> 
231                </#if> 
232                 
233             
234 
235                <div class="row mt-4"> 
236                    <div class="col-12" id="izfe-evento-descripcion"> 
237                        <#if evento.descripcion != ""> 
238                            ${evento.descripcion} 
239                        </#if> 
240                    </div>     
241                </div> 
242        		<#assign startDateArr=startDate?split("/") /> 
243        		<#assign endDateArr=evento.getEndDate()?split("/") /> 
244        		<#assign startTime=evento.getStartOnlyTime()?replace(":","")+"00" /> 
245        		<#assign endTime=evento.getEndOnlyTime()?replace(":","")+"00" /> 
246        		 
247        		<#assign startTimeStamp=startDateArr[2]+startDateArr[1]+startDateArr[0]+"T"+startTime+"" /> 
248        		<#assign endTimeStamp=endDateArr[2]+endDateArr[1]+endDateArr[0]+"T"+endTime+"" /> 
249  
250                <div class="calendar-btns"> 
251                    <button id="add-calendar">${add_calendario}</button> 
252                    <a href="https://calendar.google.com/calendar/render?action=TEMPLATE&text=${evento.title?replace("\n", "")?replace("\t", "")?replace('<[^>]+>','','r')?trim?replace('\"',"'")}&dates=${startTimeStamp}/${endTimeStamp}&details=${evento.descripcion?replace("\n", "")?replace("\t", "")?replace('<[^>]+>','','r')?trim}&recur=&location=${direccion}&trp=false">${add_calendar}</a> 
253                </div> 
254            </div> 
255 
256            <div class="col-12 col-md-4"> 
257 				<#if fileEntryId?has_content> 
258 					<@adaptive_media_image["img"] 
259 						alt="" 
260 						fileVersion=DlAppServiceUtil.getFileEntry(fileEntryId).getFileVersion() 
261 						class="w-100 mb-3" /> 
262 				</#if> 
263                 
264 
265 
266                <#if evento.webEvento != ""> 
267                    <a class="izfe-btn-blue d-block text-center" href="${evento.webEvento}" aria-label="${mas_informacion_es}${evento.title}${mas_informacion_eus}" target="_blank"> 
268                        <@liferay.language key="DGN.mas-informacion-evento" /> 
269                    </a> 
270                </#if> 
271            </div>  
272        </div>               
273		 
274		<!-- EVENTOS RELACIONADOS --> 
275		<#assign eventosRelacionados = BuscadorAgendaService.listaProximosEventos( 
276			themeDisplay.getCompanyId(),  
277			themeDisplay.getLocale(),  
278			themeDisplay.getPortalURL(),  
279			null,  
280			10,  
281			[themeDisplay.getLayout().getGroupId()])  
282		/> 
283		<#if eventosRelacionados?has_content> 
284			<div class="row mt-4 mb-4" id="izfe-evento-relacionados"> 
285				<div class="listaEventos container-agenda-template col-12"> 
286					<div> 
287						<h3 class="mb-3"> 
288							<@liferay.language key="DGN.otros-eventos"/> 
289						</h3> 
290					</div> 
291					<div class="row"> 
292						<#assign contadorRelacionados = 0 > 
293						 
294						<#list eventosRelacionados as eventoRelacionado> 
295							<#if (eventoRelacionado.calendarBookingId != evento.calendarBookingId) ||  
296									(eventoRelacionado.isRecurring() && eventoRelacionado.instanceIndex != evento.instanceIndex)> 
297 
298								<#assign imagePath = "" /> 
299								<#assign fileEntryId = "" /> 
300								<#assign assetEntry = AssetEntryLocalService.fetchEntry("com.liferay.calendar.model.CalendarBooking", eventoRelacionado.calendarBookingId) /> 
301								<#assign assetLinks = AssetLinkLocalService.getLinks(assetEntry.getEntryId()) /> 
302								<#list assetLinks as assetLink> 
303									<#if assetLink.getEntryId1() != assetEntry.getEntryId()> 
304										<#assign assetLinkEntry = AssetEntryLocalService.getAssetEntry(assetLink.getEntryId1()) /> 
305										 
306										<#if assetLinkEntry.mimeType?starts_with("image/")> 
307											<#assign dlFileEntry = DLFileEntryLocalService.getDLFileEntry(assetLinkEntry.getClassPK()) /> 
308											<#assign imagePath = "/documents/${dlFileEntry.getGroupId()}/${dlFileEntry.getFolderId()}/${dlFileEntry.getTitle()}/${dlFileEntry.getUuid()}" /> 
309											<#assign fileEntryId = dlFileEntry.getFileEntryId() /> 
310										</#if> 
311									</#if> 
312								</#list> 
313 
314								<#attempt> 
315									<#assign fechaInicioRelacionado = eventoRelacionado.getStartDate() />																																 
316								<#recover> 
317									<#assign fechaInicioRelacionado = "" /> 
318								</#attempt> 
319 
320								<#attempt> 
321									<#assign horaInicioRelacionado = eventoRelacionado.getStartOnlyTime() /> 
322								<#recover> 
323									<#assign horaInicioRelacionado = "" /> 
324								</#attempt> 
325 
326								<#attempt> 
327									<#assign fechaFinRelacionado = eventoRelacionado.getEndDate() />																																   
328								<#recover> 
329									<#assign fechaFinRelacionado = "" /> 
330								</#attempt> 
331 
332								<#attempt> 
333									<#assign horaFinRelacionado = eventoRelacionado.getEndOnlyTime() /> 
334								<#recover> 
335									<#assign horaFinRelacionado = "" /> 
336								</#attempt> 
337 
338								<#if contadorRelacionados < 3 > 
339 
340									<#assign eventoURL = "/web/pasaia/agenda/ekitaldia?entryId=" + eventoRelacionado.getCalendarBookingId() /> 
341									<#if eventoRelacionado.isRecurring() > 
342										<#assign eventoURL = eventoURL + "&instanceIndex=" + eventoRelacionado.getInstanceIndex() /> 
343									</#if> 
344									<div class="col-12 col-lg-4 mb-4"> 
345										<div class="izfe-evento-item-link d-block izfe-bg-blue-dark text-white h-100 m-0"> 
346											<div class="izfe-evento-item row m-0"> 
347												<div class="col-4 p-0"> 
348													<span class="d-flex h-100 align-items-center">  
349														<#if imagePath?has_content> 
350															<img class="izfe-evento-img h-100" 
351																alt="" 
352																src="${imagePath}?imageThumbnail=1" 
353															/> 
354														</#if> 
355													</span> 
356												</div> 
357												<div class="col-8 p-0"> 
358													<span class="d-flex h-100 w-100 p-0"> 
359														<div class="d-flex flex-column p-3" style="justify-content:flex-start !important;"> 
360														    <div class="row"> 
361                            										<div class="col-12"> 
362                            											<#-- Columna derecha para el resto --> 
363                            											<div class="d-flex justify-content-end"> 
364                            												<#list eventoRelacionado.getListaCategorias() as category> 
365                            													<#if category.properties?has_content  
366                            															&& category.properties["folderId"]?has_content  
367                            															&& category.properties["icon"]?has_content  
368                            															&& category.properties["uuid"]?has_content 
369                            															&& category.properties["folderId"] == "41627360"> 
370                            														<div class="d-flex align-items-center ml-2"> 
371                            															<img class="izfe-icon" alt="${category.name}" 
372                            																src="/documents/${themeDisplay.getScopeGroupId()}/${category.properties["folderId"]}/${category.properties["icon"]}/${category.properties["uuid"]}" /> 
373                            															 
374                            														</div> 
375                            													</#if> 
376                            												</#list> 
377                            											</div> 
378                            										</div> 
379                            									</div> 
380                            									<div class="row"> 
381                            									    <div class="col-12"> 
382															<p id="${eventoRelacionado.calendarBookingId}" class="mb-3 h4 text-dark">${eventoRelacionado.title}</p> 
383															<div class="d-flex align-items-center izfe-evento-fecha flex-wrap mb-2"> 
384																<span class="izfe-icon-calendar-time-black"></span>  
385																<span class="ml-1 mr-1"> 
386																	<#if fechaInicioRelacionado != "" > 
387																		${fechaInicioRelacionado} 
388																	</#if> 
389																	<#if fechaFinRelacionado != "" && fechaFinRelacionado != fechaInicioRelacionado >  
390																		- ${fechaFinRelacionado} 
391																	<#elseif eventoRelacionado.allDay == false>   
392																		${horaInicioRelacionado} - ${horaFinRelacionado} 
393																	</#if> 
394																</span> 
395															</div> 
396															 
397															<#-- K O K A P E N A --> 
398															<div class="d-flex align-items-center flex-wrap izfe-evento-localizacion"> 
399																<#if eventoRelacionado.getLocalizacion()!=""> 
400																	<span class="izfe-icon-ubicacion mb-2">${eventoRelacionado.localizacion}</span> 
401																</#if> 
402															</div> 
403															 
404													 
405															 
406                                                            <#-- H I Z K U N T Z A --> 
407                                                            <div class="d-flex align-items-center flex-wrap izfe-evento-hizkuntza"> 
408                            									<span class="izfe-icon-hizkuntza"> 
409                                                                    <#list eventoRelacionado.getListaCategorias() as category> 
410                            												<#if category.properties?has_content  
411                            														&& category.properties["folderId"]?has_content  
412                            														&& category.properties["icon"]?has_content  
413                            														&& category.properties["uuid"]?has_content 
414                            														&& category.properties["folderId"] == "41645111"> 
415                            													 
416                            														<img class="izfe-icon mr-2" alt="${category.name}" 
417                            															src="/documents/${themeDisplay.getScopeGroupId()}/${category.properties["folderId"]}/${category.properties["icon"]}/${category.properties["uuid"]}" /> 
418                            													 
419                            													 
420                            												</#if> 
421                            											</#list> 
422                                                                </span> 
423                            									 
424                            								</div> 
425                                                             
426                            								</div> 
427                            								</div> 
428														</div> 
429													</span> 
430												</div> 
431											</div> 
432											<a aria-labelledby="${eventoRelacionado.getCalendarBookingId()}" href="${eventoURL}"></a> 
433										</div> 
434									</div> 
435								</#if> 
436								<#assign contadorRelacionados++ /> 
437							</#if> 
438						</#list> 
439					</div> 
440				</div> 
441			</div> 
442        </#if> 
443    </div> 
444	 
445    <script type="text/javascript"> 
446        var saveAs=saveAs||function(e){"use strict";if(typeof e==="undefined"||typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,a=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},i=/constructor/i.test(e.HTMLElement)||e.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s="application/octet-stream",d=1e3*40,c=function(e){var t=function(){if(typeof e==="string"){n().revokeObjectURL(e)}else{e.remove()}};setTimeout(t,d)},l=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var o=e["on"+t[r]];if(typeof o==="function"){try{o.call(e,n||e)}catch(a){u(a)}}}},p=function(e){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)){return new Blob([String.fromCharCode(65279),e],{type:e.type})}return e},v=function(t,u,d){if(!d){t=p(t)}var v=this,w=t.type,m=w===s,y,h=function(){l(v,"writestart progress write writeend".split(" "))},S=function(){if((f||m&&i)&&e.FileReader){var r=new FileReader;r.onloadend=function(){var t=f?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");var n=e.open(t,"_blank");if(!n)e.location.href=t;t=undefined;v.readyState=v.DONE;h()};r.readAsDataURL(t);v.readyState=v.INIT;return}if(!y){y=n().createObjectURL(t)}if(m){e.location.href=y}else{var o=e.open(y,"_blank");if(!o){e.location.href=y}}v.readyState=v.DONE;h();c(y)};v.readyState=v.INIT;if(o){y=n().createObjectURL(t);setTimeout(function(){r.href=y;r.download=u;a(r);h();c(y);v.readyState=v.DONE});return}S()},w=v.prototype,m=function(e,t,n){return new v(e,t||e.name||"download",n)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(e,t,n){t=t||e.name||"download";if(!n){e=p(e)}return navigator.msSaveOrOpenBlob(e,t)}}w.abort=function(){};w.readyState=w.INIT=0;w.WRITING=1;w.DONE=2;w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null;return m}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!==null){define("FileSaver.js",function(){return saveAs})} 
447        var ics=function(e,t){"use strict";{if(!(navigator.userAgent.indexOf("MSIE")>-1&&-1==navigator.userAgent.indexOf("MSIE 10"))){void 0===e&&(e="default"),void 0===t&&(t="Calendar");var r=-1!==navigator.appVersion.indexOf("Win")?"\r\n":"\n",n=[],i=["BEGIN:VCALENDAR","PRODID:"+t,"VERSION:2.0"].join(r),o=r+"END:VCALENDAR",a=["SU","MO","TU","WE","TH","FR","SA"];return{events:function(){return n},calendar:function(){return i+r+n.join(r)+o},addEvent:function(t,i,o,l,u,s){if(void 0===t||void 0===i||void 0===o||void 0===l||void 0===u)return!1;if(s&&!s.rrule){if("YEARLY"!==s.freq&&"MONTHLY"!==s.freq&&"WEEKLY"!==s.freq&&"DAILY"!==s.freq)throw"Recurrence rrule frequency must be provided and be one of the following: 'YEARLY', 'MONTHLY', 'WEEKLY', or 'DAILY'";if(s.until&&isNaN(Date.parse(s.until)))throw"Recurrence rrule 'until' must be a valid date string";if(s.interval&&isNaN(parseInt(s.interval)))throw"Recurrence rrule 'interval' must be an integer";if(s.count&&isNaN(parseInt(s.count)))throw"Recurrence rrule 'count' must be an integer";if(void 0!==s.byday){if("[object Array]"!==Object.prototype.toString.call(s.byday))throw"Recurrence rrule 'byday' must be an array";if(s.byday.length>7)throw"Recurrence rrule 'byday' array must not be longer than the 7 days in a week";s.byday=s.byday.filter(function(e,t){return s.byday.indexOf(e)==t});for(var c in s.byday)if(a.indexOf(s.byday[c])<0)throw"Recurrence rrule 'byday' values must include only the following: 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'"}}var g=new Date(l),d=new Date(u),f=new Date,S=("0000"+g.getFullYear().toString()).slice(-4),E=("00"+(g.getMonth()+1).toString()).slice(-2),v=("00"+g.getDate().toString()).slice(-2),y=("00"+g.getHours().toString()).slice(-2),A=("00"+g.getMinutes().toString()).slice(-2),T=("00"+g.getSeconds().toString()).slice(-2),b=("0000"+d.getFullYear().toString()).slice(-4),D=("00"+(d.getMonth()+1).toString()).slice(-2),N=("00"+d.getDate().toString()).slice(-2),h=("00"+d.getHours().toString()).slice(-2),I=("00"+d.getMinutes().toString()).slice(-2),R=("00"+d.getMinutes().toString()).slice(-2),M=("0000"+f.getFullYear().toString()).slice(-4),w=("00"+(f.getMonth()+1).toString()).slice(-2),L=("00"+f.getDate().toString()).slice(-2),O=("00"+f.getHours().toString()).slice(-2),p=("00"+f.getMinutes().toString()).slice(-2),Y=("00"+f.getMinutes().toString()).slice(-2),U="",V="";y+A+T+h+I+R!=0&&(U="T"+y+A+T,V="T"+h+I+R);var B,C=S+E+v+U,j=b+D+N+V,m=M+w+L+("T"+O+p+Y);if(s)if(s.rrule)B=s.rrule;else{if(B="rrule:FREQ="+s.freq,s.until){var x=new Date(Date.parse(s.until)).toISOString();B+=";UNTIL="+x.substring(0,x.length-13).replace(/[-]/g,"")+"000000Z"}s.interval&&(B+=";INTERVAL="+s.interval),s.count&&(B+=";COUNT="+s.count),s.byday&&s.byday.length>0&&(B+=";BYDAY="+s.byday.join(","))}(new Date).toISOString();var H=["BEGIN:VEVENT","UID:"+n.length+"@"+e,"CLASS:PUBLIC","DESCRIPTION:"+i,"DTSTAMP;VALUE=DATE-TIME:"+m,"DTSTART;VALUE=DATE-TIME:"+C,"DTEND;VALUE=DATE-TIME:"+j,"LOCATION:"+o,"SUMMARY;LANGUAGE=en-us:"+t,"TRANSP:TRANSPARENT","END:VEVENT"];return B&&H.splice(4,0,B),H=H.join(r),n.push(H),H},download:function(e,t){if(n.length<1)return!1;t=void 0!==t?t:".ics",e=void 0!==e?e:"calendar";var a,l=i+r+n.join(r)+o;if(-1===navigator.userAgent.indexOf("MSIE 10"))a=new Blob([l]);else{var u=new BlobBuilder;u.append(l),a=u.getBlob("text/x-vCalendar;charset="+document.characterSet)}return saveAs(a,e+t),l},build:function(){return!(n.length<1)&&i+r+n.join(r)+o}}}console.log("Unsupported Browser")}}; 
448	</script> 
449 
450		 <script type="text/javascript">						 
451			cal_event = ics(); 
452			var descripcion=`${evento.descripcion?replace("\n", "")?replace("\t", "")?replace('<[^>]+>','','r')?trim}`; 
453			<#assign startDateArr=startDate?split("/") /> 
454			<#assign endDateArr=evento.getEndDate()?split("/") /> 
455			var startDate="${startDateArr[1]}/${startDateArr[0]}/${startDateArr[2]}"; 
456			var endDate="${endDateArr[1]}/${endDateArr[0]}/${endDateArr[2]}"; 
457			<#assign direccion="" /> 
458            <#if evento.direccion?has_content >  
459                <#assign direccion=direccion+evento.direccion /> 
460            </#if> 
461            <#if evento.direccion?has_content && evento.localizacion?has_content> 
462                <#assign direccion=direccion+"/" /> 
463            </#if> 
464            <#if evento.localizacion?has_content > 
465                <#assign direccion=direccion+evento.localizacion /> 
466            </#if>                             
467 
468    		cal_event.addEvent( 
469    			'${evento.title?replace('<[^>]+>','','r')?replace('\'','"')}',  
470    			descripcion,  
471    			'${direccion}',  
472    			startDate+' ${evento.getStartOnlyTime()}',  
473    			endDate+' ${evento.getEndOnlyTime()}'); 
474    			 
475    		document.getElementById("add-calendar").addEventListener("click", function() { 
476    			cal_event.download('${evento.title?replace('<[^>]+>','','r')?replace('\'','"')}'); 
477    		}); 
478 
479	</script> 
480	 
481	<script> 
482	$(document).ready(function() { 
483		var canonicalUrlParameters = ""; 
484		var currentUrl = window.location.href; 
485		var urlParams = new URLSearchParams(window.location.search); 
486		urlParams.forEach(function(value, key) { 
487			if (""==canonicalUrlParameters) { 
488				canonicalUrlParameters = "?"; 
489			} else { 
490				canonicalUrlParameters += "&"; 
491
492			canonicalUrlParameters += key + "=" + value; 
493		}); 
494		 
495		// Obtener el <link rel="canonical"> 
496		var canonicalLink = $('link[rel="canonical"]'); 
497		canonicalLink.attr('href',canonicalLink.attr('href') + canonicalUrlParameters); 
498 
499		// Obtener todos los <link rel="alternate"> 
500		$('link[rel="alternate"]').each(function() { 
501			$(this).attr('href',$(this).attr('href') + canonicalUrlParameters); 
502		}); 
503	}); 
504	</script> 
505</#if>