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 + "&quote=" + 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>