Centro Cultural de Montevideo

Se ha producido un error al procesar la plantilla.
Failed to "?eval" string with this error:

---begin-message---
Syntax error in ?eval-ed string in line 1, column 78:
Lexical error: encountered "u" (117), after "\"CCE 2026 - FEBRERO - Leer el Quijote\u00a0\\".
---end-message---

The failing expression:
==> imgGS?eval  [in template "20096#20122#7822989" at line 112, column 46]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign imgUuidGS = imgGS?eval.uuid!""  [in template "20096#20122#7822989" at line 112, column 25]
----
1<!-- AECID-CC-Listado-Recomendaciones --> 
2 
3<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
4<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
5<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") /> 
6<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
7<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
8 
9<#assign publicPath = themeDisplay.getPathFriendlyURLPublic() /> 
10<#assign siteFriendlyURL = themeDisplay.getSiteGroup().getFriendlyURL() /> 
11 
12<#-- ID del vocabulario global (cambia esto por el ID real) --> 
13<#assign vocabularyId = 7623391 /> 
14	 
15<style> 
16.lfr-pagination, .taglib-categorization-filter { 
17  max-width: 1260px; 
18  margin: 1.5rem auto; 
19  align-items: center; 
20	display: flex; 
21	padding: 0 1rem; 
22
23 
24.aecid-main .cat-Accesibilidad {background-color: #09861e;} 
25.aecid-main .cat-Artes {background-color: #f5bce9;} 
26.aecid-main .cat-Ciencia {background-color: #034ea2;}   
27.aecid-main .cat-Cine {background-color: #540081;}   
28.aecid-main .cat-Ciudadania {background-color: #33b6ba;}  
29.aecid-main .cat-Cultura {background-color: #7d2721;}  
30.aecid-main .cat-Debate {background-color: #8f98dc;}  
31.aecid-main .cat-Diversidad {background-color: #ca09f1;}  
32.aecid-main .cat-Escenicas {background-color: #f5c109;}  
33.aecid-main .cat-Examenes {background-color: #ec0909;}  
34.aecid-main .cat-Exposiciones {background-color: #000000;}  
35.aecid-main .cat-Formacion {background-color: #e01451;}  
36.aecid-main .cat-Infantil {background-color: #a4cb22;}  
37.aecid-main .cat-Letras {background-color: #f39918;}  
38.aecid-main .cat-Mediacion {background-color: #e5de8a;}  
39.aecid-main .cat-Medioambiente {background-color: #3ec11a;}  
40.aecid-main .cat-Musica {background-color: #4fc0fd;}  
41.aecid-main .cat-Patrimonio {background-color: #d12929;}  
42.aecid-main .cat-Radio {background-color: #f462d4;}  
43 
44@media (min-width: 576px) { 
45	.lfr-pagination, .taglib-categorization-filter { 
46		max-width: 540px; 
47		padding: 0; 
48
49
50@media (min-width: 768px) { 
51	.lfr-pagination, .taglib-categorization-filter { 
52		max-width: 720px; 
53
54
55@media (min-width: 992px) { 
56	.lfr-pagination, .taglib-categorization-filter { 
57		max-width: 960px; 
58
59
60@media (min-width: 1200px) { 
61	.lfr-pagination, .taglib-categorization-filter { 
62		max-width: 1180px; 
63
64
65@media (min-width: 1440px) { 
66	.lfr-pagination, .taglib-categorization-filter { 
67		max-width: 1260px; 
68
69
70@media (min-width: 992px) { 
71	.lfr-pagination .lfr-pagination-buttons { 
72		gap: 1rem; 
73		margin-left: auto; 
74
75
76.taglib-categorization-filter em { 
77		margin-left: 1rem; 
78	}	 
79</style>	 
80 
81<#if entries?has_content> 
82    <div class="fd-gris-fondo py-50 py-lg-100 cont-convo"> 
83        <div class="container px-3 px-lg-0"> 
84            <div class="content-cards cols-items-4"> 
85                <#-- Iterar sobre los contenidos obtenidos en la ADT --> 
86                <#list entries as curEntry> 
87                    <#assign 
88                        curEntry = curEntry 
89                        renderer = curEntry.getAssetRenderer() 
90                        entryTitle = htmlUtil.escape(renderer.getTitle(locale)) 
91                        viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, renderer, curEntry, !stringUtil.equals(assetLinkBehavior, "showFullContent"))/> 
92           			<#assign journalArticle = renderer.getArticle()/> 
93        			<#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) /> 
94		        	<#assign entryTitle = htmlUtil.escape(renderer.getTitle(locale))/> 
95			        <#assign entryResumen = htmlUtil.escape(renderer.getSummary())/>   
96 
97                    <#assign fechaIni=document.valueOf("//dynamic-element[@field-reference='startDate']/dynamic-content/text()") /> 
98                    <#assign fechaFin=document.valueOf("//dynamic-element[@field-reference='endDate']/dynamic-content/text()") /> 
99 
100                    <#assign imgGS=document.valueOf("//dynamic-element[@field-reference='image']/dynamic-content/text()") /> 
101                    <#assign imgUuidGS = "" /> 
102                    <#assign imgNameGS = "" /> 
103                    <#assign imgGroupIdGS = "" /> 
104                    <#assign imgAltGS = "" />									 
105									 
106                    <#assign imgGS = imgGS?replace("\\u2019", "") /> 
107                    <#assign imgGS = imgGS?replace("\\u00e7", "") /> 
108                    <#assign imgGS = imgGS?replace("\\u00b7", "") /> 
109                    <#assign imgGS = imgGS?replace("\\u2013", "-") />									 
110									 
111                    <#if imgGS?? && imgGS != "" && imgGS?trim != "{}"> 
112                        <#assign imgUuidGS = imgGS?eval.uuid!"" /> 
113                    </#if>				 
114                    <#if imgUuidGS?has_content> 
115                        <#assign imgNameGS = imgGS?eval.title /> 
116                        <#assign imgGroupIdGS = imgGS?eval.groupId /> 
117                        <#assign imgAltGS = imgGS?eval.alt/> 
118 
119                        <#assign imgAltGS = imgAltGS?replace('"', "'")> 
120                        <#assign imgAltGS = imgAltGS?replace('/', "-")> 
121                        <#assign imgAltGS = imgAltGS?replace('<', " ")> 
122                        <#assign imgAltGS = imgAltGS?replace('>', " ")> 
123                        <#assign imgAltGS = imgAltGS?replace('&', " ")> 
124                    </#if>                     
125 
126                    <#assign classPK = curEntry.getClassPK() /> 
127                    <#assign assetEntry = assetEntryLocalService.fetchEntry(entry.getClassName(), classPK) /> 
128                    <div class="cardReco h-auto"> 
129                        <div class="h-100 d-flex flex-column justify-content-between">  
130                            <div class="asset-abstract">                                                                
131                                <div class="lfr-meta-actions asset-actions"> 
132                                    <@getEditIcon /> 
133                                </div>                                                                                       
134                            </div> 
135 
136                            <div class="d-flex flex-column h-100 gap-1r position-relative"> 
137                                <div class="p-0"> 
138                                    <#if imgUuidGS?has_content> 
139                                        <div class="card-reco-img-container"> 
140																					<#if imgAltGS == ""> 
141																						<#assign imgAltGS = entryTitle/> 
142																					</#if> 
143                                            <img class="w-100"  alt="${imgAltGS?truncate(150, '...')}" ${(imgAltGS?length > 150)?then('longdesc="' + imgAltGS + '"', '')}  src="/documents/${imgGroupIdGS}/0/${imgNameGS}/${imgUuidGS}" /> 
144                                        </div> 
145                                    <#else> 
146                                        <div class="card-reco-img-container"> 
147                                            <!--<img class="w-100" alt="imagen de la noticia" src="${themeDisplay.getPathThemeImages()}/icons/svg/default_image.svg" />--> 
148											<img class="w-100" alt="Imagen de AECID" src="/documents/d/${themeDisplay.getScopeGroup().getFriendlyURL()}/generica" /> 
149                                        </div> 
150                                    </#if> 
151                                </div> 
152 
153                                <!--<p class="mb-0 txt-h6 txt-lg-h5 mt-4" tabindex="0"><span class="sr-only">${languageUtil.get(locale, "fecha.de.la.noticia")}: </span>${dateUtil.getDate(journalArticle.getDisplayDate(), "dd/MM", locale)}</p>--> 
154 
155                                <div class="fecha-rango"> 
156                                    <#if fechaIni?has_content> 
157                                        <#assign startDate_Data = getterUtil.getString(fechaIni)> 
158                                        <#assign endDate_Data = getterUtil.getString(fechaFin)> 
159                                        <#if startDate_Data?? && endDate_Data??> 
160                                            <#assign startDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", startDate_Data, locale)> 
161                                            <#assign endDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", endDate_Data, locale)> 
162                                            <#if startDate_Data == endDate_Data> 
163                                                ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)} 
164                                            <#else> 
165                                                Desde ${dateUtil.getDate(startDate_DateObj, "dd MMMM yyyy", locale)} hasta ${dateUtil.getDate(endDate_DateObj, "dd MMMM yyyy", locale)} 
166                                            </#if> 
167                                        </#if> 
168                                    </#if> 
169                                </div> 
170 
171                                <div class="card-text-cont"> 
172                                    <a class="title elipsis-3 enlace-total" href="${viewURL}" title="Ir a la recomendacion ${entryTitle}">${entryTitle}</a> 
173                                </div> 
174                            </div> 
175                                <div class="d-flex gap-1r flex-wrap mt-3"> 
176                                    <#if assetEntry??> 
177                                        <#assign categoryIds = assetEntry.getCategoryIds() /> 
178 
179                                        <#-- Filtrar categorías que pertenezcan al vocabulario global --> 
180                                        <#assign categories = [] /> 
181                                        <#list categoryIds as categoryId> 
182                                            <#assign category = assetCategoryLocalService.fetchAssetCategory(categoryId) /> 
183                                            <#if category?? && category.getVocabularyId() == vocabularyId> 
184                                                <#assign categories += [category] /> 
185                                            </#if> 
186                                        </#list> 
187 
188                                        <#if categories?has_content> 
189                                            <#list categories as category> 
190 
191                                                <#assign cat = category.getName() /> 
192                                                <#assign portalURL = themeDisplay.portalURL> 
193                                                <#assign currentPageName = themeDisplay.layout.name> 
194 
195                                                <!--<#assign siteName = themeDisplay.siteGroupName> 
196                                                <#assign siteName = siteName?replace(" ", "")> 
197                                                <#assign siteName = siteName?lower_case>--> 
198                                                <#assign siteFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL()> 
199                                                <#-- Esto devuelve algo como "/site-name" --> 
200                                                <#assign siteName = siteFriendlyURL?substring(1)> 
201                                                <!--<p>Site name: ${siteName}</p>--> 
202 
203                                                <#assign URLCategoria = portalURL + "/web/" + siteName + "/detalle-categorias/-/categories/" + category.getCategoryId()> 
204 
205                                                <#switch cat> 
206                                                    <#case "Accesibilidad / Inclusión"> 
207                                                        <a class="cat-reco cat-Accesibilidad" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a> 
208                                                    <#break> 
209                                                    <#case "Artes Visuales"> 
210                                                        <a class="cat-reco cat-Artes" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a> 
211                                                    <#break> 
212                                                    <#case "Ciencia / Tecnología"> 
213                                                        <a class="cat-reco cat-Ciencia" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
214                                                    <#break> 
215                                                    <#case "Cine / Audiovisual"> 
216                                                        <a class="cat-reco cat-Cine" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a> 
217                                                    <#break> 
218                                                    <#case "Ciudadanía / Comunidad"> 
219                                                        <a class="cat-reco cat-Ciudadania" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	    
220                                                    <#break> 
221                                                    <#case "Cultura para el Desarrollo"> 
222                                                        <a class="cat-reco cat-Cultura" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
223                                                    <#break>        
224                                                    <#case "Debate / Pensamiento"> 
225                                                        <a class="cat-reco cat-Debate" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
226                                                    <#break>    
227                                                    <#case "Diversidad / Géneros"> 
228                                                        <a class="cat-reco cat-Diversidad" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
229                                                    <#break> 
230                                                    <#case "Escénicas"> 
231                                                        <a class="cat-reco cat-Escenicas" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
232                                                    <#break> 
233                                                    <#case "Exámenes de español"> 
234                                                        <a class="cat-reco cat-Examenes" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
235                                                    <#break> 
236                                                    <#case "Exposiciones"> 
237                                                        <a class="cat-reco cat-Exposiciones" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
238                                                    <#break> 
239                                                    <#case "Formación"> 
240                                                        <a class="cat-reco cat-Formacion" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
241                                                    <#break> 
242                                                    <#case "Infantil / Juvenil"> 
243                                                        <a class="cat-reco cat-Infantil" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
244                                                    <#break> 
245                                                    <#case "Letras"> 
246                                                        <a class="cat-reco cat-Letras" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
247                                                    <#break> 
248                                                    <#case "Mediación"> 
249                                                        <a class="cat-reco cat-Mediacion" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
250                                                    <#break> 
251                                                    <#case "Medioambiente / Sostenibilidad"> 
252                                                        <a class="cat-reco cat-Medioambiente" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
253                                                    <#break> 
254                                                    <#case "Música / Sonido"> 
255                                                        <a class="cat-reco cat-Musica" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
256                                                    <#break> 
257                                                    <#case "Patrimonio"> 
258                                                        <a class="cat-reco cat-Patrimonio" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
259                                                    <#break> 
260                                                    <#case "Radio / Pódcast"> 
261                                                        <a class="cat-reco cat-Radio" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
262                                                    <#break> 
263 
264                                                    <#default> 
265                                                        <a class="cat-reco cat-neg" href="${URLCategoria}" title="Filtar Por ${cat}">${cat}</a>	 
266                                                    <#break>      
267                                                </#switch> 
268 
269                                                <!--<li>${category.getName()} (ID: ${category.getCategoryId()})</li>--> 
270                                            </#list> 
271                                        </#if> 
272                                    </#if> 
273                                </div> 
274                        </div> 
275                    </div>                 
276                </#list> 
277            </div> 
278        </div> 
279    </div> 
280</#if> 
281 
282<#-- CARGA DE LA EDICIÓN EN VENTANA A PARTE --> 
283<#macro getEditIcon> 
284    <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())> 
285        <#assign editPortletURL = renderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("NORMAL"), themeDisplay.getURLCurrent())!"" /> 
286        <#if validator.isNotNull(editPortletURL)> 
287            <#assign title = languageUtil.format(locale, "edit-x", entryTitle, false) /> 
288            <@liferay_ui["icon"] 
289                cssClass="icon-monospaced visible-interaction text-left" 
290                icon="pencil" 
291                markupView="lexicon" 
292                message=title 
293                url=editPortletURL.toString() 
294            /> 
295        </#if> 
296    </#if> 
297</#macro> 
298 
299<#macro getFullContent> 
300    <#assign pagina = renderer.render(renderRequest, renderResponse, "full_content") /> 
301	<@liferay_util["include"] 
302		page="${pagina}" 
303	/> 
304</#macro>