An error occurred while processing the template.
Java method "com.liferay.portal.kernel.util.DateUtil_IW.parseDate(String, String, Locale)" threw an exception when invoked on com.liferay.portal.kernel.util.DateUtil_IW object "com.liferay.portal.kernel.util.DateUtil_IW@6e10b89d"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign CierreDeInscripciones_DateObj... [in template "20096#20122#8022999" at line 366, column 21] ----
1<!--AECID-CC-Evento-->
2
3<style>
4 .estado {
5 -webkit-border-radius: 10px;
6 -moz-border-radius: 10px;
7 border-radius: 10px;
8 padding: .28rem .556rem;
9 display: block;
10 width: fit-content;
11 min-width: 7.4rem;
12 text-align: center;
13 }
14 .estado.neutro {
15 background-color: var(--gris-fondo);
16 }
17 .estado.verde {
18 background-color: #a4cb23;
19 color:#ffffff;
20 }
21 .estado.azul {
22 background-color: #4fc0fd;
23 color:#ffffff;
24 }
25 .estado.naranja {
26 background-color: #f39918;
27 color:#ffffff;
28 }
29 .estado.amarillo {
30 background-color: #feb71b;
31 color:#ffffff;
32 }
33 .estado.rojo {
34 background-color: #de0032;
35 color:#ffffff;
36 }
37 .estado.morado {
38 background-color: #540081;
39 color:#ffffff;
40 }
41
42 .Caja-bordeada-gris {
43 border: 2px solid #999999;
44 }
45
46 .Accesibilidad {background-color: #09861e; color:#ffffff;}
47 .Artes {background-color: #f5bce9; color:#ffffff;}
48 .Ciencia {background-color: #034ea2; color:#ffffff;}
49 .Cine {background-color: #540081; color:#ffffff;}
50 .Ciudadania {background-color: #33b6ba; color:#ffffff;}
51 .Cultura {background-color: #7d2721; color:#ffffff;}
52 .Debate {background-color: #8f98dc; color:#ffffff;}
53 .Diversidad {background-color: #ca09f1; color:#ffffff;}
54 .Escenicas {background-color: #f5c109; color:#ffffff;}
55 .Examenes {background-color: #ec0909; color:#ffffff;}
56 .Exposiciones {background-color: #000000; color:#ffffff;}
57 .Formacion {background-color: #e01451; color:#ffffff;}
58 .Infantil {background-color: #a4cb22; color:#ffffff;}
59 .Letras {background-color: #f39918; color:#ffffff;}
60 .Mediacion {background-color: #e5de8a; color:#ffffff;}
61 .Medioambiente {background-color: #3ec11a; color:#ffffff;}
62 .Musica {background-color: #4fc0fd; color:#ffffff;}
63 .Patrimonio {background-color: #d12929; color:#ffffff;}
64 .Radio {background-color: #f462d4; color:#ffffff;}
65
66</style>
67
68<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
69<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") />
70<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
71<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
72
73<#assign articleId = .vars['reserved-article-id'].data />
74<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]>
75<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]>
76<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, articleId)/>
77<!-- configurarlo desde el panel de control -> configuracion -> configuracion del sistema -> motores de plantilla (eliminar servicelocator de variables restringidas) -->
78<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
79<#--${assetEntryLocalService}-->
80<#assign assetEntryId = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", articleResourcePK).getEntryId() />
81
82<!---------------------------------------------------------------------------->
83<!-- Obtener el servicio para obtener los id de los contenidos relacionados -->
84<!---------------------------------------------------------------------------->
85<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.link.service.AssetLinkLocalService")>
86<#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", articleResourcePK)>
87<#assign assetLinks = assetLinkLocalService.getDirectLinks(assetEntry.getEntryId())>
88<!---------------------------------------------------------------------------->
89<!---------------------------------------------------------------------------->
90
91
92<#assign urlCodec = staticUtil["com.liferay.portal.kernel.util.URLCodec"] />
93<#assign htmlParserUtil = staticUtil["com.liferay.portal.kernel.util.HtmlParserUtil"] />
94<#assign htmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"] />
95
96<#function getJournalPriorityByArticleId articleId>
97 <#attempt>
98 <#local resourcePrimKey = journalArticleResourceLocalService.getArticleResourcePrimKey(themeDisplay.getScopeGroupId(), articleId) />
99 <#local assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) />
100 <#return assetEntry.getPriority() />
101 <#recover>
102 </#attempt>
103 <#return "" />
104</#function>
105
106<#function getJournalPriority>
107 <#attempt>
108 <#return getJournalPriorityByArticleId(.vars['reserved-article-id'].data) />
109 <#recover>
110 </#attempt>
111 <#return "" />
112</#function>
113
114
115<#function getGroupVocabularyByName groupId vocabularyName >
116 <#attempt>
117 <#local vocabulary = assetVocabularyLocalService.getGroupVocabulary(groupId, vocabularyName) />
118 <#return vocabulary />
119 <#recover>
120 </#attempt>
121 <#return "" />
122</#function>
123
124<#function getCategoriesJournalArticle groupId articleId >
125 <#attempt>
126 <#local resourcePrimKey = journalArticleResourceLocalService.getArticleResourcePrimKey(groupId, articleId) />
127 <#local categories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey) />
128 <#return categories />
129 <#recover>
130 </#attempt>
131 <#return "" />
132</#function>
133
134<#function obtenerCategoriasVocabulario articleId vocabularyId>
135 <#local categories = [] />
136 <#attempt>
137 <#local categoriesJ = getCategoriesJournalArticle(groupId, articleId) />
138 <#if categoriesJ?has_content && categoriesJ?size gt 0>
139 <#list categoriesJ as categoryA>
140 <#if categoryA.getVocabularyId() == vocabularyId >
141 <#local categories = categories + [categoryA] />
142 </#if>
143 </#list>
144 </#if>
145 <#recover>
146 </#attempt>
147 <#return categories />
148</#function>
149
150<#function obtenerCategoriasVocabularioNombre articleId vocabularyName>
151 <#local vocabulary = getGroupVocabularyByName(groupId, vocabularyName) />
152 <#return obtenerCategoriasVocabulario(articleId, vocabulary.getVocabularyId()) />
153</#function>
154
155
156
157<#function removeUrlParams url>
158 <#if url?contains("?") >
159 <#return url?substring(0, url?index_of("?")) />
160 </#if>
161 <#return url/>
162</#function>
163
164
165<#assign twitterAccount = ""/>
166<!-- valida también si no viene a null -->
167<#assign customFieldValue = themeDisplay.getSiteGroup().getExpandoBridge().getAttribute("AccountTwitter")!"">
168<#assign twitterAccount = customFieldValue/>
169<!--<p>--${twitterAccount}</p>-->
170
171<#assign URLPortal = themeDisplay.getURLPortal() />
172<#assign URLCurrent = themeDisplay.getURLCurrent() />
173<#assign URLComplete = URLPortal + URLCurrent />
174<#assign URLCompleteNoParams = removeUrlParams(URLComplete) />
175
176
177<!-- El id de las categorÃas de Categorias CC -->
178<!--<#assign vocabularyId = 1682640 />-->
179<#assign vocabularyId = 7623391 />
180
181
182
183<div class="container px-3 px-lg-0">
184 <#assign titulo = .vars['reserved-article-title'].data />
185 <div class="col-2-1-d">
186 <div class="col-izq">
187 <h1 class="tit-h3 txt-bold txt-primario mb-2">
188 <#-- Titulo del evento -->
189 <#if (title.getData())??>
190 ${title.getData()}
191 </#if>
192 </h1>
193 <#if (Subtitulo.getData())?? && Subtitulo.getData() != "">
194 <h2 class="tit-h4">${Subtitulo.getData()}</h2>
195 </#if>
196 <#if (image.getData())?? && image.getData() != "">
197 <img class="rounded mb-3" alt="${(image.getAttribute('alt')?html)!''}" data-fileentryid="${image.getAttribute('fileEntryId')}" src="${image.getData()}" />
198 </#if>
199 <#--<#if (descripcionActualidadNoticia.getData())??>
200 <p>${descripcionActualidadNoticia.getData()}</p>
201 </#if>-->
202
203 </div>
204 <div class="col-content">
205 <#if (mainText.getData())??>
206 ${mainText.getData()}
207 </#if>
208
209 <#if (Poster.getData())?? && Poster.getData() != "">
210 <#if (VideoMP4.getData())?? && VideoMP4.getData() != "">
211
212 <div class="embed-responsive embed-responsive-16by9 bdr-radius">
213 <video controls="" poster="${Poster.getData()}">
214 <source src="${VideoMP4.getData()}" type="video/mp4" /> Su navegador no soporta la etiqueta de vídeo.
215 </video>
216 </div>
217
218 </#if>
219 </#if>
220
221 </div>
222
223 <div class="col-der">
224 <dl>
225 <!-- Categoria -->
226
227
228 <#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK)>
229
230 <#assign PrimeraCategoria = 0 >
231 <#list categoryList as categoryList>
232
233 <#if categoryList?? && categoryList.getVocabularyId() == vocabularyId>
234 <#assign PrimeraCategoria = PrimeraCategoria + 1>
235 <#if PrimeraCategoria == 1>
236 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Categoría</dt>
237 </#if>
238
239
240 <#assign categoriaFiltrada = categoryList.getName()>
241 <#assign categoriaFiltrada = categoriaFiltrada?trim>
242
243 <#switch categoriaFiltrada>
244 <#case "Accesibilidad / Inclusión">
245 <dd class="txt-uppercase"><span class="estado Accesibilidad">${categoriaFiltrada}</span></dd>
246 <#break>
247 <#case "Artes Visuales">
248 <dd class="txt-uppercase"><span class="estado Artes">${categoriaFiltrada}</span></dd>
249 <#break>
250 <#case "Ciencia / Tecnología">
251 <dd class="txt-uppercase"><span class="estado Ciencia">${categoriaFiltrada}</span></dd>
252 <#break>
253 <#case "Cine / Audiovisual">
254 <dd class="txt-uppercase"><span class="estado Cine">${categoriaFiltrada}</span></dd>
255 <#break>
256 <#case "Ciudadanía / Comunidad">
257 <dd class="txt-uppercase"><span class="estado Ciudadania">${categoriaFiltrada}</span></dd>
258 <#break>
259 <#case "Cultura para el Desarrollo">
260 <dd class="txt-uppercase"><span class="estado Cultura">${categoriaFiltrada}</span></dd>
261 <#break>
262 <#case "Debate / Pensamiento">
263 <dd class="txt-uppercase"><span class="estado Debate">${categoriaFiltrada}</span></dd>
264 <#break>
265 <#case "Diversidad / Géneros">
266 <dd class="txt-uppercase"><span class="estado Diversidad">${categoriaFiltrada}</span></dd>
267 <#break>
268 <#case "Escénicas">
269 <dd class="txt-uppercase"><span class="estado Escenicas">${categoriaFiltrada}</span></dd>
270 <#break>
271 <#case "Exámenes de español">
272 <dd class="txt-uppercase"><span class="estado Examenes">${categoriaFiltrada}</span></dd>
273 <#break>
274 <#case "Exposiciones">
275 <dd class="txt-uppercase"><span class="estado Exposiciones">${categoriaFiltrada}</span></dd>
276 <#break>
277 <#case "Formación">
278 <dd class="txt-uppercase"><span class="estado Formacion">${categoriaFiltrada}</span></dd>
279 <#break>
280 <#case "Infantil / Juvenil">
281 <dd class="txt-uppercase"><span class="estado Infantil">${categoriaFiltrada}</span></dd>
282 <#break>
283 <#case "Letras">
284 <dd class="txt-uppercase"><span class="estado Letras">${categoriaFiltrada}</span></dd>
285 <#break>
286 <#case "Mediación">
287 <dd class="txt-uppercase"><span class="estado Mediacion">${categoriaFiltrada}</span></dd>
288 <#break>
289 <#case "Medioambiente / Sostenibilidad">
290 <dd class="txt-uppercase"><span class="estado Medioambiente">${categoriaFiltrada}</span></dd>
291 <#break>
292 <#case "Música / Sonido">
293 <dd class="txt-uppercase"><span class="estado Musica">${categoriaFiltrada}</span></dd>
294 <#break>
295 <#case "Patrimonio">
296 <dd class="txt-uppercase"><span class="estado Patrimonio">${categoriaFiltrada}</span></dd>
297 <#break>
298 <#case "Radio / Pódcast">
299 <dd class="txt-uppercase"><span class="estado Radio">${categoriaFiltrada}</span></dd>
300 <#break>
301 <#default>
302 <dd class="txt-uppercase"><span class="estado neutro">${categoriaFiltrada}</span></dd>
303 <#break>
304 </#switch>
305 </#if>
306
307 </#list>
308
309 <#--<p class="eti-cat">${getJournalPriority()} -
310 <#assign categorias = obtenerCategoriasVocabularioNombre(.vars['reserved-article-id'].data, "Categorias AECID") />
311 <#if categorias?has_content && categorias?size gt 0>
312 ${categorias[0].getName()}
313 </#if>
314 </p>-->
315
316 <!-- Fecha desde/hasta -->
317 <#assign startDate_Data = getterUtil.getString(startDate.getData())>
318 <#assign endDate_Data = getterUtil.getString(endDate.getData())>
319 <#if validator.isNotNull(startDate_Data) && validator.isNotNull(endDate_Data)>
320 <#assign startDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", startDate_Data, locale)>
321 <#assign endDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", endDate_Data, locale)>
322 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Fecha</dt>
323 <dd class="txt-uppercase">
324 <!-- Si la fecha desde es igual a la fecha hasta solo se pinta la fecha desde -->
325 <#if startDate_Data == endDate_Data>
326 ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)}
327 <#else>
328 ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)} - ${dateUtil.getDate(endDate_DateObj, "dd MMMM yyyy", locale)}
329 </#if>
330 </dd>
331 </#if>
332
333 <!-- Campo horario -->
334 <#if (schedule.getData())?? && (schedule.getData())?has_content>
335 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Horario</dt>
336 <dd class="txt-uppercase"><span class="estado-neutro">${schedule.getData()}</span></dd>
337 </#if>
338
339 <!-- Lugar -->
340 <#if (Lugares.getData())?? && (Lugares.getData())?has_content>
341 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Lugar</dt>
342 <dd class="txt-uppercase"><span class="estado-neutro">${Lugares.getData()}</span></dd>
343 </#if>
344
345 <!-- Colaborador -->
346 <#if (Colaborador.getData())?? && (Colaborador.getData())?has_content>
347 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Colaboramos con</dt>
348 <dd class="txt-uppercase"><span class="estado-neutro">${Colaborador.getData()}</span></dd>
349 </#if>
350
351 <!-- Cupo -->
352 <#if (Cupo.getData())?? && (Cupo.getData())?has_content>
353 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Cupo</dt>
354 <dd class="txt-uppercase">${Cupo.getData()}</dd>
355 </#if>
356
357 <!-- Organizador -->
358 <#if (Organizador.getData())?? && (Organizador.getData())?has_content>
359 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Organizamos con</dt>
360 <dd class="txt-uppercase">${Organizador.getData()}</dd>
361 </#if>
362
363 <!-- Cierre de inscripciones -->
364 <#assign CierreDeInscripciones_Data = getterUtil.getString(CierreDeInscripciones.getData())>
365 <#if validator.isNotNull(CierreDeInscripciones_Data)>
366 <#assign CierreDeInscripciones_DateObj = dateUtil.parseDate("yyyy-MM-dd", CierreDeInscripciones_Data, locale)>
367 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Cierre de inscripciones</dt>
368 <dd class="txt-uppercase">${dateUtil.getDate(CierreDeInscripciones_DateObj, "dd 'DE' MMMM 'DE' yyyy", locale)}</dd>
369 </#if>
370
371 <!-- Publicacion de admision -->
372 <#assign PublicacionDeAdmision_Data = getterUtil.getString(PublicacionDeAdmision.getData())>
373 <#if validator.isNotNull(PublicacionDeAdmision_Data)>
374 <#assign PublicacionDeAdmision_DateObj = dateUtil.parseDate("yyyy-MM-dd", PublicacionDeAdmision_Data, locale)>
375 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Publicacion de Admision</dt>
376 <dd class="txt-uppercase">${dateUtil.getDate(PublicacionDeAdmision_DateObj, "dd 'DE' MMMM 'DE' yyyy", locale)}</dd>
377 </#if>
378
379 <div id="redes-sociales-share-container" class="mt-4">
380 <@compartirRedesSocialesImprimir text=titulo />
381 </div>
382 </dl>
383 </div>
384 </div>
385
386 <!---------------------------------------->
387 <!-- Pinta los contenidos relacionados -->
388 <!---------------------------------------->
389 <#if assetLinks?? && assetLinks?has_content>
390 <h2 class="mt-3">Contenido relacionado</h2>
391 <div class=" mt-5 cont-convo"> <!--fd-gris-fondo py-50 py-lg-100-->
392 <div class="container px-3 px-lg-0">
393 <div class="content-cards cols-items-4">
394 <#list assetLinks as assetLink>
395 <#-- Obtenemos el AssetEntry relacionado (el "to" de la relación) -->
396 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(assetLink.getEntryId2())>
397
398 <#-- Obtenemos el JournalArticle si el contenido relacionado también es un WebContent -->
399 <#if relatedAssetEntry.getClassName() == "com.liferay.journal.model.JournalArticle">
400 <#assign journalArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntry.getClassPK())>
401
402 <!----------------------------->
403 <!-- Para obtener el ViewURL -->
404 <!----------------------------->
405 <#setting url_escaping_charset='UTF-8'>
406 <#assign viewURLWithRedirect = "">
407 <#assign assetRenderer = relatedAssetEntry.getAssetRenderer()>
408 <#if themeDisplay??>
409 <#assign viewURL = assetRenderer.getURLViewInContext(themeDisplay, null)>
410 <#assign redirectURL = themeDisplay.getURLCurrent()>
411 <#assign viewURLWithRedirect = viewURL + (viewURL?contains("?")?then("&", "?")) + "redirect=" + redirectURL?url>
412 <#--<a href="${viewURLWithRedirect}">${assetRenderer.getTitle(locale)}</a>-->
413 <#-- <#else>
414 <span>${assetRenderer.getTitle(locale)}</span>-->
415 </#if>
416
417 <!-- Obtener los campos necesarios para pintar los campos del contenido relacionado -->
418 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale))>
419 <#assign rootElement = document.getRootElement()>
420 <#assign dynamicElements = rootElement.elements("dynamic-element")>
421
422 <#list dynamicElements as element>
423 <!--<p class="sr-only"> entra ${element.attributeValue("name")}</p>-->
424 <#if element.attributeValue("name") == "Image46184462">
425 <#assign imgGS = element.element("dynamic-content").getText()>
426 <#if imgGS?? && imgGS != "" && imgGS?trim != "{}">
427 <#assign imgUuidGS = imgGS?eval.uuid!"" />
428 </#if>
429 <#if imgUuidGS?has_content>
430 <#assign imgNameGS = imgGS?eval.title />
431 <#assign imgGroupIdGS = imgGS?eval.groupId />
432 <#assign imgAltGS = imgGS?eval.alt/>
433 </#if>
434 </#if>
435
436 <#if element.attributeValue("name") == "Date80828384">
437 <#assign fechaIni = element.element("dynamic-content").getText()>
438 </#if>
439
440 <#if element.attributeValue("name") == "Date51740027">
441 <#assign fechaFin = element.element("dynamic-content").getText()>
442 </#if>
443 </#list>
444 <div class="mb-4 mb-xl-0 cardReco d-flex flex-column justify-content-between parentAssetViewUrl Caja-bordeada-gris">
445 <div class="h-100 d-flex flex-column gap-1r position-relative">
446 <div class="p-0">
447 <#if imgUuidGS?has_content>
448 <div class="card-reco-img-container">
449 <img class="w-100" alt="${imgAltGS}" src="/documents/${imgGroupIdGS}/0/${imgNameGS}/${imgUuidGS}" />
450 </div>
451 <#else>
452 <div class="card-reco-img-container">
453 <img class="w-100" alt="Logo de Cooperacion Española" src="/documents/d/${themeDisplay.getScopeGroup().getFriendlyURL()}/generica" />
454 </div>
455 </#if>
456 </div>
457 <div class="fecha-rango mt-2">
458 <#assign startDate_Data = getterUtil.getString(fechaIni)>
459 <#assign endDate_Data = getterUtil.getString(fechaFin)>
460 <#if startDate_Data?? && endDate_Data??>
461 <#assign startDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", startDate_Data, locale)>
462 <#assign endDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", endDate_Data, locale)>
463 <#if startDate_Data == endDate_Data>
464 ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)}
465 <#else>
466 Desde ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)} hasta ${dateUtil.getDate(endDate_DateObj, "dd MMMM yyyy", locale)}
467 </#if>
468 </#if>
469 </div>
470 <div class="card-text-cont">
471 <a class="title elipsis-3 enlace-total" href="${viewURLWithRedirect}" title="Ir a la recomendacion ${journalArticle.getTitle(locale)}"> ${journalArticle.getTitle(locale)}</a>
472 </div>
473 </div>
474 <div class="d-flex gap-1r flex-wrap">
475 <#-- Obtener el AssetEntry del contenido relacionado -->
476 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
477
478 <#-- Obtener las categorías -->
479 <#assign categoryIds = assetEntry.getCategoryIds() />
480 <#assign categories = [] />
481 <#list categoryIds as categoryId>
482 <#assign category = assetCategoryLocalService.fetchAssetCategory(categoryId) />
483 <#if category?? && category.getVocabularyId() == vocabularyId>
484 <#assign categories += [category] />
485 </#if>
486 </#list>
487
488 <#if categories?has_content>
489 <#list categories as category>
490
491 <#assign cat = category.getName() />
492
493 <#assign portalURL = themeDisplay.portalURL>
494 <#assign currentPageName = themeDisplay.layout.name>
495 <#assign siteFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL()>
496 <#assign siteName = siteFriendlyURL?substring(1)>
497 <#assign URLCategoria = portalURL + "/web/" + siteName + "/detalle-categorias/-/categories/" + category.getCategoryId()>
498
499 <#switch cat>
500 <#case "Accesibilidad / Inclusión">
501 <a class="cat-reco Accesibilidad" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
502 <#break>
503 <#case "Artes Visuales">
504 <a class="cat-reco Artes" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
505 <#break>
506 <#case "Ciencia / Tecnología">
507 <a class="cat-reco Ciencia" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
508 <#break>
509 <#case "Cine / Audiovisual">
510 <a class="cat-reco Cine" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
511 <#break>
512 <#case "Ciudadanía / Comunidad">
513 <a class="cat-reco Ciudadania" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
514 <#break>
515 <#case "Cultura para el Desarrollo">
516 <a class="cat-reco Cultura" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
517 <#break>
518 <#case "Debate / Pensamiento">
519 <a class="cat-reco Debate" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
520 <#break>
521 <#case "Diversidad / Géneros">
522 <a class="cat-reco Diversidad" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
523 <#break>
524 <#case "Escénicas">
525 <a class="cat-reco Escenicas" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
526 <#break>
527 <#case "Exámenes de español">
528 <a class="cat-reco Examenes" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
529 <#break>
530 <#case "Exposiciones">
531 <a class="cat-reco Exposiciones" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
532 <#break>
533 <#case "Formación">
534 <a class="cat-reco Formacion" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
535 <#break>
536 <#case "Infantil / Juvenil">
537 <a class="cat-reco Infantil" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
538 <#break>
539 <#case "Letras">
540 <a class="cat-reco Letras" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
541 <#break>
542 <#case "Mediación">
543 <a class="cat-reco Mediacion" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
544 <#break>
545 <#case "Medioambiente / Sostenibilidad">
546 <a class="cat-reco Medioambiente" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
547 <#break>
548 <#case "Música / Sonido">
549 <a class="cat-reco Musica" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
550 <#break>
551 <#case "Patrimonio">
552 <a class="cat-reco Patrimonio" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
553 <#break>
554 <#case "Radio / Pódcast">
555 <a class="cat-reco Radio" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
556 <#break>
557
558 <#default>
559 <a class="cat-reco cat-neg" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>
560 <#break>
561 </#switch>
562 </#list>
563 </#if>
564 </div>
565 </div>
566 </#if>
567 </#list>
568 </div>
569 </div>
570 </div>
571 </#if>
572</div>
573
574<#macro compartirRedesSocialesImprimir url=URLCompleteNoParams text="" twitter=true facebook=true>
575
576 <#local urlEncoded = urlCodec.encodeURL(url) />
577
578 <#local textF= text />
579 <#if text?has_content >
580 <#local textF= htmlParserUtil.extractText(text)?trim />
581 </#if>
582
583 <!-- TWITTER -->
584 <#if twitter>
585 <#local twitterShareURL = "https://x.com/intent/tweet?url=" + urlEncoded />
586 <#if textF?has_content >
587 <#local textTwitter = textF?truncate(280, '...') />
588 <#local textTwitter = urlCodec.encodeURL(textTwitter) />
589 <#local twitterShareURL = twitterShareURL + "&text=" + textTwitter + "%0a%0a" />
590 </#if>
591 <#local twitterShareURL = twitterShareURL + "&via=" + twitterAccount />
592 </#if>
593 <#-- // -->
594
595 <#-- FACEBOOK -->
596 <#if facebook>
597 <#local facebookShareURL = "https://www.facebook.com/sharer/sharer.php?u=" + urlEncoded />
598 <#if textF?has_content >
599 <#local textFacebook = urlCodec.encodeURL(textF) />
600 <#local facebookShareURL = facebookShareURL + ""e=" + textFacebook />
601 </#if>
602 </#if>
603 <#-- // -->
604
605 <dt class="tit-h5 txt-uppercase txt-medi mb-2">Compartir</dt>
606 <dd>
607 <#if facebookShareURL?has_content >
608 <a class="no-ico" href="${facebookShareURL}" target="_blank" title="Compartir en facebook">
609 <img alt="icono facebook" src="/o/aecid-oces-theme/images/ico-facebook.svg" /></a>
610 </#if>
611
612 <#if twitterShareURL?has_content >
613 <a class="ml-2 no-ico" href="${twitterShareURL}" target="_blank" title="Compartir en X">
614 <img alt="icono X" src="/o/aecid-oces-theme/images/ico-x.svg" /></a>
615 </#if>
616 </dd>
617</#macro>