Agrégateur de contenus

Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> lat  [in template "21222#21260#28866983" at line 37, column 31]

----
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 equLatitud = lat.getData()  [in template "21222#21260#28866983" at line 37, column 9]
----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign lang = locale?split('_')[0]> 
3<#assign scopeGroupId = getterUtil.getLong(themeDisplay.getScopeGroupId())> 
4<#-- CONSTANTES--> 
5<#assign lblServicioTramiteProyecto = "Zerbitzu, tramite eta proiektuak"> 
6<#assign lblGaiak = "Gaiak"> 
7<#if locale == "es_ES"> 
8	<#assign lblServicioTramiteProyecto = "Servicios, trámites y proyectos"> 
9	<#assign lblGaiak = "Temas"> 
10</#if> 
11 
12<#if dir.getChild("dirCodEdificio").getData() != "">     
13	<#-- buscamos el edificio en el que se situa la oficina--> 
14	<#assign COD_ESQUEMA_EQUIPACION = "28733825"> 
15	<#assign equipaciones = journalArticleLocalService.getStructureArticles(scopeGroupId, COD_ESQUEMA_EQUIPACION)>     
16	<#foreach equipacion in equipaciones>         
17		<#if journalArticleLocalService.isLatestVersion(equipacion.groupId, equipacion.articleId, equipacion.version)> 
18			<#assign document = saxReaderUtil.read(equipacion.getContentByLocale(locale.toString()))> 
19			<#assign rootElement = document.getRootElement()> 
20			<#assign codEqui = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='codigo']").selectSingleNode(rootElement).getStringValue())>             
21			<#if dir.getChild("dirCodEdificio").getData() == codEqui> 
22				<#assign equIzena = equipacion.getTitle(locale)> 
23				<#assign equUrl = equipacion.urlTitle> 
24				<#assign equDireccion = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='direccion']").selectSingleNode(rootElement).getStringValue())> 
25				<#assign equImagenPortadaURL = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='imagenPortadaURL']").selectSingleNode(rootElement).getStringValue())> 
26				<#assign equLatitud = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='latitud']").selectSingleNode(rootElement).getStringValue())> 
27				<#assign equLongitud = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='longitud']").selectSingleNode(rootElement).getStringValue())>    
28				<#break> 
29            </#if>         
30		</#if>     
31	</#foreach> 
32	<#assign codEqui = ""> 
33<#else>     
34    <#assign equIzena = ""> 
35	<#assign equDireccion = ""> 
36	<#assign equImagenPortadaURL = ""> 
37	<#assign equLatitud = lat.getData()> 
38	<#assign equLongitud = lon.getData()> 
39	<#assign equUrl = ""> 
40</#if> 
41<!-- Oficina --> 
42<div class="ficha-oficina"> 
43    <h1> 
44        ${.vars['reserved-article-title'].getData()} 
45    </h1> 
46    <div class="dos-columnas"> 
47        <div class="columna"> 
48            <div class="datos infoBanner"> 
49                <#if subNombre.getData() != "">                     
50					<p class="subtitulo">${subNombre.getData()}</p> 
51                </#if>                 
52				<p class="dato direccion"> 
53                <#if equIzena != "">  
54					<span class="nombre">${equIzena}</span><br/>  
55				</#if>                     
56				${dir.getChild("dirDire1").getData()}<br /> 
57                ${dir.getChild("dirResto").getData()} 
58                </p> 
59                <#if agenda.getChild("agTelefono").getData() != "">                     
60					<p class="dato telefonoa"><a href="tel:${agenda.getChild("agTelefono").getData()}">${agenda.getChild("agTelefono").getData()}</a></p> 
61                </#if>                 
62				<#if agenda.getChild("agEmail").getData() != "">                     
63					<p class="dato email"><a href="mailto:${agenda.getChild("agEmail").getData()}">${agenda.getChild("agEmail").getData()}</a></p> 
64                </#if>				 
65                <#if hor.getChild("horHorario").getData() != "">                     
66					<p class="dato ordutegia"> 
67                    <strong>${hor.getChild("horLiteral").getData()}</strong><br /><br /> 
68                        ${hor.getChild("horHorario").getData()} 
69                    </p> 
70                </#if>                 
71                <#-- INI REDES SOCIALES-->                 
72				<#if siguenos.redNombre.getData() != "">                	 
73				<div class="redes"> 
74                    <#foreach cur_red in siguenos.redNombre.getSiblings()>                        <span class="${cur_red.getChild("redTipo").getData()}"> 
75                            <a href="${cur_red.getChild("redUrl").getData()}" rel="external" target="_blank" title="${cur_red.getChild("redTipo").getData()} ${cur_red.getData()}"> 
76                                <#if cur_red.getChild("redTipo").getData() == "facebook">                                    <img alt="facebook" src="/documents/9774148/21632780/Facebook/3a10cd66-f046-d6ba-1a5a-2ac6912a5fb6" /> 
77                                <#elseif cur_red.getChild("redTipo").getData() == "twitter">                                    <img alt="Twitter" src="/documents/9774148/21632780/twitter/04abb2f4-3718-23e7-0017-fc934090bf9a" /> 
78                                <#elseif cur_red.getChild("redTipo").getData() == "instagram">                                    <img alt="Instagram" src="/documents/9774148/21632780/instagram/0ff74667-2d2b-a02d-a825-de2d73725fea" />  
79                                <#elseif cur_red.getChild("redTipo").getData() == "youtube">                                    <img alt="Youtube" src="/documents/9774148/21632780/youtube/404d2b0b-3ff6-06cf-3153-71b6b6fc8474" /> 
80                                <#elseif cur_red.getChild("redTipo").getData() == "blog">                                    <img alt="Blog" src="/documents/9774148/21632780/blog/a8d497dc-bbb9-294b-04fb-5b0ffc826ac9" /> 
81                                </#if>                                <!--i class="icon-${cur_red.getChild("redTipo").getData()}">&nbsp;</i--> 
82                                <span class="hide-text">${cur_red.getChild("redTipo").getData()} ${cur_red.getData()}</span> 
83                            </a> 
84                        </span> 
85                    </#foreach>                     
86				</div> 
87                </#if>                 
88				<#-- FIN REDES SOCIALES-->             
89			</div> 
90 
91            <#assign auxStringFormateado = "">            
92            
93            <#-- buscamos los servicios asociados a la oficina--> 
94			<#assign COD_ESQUEMA_SERVICIO = "23884181"> 
95			<#assign servicios = journalArticleLocalService.getStructureArticles(scopeGroupId, COD_ESQUEMA_SERVICIO)>             
96			<#foreach servicio in servicios>                 
97			<#if journalArticleLocalService.hasArticle(servicio.groupId, servicio.articleId)>         
98				<#if journalArticleLocalService.isLatestVersion(servicio.groupId, servicio.articleId, servicio.version)> 
99					<#assign document = saxReaderUtil.read(servicio.getContentByLocale(locale.toString()))> 
100					<#assign rootElement = document.getRootElement()>                     
101					<#foreach oficina in saxReaderUtil.createXPath("dynamic-element[@name='codOficinas']").selectNodes(rootElement)>                         
102						<#if stringUtil.trim(oficina.getStringValue()) == codigo.getData()> 
103							<#assign servCodigo = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='codigo']").selectSingleNode(rootElement).getStringValue())> 
104							<#assign servTitulo = servicio.getTitle(locale)>                             
105							<#assign servURL = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='urlExterno']").selectSingleNode(rootElement).getStringValue())>             
106							<#if servTitulo != "">                                 
107								<#if servURL == ""> 
108									<#assign auxStringFormateado = auxStringFormateado + "<li class='uuServicio'><a href='/" + lang + "/-/" + servicio.urlTitle + "'>" + servTitulo + "</a></li>">                                 
109								<#else> 
110									<#assign auxStringFormateado = auxStringFormateado + "<li class='uuServicio'><a href='" + servURL + "' target='_blank'>" + servTitulo + "</a></li>">                                 
111								</#if>                             
112							</#if>                             
113						</#if>                     
114					</#foreach> 
115					<#assign codServicio = ""> 
116					<#assign servURL = "">                 
117				</#if>  
118			</#if>  
119			</#foreach>             
120			<#-- buscamos los trámites asociados al servicio--> 
121			<#assign COD_ESQUEMA_TRAMITE = "21801873"> 
122			<#assign tramites = journalArticleLocalService.getStructureArticles(scopeGroupId, COD_ESQUEMA_TRAMITE)>             
123			<#foreach tramite in tramites>                 
124				<#if journalArticleLocalService.isLatestVersion(tramite.groupId, tramite.articleId, tramite.version)> 
125					<#assign document = saxReaderUtil.read(tramite.getContentByLocale(locale.toString()))> 
126					<#assign rootElement = document.getRootElement()> 
127					 <#assign codServicio = "">  
128					 <#if saxReaderUtil.createXPath("dynamic-element[@name='codServicio']").selectSingleNode(rootElement)??> 
129					    <#assign codServicio = saxReaderUtil.createXPath("dynamic-element[@name='codServicio']").selectSingleNode(rootElement)> 
130					 </#if> 
131					  
132				</#if>             
133			</#foreach>             
134            
135					<#if auxStringFormateado != "">                <h2>${lblServicioTramiteProyecto}</h2> 
136						<ul> 
137							${auxStringFormateado} 
138						</ul> 
139					</#if>             
140            <#-- buscamos los temas asociados al servicio-->        
141					<#assign COD_ESQUEMA_TEMA = "27592875"> 
142					<#assign temas = journalArticleLocalService.getStructureArticles(scopeGroupId, COD_ESQUEMA_TEMA)> 
143					<#assign auxStringFormateado = "">             
144					<#foreach tema in temas>                 
145						<#if journalArticleLocalService.isLatestVersion(tema.groupId, tema.articleId, tema.version)>                          
146							<#assign document = saxReaderUtil.read(tema.getContentByLocale(locale.toString()))> 
147							<#assign rootElement = document.getRootElement()> 
148							<#assign codOficina = stringUtil.trim(saxReaderUtil.createXPath("dynamic-element[@name='codOficina']").selectSingleNode(rootElement).getStringValue())> 
149							<#if codigo?? && codigo.getData()!=""> 
150                                <#assign codTema = codigo.getData()> 
151                            <#else> 
152                                <#assign codTema =""> 
153                            </#if> 
154							<#if codigo.getData() == codOficina> 
155							        <#assign temaURL = tema.urlTitle> 
156							        <#assign temaNombre = tema.getTitle(locale)> 
157							        <#assign auxStringFormateado = auxStringFormateado + "<li class='uuTema'><a href='/" + lang + "/-/" + temaURL + "' title='+ info" + temaNombre + "'>" + temaNombre + "</a></li>"> 
158							<#else>                         
159    							<#if codTemas?? && codTemas.getSiblings()?has_content>                             
160    								<#foreach cur_codTemas in codTemas.getSiblings()>                                 
161    									<#if cur_codTemas.getData() == codTema> 
162    										<#assign temaURL = tema.urlTitle> 
163    										<#assign temaNombre = tema.getTitle(languageId)> 
164    										<#assign auxStringFormateado = auxStringFormateado + "<li class='uuTema'><a href='/" + lang + "/-/" + temaURL + "' title='+ info" + temaNombre + "'>" + temaNombre + "</a></li>">                                 
165    									</#if>                             
166    								</#foreach>                         
167    							</#if> 
168							     
169							</#if> 
170							     <#assign codOficina = "">                 
171							     </#if>             
172							     </#foreach>             
173							     <#if auxStringFormateado != "">                 
174							     <h2>${lblGaiak}</h2> 
175							<ul> 
176								${auxStringFormateado} 
177							</ul> 
178						</#if>             
179        </div> 
180        <div class="columna"> 
181            <div class="foto"> 
182                <#if izena?? && izena.getData()!=""> 
183                    <img alt="${izena.getData()}" src="${imagenPortadaURL.getData()}" /> 
184                <#else> 
185                    <img alt="" src="${imagenPortadaURL.getData()}" /> 
186                </#if> 
187            </div> 
188         
189            <div id="map" style="width: 100%; height: 433px"></div> 
190         
191        </div> 
192    </div> 
193   <#if informacion.getData() != "">        <hr /> 
194        <div class="bloque-servicios contenido">${informacion.getData()}</div> 
195   </#if>  
196   <#if urlExterno.getData() != "">        <hr /> 
197        <div class="bloque-servicios contenido"><a taget="_blank" href="${urlExterno.getData()}">${urlExterno.getData()}</a></div> 
198   </#if>   
199</div> 
200 
201 
202 
203 
204 
205<!-- LEAFLET MAPA --> 
206<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" 
207   integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" 
208   crossorigin=""/> 
209<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" 
210   integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" 
211   crossorigin=""></script> 
212<script type="text/javascript" src="/documents/9774148/28671255/leaflet.markercluster.js"></script> 
213 
214<link rel="stylesheet" href="/documents/9774148/28671255/MarkerCluster.Default.min.css" /> 
215 
216<script type="text/javascript" src="/documents/9774148/28671255/L.Control.Locate.min.js"></script> 
217 
218<link rel="stylesheet" href="/documents/9774148/28671255/L.Control.Locate.css"/> 
219 
220<script type="text/javascript" src="/documents/9774148/28671255/Control.FullScreen.js"></script> 
221 
222<link rel="stylesheet" href="/documents/9774148/28671255/Control.FullScreen.css"/> 
223 
224<script> 
225     
226    // INICIAMOS EL MAPA 
227     
228    var URL_KARTOGRAFIA = 'https://www.geo.euskadi.eus/geoeuskadi/rest/services/U11/WMTS_KARTO/MapServer/WMTS?layer=U11_WMTS_KARTO&style=default&tilematrixset=default028mm&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix={z}&TileCol={x}&TileRow={y}'; 
229    var URL_ORTOFOTO = 'https://www.geo.euskadi.eus/WMS_ORTOARGAZKIAK'; 
230     
231    // Mapa hasieratzen dugu 
232    var map = L.map('map',  
233            {   scrollWheelZoom: false, 
234                maxZoom: 18, 
235                fullscreenControl: true, 
236                fullscreenControlOptions: { 
237                    position: 'topleft' 
238
239            }); 
240 
241    var scale = L.control.scale({"metric":true, "imperial":false}).addTo(map); 
242    							 
243	var lc = L.control.locate({ 
244		position: 'topleft', 
245		strings: { 
246			title: "Non nago / Donde estoy" 
247
248	}).addTo(map); 
249	 
250    var base = L.tileLayer( URL_KARTOGRAFIA, { attribution: "Eusko Jaurlaritza / Gobierno Vasco" }).addTo(map); 
251    var pnoa = L.tileLayer.wms(URL_ORTOFOTO, { 
252                    layers: "ORTO_EGUNERATUENA_MAS_ACTUALIZADA",//nombre de la capa (ver get capabilities) 
253                    format: 'image/jpeg', 
254                    transparent: true, 
255                    version: '1.3.0',//wms version (ver get capabilities) 
256                    attribution: "Eusko Jaurlaritza / Gobierno Vasco", 
257                    opacity: 1 
258                }); 
259                 
260    var capas_base = {"Base": base, "Satelite": pnoa}; 
261    var layers = L.control.layers(capas_base).addTo(map); 
262     
263    function onMapClick(e) { 
264        console.log("You clicked the map at " + e.latlng.toString()) 
265
266    map.on('click', onMapClick); 
267</script> 
268 
269<script> 
270    // ****************** 
271    //  AÑADIR MARCADOR 
272    var marker = L.marker([${equLatitud}, ${equLongitud}]).addTo(map); 
273    map.setView([${equLatitud}, ${equLongitud}], 18);		 
274    <#if equUrl != "">         
275		marker.bindPopup("<h5>${.vars['reserved-article-title'].getData()}</h5><p>${equIzena}<br/>${dir.getChild("dirDire1").getData()}<br />${dir.getChild("dirResto").getData()}<br /><a href='/${lang}/-/${equUrl}' title='Non nago'>+ info</a></p>").openPopup(); 
276    <#else>     
277		marker.bindPopup("<h5>${.vars['reserved-article-title'].getData()}</h5>${dir.getChild("dirDire1").getData()}<br />${dir.getChild("dirResto").getData()}</p>").openPopup(); 
278    </#if> 
279</script> 

Nabarmenak

BERRIAK