An error occurred while processing the template.
Can't convert this string to number: "null" The blamed expression: ==> latitude?number [in template "42020#42061#120471146" at line 148, column 35] ---- FTL stack trace ("~" means nesting-related): - Failed at: ${latitude?number} [in template "42020#42061#120471146" at line 148, column 33] ----
1<style>
2 #map {
3 height: 100%;
4 position: relative;
5 overflow: visible;
6 }
7</style>
8<#if ! themeDisplay ? has_content>
9 <#assign liferay_theme = PortletJspTagLibs["/META-INF/liferay-theme.tld"] />
10 <@liferay_theme["defineObjects"] />
11</#if>
12<h1 class="title">${.vars['reserved-article-title'].data} </h1>
13<div class="wrap-content mB30 clearfix">
14 <#assign firstImageNotEmpty = false />
15 <#if galeriaImagenes.foto?has_content>
16 <#if galeriaImagenes.foto.getSiblings()?size == 1>
17 <#assign firstImage = galeriaImagenes.foto.getSiblings()?first>
18 <#if firstImage??>
19 <#if (firstImage.imagen?? && firstImage.imagen.getData()?? && firstImage.imagen.getData() != "")>
20 <#assign firstImageNotEmpty = true />
21 </#if>
22 </#if>
23 <#else>
24 <#assign firstImageNotEmpty = true />
25 </#if>
26 </#if>
27 <#if firstImageNotEmpty || descripcionProyecto.getData()?has_content>
28 <div class="col-magic-slider mB20">
29 <#if videoExterno?has_content && videoExterno.getData()?has_content || UrlVideo?has_content && UrlVideo.getData()?has_content >
30 <div class="pull-right w50 mL20 mB20">
31 <div class="video-container">
32 <#if videoExterno?has_content && videoExterno.getData()?has_content >
33 <div class="embed-responsive embed-responsive-16by9">
34 <iframe class="embed-responsive-item" src="${videoExterno.getData()}" allowfullscreen="allowfullscreen"></iframe>
35 </div>
36 <#elseif UrlVideo?has_content && UrlVideo.getData()?has_content>
37 <video controls>
38 <source src="${UrlVideo.getData()}">
39 </video>
40 </#if>
41 </div>
42 </div>
43 <#elseif firstImageNotEmpty>
44 <div class="pull-right w50 mL20 mB20">
45 <section class="slider-minOwl">
46 <div id="slider-minOwl" class="owl-carousel owl-theme">
47 <#list galeriaImagenes.foto.getSiblings() as cur_foto>
48 <#if galeriaImagenes.foto.imagen.getData()?? && galeriaImagenes.foto.imagen.getData() != "">
49 <div class="item">
50 <img class="img-responsive w100 cornerBR" data-fileentryid="${cur_foto.imagen.getAttribute("fileEntryId")}" alt="${cur_foto.imagen.getAttribute("alt")}" src="${cur_foto.imagen.getData()}" />
51 <#if cur_foto.nombre.getData()?has_content>
52 <div class="minwc">
53 <p>${cur_foto.nombre.getData()}</p>
54 </div>
55 </#if>
56 </div>
57 </#if>
58 </#list>
59 </div>
60 </section>
61 </div>
62 </#if>
63 <#if descripcionProyecto.getData()?has_content>
64 <div>
65 <p>${descripcionProyecto.getData()}</p>
66 </div>
67 </#if>
68 </div>
69 </#if>
70</div>
71<#if datosSignificativos.dato?has_content>
72 <#if datosSignificativos.dato.getSiblings()?has_content>
73 <#assign firstDatoNotEmpty = false />
74 <#if datosSignificativos.dato.getSiblings()?size == 1>
75 <#assign firstDato = datosSignificativos.dato.getSiblings()?first>
76 <#if firstDato??>
77 <#if (firstDato.icono?? && firstDato.icono.getData()?? && firstDato.icono.getData() != "") || (firstDato.nombreDato?? && firstDato.nombreDato.getData()?? && firstDato.nombreDato.getData() != "")
78 || (firstDato.subtituloDato.getData()?? && firstDato.subtituloDato.getData() != "")>
79 <#assign firstDatoNotEmpty = true />
80 </#if>
81 </#if>
82 <#else>
83 <#assign firstDatoNotEmpty = true />
84 </#if>
85 <#if firstDatoNotEmpty>
86 <div class="pB35">
87 <div class="flexbox">
88 <#if datosSignificativos.dato.getSiblings()?has_content>
89 <#list datosSignificativos.dato.getSiblings() as cur_dato>
90 <div class="flexColumna blueBox cornerBR">
91 <#if cur_dato.iconoDato.getData()?? && cur_dato.iconoDato.getData() != "">
92 <div class="blueBox-image">
93 <img data-fileentryid="${cur_dato.iconoDato.getAttribute("fileEntryId")}" alt="${cur_dato.iconoDato.getAttribute("alt")}" src="${cur_dato.iconoDato.getData()}" class="img46" />
94 </div>
95 </#if>
96 <div class="blueBox-text">
97 <h4 class="txtAzulOscuro">${cur_dato.nombreDato.getData()}</h4>
98 <p>${cur_dato.subtituloDato.getData()}</p>
99 </div>
100 </div>
101 </#list>
102 </#if>
103 </div>
104 </div>
105 </#if>
106 </#if>
107</#if>
108<#assign latitude = 0>
109<#assign longitude = 0>
110<#assign hideMap = false>
111
112<#if hideGeolocation??>
113 <#if getterUtil.getBoolean(hideGeolocation.getData())>
114 <#assign hideMap = getterUtil.getBoolean(hideGeolocation.getData())>
115 </#if>
116</#if>
117
118<#if (geolocalizacion.getData() != "") && (hideMap == false)>
119<#assign latitude = 0>
120<#assign longitude = 0>
121<#if (geolocalizacion.getData() != "")>
122 <#assign PortalPreferencesUtil = staticUtil["com.liferay.portal.kernel.service.PortalPreferencesLocalServiceUtil"] />
123 <#assign portletPreferences = PortalPreferencesUtil.getPreferences(companyId, 1) />
124 <#assign googleMapsAPIKey = themeDisplay.getScopeGroup().getTypeSettingsProperties().getProperty("googleMapsAPIKey", "") />
125 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(geolocalizacion.getData())>
126
127 <#assign latitude = geolocationJSONObject.getDouble("latitude")>
128 <#assign longitude = geolocationJSONObject.getDouble("longitude")>
129</#if>
130<#if separadorCoordenadas?has_content>
131 <#if separadorCoordenadas.latitud.getData() != "" && separadorCoordenadas.longitud.getData() != "">
132 <#assign latitude = separadorCoordenadas.latitud.getData()?replace(",", ".")>
133 <#assign longitude = separadorCoordenadas.longitud.getData()?replace(",", ".")>
134 </#if>
135</#if>
136<#if (geolocalizacion.getData() != "") || (separadorCoordenadas?has_content && separadorCoordenadas.latitud.getData() != "" && separadorCoordenadas.longitud.getData() != "")>
137 <div class="container pB35">
138 <div class="wrap-content mT30 mB60 clearfix row">
139 <div class="col-12">
140 <div id="traza-maps" class="js-maptraza" style="position: relative; overflow: hidden;">
141 <div class="lfr-map yui3-widget lfrmapgoogle" id="geolocalizacionMap" style="position: relative; overflow: hidden;"></div>
142 </div>
143 </div>
144 </div>
145 </div>
146 <script type="text/javascript">
147 function initMap() {
148 var project = {lat: ${latitude?number}, lng:${longitude?number}};
149 var map = new google.maps.Map(document.getElementById('geolocalizacionMap'), {zoom:18, center: project});
150 var marker = new google.maps.Marker({position: project, map: map});
151 }
152 </script>
153 <script async defer src="https://maps.googleapis.com/maps/api/js?key=${googleMapsAPIKey}&callback=initMap"></script>
154</#if>
155</#if>
156
157
158<div class="links-container">
159 <#assign back = languageUtil.get(locale, "back-to-top")>
160 <div class="results-header text-right">
161 <h2>
162 <a id="goBackButton" href="#goBackButton" onClick="javascript: window.history.go(-1)">< ${back?keep_before(" ")}</a>
163 </h2>
164 </div>
165</div>