Titular ocio y deporte

Leisure and sport

Asset Publisher

An error occurred while processing the template.
The string doesn't match the expected date/time/date-time format. The string to parse was: "". The expected format was: "W3C XML Schema date".
The nested reason given follows:
The value didn't match the expected pattern: (-?[0-9]+)-([0-9]{2})-([0-9]{2})(Z|(?:[-+][0-9]{2}:[0-9]{2}))?

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign fechaEvento = fechaInicio?dat...  [in template "20116#20160#197437" at line 576, column 17]
----
1<#-- ESTILOS EN EL TEMA 
2 
3<style type="text/css"> 
4	.calendario{ 
5		position: relative; 
6		margin: 0; -- margin: 5% 20% 5% 20%; -- 
7		margin-top: 50px; 
8
9	 
10	.partial-width{ 
11		margin-left: 10%; 
12		margin-right: 10%; 
13
14	 
15	.calendario .anios{ 
16		overflow: hidden; 
17
18	 
19	.calendario .anios .anioMostrar{ 
20		float: left; 
21		border: 2px solid black; 
22		margin-right: 5px; 
23		cursor: pointer; 
24
25	 
26	.calendario .anios p{ 
27		display: inline; 
28		padding: 15px; 
29		font-size: 18pt !important; 
30
31	 
32	.calendario .nombreMes{ 
33		margin-top: 30px; 
34		padding-left: 10px; 
35		color: white; 
36		background: rgb(185,65,85); /* For browsers that do not support gradients */ 
37		background: -webkit-linear-gradient(90deg, rgb(169,66,118), rgb(198,64,57)); /* For Safari 5.1 to 6.0 */ 
38		background: -o-linear-gradient(90deg, rgb(169,66,118), rgb(198,64,57)); /* For Opera 11.1 to 12.0 */ 
39		background: -moz-linear-gradient(90deg, rgb(169,66,118), rgb(198,64,57)); /* For Firefox 3.6 to 15 */ 
40		background: linear-gradient(90deg, rgb(169,66,118), rgb(198,64,57)); /* Standard syntax */ 
41		cursor: pointer; 
42
43 
44	.calendario .nombreMes p{ 
45		font-size: 18pt !important; 
46		font-weight: 600; 
47
48	 
49------------------------------------- Estilo cabecera evento ------------------------------------- 
50	.calendario .evento{ 
51		position: relative; 
52		overflow: auto; 
53		clear: left; 
54		border-top: 1px solid #d9d9d9; 
55		background-color: #FAFAFA; 
56		padding-top: 15px; padding-bottom: 15px; 
57		cursor: pointer; 
58
59	 
60	.calendario .evento .fecha{ 
61		position: relative; 
62		float: left; 
63		width: 103px; 
64		height: 110px; 
65		color: white; 
66
67 
68	--------------- Estilo fechas --------------- 
69	.calendario .evento .fecha p{ 
70		text-transform: uppercase; 
71
72	 
73	.calendario .evento .fecha .fechaInicio{ 
74		position: absolute; 
75		left: 0; top: 0; 
76		width: 70px; 
77		height: 100%; 
78		margin-left: 10px; 
79		text-align: center; 
80		z-index: 2; 
81
82	 
83	.calendario .evento .fecha .fechaInicio span{ 
84		font-size: 27pt !important; 
85		position: relative; 
86		top: -8px; 
87
88	 
89	.calendario .evento .fecha .fechaInicio p{ 
90		font-size: 10pt !important; 
91		position: absolute; 
92		top: 33px; 
93		left: 21px; 
94
95	 
96	.calendario .evento .fecha .fechaInicioBack{ 
97		position: absolute; 
98		top:0; left: 0; 
99		width: 70px; height: 66px; 
100		margin-left: 10px; 
101		border-left: 70px solid black; 
102		border-bottom: 27px solid transparent; 
103		z-index: 1; 
104
105	 
106	.calendario .evento .fecha .fechaFin{ 
107		position: absolute; 
108		left: 0; top: 0; 
109		width: 70px; 
110		height: 100%; 
111		margin-left: 10px; 
112		text-align: center; 
113		z-index: 2; 
114
115	 
116	.calendario .evento .fecha .fechaFin span{ 
117		position: relative; 
118		font-size: 27pt !important; 
119		bottom: -52px; 
120
121	 
122	.calendario .evento .fecha .fechaFin p{ 
123		position: absolute; 
124		font-size: 10pt !important; 
125		bottom: -12px; 
126		left: 21px; 
127
128	 
129	.calendario .evento .fecha .fechaFinBack{ 
130		position: absolute; 
131		bottom:0; left: 0; 
132		width: 70px; height: 66px; 
133		margin-left: 10px; 
134		border-right: 70px solid black; 
135		border-top: 27px solid transparent; 
136		z-index: 1; 
137
138	 
139	.calendario .evento .fecha .fechaRelleno{ 
140		position: absolute; 
141		top:0; left: 0; 
142		width: 70px; height: 66px; 
143		margin-left: 10px; 
144		z-index: 1; 
145		background-color: black; 
146		border-bottom: 12px solid #FAFAFA; 
147
148	--------------- Fechas fin --------------- 
149	 
150	.calendario .imgEventoMini{ 
151		float: left; 
152		height: 110px; width: 110px; -- height: 146px; Para conservar la proporción ancho / alto = 0.75 -- 
153		overflow: hidden; 
154
155	 
156	.calendario .imgEventoMini .imagenEventoSmall{ 
157		max-width: 100%; 
158		min-height: 100%; 
159		width: 110px; 
160
161	 
162	.calendario .imgEventoMini p{ 
163		font-size: 9pt !important; 
164
165	 
166	.calendario .evento .titulo{ 
167		margin-left: 230px; 
168		margin-top: 10px; 
169
170 
171	.calendario .evento .titulo p{ 
172		font-size: 18pt !important; 
173		font-weight: 600; 
174
175	 
176	.calendario .evento .descripResumen{ 
177		margin-left: 230px; 
178
179	 
180	.calendario .evento .simboloEntrada{ 
181		position: absolute; 
182		bottom: 0; right: 0; 
183		height: 50px; width: 50px; 
184		border-bottom: 50px solid rgb(198,64,57); 
185		border-left: 50px solid transparent; 
186
187 
188	.calendario .evento .linkVenta{ 
189		text-decoration: none; 
190
191	 
192	.calendario .evento span{ 
193		position: absolute; 
194		bottom: 0; right: 0; 
195		font-size: 23pt !important; 
196		color: white; 
197		z-index: 1; 
198
199	 
200------------------------------------- Estilo evento desplegado ------------------------------------- 
201	.calendario .desplegable{ 
202		display: none; 
203		overflow: auto; 
204		padding-bottom: 20pt; 
205		padding-top: 20pt; 
206		background-color: #f2f2f2; 
207
208	 
209	.calendario .desplegable .contImgDesple .imagenEventoBig{ 
210		display: block; 
211		margin: auto; 
212		max-width: 100%; 
213		text-align: center; 
214
215	 
216	.calendario .desplegable .tituloApartado{ 
217		display: inline; 
218		margin-left: 15px; 
219		font-weight: 600; 
220		text-transform: uppercase; 
221
222	 
223	.calendario .desplegable .descripDesple{ 
224		position: relative; 
225		margin: 20pt 0 20pt 0; 
226		background-color: #fafafa; 
227		padding: 10px; 
228		padding-left: 12%; padding-right: 12%; 
229
230	 
231	.calendario .desplegable .descripDesple .descripContenido{ 
232		padding-left: 21px; 
233		line-height: 160%; 
234		text-align: justify; 
235
236	 
237	.calendario .desplegable .fechaDireccAlto{ 
238		position: relative; 
239		display: flex; 
240
241	 
242	.calendario .desplegable .fechaDireccAlto .fechaDesple{ 
243		width: 50%; 
244		float: left; 
245		margin: 0 0 20pt 0; 
246		padding: 10px; 
247		padding-left: 12%; 
248		background-color: #fafafa; 
249		border: 3px solid #f2f2f2; 
250		align-items: stretch; 
251
252	 
253	.calendario .desplegable .fechaDireccAlto .fechaDesple .fechaContenido{ 
254		padding-left: 34px; 
255		line-height: 160%; 
256
257	 
258	.calendario .desplegable .fechaDireccAlto .direccionDesple{ 
259		width: 50%; 
260		float: left; 
261		margin: 0 0 20pt 0; 
262		padding: 10px; 
263		padding-right: 12%; 
264		background-color: #fafafa; 
265		border: 3px solid #f2f2f2; 
266		align-items: stretch; 
267
268	 
269	.calendario .desplegable .fechaDireccAlto .direccionDesple .direccionContenido{ 
270		padding-left: 28px; 
271		line-height: 160%; 
272
273	 
274	.calendario .desplegable .mapContDesple{ 
275		position: relative; 
276		margin: 0 0 20pt 0; 
277		padding-bottom: 17%; 
278		width: auto; 
279		clear: left; 
280
281	 
282	.calendario .desplegable .mapContDesple .map{ 
283		position: absolute; 
284		display: block; 
285		margin: auto; 
286		border: 0; 
287		width: 100%; 
288		height: 100%; 
289
290	 
291	.calendario .desplegable .enlaceDesple{ 
292		width: 50%; 
293		margin: 0 0 20pt 0; 
294		padding: 10px; 
295		padding-left: 12%; 
296		clear: left; 
297		background-color: #fafafa; 
298		border: 3px solid #f2f2f2; 
299
300 
301	.calendario .desplegable .enlaceVentaDesple{ 
302		width: 50%; 
303		margin: 0 0 20pt 0; 
304		padding: 10px; 
305		padding-left: 12%; 
306		clear: left; 
307		background-color: #fafafa; 
308		border: 3px solid #f2f2f2; 
309
310	 
311	.calendario .desplegable .enlaceDesple a, .desplegable .enlaceVentaDesple a{ 
312		color: black; 
313
314	 
315	.calendario .desplegable .enlaceVentaDesple p{ 
316		display: inline; 
317		margin-left: 10px; 
318
319	 
320	.calendario .desplegable .enlaceDesple p{ 
321		display: inline; 
322		margin-left: 10px; 
323
324	 
325------------------------------------- Comportamientos hover ------------------------------------- 
326		 
327	.calendario .anios .anioMostrar:hover{ 
328		background-color: black; 
329		color: white; 
330
331	 
332	.calendario .borderEvento:hover{ 
333		border: 3px solid rgb(198,64,57) !important; 
334
335	 
336	 
337 
338	 
339------------------------------------- Comportamiento responsive -------------------------------------	 
340 
341	@media only screen and (max-width: 1200px) {				 
342		.calendario .desplegable .mapContDesple { 
343			padding-bottom: 23%; 
344
345
346 
347	@media only screen and (max-width: 991px) {	 
348		.calendario .desplegable .mapContDesple { 
349			padding-bottom: 25%; 
350
351
352	 
353	@media only screen and (max-width: 767px) { 
354		.partial-width{ 
355			margin-left: 5%; 
356			margin-right: 5%; 
357
358		 
359		.calendario .desplegable .mapContDesple { 
360			padding-bottom: 28%; 
361
362
363	 
364	@media only screen and (max-width: 476px) { 
365		.partial-width{ 
366			margin-left: 0%; 
367			margin-right: 0%; 
368
369		 
370		.calendario .desplegable .mapContDesple { 
371			padding-bottom: 40%; 
372
373		 
374		.calendario .evento{ 
375			overflow: hidden; 
376
377		 
378		.calendario .evento .fecha{ 
379			width: 50px; 
380
381		 
382		.calendario .evento .fecha .fechaInicio{ 
383			width: 40px; 
384			margin-left: 5px; 
385		}				 
386		.calendario .evento .fecha .fechaInicioBack{ 
387			width: 40px;  
388			margin-left: 5px; 
389			border-left: 40px solid black; 
390
391		 
392		.calendario .evento .fecha .fechaFin{ 
393			width: 40px; 
394			margin-left: 5px; 
395
396		.calendario .evento .fecha .fechaFinBack{ 
397			width: 40px;  
398			margin-left: 5px; 
399			border-right: 40px solid black; 
400
401				 
402		.calendario .evento .fecha .fechaInicio span{ 
403			font-size: 18pt !important; 
404			top: -3px; 
405
406		 
407		.calendario .evento .fecha .fechaInicio p{ 
408			font-size: 10pt !important; 
409			top: 28px; 
410			left: 8px; 
411
412		 
413		.calendario .evento .fecha .fechaFin span{ 
414			font-size: 18pt !important; 
415			bottom: -58px; 
416
417		 
418		.calendario .evento .fecha .fechaFin p{ 
419			font-size: 10pt !important; 
420			left: 8px; bottom: -6px; 
421
422		 
423		.calendario .evento .fecha .fechaRelleno{ 
424			width: 40px; 
425			margin-left: 5px; 
426
427		 
428		.calendario .evento .titulo{ 
429			margin-left: 180px; 
430			margin-top: 0; 
431
432		 
433		.calendario .evento .titulo p{ 
434			font-size: 16pt !important; 
435
436		 
437		.calendario .evento .descripResumen{ 
438			display: none; 
439
440		 
441		.calendario .desplegable .fechaDireccAlto{ 
442			display: block; 
443
444		 
445		.calendario .desplegable .fechaDireccAlto .fechaDesple{ 
446			width: auto; 
447			float: none; 
448			padding-right: 12% 
449
450		 
451		.calendario .desplegable .fechaDireccAlto .direccionDesple{ 
452			width: auto; 
453			float: none; 
454			padding-left: 12% 
455
456		 
457		.calendario .desplegable .enlaceDesple{ 
458			width: auto; 
459			padding-right: 12% 
460
461		 
462		.calendario .desplegable .enlaceVentaDesple{ 
463			width: auto; 
464			padding-right: 12% 
465
466		 
467		 
468
469 
470 
471------------------------------------- Ocultación elementos ------------------------------------- 
472		 
473	.calendario .mesPasado{ 
474		display: none; 
475
476	 
477	.calendario .ocultarAnio{ 
478		display: none; 
479
480	 
481</style> 
482 
483--> 
484 
485 
486 
487 
488<script type="text/javascript"> 
489	function showDesplegable(ID, ID_collapse){ 
490		var str1="border_"; 
491		var idBorder=str1.concat(ID);  
492		if(getComputedStyle(document.getElementById(ID), null).display == "none"){ 
493			for(i=0; i<document.getElementsByClassName('desplegable').length; i++) 
494				document.getElementsByClassName('desplegable')[i].style.display = "none"; 
495			for(i=0; i<document.getElementsByClassName('borderEvento').length; i++){ 
496				document.getElementsByClassName('borderEvento')[i].style.border = "none";	 
497
498			document.getElementById(ID).style.display = "block"; 
499			document.getElementById(idBorder).style.border = "3px solid rgb(198,64,57)"; 
500		}else if(getComputedStyle(document.getElementById(ID), null).display == "block"){ 
501			document.getElementById(ID).style.display = "none"; 
502			document.getElementById(idBorder).style.border = "none"; 
503
504
505		 
506</script> 
507 
508<script type="text/javascript"> 
509	function showMesPasado(nombreMes){ 
510		var element=document.getElementById(nombreMes); 
511		 
512		if(getComputedStyle(element, null).display == "block"){ 
513			element.style.display = "none";			 
514		}else if(getComputedStyle(element, null).display == "none"){ 
515			element.style.display = "block"; 
516
517	}	 
518</script> 
519 
520<script type="text/javascript"> 
521	function showEventosAño(IdAño){ 
522		if(getComputedStyle(document.getElementById(IdAño), null).display == "none"){ 
523			for(i=0; i<document.getElementsByClassName('containEventosAño').length; i++) 
524				document.getElementsByClassName('containEventosAño')[i].style.display = "none"; 
525			document.getElementById(IdAño).style.display = "block"; 
526
527
528</script> 
529 
530 
531 
532<#if entries?has_content> 
533 
534	<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
535	 
536	<#assign mapApiKey = propsUtil.get("Google.maps.api.key")> 
537	<#assign arrayAño1 = [] > 
538	<#assign arrayAño2 = [] > 
539	<#assign arrayAño3 = [] > 
540	<#assign arrayAñosMostrados = [] >		<#-- Array con la fecha de los años que vamos a mostrar --> 
541	<#assign fechaActual = .now?date?string["MM"]?number> 
542	<#assign anioActual = .now?date?string["yyyy"]?number> 
543	 
544	<#assign mes1 = journalArticleLocalService.getLatestArticle(90142)/> 
545	<#assign mes2 = journalArticleLocalService.getLatestArticle(90154)/> 
546	<#assign mes3 = journalArticleLocalService.getLatestArticle(90166)/> 
547	<#assign mes4 = journalArticleLocalService.getLatestArticle(90178)/> 
548	<#assign mes5 = journalArticleLocalService.getLatestArticle(90190)/> 
549	<#assign mes6 = journalArticleLocalService.getLatestArticle(90202)/> 
550	<#assign mes7 = journalArticleLocalService.getLatestArticle(90218)/> 
551	<#assign mes8 = journalArticleLocalService.getLatestArticle(90230)/> 
552	<#assign mes9 = journalArticleLocalService.getLatestArticle(90242)/> 
553	<#assign mes10 = journalArticleLocalService.getLatestArticle(90254)/> 
554	<#assign mes11 = journalArticleLocalService.getLatestArticle(90266)/> 
555	<#assign mes12 = journalArticleLocalService.getLatestArticle(90278)/> 
556	<#assign nombreMes = ["${mes1.getDescription(locale)}", "${mes2.getDescription(locale)}", "${mes3.getDescription(locale)}", "${mes4.getDescription(locale)}", "${mes5.getDescription(locale)}", "${mes6.getDescription(locale)}", "${mes7.getDescription(locale)}", "${mes8.getDescription(locale)}", "${mes9.getDescription(locale)}", "${mes10.getDescription(locale)}", "${mes11.getDescription(locale)}", "${mes12.getDescription(locale)}"]> 
557 
558	<#assign descripcionDelEvento = journalArticleLocalService.getLatestArticle(90290).getDescription(locale)/> 
559	<#assign fechas = journalArticleLocalService.getLatestArticle(90302).getDescription(locale)/> 
560	<#assign direccion = journalArticleLocalService.getLatestArticle(90314).getDescription(locale)/> 
561	<#assign linkWeb = journalArticleLocalService.getLatestArticle(115497).getDescription(locale)/> 
562	<#assign entradas = journalArticleLocalService.getLatestArticle(115521).getDescription(locale)/> 
563	 
564	<#--  Cogemos todas las entradas del Asset (vienen ordenadas por el campo fecha inicio en orden descendente)  --> 
565	<#assign añoComparar=0> 
566 
567	<#list entries as curEntry>        
568		<#assign url=portalUtil.getCurrentCompleteURL(request)> 
569		<#assign classPK = curEntry.getClassPK()> 
570		<#assign article = journalArticleLocalService.getLatestArticle(classPK)>  
571		<#assign document = saxReaderUtil.read(article.getContentByLocale('${themeDisplay.getLocale()}'))> 
572		<#assign rootElement = document.getRootElement()>   
573		<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='FechaInicio']")> 
574		<#assign fechaInicio = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
575 
576		<#assign fechaEvento = fechaInicio?date.xs> 
577		<#assign anioEvento = fechaEvento?string["yyyy"]?number> 
578 
579		<#--  El primer evento determina el año base  --> 
580		<#if curEntry?index == 0> 
581			<#assign añoComparar = anioEvento> 
582			<#assign arrayAño1 = arrayAño1 + [curEntry]> 
583			<#assign arrayAñosMostrados = arrayAñosMostrados + [anioEvento]> 
584		</#if> 
585		 
586		<#--  Comprobamos el año al que pertenece para guardarlo en su respectivo Array  -->	 
587		<#if anioEvento == añoComparar> 
588			<#assign arrayAño1 = arrayAño1 + [curEntry]> 
589		 
590		<#elseif anioEvento == (añoComparar - 1)> 
591			<#assign arrayAño2 = arrayAño2 + [curEntry]> 
592			<#if arrayAñosMostrados?size == 1> 
593				<#assign arrayAñosMostrados = arrayAñosMostrados + [anioEvento]> 
594			</#if> 
595		 
596		<#elseif anioEvento == añoComparar - 2>	 
597			<#assign arrayAño3 = arrayAño3 + [curEntry]> 
598			<#if arrayAñosMostrados?size == 2> 
599				<#assign arrayAñosMostrados = arrayAñosMostrados + [anioEvento]> 
600			</#if> 
601		</#if>       
602	</#list> 
603	 
604	<#assign arrayAño1 = arrayAño1[1..]>		<#-- Para eliminar el último evento mostrado del año acual porque salía duplicado --> 
605	 
606	<#-- Rellenamos el array arrayAñosMostrados para que tenga 3 elementos --> 
607	<#if arrayAñosMostrados?size == 1> 
608		<#assign arrayAñosMostrados = arrayAñosMostrados + [0] + [0]> 
609	<#elseif arrayAñosMostrados?size == 2> 
610		<#assign arrayAñosMostrados = arrayAñosMostrados + [0]> 
611	<#elseif arrayAñosMostrados?size == 0> 
612		<#assign arrayAñosMostrados = arrayAñosMostrados + [0] + [0] + [0]> 
613	</#if> 
614	 
615	<div class="calendario"> 
616 
617		<div class="anios"> 
618			<div class="anioMostrar"> 
619				<p onclick="showEventosAño('eventosAño1')">${añoComparar}</p> 
620			</div> 
621			<#if arrayAño2?size != 0> 
622			<div class="anioMostrar"> 
623				<p onclick="showEventosAño('eventosAño2')">${añoComparar-1}</p> 
624			</div> 
625			</#if> 
626			<#if arrayAño3?size != 0> 
627			<div class="anioMostrar"> 
628				<p onclick="showEventosAño('eventosAño2')">${añoComparar-2}</p> 
629			</div> 
630			</#if>		 
631		</div> 
632 
633		 
634		<@iterarAnioEventos arrayAño=arrayAño1 eventosAñoID="eventosAño1" fechaAño=arrayAñosMostrados[0]/> 
635		<@iterarAnioEventos arrayAño=arrayAño2 eventosAñoID="eventosAño2" fechaAño=arrayAñosMostrados[1]/> 
636		<@iterarAnioEventos arrayAño=arrayAño3 eventosAñoID="eventosAño3" fechaAño=arrayAñosMostrados[2]/> 
637		 
638	</div>	 
639	 
640</#if>	 
641 
642	 
643 
644	 
645<#-------------------------------------------- Macro utilizada para iterar los eventos de un año -------------------------------------------->		 
646	<#macro iterarAnioEventos arrayAño eventosAñoID fechaAño> 
647	 
648		<#-- Array utilizado para controlar cual es el primer evento del mes y mostrar el nombre de este mes.  
649			 Una vez que ya hemos mostrado el nombre del mes pasamos el campo correspondiente a false --> 
650		<#assign mesNew = [true, true, true, true, true, true, true, true, true, true, true, true]> 
651		 
652		<div class="containEventosAño <#if fechaAño != anioActual> ocultarAnio </#if>" id="${eventosAñoID}"> 
653		<#list arrayAño?reverse as eventos>  
654			<#assign classPK = eventos.getClassPK()> 
655			<#assign assetRenderer = eventos.getAssetRenderer()> 
656			<#assign article = journalArticleLocalService.getLatestArticle(classPK)>  
657			<#assign document = saxReaderUtil.read(article.getContentByLocale('${themeDisplay.getLocale()}'))> 
658			<#assign rootElement = document.getRootElement()>   
659			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='FechaInicio']")> 
660			<#assign fechaInicio = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
661			 
662			<#assign fechaEvento = fechaInicio?date.xs> 
663			<#assign diaEvento = fechaEvento?string["dd"]?number> 
664			<#assign mesEvento = fechaEvento?string["MM"]?number> 
665			<#assign anioEvento = fechaEvento?string["yyyy"]?number> 
666			 
667			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='FechaFin']")> 
668			<#assign fechaFin = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
669			 
670			<#if fechaFin == fechaInicio> 
671				<#assign fechaFin = ""> 
672			<#elseif fechaFin != fechaInicio> 
673				<#assign fechaEventoFin = fechaFin?date.xs> 
674				<#assign diaEventoFin = fechaEventoFin?string["dd"]?number> 
675				<#assign mesEventoFin = fechaEventoFin?string["MM"]?number> 
676			</#if> 
677			 
678			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Titulo']")> 
679			<#assign tituloEvento = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
680		 
681			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Descripcion']")> 
682			<#assign descripcionEvento = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
683		 
684			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Direccion']")> 
685			<#assign direccionEvento = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim> 
686 
687			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Geolocation']")> 
688			<#assign geolocationEvento = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim> 
689			<#assign latitude = geolocationEvento[geolocationEvento?index_of(":")+1..geolocationEvento?index_of(",")-1]> 
690			<#assign longitude = geolocationEvento[geolocationEvento?last_index_of(":")+1..geolocationEvento?length-2]> 
691					 
692			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='EnlaceEvento']")> 
693			<#assign enlaceEvento = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
694			 
695			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Venta']")> 
696			<#assign venta = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
697			 
698			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='EnlaceVentaDeTickets']")> 
699			<#assign enlaceVenta = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim>  
700			 
701			<#-- La imagen que recogemos es siempre la imagen añadida con el idioma por defecto. Si no lo hacemos así, error. --> 
702			<#assign documentImg = saxReaderUtil.read(article.getContentByLocale(article.getDefaultLanguageId()))> 
703			<#assign rootElementImg = documentImg.getRootElement()>  
704			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Imagen']")> 
705			<#assign imgEvento = xPathSelector.selectSingleNode(rootElementImg).getStringValue()?trim>  
706			 
707			<#-- Pintamos cada evento en el mes correspondiente --> 
708			<#list 1..12 as mes> 
709				<@mostrarEventoMes mes=mes mesEvento=mesEvento/> 
710			</#list> 
711				 
712			<#if !(eventos?has_next)> 
713				</div>										<#-- Cerramos el div que contiene los eventos del ultimo mes que mostramos--> 
714			</#if> 
715		</#list> 
716		</div> 
717	 
718	</#macro> 
719<#-------------------------------------------- Fin de la macro -------------------------------------------->	 
720	 
721	 
722	 
723	 
724<#-------------------------------------------- Macro utilizada para mostrar cada evento en su mes correspondiente -------------------------------------------->	 
725	<#macro mostrarEventoMes mes mesEvento> 
726		<#if mesEvento == mes> 
727			<#-- Mostramos el nombre del mes la primera vez que nos encontremos con un evento celebrado ese mes --> 
728			<#if mesNew[mes-1] == true> 
729				 
730				<#-- Cerramos el div que contiene todos los eventos del mes mostrado previamente --> 
731				<#if mes != 1>															<#-- El mes no puede ser enero --> 
732					<#assign cerrarDiv = false>											<#-- Creamos este flag para cerrarlo una única vez --> 
733					<#list 0..mes-2 as previousMes>										<#-- Tenemos que haber mostrado un mes previamente --> 
734						<#if mesNew[previousMes] == false && cerrarDiv == false>		<#-- Comprobamos que hemos abierto el contenedor de un mes y no lo hemos cerrado --> 
735							</div> 
736							<#assign cerrarDiv = true> 
737						</#if> 
738					</#list> 
739				</#if> 
740				 
741			<div class="nombreMes" onclick="showMesPasado('${nombreMes[mes-1]}${anioEvento}')"> 
742				<p>${nombreMes[mes-1]} ${anioEvento}</p> 
743			</div> 
744				 
745				<#if mes == 1> 
746					<#assign mesNew = [false] + mesNew[1..]> 
747					<div class="eventosMes <#if mes lt fechaActual> mesPasado </#if>" id="${nombreMes[mes-1]}${anioEvento}">	<#-- Si mes < mesActual, entonces asignamos la clase mes pasado a ese elemento --> 
748				<#elseif mes == 12> 
749					<#assign mesNew = mesNew[0..10] + [false]> 
750					<div class="eventosMes <#if mes lt fechaActual> mesPasado </#if>" id="${nombreMes[mes-1]}${anioEvento}">	<#-- Si mes < mesActual, entonces asignamos la clase mes pasado a ese elemento --> 
751				<#else> 
752					<#assign mesNew = mesNew[0..mes-2] + [false] + mesNew[mes..]> 
753					<div class="eventosMes <#if mes lt fechaActual> mesPasado </#if>" id="${nombreMes[mes-1]}${anioEvento}">	<#-- Si mes < mesActual, entonces asignamos la clase mes pasado a ese elemento --> 
754				</#if>	 
755				<#-- Todo el if anterior es equivalente a: <#assign mesNew[mes] = false> --> 
756				 
757				 
758			</#if> 
759		 
760		<div class="borderEvento" id="border_${classPK}">	 
761 
762			<#-------------------------------------------- Cabecera evento --------------------------------------------> 
763			 
764			<div class="evento" id="${classPK}_collapse" onclick="showDesplegable('${classPK}', '${classPK}_collapse')"> 
765				<div class="fecha"> 
766					<div class="fechaInicio"> 
767						<span>${diaEvento}</span> 
768						<p>${nombreMes[mes-1][0..2]}</p>										 
769					</div> 
770					<div class="fechaInicioBack"></div> 
771					<#if fechaFin != ""> 
772					<div class="fechaFin"> 
773						<span>${diaEventoFin}</span> 
774						<p>${nombreMes[mesEventoFin-1][0..2]}</p>	 
775					</div> 
776					<div class="fechaFinBack"></div> 
777					<#else> 
778					<div class="fechaRelleno"></div> 
779					</#if> 
780				</div> 
781				 
782				<div class="imgEventoMini">  
783					<#if imgEvento != ""> 
784						<img class="imagenEventoSmall" alt="No hay imagen disponible del evento" src="${imgEvento}"/> 
785					<#else> 
786						<p>No hay imagen disponible del evento</p> 
787					</#if> 
788				</div> 
789									 
790				<div class="titulo"> 
791					<p>${tituloEvento}</p> 
792				</div> 
793				 
794				<div class="descripResumen"> 
795					<#if descripcionEvento?length gt 70> 
796						<#assign indiceCorte = descripcionEvento[0..70]?last_index_of(" ")> 
797						<#assign descrip = descripcionEvento[0..indiceCorte]?ensure_ends_with(" (...)")> 
798					<#else> 
799						<#assign descrip = descripcionEvento> 
800					</#if> 
801					<p>${descrip}</p> 
802				</div> 
803				 
804				<#if venta[2..3] == "si"> 
805				<div class="simboloEntrada"> 
806				</div> 
807				<a class="linkVenta" href="${enlaceVenta}" target="_blank"><span class="icon-ticket"></span></a> 
808				</#if> 
809								 
810			</div> 
811			 
812			 
813			<#-------------------------------------------- Evento desplegado --------------------------------------------> 
814			 
815			<div id="${classPK}" class="desplegable"> 
816				<div class="contImgDesple"> 
817					<img class="imagenEventoBig" alt="No hay imagen disponible del evento" src="${imgEvento}"/> 
818				</div> 
819				 
820				<div class="descripDesple"> 
821					<span class="icon-_279"></span><p class="tituloApartado">${descripcionDelEvento}:</p> 
822					<p class="descripContenido">${descripcionEvento}</p> 
823				</div> 
824				 
825				<div class="fechaDireccAlto"> 
826					<div class="fechaDesple"> 
827						<span class="icon-calendar"></span> <p class="tituloApartado">${fechas}:</p> 
828						<p class="fechaContenido"> 
829							<#-- ${diaEvento}/${mesEvento} - <#if diaEventoFin??>${diaEventoFin}<#if mesEvento != mesEventoFin>/${mesEventoFin}</#if></#if> --> 
830							<#if fechaFin != ""> 
831								<#if mesEvento == mesEventoFin> 
832									${diaEvento} - ${diaEventoFin} ${nombreMes[mes-1]} 
833								<#else> 
834									${diaEvento} ${nombreMes[mes-1]} - ${diaEventoFin} ${nombreMes[mesEventoFin-1]} 
835								</#if> 
836							<#else> 
837								${diaEvento} ${nombreMes[mes-1]} 
838							</#if> 
839						</p> 
840					</div> 
841					 
842					<#if direccionEvento != ""> 
843					<div class="direccionDesple"> 
844						<span class="icon-map_marker"></span> <p class="tituloApartado">${direccion}:</p> 
845						<p class="direccionContenido">${direccionEvento}</p> 
846					</div> 
847					</#if> 
848				</div> 
849				 
850				<#if enlaceEvento != ""> 
851				<div class="enlaceDesple"> 
852					<a href="${enlaceEvento?ensure_starts_with('http://')}" target="_blank"> 
853						<span class="icon-link"></span> <p>${linkWeb}</p> 
854					</a> 
855				</div> 
856				</#if> 
857				 
858				<#if venta[2..3] == "si"> 
859				<div class="enlaceVentaDesple"> 
860					<a href="${enlaceVenta}" target="_blank"> 
861						<span class="icon-ticket"></span> <p>${entradas}</p> 
862					</a> 
863				</div> 
864				</#if> 
865				 
866				<div class="mapContDesple"> 
867				  <iframe 
868					class="map" 
869					src="https://www.google.com/maps/embed/v1/place?key=${mapApiKey} 
870					  &q=${latitude},${longitude}" allowfullscreen> 
871				  </iframe>	  				 
872				</div> 
873					<div class="iconoImprimir"> 
874					<@getPrintIcon assetRenderer=assetRenderer /> 
875					</div>				 
876			</div> 
877		</div> 
878		</#if> 
879	</#macro> 
880	<#macro getPrintIcon assetRenderer> 
881 <#if getterUtil.getBoolean(enablePrint)> 
882  <#assign printURL = renderResponse.createRenderURL() /> 
883 
884  ${printURL.setParameter("mvcPath", "/view_content.jsp")} 
885  ${printURL.setParameter("assetEntryId", entry.getEntryId()?string)} 
886  ${printURL.setParameter("viewMode", "print")} 
887  ${printURL.setParameter("type", entry.getAssetRendererFactory().getType())} 
888 
889  <#if assetRenderer.getUrlTitle()?? && validator.isNotNull(assetRenderer.getUrlTitle())> 
890   
891   <#if assetRenderer.getGroupId() != themeDisplay.getScopeGroupId()> 
892    ${printURL.setParameter("groupId", assetRenderer.getGroupId()?string)} 
893   </#if> 
894 
895   ${printURL.setParameter("urlTitle", assetRenderer.getUrlTitle())} 
896  </#if> 
897 
898  ${printURL.setWindowState("pop_up")} 
899 
900  <@liferay_ui["icon"] 
901   iconCssClass="icon-print" 
902   message="print" 
903   url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "printAsset', title: '" + languageUtil.format(locale, "print-x-x", ["hide-accessible", tituloEvento], true) + "', uri: '" + htmlUtil.escapeURL(printURL.toString()) + "'});"  
904   
905  />  
906 </#if> 
907</#macro> 
908<#-------------------------------------------- Fin de la macro --------------------------------------------> 

Navigation Menu

Asset Publisher

Available maps and routes

Información Congresos

INFORMACIÓN CONGRESO

Calle Acera de Recoletos s/n,

Pabellón de Cristal (Oficina de congresos)

Teléfono: 983 21 94 38

Plaza de Fuente Dorada s/n (Punto de información)

Teléfono: 983 33 08 93

Contactar