Regeneración urbana de la faja marginal del río San Lucas en la zona monumental de la ciudad de Cajamarca
An error occurred while processing the template.
The following has evaluated to null or missing: ==> serviceLocator.findService("es.gob.exteriores.aecid.lcl.base.util.CustomPermissionUtil") [in template "5931966#5932007#PROYECTO-DETALLE-FTL" at line 4, column 33] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign customPermissionUtil = servic... [in template "5931966#5932007#PROYECTO-DETALLE-FTL" at line 4, column 1] ----
1<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") >
2<#assign assetEntryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
3<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") >
4<#assign customPermissionUtil = serviceLocator.findService("es.gob.exteriores.aecid.lcl.base.util.CustomPermissionUtil") >
5
6<#assign cities_vocabulary_id = layout.getGroup().getExpandoBridge().getAttribute("cities_vocabulary_id")>
7<#assign cities_vocabulary_id = cities_vocabulary_id?number>
8<#assign areas_vocabulary_id = layout.getGroup().getExpandoBridge().getAttribute("areas_vocabulary_id")>
9<#assign areas_vocabulary_id = areas_vocabulary_id?number>
10
11<#assign articleId = .vars['reserved-article-id'].data >
12<#assign classPK = journalArticleResourceLocalService.getArticleResourcePrimKey(groupId, articleId) >
13<#assign categories = assetCategoryService.getCategories("com.liferay.journal.model.JournalArticle", classPK) >
14
15<#assign rolGestion = customPermissionUtil.hasRole(themeDisplay,"Gestión de proyectos CdC") >
16<#assign rolView = customPermissionUtil.hasRole(themeDisplay,"Visualización de actas de proyectos CdC") >
17
18<div class="cabecera-pagina-interior cabecera-pagina-interior--volver">
19 <div class="global-container">
20 <div class="cabecera-pagina-interior--volver__inner">
21 <div class="cabecera-pagina-interior--volver__col">
22 <button type="button" id="go-back-btn" class="header-bg-color--link">${languageUtil.get(locale, "es.gob.exteriores.aecid.lcl.volver.atras")}</button>
23 </div>
24 <div class="cabecera-pagina-interior--volver__col">
25 <h2 class="cabecera-pagina-interior--title cabecera-pagina-interior--title--volver">${title.getData()}</h2>
26 </div>
27 </div>
28 </div>
29</div>
30<div class="project-detail">
31 <div class="global-container">
32 <h3 class="project-detail__title">${languageUtil.get(locale, 'formulario.proyecto.datos.basicos')}</h3>
33 <#list categories as category>
34 <#if (category.getVocabularyId() == areas_vocabulary_id)>
35 <p class="project-detail__subtitle project-detail__subtitle"><strong>${category.getTitle(locale)?substring(2)}</strong></p>
36 </#if>
37 </#list>
38 <!-- <p class="project-detail__intro">Proyectos que rehabilitan cuerpos de agua y sistemas de áreas verdes en zonas urbanas, conectando y dando accesibilidad a frentes ribereños y marinos, parques lineales y otros espacios públicos con soluciones multifuncionales basadas en la naturaleza, para que contribuyan mitigar la vulnerabilidad de las ciudades a las inundaciones y otros efectos del cambio climático, y mejorar la biodiversidad.</p>
39 <h4 class="project-detail__subtitle project-detail__subtitle--azul-verde">Infraestructura azul y verde</h4>
40 <p class="project-detail__intro-area">Proyectos que rehabilitan cuerpos de agua y sistemas de áreas verdes en zonas urbanas, conectando y dando accesibilidad a frentes ribereños y marinos, parques lineales y otros espacios públicos con soluciones multifuncionales basadas en la naturaleza, para que contribuyan mitigar la vulnerabilidad de las ciudades a las inundaciones y otros efectos del cambio climático, y mejorar la biodiversidad.</p>
41 -->
42 <div class="area-proyecto--proyecto--data">
43 <#if categories?has_content>
44 <div class="area-proyecto--proyecto--country">
45 <#list categories as category>
46 <#if (urlPais.getData())??>
47 <#if (category.getVocabularyId() == cities_vocabulary_id)>
48 <a href="${urlPais.getData()}" title="Ir al mapa" class="area-proyecto--proyecto--country--item" target="_blank">${category.getName()}</a>
49 </#if>
50 </#if>
51 </#list>
52 </div>
53 </#if>
54 <#if (government_url.getData())?? && government_url.getData() != "">
55 <div class="area-proyecto--proyecto--gov-link">
56 <a href="${government_url.getData()}" title="${languageUtil.get(locale, 'es.gob.exteriores.aecid.lcl.proyecto.title.gobierno')}">${languageUtil.get(locale, 'es.gob.exteriores.aecid.lcl.proyecto.gobierno')}</a>
57 </div>
58 </#if>
59 </div>
60 <#if image.getSiblings()?has_content>
61 <div id="proyecto-item_${articleId}" class="area-proyecto--proyecto--carrusel">
62 <#list image.getSiblings() as cur_image>
63 <#if (cur_image.getData())?? && cur_image.getData() != "">
64 <div class="area-proyecto--proyecto--carrusel--item">
65 <div class="area-proyecto--proyecto--carrusel--item--inner" style="background-image: url('${cur_image.getData()}')">
66 <img class="sr-only" alt="${cur_image.getAttribute('alt')}" data-fileentryid="${cur_image.getAttribute('fileEntryId')}" src="${cur_image.getData()}" />
67 </div>
68 </div>
69 </#if>
70 </#list>
71 </div>
72 </#if>
73 <#if (description.getData())??>
74 <div class="project-detail__intro-photos">
75 ${description.getData()}
76 </div>
77 </#if>
78
79 <#if documentosList.getSiblings()?has_content && !(documentosList.getSiblings()?size == 1 && validator.isNull(documentosList.getSiblings()[0].archivo.getData()))>
80 <div class="documentos-lista">
81 <h4 class="documentos-lista__description">${languageUtil.get(locale, 'es.gob.exteriores.aecid.lcl.proyecto.documentacion')}</h4>
82 <div class="documentos-lista__docs-info">
83 <#assign nameDoc="">
84 <ul>
85 <#list documentosList.getSiblings() as cur_documentosList>
86 <#list cur_documentosList.archivo.getData()?split("/") as x>
87 <#if x?counter==5>
88 <#assign nameDoc=x>
89 <#assign extension = nameDoc?keep_after_last(".")>
90 </#if>
91 </#list>
92 <#assign titleData=nameDoc>
93 <#if (cur_documentosList.docName.getData())?? && cur_documentosList.docName.getData() !="">
94 <#assign nameDoc=cur_documentosList.docName.getData()>
95 </#if>
96 <#if (cur_documentosList.archivo.getData())?? && cur_documentosList.archivo.getData() !="">
97 <li>
98 <a title="${titleData}" href="${cur_documentosList.archivo.getData()}" target="_blank">
99 <img src="https://laifcitylife.aecid.es/o/laif-theme/images/ico/ico-${extension}.svg"><span>${nameDoc}</span>
100 </a>
101 <a href="${cur_documentosList.archivo.getData()}&download=true" title="" class="documentos-lista__docs-info__link documentos-lista__docs-info__link--download">
102 <span class="sr-only">Descargar</span>
103 </a>
104 </li>
105 </#if>
106 <#if (cur_documentosList.linkToExternalPage.getData())?? && cur_documentosList.linkToExternalPage.getData() != "">
107 <li>
108 <a title="${titleData}" href="${cur_documentosList.linkToExternalPage.getData()}" target="_blank">
109 <img src="https://laifcitylife.aecid.es/o/laif-theme/images/ico/ico-web.svg"><span>${nameDoc}</span>
110 </a>
111 </li>
112 </#if>
113 </#list>
114 </ul>
115 </div>
116 </div>
117 </#if>
118 </div>
119</div>
120
121
122<#if dataAditional?? && dataAditional.getData()??>
123 <#assign webContentData = jsonFactoryUtil.createJSONObject(dataAditional.getData()) />
124 <#if webContentData?? && webContentData.className?? && webContentData.classPK?? >
125
126 <#assign
127 className = webContentData.className
128 classPK = webContentData.classPK
129 asset = assetEntryService.getEntry(className, classPK?number)
130 assetRenderer = asset.getAssetRenderer()
131 journalArticle = assetRenderer.getAssetObject()
132 />
133 <div class="">
134 <div class="">
135 <#assign void = request.setAttribute("projectId", articleId) />
136 <@liferay_journal["journal-article"]
137 articleId=journalArticle.getArticleId()
138 ddmTemplateKey="PROYECTO-DATOS-ADICIONALES-DETALLE-FTL"
139 groupId=journalArticle.getGroupId()
140 />
141 </div>
142 </div>
143 </#if>
144</#if>
145
146<#-- /.area-proyecto--proyecto -->
147
148<script>
149
150 document.getElementById('go-back-btn').addEventListener('click', () => history.back());
151
152 $(function() {
153 // Slider proyectos imagenes
154 $('#proyecto-item_${articleId}').slick({
155 slidesToShow: 2,
156 slidesToScroll: 1,
157 arrows: true,
158 dots: true,
159 autoplay: false,
160 autoplaySpeed: 5000,
161 infinite: false,
162 responsive: [
163 {
164 breakpoint: 992,
165 settings: {
166 slidesToShow: 2,
167 arrows: false,
168 infinite: true,
169 }
170 },
171 {
172 breakpoint: 768,
173 settings: {
174 slidesToShow: 1,
175 arrows: false,
176 infinite: true,
177 }
178 },
179 ]
180 });
181
182 // Check if slick track has more than one item
183 jQuery('.slick-track').each(
184 function () {
185 let itemsLength = this.children.length
186 if (itemsLength === 1) {
187 jQuery(this).addClass('unique-item')
188 jQuery(this).parent('.slick-list').addClass('two-or-less')
189 } else if (itemsLength === 2) {
190 jQuery(this).addClass('two-items')
191 jQuery(this).parent('.slick-list').addClass('two-or-less')
192 }
193 }
194 )
195 });
196</script>
es.gob.exteriores.aecid.lcl.listado.ciudades
-
Brasil
João PessoaBelém do Pará -
Colombia
Barranquilla -
Perú
CajamarcaArequipaTrujillo -
El Salvador
San Salvador -
Costa Rica
Cartago -
México
Estado de Tlaxcala -
Honduras
TrujilloComayaguaTegucigalpa -
Guatemala
Ciudad de Guatemala