Back ZEGAMA

An error occurred while processing the template.
Failed to get value for key "com.liferay.portal.service.ServiceContextThreadLocal"; see cause exception.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign serviceContext = staticUtil["...  [in template "20907#20945#718733" at line 1, column 1]
----
1<#assign serviceContext = staticUtil["com.liferay.portal.service.ServiceContextThreadLocal"].getServiceContext()> 
2<#assign httpServletRequest = serviceContext.getRequest()> 
3<#assign portalURL = httpUtil.getProtocol(request['attributes']['CURRENT_URL']) + "://" + getterUtil.getString(request['theme-display']['portal-url']) /> 
4<#assign mainPath = getterUtil.getString(request['theme-display']['path-main']) /> 
5 
6<#assign themeDisplay = objectUtil("com.liferay.portal.theme.ThemeDisplay") /> 
7<#assign V = themeDisplay.setPathImage(getterUtil.getString(request['theme-display']['path-image'])) /> 
8<#assign V = themeDisplay.setPathMain(getterUtil.getString(request['theme-display']['path-main'])) /> 
9<#assign V = themeDisplay.setPortalURL(portalURL) /> 
10<#assign V = themeDisplay.setPermissionChecker(permissionChecker) /> 
11<#assign V = themeDisplay.setScopeGroupId(getterUtil.getLong(request['theme-display']['scope-group-id'])) /> 
12<#if .vars['keywords']??> 
13    <#assign kWords = .vars['keywords'].getData()> 
14<#else> 
15    <#assign kWords = ""> 
16</#if> 
17 
18<#include "${templatesPath}/1980550" /> 
19 
20<#assign categoryCategories = ["1", "2", "3", "4", "5", "P", "S", "T"] /> 
21<#assign categories_str = ["*", "**", "***", "****", "*****", "Lehena", "Bigarrena", "Hirugarrena"] /> 
22<#if locale.getLanguage() == "es" > 
23    <#assign categories_str = ["*", "**", "***", "****", "*****", "Primera", "Segunda", "Tercera"] /> 
24<#elseif locale.getLanguage() == "en" > 
25    <#assign categories_str = ["*", "**", "***", "****", "*****", "First", "Second", "Third"] /> 
26<#elseif locale.getLanguage() == "fr" > 
27    <#assign categories_str = ["*", "**", "***", "****", "*****", "Première", "Deuxième", "Troisième"] /> 
28</#if> 
29 
30<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil"]> 
31<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService")> 
32<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.portlet.asset.service.AssetCategoryLocalServiceUtil"]> 
33 
34<#assign cabecera = "" > 
35<#assign journalArticleId = .vars['reserved-article-id'].data > 
36<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/> 
37<#assign categoryList = assetCategoryLocalServiceUtil.getCategories("com.liferay.portlet.journal.model.JournalArticle",articleResourcePK) > 
38<#assign nombreLocalidad = ''> 
39<#assign accomodationType = ''> 
40<#assign accomodationCategory = ''> 
41<#if categoryList?has_content> 
42    <#list categoryList as cat> 
43    <#if vocabularyTowns == cat.getVocabularyId()?string> 
44        <#assign nombreLocalidad = cat.getTitle(locale)> 
45    </#if> 
46    <#if cat.getParentCategoryId() == getterUtil.getLong(categoryCategory)> 
47        <#assign accomodationType = cat.getCategoryId()?string> 
48    </#if> 
49    <#if cat.getParentCategoryId() == getterUtil.getLong(categoryCategory)> 
50        <#assign cont = 0 > 
51        <#list categoryCategories as category> 
52            <#if cat.getTitle(locale) == category> 
53                <#assign accomodationCategory = categories_str[cont]> 
54            </#if> 
55            <#assign cont = cont+1 > 
56        </#list> 
57    </#if> 
58    </#list> 
59</#if> 
60 
61<section itemscope itemtype="http://schema.org/Hotel"> 
62	<div class="relative flex flex-wrap-reverse overflow-hidden"> 
63		<div class="w-100 absolute relative-ns top-0 z-max"> 
64			<div class="ph3 ph5-ns relative z-max"> 
65				<div class="mw9 center relative"> 
66					<div class="pt4"> 
67						<div class="slider-footer flex justify-between justify-start-ns"> 
68							<div class="pb5 ph5-ns w-100 flex"> 
69								<div class="ml-auto ml0-ns flex"> 
70								<div class="slider-button-prev pointer mr3 mr4-ns"><span class="ico-arrow-left db"></span><span class="clip">Anterior</span></div> 
71								<div class="slider-button-next pointer ml3 ml4-ns"><span class="ico-arrow-right db"></span><span class="clip">Siguiente</span></div> 
72								</div> 
73							</div> 
74						</div> 
75					</div> 
76				</div> 
77			</div> 
78		</div> 
79		<div class="simple-slider-100vh flex-ns w-100"> 
80			<div class="simple-slider w-100 w-75-ns relative"> 
81        	<#if images.getSiblings()?has_content> 
82				<div class="swiper-wrapper"> 
83            	<#list images.getSiblings() as cur_item> 
84					<div class="swiper-slide relative"> 
85						<img src="${cur_item.getData()}" class="db w-100 h-100 of-cover" alt="" itemprop="photo"> 
86						<span class="white-gradient-ltr absolute absolute--fill z-999 o-50"></span> 
87					</div> 
88            	</#list> 
89				</div> 
90            </#if> 
91				<div class="main-title absolute bottom-0 left-0 rotate--180 z-999 ph3 ph5-ns nb3"> 
92					<div class="h5"> 
93						<h1 class="fw7 f2 f-5-ns ma0"><span itemprop="name">${name.getData()}</span>${accomodationCategory}</h1> 
94					</div> 
95				</div> 
96			</div> 
97			<div class="w-100 w-25-ns bg-dark-blue white flex-ns flex-column flex-column-reverse relative z-999-ns"> 
98				<div class="h-auto relative z-999"> 
99					<div class="pa4 lh-copy f5"> 
100						<div class="mb3" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> 
101							${address.getData()} <span itemprop="addressLocality">${nombreLocalidad}</span> 
102						</div> 
103						<div><span itemprop="telephone" content="+34${telephone.getData()}">${telephone.getData()}</span></div> 
104                    	<#if email.getData()?has_content> 
105						<div class="mb3"> 
106							<a href="mailto:${email.getData()}" itemprop="email" class="link white">${email.getData()}</a> 
107						</div> 
108                        </#if> 
109					</div> 
110				</div> 
111				<div class="bg-yellow h-100 relative"> 
112					<div id="map" class="w-100 h-100"></div> 
113					<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB2KTr5g5u7QYIOX5NyMexHFcrpdX7McUY&callback=initMap"></script> 
114					<script> 
115						function initMap() { 
116							var myLatLng = {lat: ${latitude.getData()}, lng: ${longitude.getData()}}; 
117 
118							var map = new google.maps.Map(document.getElementById('map'), { 
119								zoom: 16, 
120								center: myLatLng, 
121								disableDefaultUI: true, 
122								styles: [ 
123
124								        "featureType": "administrative", 
125								        "elementType": "labels.text.fill", 
126								        "stylers": [ 
127
128								                "color": "#444444" 
129
130
131								    }, 
132
133								        "featureType": "landscape", 
134								        "elementType": "all", 
135								        "stylers": [ 
136
137								                "color": "#f2f2f2" 
138
139
140								    }, 
141
142								        "featureType": "poi", 
143								        "elementType": "all", 
144								        "stylers": [ 
145
146								                "visibility": "off" 
147
148
149								    }, 
150
151								        "featureType": "road", 
152								        "elementType": "all", 
153								        "stylers": [ 
154
155								                "saturation": -100 
156								            }, 
157
158								                "lightness": 45 
159
160
161								    }, 
162
163								        "featureType": "road.highway", 
164								        "elementType": "all", 
165								        "stylers": [ 
166
167								                "visibility": "simplified" 
168
169
170								    }, 
171
172								        "featureType": "road.arterial", 
173								        "elementType": "labels.icon", 
174								        "stylers": [ 
175
176								                "visibility": "off" 
177
178
179								    }, 
180
181								        "featureType": "transit", 
182								        "elementType": "all", 
183								        "stylers": [ 
184
185								                "visibility": "off" 
186
187
188								    }, 
189
190								        "featureType": "water", 
191								        "elementType": "all", 
192								        "stylers": [ 
193
194								                "color": "#ffffff" 
195								            }, 
196
197								                "visibility": "on" 
198
199
200
201
202							}); 
203							 
204							var marker = new google.maps.Marker({ 
205								position: myLatLng, 
206								map: map, 
207								title: '${name.getData()}', 
208								icon: { 
209							        path: google.maps.SymbolPath.CIRCLE, 
210							        scale: 8.5, 
211							        fillColor: "#000", 
212							        fillOpacity: 1, 
213							        strokeWeight: 1 
214							    }, 
215							}); 
216
217					</script> 
218				</div> 
219			</div> 
220			 
221		</div> 
222	</div> <!--/ #billboard --> 
223 
224	<div class="ph3 ph5-ns mb5"> 
225		<div class="mw9 center"> 
226			<div class="flex-ns"> 
227				<div class="mw8 f5 f3-ns fw7 lh-copy-2 pv4 pr5-ns"> 
228					<span itemprop="description"> 
229					<p>${description.getData()}</p> 
230					</span> 
231				</div> 
232				<div class="pv4"> 
233					<h2 class="f7 fw3 ttu tracked-mega mb3">${languageUtil.get(locale, "dit.accomodation.services")}</h2> 
234					<ul class="list ma0 pa0 f7 lh-copy"> 
235                    <#if categoryList?has_content> 
236                        <#list categoryList as category> 
237                            <#if category.getParentCategoryId() == getterUtil.getLong(categoryServices)> 
238            				    <li class="mb2">${category.getTitle(locale)}</li> 
239            				</#if> 
240                        </#list> 
241                    </#if> 
242					</ul> 
243				</div> 
244			</div> 
245		</div> 
246	</div> 
247</section> 
248<#if (accomodationType==categoryTypeRural || accomodationType==categoryTypeAgro)> 
249<#assign bannerId = "15184558" /> 
250<#else> 
251<#assign bannerId = "15038540" /> 
252</#if> 
253<#assign journalArticle = journalArticleLocalService.getLatestArticle(groupId, bannerId) /> 
254<#assign docXml = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) /> 
255 
256<#assign enlace = docXml.valueOf("//dynamic-element[@name='enlace']/dynamic-content/text()") /> 
257<#assign texto_enlace = docXml.valueOf("//dynamic-element[@name='texto_enlace']/dynamic-content/text()") /> 
258<#assign imagen = docXml.valueOf("//dynamic-element[@name='imagen']/dynamic-content/text()") /> 
259<#assign alt_imagen = docXml.valueOf("//dynamic-element[@name='alt_imagen']/dynamic-content/text()") /> 
260<#assign descripcion = docXml.valueOf("//dynamic-element[@name='descripcion']/dynamic-content/text()") /> 
261<#assign title = journalArticle.getTitle(locale) /> 
262<div class="bg-dark-blue white relative overflow-hidden mb5 mb6-ns"> 
263	<img src="${imagen}" class="absolute absolute--fill of-cover w-100 h-100 o-60" alt="${alt_imagen}"> 
264	<div class="ph3 ph5-ns pv6 relative z-2"> 
265		<h3 class="f2 fw7 ma0">${title}</h3> 
266		<div class="f4 lh-copy"> 
267			<p>${descripcion}</p> 
268		</div> 
269		<div class="f6"> 
270			<a href="${enlace}" class="link white arrow-link">${texto_enlace}</a> 
271		</div> 
272	</div> 
273</div>