Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> item.getJSONObject("data").getJSONObject(defLng) [in template "114284#114319#356216" at line 143, column 41] ---- Tip: If the failing expression is known to be 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 localizedContent = item.getJS... [in template "114284#114319#356216" in macro "viewFull" at line 143, column 13] - Reached through: @viewFull [in template "114284#114319#356216" at line 56, column 13] ----
1<style>
2 #outdoor .card-body.section-top-light:before{
3 top: -31px;
4 }
5</style>
6
7<#assign
8 httpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"]
9
10 collection = ""
11 itemId = ""
12 item = ""
13/>
14
15<#assign
16 suggestoGUIAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService")
17 parentLibOld = suggestoGUIAPI.getADTPathToInclude(companyId, groupId, "eu.suggesto.d40.web.portlet.model.D40Configurable", templatesPath, "d40-parent-lib_v1")
18/>
19
20<#include "${parentLibOld}">
21
22<#assign
23 serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
24 organizationProject = d40UserLocalService.getCurrentOrganizationInfo(serviceContext)
25/>
26
27<#if organizationProject.getJSONObject("data")?has_content && organizationProject.getJSONObject("data").getJSONObject("project")?has_content>
28 <#assign organizationProjectId = organizationProject.getJSONObject("data").getJSONObject("project").getJSONObject("_id").getString("$oid")>
29</#if>
30
31<#if result.getJsonConfigStringParam("collection", "")?has_content>
32 <#assign collection = result.getJsonConfigStringParam("collection", "")>
33</#if>
34
35<#if result.getJsonConfigStringParam("view", "")?has_content>
36 <#assign view = result.getJsonConfigStringParam("view", "")>
37</#if>
38
39<#assign mongoContent = initOrGetMongoCatalogDataBlock(groupId, serviceContext, result, themeDisplay.plid, collection)>
40
41<#if mongoContent?has_content>
42 <#assign
43 curLang = themeDisplay.getLocale()
44 defLng = "it_IT"
45 />
46
47 <div class="position-relative">
48 <div class="editing-overlay d-none"></div>
49 <#assign catalog = d40MongoItemAPI.queryMongoItems(groupId, collection, "{projectId:'${result.projectId}'}", "{'mongoitem.it_IT.ordine': 1}", 0, 100)>
50
51 <#if view == "all">
52 <@viewPreview />
53 </#if>
54
55 <#if view == "detail">
56 <@viewFull />
57 </#if>
58 </div>
59</#if>
60
61<#macro viewPreview>
62 <section id="outdoor" class="pt-5">
63 <div class="container">
64 <#if catalog.getJSONObject("data").getJSONArray("items")??>
65 <#assign items = catalog.getJSONObject("data").getJSONArray("items")>
66
67 <div class="row"> <#-- card-deck -->
68 <#list (0..items.length()-1) as i>
69 <#assign doc = items.getJSONObject(i)>
70
71 <#if doc.mongoitem.getJSONObject(curLang)??>
72 <#assign localizedContent = doc.mongoitem.getJSONObject(curLang)>
73 <#else>
74 <#assign localizedContent = doc.mongoitem.getJSONObject(defLng)>
75 </#if>
76
77 <script>
78 var params = {
79 'editMode': 'true',
80 'articleId': '${doc._id.$oid}'
81 };
82 var shared_params${doc._id.$oid} = JSON.stringify(params);
83 </script>
84
85 <#if i == 0>
86 <#assign col_class = "col-12 col-lg-9 mx-auto">
87 <#else>
88 <#assign col_class = "col-12 col-md-6 col-lg-4">
89 </#if>
90
91 <div class="${col_class} mb-4">
92 <h3 class="text-center mb-0">${localizedContent.giorno}</h3>
93 <div class="card card-body border-0 h-100 m-0">
94 <a href="attività-singola?content=${doc._id.$oid}" class="card-header p-0">
95 <img src="${getPrefix(1000, 400, localizedContent.immagine)}" class="card-img-top">
96 </a>
97 <div class="card-body bg-light section-top-light position-relative rounded-bottom pt-0">
98 <div class="btn bg-colored floating rounded-circle cursor-default position-absolute text-white">
99 <img src="${localizedContent.difficolta}" draggable="false" height="32" width="32" class="my-2">
100 </div>
101 <h5 class="text-darker font-weight-bold my-2">${localizedContent.nome}</h5>
102 <#if themeDisplay.isSignedIn()>
103 <a href="javascript:void(0);" onclick="Liferay.Portlet.refresh('#p_p_id${result.portletNamespace}', {'${result.portletNamespace}jsonParams': shared_params${doc._id.$oid}});" class="btn bg-colored text-white text-uppercase"><i class="fa fa-pen mr-3"></i> Modifica</a>
104 </#if>
105 </div>
106 </div>
107 </div>
108 </#list>
109 </div>
110 <#else>
111 <p class="text-center">Empty</p>
112 </#if>
113 <#if themeDisplay.isSignedIn()>
114 <script>
115 var add_params = {
116 'editMode': 'true',
117 'addNew': 'true'
118 };
119 var new_params = JSON.stringify(add_params);
120 </script>
121
122 <div class="col-12 d-flex justify-content-center mt-5">
123 <a href="javascript:void(0);" onclick="Liferay.Portlet.refresh('#p_p_id${result.portletNamespace}', {'${result.portletNamespace}jsonParams': new_params});" class="btn bg-colored btn-lg text-white text-uppercase"><i class="fa fa-plus mr-3"></i> Aggiungi</a>
124 </div>
125 </#if>
126 </div>
127 </section>
128</#macro>
129
130<#macro viewFull>
131 <#if httpUtil.getParameter(themeDisplay.getURLCurrent(), "content")?has_content>
132 <#assign itemId = httpUtil.getParameter(themeDisplay.getURLCurrent(), "content")>
133 </#if>
134
135 <#if itemId?has_content && d40MongoItemAPI.getMongoItem(groupId, collection, itemId)??>
136 <#assign item = d40MongoItemAPI.getMongoItem(groupId, collection, itemId)>
137 </#if>
138
139 <#if item?has_content>
140 <#if item.getJSONObject("data").getJSONObject(curLang)??>
141 <#assign localizedContent = item.getJSONObject("data").getJSONObject(curLang)>
142 <#else>
143 <#assign localizedContent = item.getJSONObject("data").getJSONObject(defLng)>
144 </#if>
145
146 <section id="slideshow">
147 <div class="swiper-container">
148 <div class="swiper-wrapper">
149 <#assign slides = localizedContent.getJSONArray("slides")>
150 <#list 0..slides.length()-1 as i>
151 <#if slides.getString(i)?has_content>
152 <#assign slide = slides.getJSONObject(i)>
153
154 <div class="swiper-slide">
155 <div class="dark-overlay"></div>
156 <img src="${getTopHintPrefix(1920, 1080, slide.url)}" class="fit-cover w-100 h-100">
157 <div class="carousel-caption text-white">
158 <div class="text-center">
159 <h1 class="display-3 font-weight-bold outline">${slide.titolo}</h1>
160 <h3 class="font-weight-bold outline">${slide.sottotitolo}</h3>
161 </div>
162 </div>
163 </div>
164 </#if>
165 </#list>
166 </div>
167 </div>
168 </section>
169
170 <section id="room-details">
171 <div class="container-fluid-big my-5">
172 <div class="row">
173 <div class="col-12 col-lg-3">
174 <div class="d-flex align-items-center justify-content-center w-100 h-100">
175 <img src="${images_folder}/svg/mountain.svg" draggable="false" class="img-fluid">
176 </div>
177 </div>
178 <div class="col-12 col-lg-6">
179 <div class="text-center">
180 <h1 class="text-darker font-weight-bold mb-1">${localizedContent.nome}</h1>
181 <p class="text-dark">${localizedContent.descrizione}</p>
182 </div>
183 </div>
184 <div class="col-12 col-lg-3">
185 <div class="d-flex align-items-center justify-content-center w-100 h-100">
186 <img src="${images_folder}/svg/mountain.svg" draggable="false" class="img-fluid">
187 </div>
188 </div>
189 </div>
190 </div>
191
192 <#if localizedContent.altro?has_content>
193 <div class="container">
194 <div class="text-center">
195 <h4 class="text-dark mb-3 mb-lg-5">${localizedContent.altro}</h4>
196 </div>
197 </div>
198 </#if>
199
200 <#if localizedContent.getJSONArray("gallery")??>
201 <div class="container section-top-white">
202 <div class="swiper-container">
203 <div class="swiper-wrapper">
204 <#assign gallery = localizedContent.getJSONArray("gallery")>
205 <#list 0..gallery.length()-1 as i>
206 <#if gallery.getString(i)?has_content>
207 <#assign slide = gallery.getJSONObject(i)>
208 <div class="swiper-slide">
209 <img src="${getPrefix(1280, 720, slide.url)}" class="fit-cover w-100 h-100">
210 </div>
211 </#if>
212 </#list>
213 </div>
214 <#if (gallery.length()-1 > 1)>
215 <div class="gallery-controls text-center position-lg-absolute mt-4 mt-lg-0">
216 <button type="button" class="btn bg-dark rounded prev-pic">
217 <i class="fa fa-chevron-left text-white p-2"></i>
218 </button>
219 <button type="button" class="btn bg-dark rounded next-pic">
220 <i class="fa fa-chevron-right text-white p-2"></i>
221 </button>
222 </div>
223 </#if>
224 </div>
225
226 <!-- div class="text-center mt-3 mt-lg-5">
227 <a href="${localizedContent.linkPulsantePrenota}" class="btn bg-colored rounded text-white font-weight-bold p-3 px-3">${localizedContent.testoPulsantePrenota}</a>
228 </div -->
229 </div>
230 </#if>
231 </section>
232
233 <section id="outdoor" class="pt-5">
234 <div class="container">
235 <div class="text-center mb-3">
236 <h1 class="text-colored font-weight-bold mb-5">Vedi le altre attività</h1>
237 </div>
238
239 <#if catalog.getJSONObject("data").getJSONArray("items")??>
240 <#assign items = catalog.getJSONObject("data").getJSONArray("items")>
241
242 <div class="row">
243 <#list 0..items.length()-1 as i>
244 <#assign doc = items.getJSONObject(i)>
245
246 <#if doc.mongoitem.getJSONObject(curLang)??>
247 <#assign localizedContent = doc.mongoitem.getJSONObject(curLang)>
248 <#else>
249 <#assign localizedContent = doc.mongoitem.getJSONObject(defLng)>
250 </#if>
251
252 <#if doc._id.$oid != itemId>
253 <div class="col-12 col-md-6 col-lg-4 mb-4 mb-lg-0">
254 <a href="attività-singola?content=${doc._id.$oid}" class="card card-body border-0 h-100 p-0 mb-0">
255 <div class="card-header bg-white">
256 <h2 class="text-darker font-weight-bold text-center">${localizedContent.giorno}</h2>
257 </div>
258 <img src="${getPrefix(1000, 400, localizedContent.immagine)}" class="card-img-top">
259 <div class="card-body bg-light section-top-light position-relative rounded-bottom">
260 <div class="btn bg-colored floating rounded-circle position-absolute text-white">
261 <img src="${localizedContent.difficolta}" height="32" width="32" class="my-2">
262 </div>
263 <h5 class="text-darker font-weight-bold my-2">${localizedContent.nome}</h5>
264 </div>
265 </a>
266 </div>
267 </#if>
268 </#list>
269 </div>
270 <#else>
271 <p class="text-center">Empty</p>
272 </#if>
273 </div>
274 </section>
275
276 <#if themeDisplay.isSignedIn()>
277 <script>
278 var params = {
279 'editMode': 'true',
280 'articleId': '${itemId}'
281 };
282 var shared_params = JSON.stringify(params);
283 </script>
284
285 <div class="editing-controls view-mode position-absolute d-flex flex-row bg-dark">
286 <a href="javascript:void(0);" onclick="Liferay.Portlet.refresh('#p_p_id${result.portletNamespace}', {'${result.portletNamespace}jsonParams': shared_params});" class="edit-button lfr-portal-tooltip d-flex align-items-center justify-content-center" data-title="Modifica">
287 <i class="fa fa-pen text-white"></i>
288 </a>
289 </div>
290 </#if>
291 </#if>
292</#macro>
Paesaggio e montagne unici
Moena
vi aspetta per una vacanza indimenticabile, all'insegna della natura e di paesaggi da favola.
Vivila anche tu