Transformación de Barcelona Sants
The following has evaluated to null or missing: ==> enlaces [in template "20101#20128#ADIF-NOTA-PRENSA-TEMPLATE" at line 271, column 14] ---- 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: #if enlaces.getSiblings()?has_content [in template "20101#20128#ADIF-NOTA-PRENSA-TEMPLATE" at line 271, column 9] ----
1<#assign currentURL = portalUtil.getCurrentCompleteURL(request)/>
2<#assign plMode = httpUtil.getParameter(currentURL, "p_l_mode", false)/>
3<#assign articleId = .vars['reserved-article-id'].data />
4<#assign journalResourceService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")/>
5<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService")/>
6<#assign classPK = journalResourceService.getArticleResourcePrimKey(groupId, articleId) />
7<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
8<#assign statuses = [0,2,3,1,7,4,8,5,6]/>
9<#if plMode == "preview" && permissionChecker.isSignedIn()>
10 <#assign actualJournalArticle = journalArticleService.fetchLatestArticle(classPK,statuses)>
11<#else>
12 <#assign actualJournalArticle = journalArticleService.fetchArticle(groupId,articleId)>
13</#if>
14
15<#assign uuid = actualJournalArticle.getUuid()>
16<#assign pdfDownloadServletUrl = (themeDisplay.getColorScheme().getColorSchemeId()=="02")?then("/o/pdf/prensa-av?pdf=","/o/pdf/prensa?pdf=")+uuid>
17
18
19<!-- If Preview -->
20<#if plMode == "preview" && permissionChecker.isSignedIn()>
21 <#assign articlePreview = journalArticleService.getLatestArticle(classPK, -1, false) />
22 <#if articlePreview.getStatus() != 0 && articlePreview.getVersion() != 1.0>
23 <#assign classPK = articlePreview.getId() />
24 </#if>
25</#if>
26
27<#assign categorias = assetCategoryService.getCategories("com.liferay.journal.model.JournalArticle", classPK) />
28
29<#assign notasPrensaFriendlyUrl = (themeDisplay.getColorScheme().getColorSchemeId()=="02")?then("/comunicacion-y-prensa/notas-prensa","/comunicacion-prensa/notas-prensa")>
30
31<#assign nologos = (ocultarIconosPredefinidos?? && getterUtil.getBoolean(ocultarIconosPredefinidos.getData())) &&
32 !(IconoPersonalizado?? && IconoPersonalizado.getSiblings()?has_content && (IconoPersonalizado.getSiblings()?size gt 0) && (IconoPersonalizado.getSiblings()[0]??) && (IconoPersonalizado.getSiblings()[0].getData()!="")) >
33
34<div class="nota-prensa-detalle <#if nologos>no-logos</#if>">
35 <!-- LOGOS -->
36 <div class="logos-prensa">
37 <#assign numPersUsados = 0>
38 <#if SelectorIconosPredefinidos.getSiblings()?has_content && !(ocultarIconosPredefinidos?? && getterUtil.getBoolean(ocultarIconosPredefinidos.getData()))>
39 <div class="logos-prensa-oficial">
40 <#assign listPred = SelectorIconosPredefinidos.getSiblings()?size
41 existePers = (IconoPersonalizado??) && (IconoPersonalizado.getSiblings()?has_content)>
42 <#assign numPersUsados = 0>
43 <div role="img" alt="<@liferay.language key='es.adif.header.ministerio' />" class="iconflag Ministerio"></div>
44 <#switch listPred>
45 <#case 1>
46 <#assign necesito3 = true>
47 <#assign offsetUSado = 0>
48 <#if (SelectorIconosPredefinidos.getSiblings()[0]??) && (SelectorIconosPredefinidos.getSiblings()[0].getData()!="")>
49 <#if existePers && (IconoPersonalizado.getSiblings()[0]??) && (IconoPersonalizado.getSiblings()[0].getData()!="")>
50 <#assign dataPers = IconoPersonalizado.getSiblings()[0]>
51 <img alt="${dataPers.getAttribute("alt")}" data-fileentryid="${dataPers.getAttribute("fileEntryId")}" src="${dataPers.getData()}" />
52 <#assign offsetUSado = 1>
53 <#assign numPersUsados = 1>
54 </#if>
55 <div role="img" alt="Logo ${parseIconData(SelectorIconosPredefinidos.getSiblings()[0].getData())}" class="iconflag ${parseIconData(SelectorIconosPredefinidos.getSiblings()[0].getData())}"></div>
56 <#assign necesito3 = false>
57 </#if>
58 <#if existePers && (IconoPersonalizado.getSiblings()[0+offsetUSado]??) && (IconoPersonalizado.getSiblings()[0+offsetUSado].getData()!="")>
59 <#assign dataPers = IconoPersonalizado.getSiblings()[0+offsetUSado]>
60 <img alt="${dataPers.getAttribute("alt")}" data-fileentryid="${dataPers.getAttribute("fileEntryId")}" src="${dataPers.getData()}" />
61 <#assign numPersUsados = 1+offsetUSado>
62 <#if (necesito3) && (IconoPersonalizado.getSiblings()[1]??) && (IconoPersonalizado.getSiblings()[1].getData()!="")>
63 <#assign dataPers = IconoPersonalizado.getSiblings()[1]>
64 <img alt="${dataPers.getAttribute("alt")}" data-fileentryid="${dataPers.getAttribute("fileEntryId")}" src="${dataPers.getData()}" />
65 <#assign numPersUsados = 2>
66 <#if (IconoPersonalizado.getSiblings()[2]??) && (IconoPersonalizado.getSiblings()[2].getData()!="")>
67 <#assign dataPers = IconoPersonalizado.getSiblings()[2]>
68 <img alt="${dataPers.getAttribute("alt")}" data-fileentryid="${dataPers.getAttribute("fileEntryId")}" src="${dataPers.getData()}" />
69 <#assign numPersUsados = 3>
70 </#if>
71 </#if>
72 </#if>
73 <#break>
74 <#case 2>
75 <div role="img" alt="Logo ${parseIconData(SelectorIconosPredefinidos.getSiblings()[0].getData())}" class="iconflag ${parseIconData(SelectorIconosPredefinidos.getSiblings()[0].getData())}"></div>
76 <div class="iconflag ${parseIconData(SelectorIconosPredefinidos.getSiblings()[1].getData())}"></div>
77 <#if existePers && (IconoPersonalizado.getSiblings()[0]??) && (IconoPersonalizado.getSiblings()[0].getData()!="")>
78 <#assign dataPers = IconoPersonalizado.getSiblings()[0]>
79 <img alt="${dataPers.getAttribute("alt")}" data-fileentryid="${dataPers.getAttribute("fileEntryId")}" src="${dataPers.getData()}" />
80 <#assign numPersUsados = 1>
81 </#if>
82 <#break>
83 <#default>
84 <div role="img" alt="Logo ${parseIconData(SelectorIconosPredefinidos.getSiblings()[0].getData())}" class="iconflag ${parseIconData(SelectorIconosPredefinidos.getSiblings()[0].getData())}"></div>
85 <div role="img" alt="Logo ${parseIconData(SelectorIconosPredefinidos.getSiblings()[1].getData())}" class="iconflag ${parseIconData(SelectorIconosPredefinidos.getSiblings()[1].getData())}"></div>
86 <div role="img" alt="Logo ${parseIconData(SelectorIconosPredefinidos.getSiblings()[2].getData())}" class="iconflag ${parseIconData(SelectorIconosPredefinidos.getSiblings()[2].getData())}"></div>
87 </#switch>
88 <div role="img" alt="<@liferay.language key='es.adif.header.adif' />" class="iconflag ${getSiteIcon()}"></div>
89
90 </div>
91 <div class="logos-prensa-no_oficial">
92 <#else>
93 <div class="logos-prensa-oficial">
94 </#if>
95 <#if IconoPersonalizado??>
96 <#if IconoPersonalizado.getSiblings()?has_content>
97 <#assign listPers = IconoPersonalizado.getSiblings()?size>
98 <#if listPers gt numPersUsados>
99 <#list IconoPersonalizado.getSiblings() as cur_IconoPersonalizado>
100 <#if (cur_IconoPersonalizado?index + 1 > numPersUsados) && (cur_IconoPersonalizado.getData()??) && (cur_IconoPersonalizado.getData() != "")>
101 <#if (cur_IconoPersonalizado?index - numPersUsados) != 0 && ((cur_IconoPersonalizado?index - numPersUsados) % 5) == 0 >
102 </div>
103 <div class="logos-prensa-no_oficial">
104 </#if>
105 <img alt="${cur_IconoPersonalizado.getAttribute("alt")}" data-fileentryid="${cur_IconoPersonalizado.getAttribute("fileEntryId")}" src="${cur_IconoPersonalizado.getData()}" />
106 </#if>
107 </#list>
108 </#if>
109 </#if>
110 </#if>
111 </div>
112</div>
113
114
115
116<div class="rs-content-template press-release">
117 <!-- HEADER -->
118 <header class="rs-content-template__header">
119 <#if Entradilla.getData()?? && Entradilla.getData() != "">
120 <div class="rs-content-template__header__entrance">
121 ${Entradilla.getData()}
122 </div>
123 </#if>
124 <@adif.header title=titulo.getData()/>
125 <#if subtitulo.getData()?? && subtitulo.getData() != "">
126 <h2>${subtitulo.getData()}</h2>
127 </#if>
128 <div class="rs-content-template__header__underlined-date">
129 <#assign dateFormat = "dd/MM/yyyy" />
130 <#assign displaydate = .vars['reserved-article-display-date'].data>
131 <#assign originalLocale = .locale>
132 <#setting locale = localeUtil.getDefault()>
133 <#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
134 <#assign fechaFormateada = displaydate?string["dd MMMM yyyy"] >
135 <p>${fechaFormateada}</p>
136 </div>
137 </header>
138
139 <!-- ETIQUETAS -->
140 <#if categorias?has_content>
141 <ul class="rs-content-template__tags">
142 <#assign categoriasOrd= []>
143 <#assign listNumber= 0>
144 <#list categorias as category>
145 <#switch category.getVocabularyId()>
146 <#case 333398>
147 <#-- Set listNumber to 0, in order to hide categories from voc 333398 (Comunidades) -->
148 <#assign listNumber= 0>
149 <#break>
150 <#case 939037>
151 <#assign listNumber= 2>
152 <#break>
153 <#case 939036>
154 <#assign listNumber= 3>
155 <#break>
156 <#case 595001>
157 <#assign listNumber= 4>
158 <#break>
159 <#default>
160 <#assign listNumber= 0>
161 </#switch>
162 <#if listNumber gt 0 >
163 <#assign categoriasOrd = categoriasOrd + [{"list": listNumber, "name": category.getName(), "cId":category.getCategoryId()}]>
164 </#if>
165 </#list>
166 <#list categoriasOrd?sort_by("list") as i>
167 <li class="rs-content-template__tags__tag adif-link-accessible-wrapper">
168 <a href="${notasPrensaFriendlyUrl}?buscador-prensa-categorias=${i.cId}">
169 <span class="sr-only"><@liferay.language key='es.adif.prensa.tipo-categoria' /></span> ${i.name}</a>
170 </li>
171 </#list>
172 </ul>
173 </#if>
174
175 <!-- CUERPO (TEXTO E IMAGEN) -->
176 <div class="rs-content-template__paragraphs">
177 <div class="rs-content-template__paragraphs__paragraph">
178 <#assign overflowHiddenStyle = "" />
179 <#if imagen.getData()?? && imagen.getData() != "">
180 <#assign overflowHiddenStyle = "rs-content-template__paragraphs__paragraph__description--overflow-hidden" />
181 <img class="rs-content-template__paragraphs__paragraph__img rs-content-template__paragraphs__paragraph__img--left" alt="${imagen.getAttribute('alt')}" data-fileentryid="${imagen.getAttribute("fileEntryId")}" src="${imagen.getData()}" />
182 </#if>
183 <div role="paragraph" class="rs-content-template__paragraphs__paragraph__description ${overflowHiddenStyle}">
184 ${cuerpo.getData()}
185 </div>
186 </div>
187 </div>
188
189 <!-- ADIF SHARE -->
190
191 <#assign
192 currentURL = portalUtil.getCurrentURL(request)
193 titulo = htmlUtil.escapeURL(titulo.getData())
194 currentUrl = currentURL
195 textoCola = " a través de @Adif_es"
196 urlTwitter = "https://twitter.com/intent/tweet?text="
197 facebookURL = 'https://www.facebook.com/sharer/sharer.php?u='
198 serverName = request.getServerName()
199 url = "https://"+serverName
200 url=url+currentUrl
201 urlFinalTwitter=urlTwitter+titulo+' '+url+textoCola
202 urlFinalFacebook=facebookURL+url+'&scrape=true'
203 />
204
205 <div class="rs-content-template__share">
206 <div class="rs-content-template__share__item">
207 <p>
208 <span role="heading" aria-level="3" class="rs-content-template__share__item__label">
209 <@liferay.language key='es.adif.prensa.compartir-en' />
210 </span>
211 </p>
212 <ul class="rs-content-template__share__item__icons">
213 <li><a class="icono-twitter adif-icon ai-twitter c-dark-aquamarine" id="twitter-nota-prensa" href="${urlFinalTwitter}" target="_blank"><span class="sr-only"><@liferay.language key='es.adif.prensa.compartir-nota-twitter' /></span></a></li>
214 <li><a class="icono-facebook adif-icon ai-facebook c-dark-aquamarine" id="facebook-nota-prensa" href="${urlFinalFacebook}" target="_blank"><span class="sr-only"><@liferay.language key='es.adif.prensa.compartir-nota-facebook' /></span></a></li>
215 </ul>
216
217 </div>
218 <div class="rs-content-template__share__item">
219 <p>
220 <span role="heading" aria-level="3" class="rs-content-template__share__item__label">
221 <@liferay.language key='es.adif.prensa.descargar' />
222 </span>
223 </p>
224 <a
225 href="${pdfDownloadServletUrl}"
226 target="_blank"
227 class="download-file-link"
228 id="download-nota-prensa">
229 <span class="sr-only"><@liferay.language key='es.adif.prensa.descargar-nota-prensa' /></span>
230 </a>
231 </div>
232 </div>
233
234 <!-- SLIDER IMAGENES Y VIDEOS -->
235 <#assign haySlider = 'false'/>
236 <#if (images?? && images.getData()!= "") || (videos?? && videos.getData()!= "")>
237 <div class="rs-content-template__slider press_release_slider">
238 <#if images.getSiblings()?has_content>
239 <#list images.getSiblings() as cur_images>
240 <#if cur_images.getData()?? && cur_images.getData() != ''>
241 <#assign haySlider = 'true'/>
242 <div>
243 <div class="rs-content-template__slider__slide-img" data-descarga="${cur_images.getData()}" style="background-image:url('${cur_images.getData()}');">
244 <img src="${cur_images.getData()}" />
245 </div>
246 </div>
247 </#if>
248
249 </#list>
250 </#if>
251 <#if videos.getSiblings()?has_content>
252 <#list videos.getSiblings() as cur_videos>
253 <#if cur_videos.getData()?? && cur_videos.getData() != ''>
254 <#assign haySlider = 'true'/>
255 <div class="rs-content-template__slider__slide-video" data-descarga="${cur_videos.getData()}" >
256 <video loop controls>
257 <source src="${cur_videos.getData()}" type="video/mp4">
258 <source src="${cur_videos.getData()}" type="video/ogg">
259 <@liferay.language key="es.adif.browser.does.not.support.video.tag"/>
260 </video>
261 </div>
262 </#if>
263 </#list>
264 </#if>
265 </div>
266 </#if>
267 <input id="haySlider" type="hidden" value="${haySlider}"/>
268
269 <!-- DOCUMENTOS-->
270 <#assign hayEnlaces = 'false' />
271 <#if enlaces.getSiblings()?has_content>
272 <#list enlaces.getSiblings() as enlace>
273 <#if enlace?? && enlace.getData()!= "">
274 <#assign hayEnlaces = 'true'/>
275 </#if>
276 </#list>
277 </#if>
278 <#assign hayDocumentos = 'false' />
279 <#if (docs?? && docs.getData()!= "") || (images?? && images.getData()!= "") || (videos?? && videos.getData()!= "") >
280 <#assign hayDocumentos = 'true'>
281 </#if>
282 <div class="rs-content-template__related<#if hayEnlaces=='true' && hayDocumentos='true'> rs-2column<#else> rs-1column</#if>">
283 <#if (docs?? && docs.getData()!= "") || (images?? && images.getData()!= "") || (videos?? && videos.getData()!= "") >
284 <div>
285 <div class="rs-content-template__related__header">
286 <div class="rs-content-template__related__header__icon adif-icon ai-cloud-download c-navy"></div>
287 <span role="heading" aria-level="3"><@liferay.language key='es.adif.related.document' /></span>
288 </div>
289 <ul class="list-of-links">
290 <#if images.getSiblings()?has_content>
291 <#list images.getSiblings() as cur_images>
292 <#if cur_images?? && cur_images.getData()!= "">
293 <li>
294 <div class="adif-link-accessible-wrapper">
295 <#if cur_images.labelImagen?? && cur_images.labelImagen.getData()!= "">
296 <@adif.docSize doc=cur_images.getData() locale=locale label=cur_images.labelImagen.getData()/>
297 <#else>
298 <@adif.docSize doc=cur_images.getData() locale=locale/>
299 </#if>
300 </div>
301 </li>
302 </#if>
303 </#list>
304 </#if>
305 <#if videos.getSiblings()?has_content>
306 <#list videos.getSiblings() as cur_videos>
307 <#if cur_videos?? && cur_videos.getData()!= "">
308 <li>
309 <div class="adif-link-accessible-wrapper">
310 <#if cur_videos.labelVideo?? && cur_videos.labelVideo.getData()!= "">
311 <@adif.docSize doc=cur_videos.getData() locale=locale label=cur_videos.labelVideo.getData()/>
312 <#else>
313 <@adif.docSize doc=cur_videos.getData() locale=locale/>
314 </#if>
315 </div>
316 </li>
317 </#if>
318 </#list>
319 </#if>
320 <#if docs.getSiblings()?has_content>
321 <#list docs.getSiblings() as cur_docs>
322 <#if cur_docs?? && cur_docs.getData()!= "">
323 <li>
324 <div class="adif-link-accessible-wrapper">
325 <#if cur_docs.labelDocumento?? && cur_docs.labelDocumento.getData()!= "">
326 <@adif.docSize doc=cur_docs.getData() locale=locale label=cur_docs.labelDocumento.getData()/>
327 <#else>
328 <@adif.docSize doc=cur_docs.getData() locale=locale/>
329 </#if>
330 </div>
331 </li>
332 </#if>
333 </#list>
334 </#if>
335 </ul>
336
337 </div>
338 </#if>
339
340 <!-- TAMBIEN TE PUEDE INTERESAR -->
341 <#if enlaces.getSiblings()?has_content>
342 <div>
343 <#assign elementoVacio = 'false' />
344 <#list enlaces.getSiblings() as cur_enlaces>
345 <#if cur_enlaces?? && cur_enlaces.getData()!= "">
346 <#assign elementoVacio = 'true'/>
347 </#if>
348 </#list>
349 <#if elementoVacio == 'true'>
350 <div class="rs-content-template__related__header">
351 <div class="rs-content-template__related__header__icon adif-icon ai-links c-navy"></div>
352 <span role="heading" aria-level="3"><@liferay.language key='es.adif.also.like' /></span>
353 </div>
354
355 <ul class="list-of-links">
356 <#list enlaces.getSiblings() as cur_enlaces>
357 <li>
358 <a href="${cur_enlaces.getData()}" target="_blank">
359 <#if cur_enlaces.textoEnlace?? && cur_enlaces.textoEnlace.getData()?has_content>
360 ${cur_enlaces.textoEnlace.getData()}
361 <#else>
362 ${cur_enlaces.getData()}
363 </#if>
364 </a>
365 </li>
366 </#list>
367 </ul>
368 </#if>
369 </div>
370 </#if>
371 </div>
372</div>
373
374<!-- SÓLO PARA PDF -->
375<div style="display:none">
376 ${TipoDeNotaDePrensa.getData()}
377</div>
378
379<!-- PIÉ DE PÁGINA -->
380<div style="display:none">
381 ${PieDePagina.getData()}
382</div>
383
384<script>
385 $(document).ready(function () {
386 $('.press_release_slider').slick({
387 dots: false,
388 infinite: true,
389 speed: 500,
390 fade: true,
391 arrows: true,
392 cssEase: 'linear'
393 });
394 });
395</script>
396
397
398<#function parseIconData iconData >
399 <#assign parsedIconData = iconData />
400
401 <#if iconData == "AdifAV" >
402 <#assign parsedIconData = getAltSiteIcon() />
403 </#if>
404
405 <#return parsedIconData>
406</#function>
407
408<#function getAltSiteIcon >
409 <#assign altSiteIcon = "AdifAV" />
410
411 <#if groupId == 34745 >
412 <#assign altSiteIcon = "Adif" />
413 </#if>
414
415 <#return altSiteIcon>
416</#function>
417
418<#function getSiteIcon >
419 <#assign siteIcon = "Adif" />
420
421 <#if groupId == 34745 >
422 <#assign siteIcon = "AdifAV" />
423 </#if>
424
425 <#return siteIcon>
426</#function>
09 julio 2025
Nota de prensa
16 junio 2025
09 mayo 2025
24 septiembre 2021
14 febrero 2025
06 noviembre 2024
20 septiembre 2024