Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> Galeria [in template "37293#37321#84355" at line 175, column 59]
----
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 htmlGallery = journalTool.get... [in template "37293#37321#84355" at line 175, column 9]
----
1<#assign articleId = .vars['reserved-article-id'].data>
2<#assign title = .vars['reserved-article-title'].data>
3<#assign description=.vars["reserved-article-description"].data />
4<#assign smallImageUrl=.vars["reserved-article-small-image-url"].data />
5<#assign date=.vars["reserved-article-display-date"].data />
6<#assign request = .vars['request']>
7
8<#assign dateFormatted = journalTool.getDateFormat(date, "dd MMMM yyyy", locale, timezone)>
9
10<article class="template template-news-detail">
11
12 <#assign showJournalTitle = getterUtil.getBoolean(portletTool.getPreference(request, "showAssetTitle"), false) />
13 <#if showJournalTitle?has_content && showJournalTitle == false>
14 ${journalTool.getHTMLTitle(request, title, "portlet-title-wrapper", "portlet-title h3")}
15 </#if>
16
17 <section class="row flex-row-reverse mt-4">
18
19 <div class="col-sm-3 col-12">
20 <#if validator.isNotNull(smallImageUrl)>
21 <a href="${smallImageUrl}" title="Imagen ${title}" class="image-wrapper image-wrapper-cover image-wrapper-style lightbox" style="background-image: url('${dlTool.getThumbnail(smallImageUrl, 3)}');">
22 <img src="${dlTool.getThumbnail(smallImageUrl, 3)}" alt="Imagen ${title}" />
23 </a>
24 </#if>
25 <#if (Telefono?? && Telefono.data?has_content && validator.isNotNull(Telefono.data))|| (Fax?? && Fax.data?has_content && validator.isNotNull(Fax.data))|| (Email?? && Email.data?has_content && validator.isNotNull(Email.data)) || (Web?? && Web.data?has_content && validator.isNotNull(Web.data))>
26 <div class="card">
27 <div class="card-header">
28 ${languageUtil.get(locale,'data')}
29 </div>
30 <div class="card-body">
31 <ul class="list-unstyled">
32
33 <#if Telefono?? && Telefono.data?has_content && validator.isNotNull(Telefono.data)>
34 <li class="phone">
35 <span class="icon fa fa-phone-alt">
36 <span class="hide-accessible">
37 ${languageUtil.get(locale,'phone')}
38 </span>
39 </span>
40
41 <#assign regex = Telefono.getData()?replace(" ","")?replace("-","")?replace("+34","")?replace(".","")?matches("^[0-9]{9}$")?string("yes","no")/>
42 <#if regex=="yes">
43 <a href="tel:${Telefono.getData()?replace(' ','')?replace('-','')?replace('+34','')?replace('.','')}" onclick='this.target="_blank"'>${Telefono.getData()?replace(" ","")?replace("-","")?replace("+34","")?replace(".","")}</a>
44 <#else>
45 ${Telefono.getData()}
46 </#if>
47 </li>
48 </#if>
49
50 <#if Whatsapp?? && Whatsapp.data?has_content && validator.isNotNull(Whatsapp.data)>
51 <#assign telWhatsapp = stringUtil.replace("${Whatsapp.getData()}", " ", "")/>
52 <li class="social-list whatsapp">
53 <a href="https://api.whatsapp.com/send/?phone=%2B34${telWhatsapp}&text&app_absent=0" onclick='this.target="_blank"'>
54 <span class="icon fab fa-whatsapp">
55 <span class="hide-accessible">
56 ${languageUtil.get(locale,'whatsapp')}
57 </span>
58 </span>
59
60 ${Whatsapp.getData()}
61 </a>
62 </li>
63 </#if>
64 <#if Fax?? && Fax.data?has_content && validator.isNotNull(Fax.data)>
65 <li class="fax">
66 <span class="icon fa fa-fax">
67 <span class="hide-accessible">
68 ${languageUtil.get(locale,'fax')}
69 </span>
70 </span>
71 ${Fax.getData()}
72 </li>
73 </#if>
74
75 <#if Email?? && Email.data?has_content && validator.isNotNull(Email.data)>
76 <li class="Email">
77 <span class="icon fa fa-envelope">
78 <span class="hide-accessible">
79 ${languageUtil.get(locale,'email')}
80 </span>
81 </span>
82 <a href="mailto:${htmlUtil.extractText(Email.getData())}" onclick='this.target="_blank"'>${htmlUtil.extractText(Email.getData())}</a>
83 </li>
84 </#if>
85 <#if Web?? && Web.data?has_content && validator.isNotNull(htmlUtil.extractText(Web.data))>
86 <li class="web">
87 <span class="icon fas fa-external-link-square-alt">
88 <span class="hide-accessible">
89 ${languageUtil.get(locale,'web')}
90 </span>
91 </span>
92 <a href="${htmlUtil.extractText(Web.getData())}" onclick='this.target="_blank"'>${htmlUtil.extractText(Web.getData())}</a>
93 </li>
94 </#if>
95 </ul>
96 </div>
97 </div>
98 </#if>
99 </div>
100
101 <div class="col-sm-9 col-12">
102 <#if Descripcion?? && Descripcion.data?has_content && validator.isNotNull(Descripcion.data)>
103 <div class="description mb-2">${Descripcion.getData()}</div>
104 </#if>
105 <#if Horario?? && Horario.data?has_content && validator.isNotNull(Horario.data)>
106 <div class="timetable mb-2">
107 <div class="h4 border-bottom-min">${languageUtil.get(locale,'template-timetable')}</div>
108 ${Horario.getData()}
109 </div>
110 </#if>
111 <#if Tarifas?? && Tarifas.data?has_content && validator.isNotNull(Tarifas.data)>
112 <div class="h4 border-bottom-min">${languageUtil.get(locale,'template-tarifas')}</div>
113 <div class="price mb-2">${Tarifas.getData()}</div>
114 </#if>
115 <#if Coordenadas?has_content && validator.isNotNull(Coordenadas.data) || Direccion?has_content && validator.isNotNull(Direccion.data)|| CodigoPostal?has_content && validator.isNotNull(CodigoPostal.data)|| Localidad?has_content && validator.isNotNull(Localidad.data)|| Provincia?has_content && validator.isNotNull(Provincia.data)>
116 <div class="card">
117 <div class="card-header">
118 ${languageUtil.get(locale,'location')}
119 </div>
120 <div class="card-body">
121 <#assign latitude = 0>
122 <#assign longitude = 0>
123 <#if Coordenadas?has_content && validator.isNotNull(Coordenadas.data)>
124 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(Coordenadas.getData())>
125
126 <#assign latitude = geolocationJSONObject.getDouble("latitude")>
127 <#assign longitude = geolocationJSONObject.getDouble("longitude")>
128
129 <div id="map" class="coordinates mb-2" style="height: 370px; width:100%; z-index:1"></div>
130 <link crossorigin="" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" rel="stylesheet" />
131 <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""></script>
132 <script type="text/javascript">
133 AUI().ready('aui-base', function(A){
134 var map = new L.Map("map", {
135 center: new L.LatLng(${latitude},${longitude}),
136 zoom: 16,
137 layers: new L.TileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png")
138 });
139
140 var marker = L.marker([${latitude},${longitude}]).addTo(map);
141 marker.bindPopup("<b>${title}</b>").openPopup();
142 });
143 </script>
144 </#if>
145 <#if Direccion?has_content && validator.isNotNull(Direccion.data)>
146 <span class="icon fa fa-map-marker">
147 <span class="hide-accessible">
148 ${languageUtil.get(locale,'location')}
149 </span>
150 </span>
151 <span class="address">${Direccion.getData()}</span>
152 </#if>
153 <#if CodigoPostal?has_content && validator.isNotNull(CodigoPostal.data)>
154 <span class="cp">(${CodigoPostal.getData()}).</span>
155 </#if>
156 <#if Localidad?has_content && validator.isNotNull(Localidad.data)>
157 <span class="city">${Localidad.getData()}</span>
158 </#if>
159 <#if Provincia?has_content && validator.isNotNull(Provincia.data)>
160 <span class="province">- ${Provincia.getData()}</span>
161 </#if>
162 </div>
163 </div>
164 </#if>
165
166 <#if Documentos.Documento?has_content && validator.isNotNull(Documentos.Documento.data)>
167 <#assign htmlDocuments = journalTool.getHTMLDocuments(Documentos.Documento.getSiblings()) />
168 <#if validator.isNotNull(htmlDocuments)>
169 <section class="documents">
170 <div class="h4 border-bottom-min">${languageUtil.get(locale, "documents")}</div>
171 ${htmlDocuments}
172 </section>
173 </#if>
174 </#if>
175 <#assign htmlGallery = journalTool.getHTMLGallery(Galeria.Imagen.getSiblings(), 3, "gallery-thumbs") />
176 <#if validator.isNotNull(htmlGallery)>
177 <section class="image-gallery">
178 <div class="h5">${languageUtil.get(locale, "image-gallery")}</div>
179 ${htmlGallery}
180 </section>
181 </#if>
182
183 <#if Observaciones?has_content && validator.isNotNull(Observaciones.data)>
184 <div class="h4 border-bottom-min">${languageUtil.get(locale,'template-observations')}</div>
185 <div class="remark mb-2">${Observaciones.getData()}</div>
186 </#if>
187
188 </div>
189 </section>
190
191
192</article>