Bilbao
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#CIUDAD-INSPIRADORA-FTL" at line 5, 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#CIUDAD-INSPIRADORA-FTL" at line 5, column 1] ----
1<#include init />
2<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") >
3<#assign assetEntryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
4<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") >
5<#assign customPermissionUtil = serviceLocator.findService("es.gob.exteriores.aecid.lcl.base.util.CustomPermissionUtil") >
6<#assign dLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
7
8<#assign areas_vocabulary_id = layout.getGroup().getExpandoBridge().getAttribute("areas_vocabulary_id")>
9<#assign areas_vocabulary_id = areas_vocabulary_id?number>
10<#assign articleId = .vars['reserved-article-id'].data >
11<#assign classPK = journalArticleResourceLocalService.getArticleResourcePrimKey(groupId, articleId) >
12<#assign categories = assetCategoryService.getCategories("com.liferay.journal.model.JournalArticle", classPK) >
13
14<div class="cabecera-pagina-interior cabecera-pagina-interior--ciudad-inspiradora primary-gradient">
15 <div class="global-container">
16 <#if ((name.getData())?? && name.getData() != "")>
17 <header class="cabecera-pagina-interior--ciudad-inspiradora__header">
18 <h2 class="cabecera-pagina-interior--title">${name.getData()}</h2>
19 <#if (locationX.getData()?has_content && locationY.getData()?has_content)>
20 <a href="https://www.google.com/maps?q=${locationX.getData()},${locationY.getData()}" target="_blank" class="ciudades-results--ciudad--content--ciudad-link">
21 ${languageUtil.get(locale, 'es.gob.exteriores.aecid.lcl.proyecto.ver.en.el.mapa')}
22 </a>
23 </#if>
24 </header>
25 </#if>
26 </div>
27</div>
28<div class="ciudades-results ciudades-results--ciudad-inspiradora">
29 <ul id="as-wrapper" class="">
30 <li class="couple">
31 <div class="ciudades-results--ciudad">
32
33 <#if (image.getData())?has_content && image.getData() != "">
34 <div class="ciudades-results--ciudad--image-wrapper" style="background-image: url('${image.getData()}')">
35 <img alt="${image.getAttribute('alt')}" data-fileentryid="${image.getAttribute('fileEntryId')}" src="${image.getData()}" />
36 </div>
37 <#else>
38 <div class="ciudades-results--ciudad--image-wrapper" style="background-image: url('${images_folder}/thumbnail.png')">
39 <img alt="Imagen con el logotipo de LAIF" src="${images_folder}/thumbnail.png" />
40 </div>
41 </#if>
42
43 <div class="ciudades-results--ciudad--content">
44 <#if (country.getData())?has_content>
45 <div class="ciudades-results--ciudad--content--location">
46 <p class="ciudades-results--ciudad--content--country">
47 <span title="${name.getData()}" class="ciudades-results--ciudad--content--country--map">${country.getData()}</span>
48 </p>
49 <#if (gobierno.getData())?has_content>
50 <p class="ciudades-results--ciudad--content--gob">
51 <a href="${gobierno.getData()}" title="${languageUtil.get(locale, 'ciudad.inspiradora.detalle.title.gobierno.de')} ${name.getData()}" class="ciudades-results--ciudad--content--gob-link" target="_blank">${languageUtil.get(locale, 'ciudad.inspiradora.detalle.gobierno')}</a>
52 </p>
53 </#if>
54 </div>
55 </#if>
56 <#if (description.getData())?has_content>
57 <div class="ciudades-results--ciudad--content--description d-none d-lg-block">${description.getData()}</div>
58 </#if>
59 <#if (categories?? && categories?has_content) && (areas_vocabulary_id?? && areas_vocabulary_id?has_content)>
60 <div class="ciudades-results--ciudad-inspiradora__areas">
61 <h3>${languageUtil.get(locale, 'ciudad.inspiradora.detalle.areas.tematicas')}</h3>
62 <ul>
63 <#list categories as cur_cat>
64 <#if cur_cat.getVocabularyId() == areas_vocabulary_id>
65 <li><span title="${cur_cat.getName()}">${cur_cat.getName()?substring(2)}</span></li>
66 </#if>
67 </#list>
68 </ul>
69 </div>
70 </#if>
71 </div>
72
73 </div>
74
75 <div class="ciudades-results--ciudad ciudades-results--ciudad__description-mobile">
76 <#if (description.getData())?has_content>
77 <div class="ciudades-results--ciudad--content--description">${description.getData()}</div>
78 </#if>
79 </div>
80 </li>
81 </ul>
82</div>
83
84<#if noticiaRelacionado?? && noticiaRelacionado.getData()??>
85 <#assign webContentData = jsonFactoryUtil.createJSONObject(noticiaRelacionado.getData()) />
86 <#if webContentData?? && webContentData.className?? && webContentData.classPK?? >
87 <#assign
88 className = webContentData.className
89 classPK = webContentData.classPK
90 asset = assetEntryService.getEntry(className, classPK?number)
91 assetRenderer = asset.getAssetRenderer()
92 journalArticle = assetRenderer.getAssetObject()
93 />
94 <div class="light-grey-bg mt-6 mb-6 pt-6 pb-6">
95 <div class="global-container">
96 <h3 class="ciudades-results--ciudad-inspiradora__sectionTittle">${languageUtil.get(locale, 'ciudad.inspiradora.detalle.noticia.masterclass.title')}</h3>
97 <#assign void = request.setAttribute("detalleInspiradora", true) />
98 <div class="ciudades-results--ciudad-inspiradora__masterclass">
99 <@liferay_journal["journal-article"]
100 articleId=journalArticle.getArticleId()
101 ddmTemplateKey="NOTICIA-MASTERCLASS-FTL"
102 groupId=journalArticle.getGroupId()
103 />
104 </div>
105 </div>
106 </div>
107 </#if>
108</#if>
109
110<#if documentos.documentoAsociado.getSiblings()?has_content && !(documentos.documentoAsociado.getSiblings()?size == 1 && validator.isNull(documentos.documentoAsociado.getSiblings()[0].docs.getData()))>
111 <div class="global-container mt-5">
112 <h3 class="ciudades-results--ciudad-inspiradora__sectionTittle">${languageUtil.get(locale, 'ciudad.inspiradora.detalle.docs.title')}</h3>
113 <div class="lcl-docs ciudades-inspiradoras">
114 <#list documentos.documentoAsociado.getSiblings() as cur_documento>
115 <div class="lcl-docs__doc">
116 <#assign viewThumbnail = ""
117 viewURL = ""
118 />
119 <#if (cur_documento.docs.getData()?has_content)>
120 <#assign
121 viewURL = cur_documento.docs.getData()
122 viewThumbnail = cur_documento.docs.getData() + "&documentThumbnail=1"
123 />
124
125 <#assign uuId = cur_documento.docs.getData()?split("/")[5]?split("?")[0] />
126 <#assign fileEntry = dLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuId, groupId) />
127 <#if viewThumbnail??>
128 <div class="lcl-docs__doc__image">
129 <img alt="pdf view" src="${viewThumbnail}" />
130 </div>
131 <#else>
132 <div class="lcl-docs__doc__image lcl-docs__doc__image--no-thumbnail">
133 <img alt="" src="/o/laif-theme/images/thumbnail.png" />
134 </div>
135 </#if>
136 <header class="lcl-docs__doc__header">
137 <h4 class="lcl-docs__doc__title">
138 <#if (cur_documento.docNombre.getData())??>
139 ${cur_documento.docNombre.getData()}
140 </#if>
141 </h4>
142 </header>
143 <div class="lcl-docs__doc__download-link">
144 <a href="${viewURL}" target="_blank">
145 <span class="sr-only">${languageUtil.get(locale, "es.gob.exteriores.aecid.lcl.documentacion.descargar.documento")}</span>
146 <em onmouseenter="addDownloadParam(this)" onmouseleave="removeDownloadParam(this)"><@getSizeVisualization sizeBytes=fileEntry.getSize()/></em>
147 </a>
148 </div>
149 </#if>
150 </div>
151 </#list>
152 </div>
153 </div>
154</#if>
155
156<#macro getSizeVisualization sizeBytes>
157 <#if (fileEntry.getSize()/1024/1024) lt 1>
158 (#{(fileEntry.getSize()/1024); M2} Kb)
159 <#else>
160 (#{(fileEntry.getSize()/1024/1024); M2} Mb)
161 </#if>
162</#macro>
163
164<script>
165 function addDownloadParam(element) {
166 const link = element.parentElement;
167 const currentUrl = link.href;
168
169 link.target = "_self";
170
171 if (currentUrl.includes('?')) {
172 if (!currentUrl.includes('download=true')) {
173 link.href = currentUrl + '&download=true';
174 }
175 } else {
176 link.href = currentUrl + '?download=true';
177 }
178 }
179
180 function removeDownloadParam(element) {
181 const link = element.parentElement;
182 const currentUrl = link.href;
183
184 if (currentUrl.includes('download=true')) {
185 link.href = currentUrl.replace('&download=true', '').replace('?download=true', '');
186 }
187
188 link.target = "_blank";
189 }
190</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