Leisure and sport - Congresos y reuniones
Breadcrumb
Breadcrumbs
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 <#assign descripcionEventoText = htmlUtil.stripHtml(descripcionEvento)>
796 <#if descripcionEventoText?length gt 70>
797 <#assign indiceCorte = descripcionEventoText[0..70]?last_index_of(" ")>
798 <#if indiceCorte lt 3>
799 <#assign indiceCorte = 68>
800 </#if>
801 <#assign descrip = descripcionEventoText[0..indiceCorte]?ensure_ends_with(" (...)")>
802 <#else>
803 <#assign descrip = descripcionEventoText>
804 </#if>
805 <p>${descrip}</p>
806 </div>
807
808 <#if venta[2..3] == "si">
809 <div class="simboloEntrada">
810 </div>
811 <a class="linkVenta" href="${enlaceVenta}" target="_blank"><span class="icon-ticket"></span></a>
812 </#if>
813
814 </div>
815
816
817 <#-------------------------------------------- Evento desplegado -------------------------------------------->
818
819 <div id="${classPK}" class="desplegable">
820 <div class="contImgDesple">
821 <img class="imagenEventoBig" alt="No hay imagen disponible del evento" src="${imgEvento}"/>
822 </div>
823
824 <div class="descripDesple">
825 <span class="icon-_279"></span><p class="tituloApartado">${descripcionDelEvento}:</p>
826 <p class="descripContenido">${descripcionEvento}</p>
827 </div>
828
829 <div class="fechaDireccAlto">
830 <div class="fechaDesple">
831 <span class="icon-calendar"></span> <p class="tituloApartado">${fechas}:</p>
832 <p class="fechaContenido">
833 <#-- ${diaEvento}/${mesEvento} - <#if diaEventoFin??>${diaEventoFin}<#if mesEvento != mesEventoFin>/${mesEventoFin}</#if></#if> -->
834 <#if fechaFin != "">
835 <#if mesEvento == mesEventoFin>
836 ${diaEvento} - ${diaEventoFin} ${nombreMes[mes-1]}
837 <#else>
838 ${diaEvento} ${nombreMes[mes-1]} - ${diaEventoFin} ${nombreMes[mesEventoFin-1]}
839 </#if>
840 <#else>
841 ${diaEvento} ${nombreMes[mes-1]}
842 </#if>
843 </p>
844 </div>
845
846 <#if direccionEvento != "">
847 <div class="direccionDesple">
848 <span class="icon-map_marker"></span> <p class="tituloApartado">${direccion}:</p>
849 <p class="direccionContenido">${direccionEvento}</p>
850 </div>
851 </#if>
852 </div>
853
854 <#if enlaceEvento != "">
855 <div class="enlaceDesple">
856 <a href="${enlaceEvento?ensure_starts_with('http://')}" target="_blank">
857 <span class="icon-link"></span> <p>${linkWeb}</p>
858 </a>
859 </div>
860 </#if>
861
862 <#if venta[2..3] == "si">
863 <div class="enlaceVentaDesple">
864 <a href="${enlaceVenta}" target="_blank">
865 <span class="icon-ticket"></span> <p>${entradas}</p>
866 </a>
867 </div>
868 </#if>
869
870 <div class="mapContDesple">
871 <iframe
872 class="map"
873 src="https://www.google.com/maps/embed/v1/place?key=${mapApiKey}
874 &q=${latitude},${longitude}" allowfullscreen>
875 </iframe>
876 </div>
877 <div class="iconoImprimir">
878 <@getPrintIcon assetRenderer=assetRenderer />
879 </div>
880 </div>
881 </div>
882 </#if>
883 </#macro>
884 <#macro getPrintIcon assetRenderer>
885 <#if getterUtil.getBoolean(enablePrint)>
886 <#assign printURL = renderResponse.createRenderURL() />
887
888 ${printURL.setParameter("mvcPath", "/view_content.jsp")}
889 ${printURL.setParameter("assetEntryId", entry.getEntryId()?string)}
890 ${printURL.setParameter("viewMode", "print")}
891 ${printURL.setParameter("type", entry.getAssetRendererFactory().getType())}
892
893 <#if assetRenderer.getUrlTitle()?? && validator.isNotNull(assetRenderer.getUrlTitle())>
894
895 <#if assetRenderer.getGroupId() != themeDisplay.getScopeGroupId()>
896 ${printURL.setParameter("groupId", assetRenderer.getGroupId()?string)}
897 </#if>
898
899 ${printURL.setParameter("urlTitle", assetRenderer.getUrlTitle())}
900 </#if>
901
902 ${printURL.setWindowState("pop_up")}
903
904 <@liferay_ui["icon"]
905 iconCssClass="icon-print"
906 message="print"
907 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()) + "'});"
908
909 />
910 </#if>
911</#macro>
912<#-------------------------------------------- Fin de la macro -------------------------------------------->
Navigation Menu
Incentives
Asset Publisher
Available maps and routes
Información Congresos
INFORMACIÓN CONGRESO
Oficina de Congresos de Valladolid
Teléfono: 983 219 438
Correo electrónico:
congresos@valladolidturismo.com