Proyecto Ciudades CENCYL
El Ayuntamiento de Salamanca, a través de su Estrategia Municipal de Adaptación al Cambio Climático, participa en el proyecto ‘Ciudades Verdes Cencyl’ del Programa INTERREG de Cooperación Transfronteriza España-Portugal, en el que participan nueve ciudades, de Castilla y León y de la región centro del vecino país. Entre los objetivos del proyecto ‘Ciudades Verdes Cencyl’ destaca la elaboración de una completa estrategia de adaptación al cambio climático, de manera que se pueda diagnosticar las vulnerabilidades y riesgos climáticos de cada ciudad, dentro de una diversidad funcional entre ciudades mesetarias, de montaña y litorales. Al mismo tiempo, permitirá intercambiar y compartir experiencias entre las ciudades Cencyl sobre las políticas que están desarrollando o planificando.
Java method "static com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil.getDLFileEntryByUuidAndGroupId(String, long)" threw an exception; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign imagenDlFile = DLFileEntryLoc... [in template "20096#20121#32949" at line 37, column 13]
----
1<#assign LayoutLocalServiceUtil = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"] />
2<#assign DLFileEntryLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"]>
3<#assign DlAppServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppServiceUtil"] />
4<#assign LocaleUtil = staticUtil["com.liferay.portal.kernel.util.LocaleUtil"]>
5<#assign AssetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] />
6<#assign AssetEntryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil"] />
7<#assign JSONFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]>
8<#assign friendlyUrl="">
9<#assign categoriaPrincipal="">
10
11<div class="d-flex align-items-center">
12 <h2 class="slm-content-title font-weight-bold mb-0 h3">
13 <@liferay.language key="slm.programas-y-servicios" />
14 </h2>
15 <hr class="flex-grow-1 slm-hr-title" />
16</div>
17
18
19<#assign layout=themeDisplay.getLayout()>
20<#assign friendly=themeDisplay.getURLCurrent()>
21
22<#if entries?has_content>
23 <div class="swiper mySwiper slm-listado-dinamico">
24 <div class="swiper-wrapper ">
25 <#list entries as curEntry>
26 <#assign assetRenderer = curEntry.getAssetRenderer() />
27 <#assign journalArticle = assetRenderer.getArticle() >
28 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) >
29 <#assign rootElement = document.getRootElement() >
30 <#assign imagen = saxReaderUtil.createXPath("dynamic-element[@field-reference='Imagen']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
31 <#assign imagenJson = JSONFactoryUtil.createJSONObject(imagen)>
32 <#assign layoutFriendlyUrlDefault="">
33 <#assign layoutFriendlyUrl="">
34 <#assign url="">
35 <#assign urlExterna="">
36 <#assign target="">
37 <#assign imagenDlFile = DLFileEntryLocalServiceUtil.getDLFileEntryByUuidAndGroupId(imagenJson.uuid,imagenJson.groupId?number)>
38 <#if ((saxReaderUtil.createXPath("dynamic-element[@field-reference='NuevaPestana']/dynamic-content").selectSingleNode(rootElement))??)?then(true,false)>
39 <#assign nuevaPestana = saxReaderUtil.createXPath("dynamic-element[@field-reference='NuevaPestana']/dynamic-content").selectSingleNode(rootElement)>
40 <#if nuevaPestana.getData()=="true">
41 <#assign target='target="_blank"'>
42 </#if>
43 </#if>
44 <#if (saxReaderUtil.createXPath("dynamic-element[@field-reference='UrlExterna']/dynamic-content").selectSingleNode(rootElement).getStringValue())??>
45 <#assign urlExterna = saxReaderUtil.createXPath("dynamic-element[@field-reference='UrlExterna']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
46 </#if>
47 <#if (saxReaderUtil.createXPath("dynamic-element[@field-reference='EnlacePagina']/dynamic-content").selectSingleNode(rootElement).getStringValue())??>
48 <#assign enlace = saxReaderUtil.createXPath("dynamic-element[@field-reference='EnlacePagina']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
49 <#assign enlaceJson=JSONFactoryUtil.createJSONObject(enlace)>
50 <#if enlaceJson.has("groupId") && enlaceJson.has("privateLayout") && enlaceJson.has("layoutId")>
51 <#assign layout=LayoutLocalServiceUtil.fetchLayout(enlaceJson.groupId?number,enlaceJson.privateLayout,enlaceJson.layoutId?number)>
52 <#assign friendlyMap=layout.getFriendlyURLMap()>
53
54 <#list friendlyMap as key,value>
55 <#if key==LocaleUtil.getDefault()>
56 <#assign layoutFriendlyUrlDefault=value>
57 </#if>
58 <#if key==locale>
59 <#assign layoutFriendlyUrl=value>
60 </#if>
61 </#list>
62 <#if layoutFriendlyUrl=="">
63 <#assign layoutFriendlyUrl=layoutFriendlyUrlDefault>
64 </#if>
65 </#if>
66 </#if>
67
68 <#assign friendlyMap=journalArticle.getFriendlyURLMap()>
69
70 <#list friendlyMap as key,value>
71 <#if key==locale>
72 <#assign friendlyUrl="/w/"+value>
73 </#if>
74 <#if key==LocaleUtil.getDefault()>
75 <#assign friendlyUrlDefault="/w/"+value>
76 </#if>
77 </#list>
78 <#if friendlyUrl=="">
79 <#assign friendlyUrl=friendlyUrlDefault>
80 </#if>
81
82 <#if urlExterna!="">
83 <#assign url=urlExterna>
84 <#elseif layoutFriendlyUrl!="">
85 <#assign url=layoutFriendlyUrl>
86 <#else>
87 <#assign url=friendlyUrl>
88 </#if>
89
90
91 <div class="swiper-slide pb-2">
92 <a href="${url}" class="text-decoration-none" ${target}>
93 <@adaptive_media_image["img"] alt="${imagenJson.alt}" class="d-block w-100 slm-obj-cover slm-img-200" fileVersion=DlAppServiceUtil.getFileEntry(imagenJson.fileEntryId?number).getFileVersion()/>
94
95 <span class="d-block h5 py-2 mb-0 text-black">
96 ${curEntry.getTitle(locale)}
97 </span>
98 <span class="d-block descripcion pb-2">${curEntry.getDescription(locale)}</span>
99 <span class="d-block width-fit link text-uppercase">
100 <@liferay.language key="slm.leer-mas" />
101 </span>
102 </a>
103 </div>
104
105 </#list>
106 </div>
107 <div class="d-flex justify-content-center slm-listado-dinamico-pagination mt-4"></div>
108 </div>
109<style>
110.width-fit{
111 width:fit-content;
112}
113</style>
114
115
116<script>
117Liferay.on('allPortletsReady', function () {
118 var swiper = new Swiper(".slm-listado-dinamico", {
119 pagination: {
120 el: ".slm-listado-dinamico-pagination",
121 clickable: true,
122 },
123 breakpoints: {
124 0: {
125 slidesPerView: 1,
126 spaceBetween: 20,
127 },
128 576: {
129 slidesPerView: 2,
130 spaceBetween: 20,
131 },
132 768: {
133 slidesPerView: 3,
134 spaceBetween: 20,
135 },
136
137 1024: {
138 slidesPerView: 4,
139 spaceBetween: 20,
140 },
141 },
142
143 });
144 });
145 </script>
146
147
148</#if>