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#366705" at line 129, 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#366705" in macro "viewFull" at line 129, column 13] - Reached through: @viewFull [in template "114284#114319#366705" at line 50, column 13] ----
1<#assign
2 httpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"]
3
4 collection = ""
5 itemId = ""
6 item = ""
7/>
8
9<#assign
10 suggestoGUIAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService")
11 parentLibOld = suggestoGUIAPI.getADTPathToInclude(companyId, groupId, "eu.suggesto.d40.web.portlet.model.D40Configurable", templatesPath, "d40-parent-lib_v1")
12/>
13
14<#include "${parentLibOld}">
15
16<#assign
17 serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
18 organizationProject = d40UserLocalService.getCurrentOrganizationInfo(serviceContext)
19/>
20
21<#if organizationProject.getJSONObject("data")?has_content && organizationProject.getJSONObject("data").getJSONObject("project")?has_content>
22 <#assign organizationProjectId = organizationProject.getJSONObject("data").getJSONObject("project").getJSONObject("_id").getString("$oid")>
23</#if>
24
25<#if result.getJsonConfigStringParam("collection", "")?has_content>
26 <#assign collection = result.getJsonConfigStringParam("collection", "")>
27</#if>
28
29<#if result.getJsonConfigStringParam("view", "")?has_content>
30 <#assign view = result.getJsonConfigStringParam("view", "")>
31</#if>
32
33<#assign mongoContent = initOrGetMongoCatalogDataBlock(groupId, serviceContext, result, themeDisplay.plid, collection)>
34
35<#if mongoContent?has_content>
36 <#assign
37 curLang = themeDisplay.getLocale()
38 defLng = "it_IT"
39 />
40
41 <div class="position-relative">
42 <div class="editing-overlay d-none"></div>
43 <#assign catalog = d40MongoItemAPI.queryMongoItems(groupId, collection, "{projectId:'${result.projectId}'}", "", 0, 100)>
44
45 <#if view == "all">
46 <@viewAll />
47 </#if>
48
49 <#if view == "detail">
50 <@viewFull />
51 </#if>
52 </div>
53</#if>
54
55<#macro viewAll>
56 <section id="offers">
57 <div class="container my-5">
58 <div class="row card-deck">
59 <#if catalog.getJSONObject("data").getJSONArray("items")??>
60 <#assign items = catalog.getJSONObject("data").getJSONArray("items")>
61
62 <#list 0..items.length()-1 as i>
63 <#assign doc = items.getJSONObject(i)>
64
65 <#if doc.mongoitem.getJSONObject(curLang)??>
66 <#assign localizedContent = doc.mongoitem.getJSONObject(curLang)>
67 <#else>
68 <#assign localizedContent = doc.mongoitem.getJSONObject(defLng)>
69 </#if>
70
71 <div class="col-12 col-lg-6 mb-5">
72 <script>
73 var params = {
74 'editMode': 'true',
75 'articleId': '${doc._id.$oid}'
76 };
77 var shared_params${doc._id.$oid} = JSON.stringify(params);
78 </script>
79
80 <div class="card card-body border-0 h-100 p-0">
81 <a href="servizio?content=${doc._id.$oid}" class="card-header p-0">
82 <img src="${getTopHintPrefix(500, 300, localizedContent.immagine)}" class="card-img-top">
83 </a>
84 <div class="card-body bg-light position-relative section-top-light no-underline">
85 <a href="servizio?content=${doc._id.$oid}" class="h5 text-darker font-weight-bold">${localizedContent.nome}</a>
86 </div>
87 <#if themeDisplay.isSignedIn()>
88 <div class="card-body bg-light pt-0">
89 <button 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</button>
90 </div>
91 </#if>
92 </div>
93 </div>
94 </#list>
95 <#else>
96 <p class="text-center">Empty</p>
97 </#if>
98 <#if themeDisplay.isSignedIn()>
99 <script>
100 var add_params = {
101 'editMode': 'true',
102 'addNew': 'true'
103 };
104 var new_params = JSON.stringify(add_params);
105 </script>
106
107 <div class="col-12 d-flex justify-content-center mt-5">
108 <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>
109 </div>
110 </#if>
111 </div>
112 </div>
113 </section>
114</#macro>
115
116<#macro viewFull>
117 <#if httpUtil.getParameter(themeDisplay.getURLCurrent(), "content")?has_content>
118 <#assign itemId = httpUtil.getParameter(themeDisplay.getURLCurrent(), "content")>
119 </#if>
120
121 <#if itemId?has_content && d40MongoItemAPI.getMongoItem(groupId, collection, itemId)??>
122 <#assign item = d40MongoItemAPI.getMongoItem(groupId, collection, itemId)>
123 </#if>
124
125 <#if item?has_content>
126 <#if item.getJSONObject("data").getJSONObject(curLang)??>
127 <#assign localizedContent = item.getJSONObject("data").getJSONObject(curLang)>
128 <#else>
129 <#assign localizedContent = item.getJSONObject("data").getJSONObject(defLng)>
130 </#if>
131
132 <section id="slideshow">
133 <div class="swiper-container">
134 <div class="swiper-wrapper">
135 <#assign slides = localizedContent.getJSONArray("slides")>
136 <#list 0..slides.length()-1 as i>
137 <#if slides.getString(i)?has_content>
138 <#assign slide = slides.getJSONObject(i)>
139
140 <div class="swiper-slide">
141 <div class="dark-overlay"></div>
142 <img src="${getPrefix(1920, 1080, slide.url)}" class="fit-cover w-100 h-100">
143 <div class="carousel-caption text-white">
144 <div class="text-center">
145 <h1 class="display-3 font-weight-bold outline spaced">${slide.titolo}</h1>
146 <#if slide.sottotitolo?has_content>
147 <h3 class="font-weight-bold outline">${slide.sottotitolo}</h3>
148 </#if>
149 </div>
150 </div>
151 </div>
152 </#if>
153 </#list>
154 </div>
155 </div>
156 </section>
157
158 <section id="redazionale">
159 <div class="text-center pb-3">
160 <h1 class="font-weight-bold text-darker mt-5">${localizedContent.nome}</h1>
161 </div>
162
163 <#assign sezioni = localizedContent.getJSONArray("sezioni")>
164 <#list 0..sezioni.length()-1 as i>
165 <#if sezioni.getString(i)?has_content>
166 <#assign sezione = sezioni.getJSONObject(i)>
167
168 <div class="container mb-5 pt-5">
169 <div class="text-center pb-3">
170 <h3 class="font-weight-bold text-darker mb-4">${sezione.titolo}</h3>
171 <h4 class="text-dark mb-5">${sezione.sottotitolo}</h4>
172 </div>
173 <div class="row mb-5">
174 <#if (i%2 == 0)>
175 <#assign alignClass = "order-1">
176 <#else>
177 <#assign alignClass = "order-1 order-lg-2">
178 </#if>
179 <div class="col-12 col-lg-6 ${alignClass}">
180 <img src="${getPrefix(500, 600, sezione.immagine)}" class="w-100">
181 </div>
182
183 <#if (i%2 == 0)>
184 <#assign alignClass = "order-1">
185 <#else>
186 <#assign alignClass = "order-2 order-lg-1">
187 </#if>
188 <div class="col-12 col-lg-6 ${alignClass}">
189 <h5 class="text-dark my-4">${sezione.descrizione}</h5>
190 </div>
191 </div>
192 </div>
193 </#if>
194 </#list>
195 </section>
196
197 <script>
198 var params = {
199 'editMode': 'true',
200 'articleId': '${itemId}'
201 };
202 var shared_params = JSON.stringify(params);
203 </script>
204
205 <#if themeDisplay.isSignedIn()>
206 <div class="editing-controls view-mode position-absolute d-flex flex-row bg-dark">
207 <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">
208 <i class="fa fa-pen text-white"></i>
209 </a>
210 </div>
211 </#if>
212 </#if>
213</#macro>
Outdoor mozzafiato
vivi
la montagna più spettacolare
con la famiglia per momenti
indimenticabili