Ruta de navegación

Publicador de contenidos

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> BuscadorAgendaService.getEvento(calendarBookingIdNumber, themeDisplay.getLocale(), themeDisplay.getPortalURL())  [in template "20907#20945#32670169" at line 28, 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#32670169" at line 28, 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<#if themeDisplay.getLocale() == "es_ES" > 
8    <#assign abrir_mapa ="Abrir mapa en otra ventana"> 
9    <#assign mas_informacion_es ="Más información sobre el evento "> 
10    <#assign mas_informacion_eus =""> 
11    <#assign add_calendario ="Añadir a calendario"> 
12    <#assign add_calendar ="Añadir a Google Calendar"> 
13<#else> 
14    <#assign abrir_mapa ="Ireki mapa beste leiho batean"> 
15    <#assign mas_informacion_eus =" ekitaldiari buruz"> 
16    <#assign mas_informacion_es ="Informazio gehiago"> 
17    <#assign add_calendario ="Egutegira gehitu"> 
18    <#assign add_calendar ="Google Calendar-era gehitu"> 
19</#if> 
20 
21<#attempt> 
22  <#assign calendarBookingIdNumber = calendarBookingId?number> 
23<#recover> 
24  <#assign calendarBookingIdNumber = -1> 
25</#attempt> 
26 
27<#if calendarBookingIdNumber != -1 > 
28    <#assign evento = BuscadorAgendaService.getEvento(calendarBookingIdNumber, themeDisplay.getLocale(), themeDisplay.getPortalURL()) /> 
29    <#assign images_folder = themeDisplay.getPathThemeImages() /> 
30	<#assign direccion="" /> 
31    <#if evento.direccion?has_content >  
32        <#assign direccion=direccion+evento.direccion /> 
33    </#if> 
34    <#if evento.direccion?has_content && evento.localizacion?has_content> 
35        <#assign direccion=direccion+"/" /> 
36    </#if> 
37    <#if evento.localizacion?has_content > 
38        <#assign direccion=direccion+evento.localizacion /> 
39    </#if>                             
40 
41    <@liferay_util["html-top"]> 
42        <#if evento.title?has_content > 
43            <title>${evento.title}</title> 
44            <meta property="og:title" content='${evento.title}'> 
45        </#if> 
46        <#if evento.imagenPath?has_content > 
47            <meta property="og:image" content='${evento.imagenPath}'> 
48        </#if> 
49        <#if evento.direccion?has_content > 
50            <meta property="og:description" content='${evento.direccion}'> 
51        </#if> 
52        <meta property="og:url" content='${currentCompleteURL}'> 
53    </@> 
54 
55    <div class="container mt-4 mb-4">   
56        <div class="row"> 
57            <div class="col-12 col-md-8"> 
58                <h2 class="izfe-semibold mb-4"> 
59                    ${evento.title} 
60                </h2> 
61 
62                <!-- SEPARAR FECHAS Y HORAS--> 
63 
64                <#attempt> 
65                    <#assign fechaInicio = evento.getStartDate() /> 
66                    <#assign fechaInicio = BuscadorAgendaService.formatearFechaPorIdioma(fechaInicio, themeDisplay.getLanguageId()) /> 
67                <#recover> 
68                    <#assign fechaInicio = "" /> 
69                </#attempt> 
70 
71                <#attempt> 
72                    <#assign horaInicio = evento.getStartOnlyTime() /> 
73                <#recover> 
74                    <#assign horaInicio = "" /> 
75                </#attempt> 
76 
77                <#attempt> 
78                    <#assign fechaFin = evento.getEndDate() /> 
79                    <#assign fechaFin = BuscadorAgendaService.formatearFechaPorIdioma(fechaFin, themeDisplay.getLanguageId()) /> 
80                <#recover> 
81                    <#assign fechaFin = "" /> 
82                </#attempt> 
83 
84                <#attempt> 
85                    <#assign horaFin = evento.getEndOnlyTime() /> 
86                <#recover> 
87                    <#assign horaFin = "" /> 
88                </#attempt> 
89 
90                <div class="izfe-bg-blue-dark p-2"> 
91                    <#if fechaInicio == fechaFin > 
92                        <div class="d-flex align-items-center ml-3"> 
93                            <div class="izfe-icon-calendar-time-white"></div> 
94                            <p class="text-white izfe-semibold mb-0 ml-2 izfe-h4"> 
95 
96                                <#if fechaInicio != "" > 
97                                    <span class="mr-1"> 
98                                        ${fechaInicio} 
99                                    </span> 
100                                </#if> 
101 
102                                <#if fechaFin != "" && fechaFin != fechaInicio > 
103
104                                    <span class="ml-1"> 
105                                        ${fechaFin} 
106                                    </span> 
107                                <#else> 
108                                    <span class="ml-3 mr-1"> 
109                                        ${horaInicio} 
110                                    </span> 
111
112                                    <span class="ml-1"> 
113                                        ${horaFin} 
114                                    </span> 
115                                </#if>                    
116                            </p> 
117                        </div> 
118                    <#else> 
119                        <div class="d-flex align-items-center ml-3"> 
120                            <div class="izfe-icon-calendar-time-white"></div> 
121                            <p class="text-white izfe-semibold mb-0 ml-2 izfe-h4"> 
122                                ${fechaInicio} 
123                            </p> 
124                            <span class="text-white izfe-semibold ml-2 mr-2">-</span> 
125                            <p class="text-white izfe-semibold mb-0 izfe-h4"> 
126                                ${fechaFin} 
127                            </p> 
128                        </div> 
129                    </#if> 
130                </div> 
131                 
132                <#if evento.localizacion?has_content || evento.direccion?has_content> 
133                    <div class="izfe-evento-localizacion-direccion d-flex align-items-center pl-3 pr-3 pt-2 pb-2">              
134                        <div class="d-flex flex-column flex-lg-row align-items-lg-center">                            
135                            <#if evento.urlDireccion != ""> 
136                                <a class="ml-2 d-flex align-items-center" aria-label="${abrir_mapa}" href="${evento.urlDireccion}" target="_blank"> 
137                                    <div class="izfe-icon-ubicacion-blue"></div> 
138                                    <p class="izfe-semibold mb-0 ml-2 izfe-h5"> 
139                                        <#if evento.direccion?has_content >                                 
140                                            ${evento.direccion} 
141                                        </#if> 
142                                        <#if evento.direccion?has_content && evento.localizacion?has_content> 
143                                            <span class="ml-1 mr-1">/</span> 
144                                        </#if> 
145                                        <#if evento.localizacion?has_content > 
146                                            ${evento.localizacion}  
147                                        </#if>                             
148                                    </p> 
149                                </a> 
150                            <#else> 
151                                <div class="ml-2 d-flex align-items-center"> 
152                                    <div class="izfe-icon-ubicacion"></div> 
153                                    <p class="izfe-semibold mb-0 ml-2 izfe-h5"> 
154                                        <#if evento.direccion?has_content >                               
155                                            ${evento.direccion}</p> 
156                                        </#if> 
157                                        <#if evento.direccion?has_content && evento.localizacion?has_content> 
158                                            <span class="ml-1 mr-1">/</span> 
159                                        </#if> 
160                                        <#if evento.localizacion?has_content > 
161                                            ${evento.localizacion}  
162                                        </#if> 
163                                    </p> 
164                                </div> 
165                            </#if> 
166                        </div>  
167                    </div> 
168                </#if> 
169 
170                <div class="row mt-4"> 
171                    <div class="col-12" id="izfe-evento-descripcion"> 
172                        <#if evento.descripcion != ""> 
173                            ${evento.descripcion} 
174                            <#--  ${HtmlUtil.render(evento.descripcion)}  --> 
175                        </#if> 
176                    </div>     
177                </div> 
178        		<#assign startDateArr=evento.getStartDate()?split("/") /> 
179        		<#assign endDateArr=evento.getEndDate()?split("/") /> 
180        		<#assign startTime=evento.getStartOnlyTime()?replace(":","")+"00" /> 
181        		<#assign endTime=evento.getEndOnlyTime()?replace(":","")+"00" /> 
182        		 
183        		<#assign startTimeStamp=startDateArr[2]+startDateArr[1]+startDateArr[0]+"T"+startTime+"" /> 
184        		<#assign endTimeStamp=endDateArr[2]+endDateArr[1]+endDateArr[0]+"T"+endTime+"" /> 
185  
186                <div class="calendar-btns"> 
187                    <button id="add-calendar">${add_calendario}</button> 
188                    <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> 
189                </div> 
190            </div> 
191 
192            <div class="col-12 col-md-4"> 
193                <#attempt> 
194                    <#if evento.imagenPath != "" > 
195                        <img  
196                            alt=""  
197                            class="w-100 mb-3"  
198                            src="${evento.imagenPath}" 
199                        /> 
200                    <#else> 
201                        <img  
202                            alt=""  
203                            title="img-not-found"  
204                            class="w-100" 
205                            src="${images_folder}/izfe/img-not-found.png"  
206                        />  
207                    </#if> 
208                <#recover> 
209 
210                </#attempt> 
211                 
212 
213                <#assign listaCategorias = evento.listaCategorias /> 
214 
215                <#if listaCategorias?has_content > 
216                    <div class="d-flex flex-wrap"> 
217                        <#list listaCategorias as categoria > 
218                            <p class="text-blue-second text-uppercase mb-0 mr-2"> 
219                                ${categoria.getName()} 
220                            </p> 
221                        </#list> 
222                    </div> 
223 
224                    <hr/> 
225                </#if> 
226 
227                <#if evento.webEvento != "" > 
228                    <a class="izfe-btn-blue d-block text-center" href="${evento.webEvento}" aria-label="${mas_informacion_es}${evento.title}${mas_informacion_eus}" target="_blank"> 
229                        <@liferay.language key="DGN.mas-informacion-evento" /> 
230                    </a> 
231                </#if> 
232            </div>  
233        </div> 
234                 
235     
236 
237        <div class="row mt-4 mb-4" id="izfe-evento-relacionados"> 
238            <#assign categoriasEventoActual = evento.listaCategorias /> 
239            <#assign categoriasIds = [] /> 
240 
241            <#if categoriasEventoActual?has_content > 
242                <#list categoriasEventoActual as categoriaEventoActual > 
243                    <#assign categoriasIds = categoriasIds + [categoriaEventoActual.categoryId] /> 
244                </#list> 
245            </#if> 
246 
247 
248            <#assign eventosRelacionados = BuscadorAgendaService.listaProximosEventos(themeDisplay.getCompanyId(), themeDisplay.getLocale(), themeDisplay.getPortalURL(), categoriasIds,  
249                3, [themeDisplay.getLayout().getGroupId()]) /> 
250             
251            <#if eventosRelacionados?has_content> 
252                <#assign mostrarTituloRelacionados = true> 
253                <#assign contadorRelacionados = 0 > 
254                 
255                <#list eventosRelacionados as eventoRelacionado> 
256                    <#if eventoRelacionado.calendarBookingId != evento.calendarBookingId > 
257 
258                        <#attempt> 
259                            <#assign fechaInicioRelacionado = eventoRelacionado.getStartDate() /> 
260                            <#assign fechaInicioRelacionado = BuscadorAgendaService.formatearFechaPorIdioma(fechaInicioRelacionado, themeDisplay.getLanguageId()) /> 
261                        <#recover> 
262                            <#assign fechaInicioRelacionado = "" /> 
263                        </#attempt> 
264 
265                        <#attempt> 
266                            <#assign horaInicioRelacionado = eventoRelacionado.getStartOnlyTime() /> 
267                        <#recover> 
268                            <#assign horaInicioRelacionado = "" /> 
269                        </#attempt> 
270 
271                        <#attempt> 
272                            <#assign fechaFinRelacionado = eventoRelacionado.getEndDate() /> 
273                            <#assign fechaFinRelacionado = BuscadorAgendaService.formatearFechaPorIdioma(fechaFinRelacionado, themeDisplay.getLanguageId()) /> 
274                        <#recover> 
275                            <#assign fechaFinRelacionado = "" /> 
276                        </#attempt> 
277 
278                        <#attempt> 
279                            <#assign horaFinRelacionado = eventoRelacionado.getEndOnlyTime() /> 
280                        <#recover> 
281                            <#assign horaFinRelacionado = "" /> 
282                        </#attempt> 
283 
284 
285                        <#if mostrarTituloRelacionados > 
286                            <div class="col-12"> 
287                                <h3 class="izfe-semibold mb-3"> 
288                                    <@liferay.language key="DGN.otros-eventos"/> 
289                                </h3> 
290                            </div> 
291                        </#if> 
292 
293                        <#if contadorRelacionados < 3 > 
294                            <div class="izfe-agenda-relacionado col-12 col-lg-4 mb-3 mb-lg-0"> 
295                                <a href="/actualidad/agenda/evento?entryId=${eventoRelacionado.calendarBookingId}" aria-label="${mas_informacion_es}${eventoRelacionado.title}${mas_informacion_eus}"> 
296                                    <div class="izfe-bg-blue-dark-second eventoRelacionado p-2 "> 
297                                        <div class="text-white d-flex align-items-center"> 
298                                            <span class="d-none"> 
299                                                ${fechaInicioRelacionado} - ${fechaFinRelacionado} 
300                                                 
301                                            </span> 
302                                            <#if fechaInicioRelacionado != "" > 
303                                                <p class="small text-white mr-1"> 
304                                                    ${fechaInicioRelacionado} 
305                                                </p> 
306                                            </#if> 
307                                            <#if fechaFinRelacionado != "" && fechaFinRelacionado != fechaInicioRelacionado > 
308                                                <p>-</p> 
309                                                <p class="small text-white ml-1"> 
310                                                    ${fechaFinRelacionado} 
311                                                </p> 
312                                            <#else> 
313                                                <p class="small text-white ml-2 mr-1"> 
314                                                    ${horaInicioRelacionado} 
315                                                </p> 
316                                                <p>-</p> 
317                                                <p class="small text-white ml-1"> 
318                                                    ${horaFinRelacionado} 
319                                                </p> 
320                                            </#if> 
321                                        </div> 
322                                        <h3 class="text-white izfe-h4">${eventoRelacionado.title}</h3> 
323                                        <p class="small text-white">${eventoRelacionado.localizacion}</p> 
324                                    </div> 
325                                </a> 
326                            </div> 
327                        </#if> 
328                        <#assign contadorRelacionados++ /> 
329                        <#assign mostrarTituloRelacionados = false /> 
330                    </#if> 
331                </#list> 
332            </#if> 
333        </div> 
334    </div> 
335 
336 
337    <style> 
338        #izfe-evento-descripcion *{ 
339            font-family: 'Poppins', Helvetica, Arial, sans-serif !important; 
340            font-size: 15px !important; 
341            line-height: 20px; 
342
343        #izfe-evento-relacionados a{ 
344            text-decoration: none !important; 
345
346        #izfe-evento-relacionados a:hover *{ 
347            opacity: .7; 
348        }    
349 
350        #izfe-evento-relacionados .eventoRelacionado { 
351            min-height: 175px; 
352
353        .izfe-evento-localizacion-direccion{ 
354            border: 1.5px solid #004996; 
355
356 
357        .izfe-float-left{ 
358            float: left; 
359
360        .izfe-float-right{ 
361            float: left; 
362
363 
364        .calendar-btns { 
365            display: flex; 
366            flex-direction: column; 
367            align-items: flex-start; 
368            gap: 1rem; 
369            margin-top: 1.5rem; 
370
371         
372        .calendar-btns > * { 
373            background-color: transparent; 
374            border: 3px solid #004996; 
375            padding: 0.5rem 1rem; 
376            border-radius: 100px; 
377            color: #004996 !important; 
378            font-weight: bold; 
379            transition: all ease 0.25s; 
380
381         
382        .calendar-btns > *:hover { 
383            background-color: #004996; 
384            color: #fff !important; 
385            text-decoration: none; 
386            border: 3px solid #004996; 
387
388         
389        .calendar-btns > a { 
390            border: 3px solid #004996; 
391
392         
393        .calendar-btns > *:before { 
394            content: ""; 
395            background-image: url(/documents/20933/51832620/googlecalendar-add.svg/9d6629ee-f3d4-d19d-16f0-8fb2b8d782fb?t=1684320223063); 
396            width: 1.4rem; 
397            height: 1.4rem; 
398            display: inline-block; 
399            background-size: cover; 
400            margin-right: 0.5rem; 
401            vertical-align: middle; 
402
403         
404        .calendar-btns > :hover::before { 
405            background-image: url(/documents/20933/51832620/googlecalendar-add-hover.svg/3189e2b7-d616-3830-8357-50009c09bfc0?t=1684320223414); 
406
407         
408        .calendar-btns > #add-calendar::before { 
409            background-image: url(/documents/20933/51832620/calendar-add.svg/877c3465-d510-6131-03f5-101fbab05f15?t=1684320223745); 
410
411         
412        .calendar-btns > #add-calendar:hover::before { 
413            background-image: url(/documents/20933/51832620/calendar-add-hover.svg/c6fcebd6-4560-0d3f-47bf-64e909351f73?t=1684320224069); 
414
415         
416        </style> 
417    <script type="text/javascript"> 
418var 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})} 
419 
420var 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")}}; 
421	</script> 
422 
423		 <script type="text/javascript">						 
424			cal_event = ics(); 
425			var descripcion=`${evento.descripcion?replace("\n", "")?replace("\t", "")?replace('<[^>]+>','','r')?trim}`; 
426			<#assign startDateArr=evento.getStartDate()?split("/") /> 
427			<#assign endDateArr=evento.getEndDate()?split("/") /> 
428			var startDate="${startDateArr[1]}/${startDateArr[0]}/${startDateArr[2]}"; 
429			var endDate="${endDateArr[1]}/${endDateArr[0]}/${endDateArr[2]}"; 
430			<#assign direccion="" /> 
431            <#if evento.direccion?has_content >  
432                <#assign direccion=direccion+evento.direccion /> 
433            </#if> 
434            <#if evento.direccion?has_content && evento.localizacion?has_content> 
435                <#assign direccion=direccion+"/" /> 
436            </#if> 
437            <#if evento.localizacion?has_content > 
438                <#assign direccion=direccion+evento.localizacion /> 
439            </#if>                             
440 
441    		cal_event.addEvent( 
442    			'${evento.title?replace('<[^>]+>','','r')?replace('\'','"')}',  
443    			descripcion,  
444    			'${direccion}',  
445    			startDate+' ${evento.getStartOnlyTime()}',  
446    			endDate+' ${evento.getEndOnlyTime()}'); 
447    			 
448    		document.getElementById("add-calendar").addEventListener("click", function() { 
449    			cal_event.download('${evento.title?replace('<[^>]+>','','r')?replace('\'','"')}'); 
450    		}); 
451 
452	</script> 
453</#if>