Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> modalsource [in template "91200#91448#NEWS-DETAIL-TPL" at line 376, column 39] ---- 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: @modalsource.social_share themeDispla... [in template "91200#91448#NEWS-DETAIL-TPL" at line 376, column 37] ----
1<#--
2Web content templates are used to lay out the fields defined in a web
3content structure.
4
5Please use the left panel to quickly add commonly used variables.
6Autocomplete is also available and can be invoked by typing "${".
7-->
8
9<#assign namespace = randomNamespace />
10
11<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
12
13<#-- DATA ULTIMA MODIFICA -->
14<#assign modifiedDate_Data = .vars['reserved-article-modified-date'].data>
15
16<#attempt>
17
18 <#if validator.isNotNull(modifiedDate_Data)>
19 <#assign modifiedDate_DateObj = dateUtil.parseDate("E, d MMM yyyy HH:mm:ss Z", modifiedDate_Data, locale) />
20 <#assign dataUltimaModifica = dateUtil.getDate(modifiedDate_DateObj, "dd/MM/yyyy, H:mm", locale) />
21 </#if>
22
23 <#recover>
24
25 <#assign dataUltimaModifica = dateUtil.newDate()?datetime />
26
27</#attempt>
28
29<#-- DATA -->
30<#assign Data_Data = getterUtil.getString(Data.getData())>
31<#if validator.isNotNull(Data_Data)>
32 <#assign Data_DateObj = dateUtil.parseDate("yyyy-MM-dd", Data_Data, locale) />
33 <#assign dataText = dateUtil.getDate(Data_DateObj, "dd MMMM yyyy", locale) />
34</#if>
35
36<#assign headerBackgroundImage = '' >
37<#if (HeaderBackground.getData())?? && HeaderBackground.getData() != "">
38 <#assign headerBackgroundImage = HeaderBackground.getData() >
39<#else>
40 <#assign headerBackgroundImage = themeDisplay.getPathThemeImages() + '/bg_hero_anac.jpg' >
41</#if>
42
43<#assign currentLocale = themeDisplay.getLocale()>
44<#assign languageUtil = staticUtil["com.liferay.portal.kernel.language.LanguageUtil"]>
45
46<div class="wd-hero-nav">
47 <div class="wd-section">
48 <section class="no-space-bottom">
49 <div class="hero-nav" style="background-image:url(${headerBackgroundImage})">
50 <div class="container">
51 <div class="row">
52 <div class="col-10 offset-1 col-lg-6 offset-lg-1">
53
54 ${freeMarkerPortletPreferences.setValue("displayStyle", "ddmTemplate_BREADCRUMB_HEADER")}
55
56 <@liferay_portlet["runtime"]
57 defaultPreferences=freeMarkerPortletPreferences.toString()
58 instanceId="breadcrumb-header-event"
59 portletProviderAction=portletProviderAction.VIEW
60 portletProviderClassName="com.liferay.portal.kernel.servlet.taglib.ui.BreadcrumbEntry"
61 />
62
63 <h1>${.vars['reserved-article-title'].data}</h1>
64
65 <div class="bottom-zone">
66 <p>${languageUtil.get(currentLocale, "date")}:<br><strong>${dataText!''}</strong></p>
67 </div>
68
69 </div>
70 <div class="col-10 offset-1 col-lg-4 offset-lg-1">
71
72 <!-- navigation_menu_right -->
73 <#assign preferencesMap = {"displayStyle": "ddmTemplate_NAV_MENU_HEADER"} />
74
75 <@liferay_portlet["runtime"]
76 defaultPreferences=freeMarkerPortletPreferences.getPreferences(preferencesMap)
77 instanceId="navMenu-header-right-event"
78 portletProviderAction=portletProviderAction.VIEW
79 portletProviderClassName="com.liferay.portal.kernel.theme.NavItem"
80 />
81
82 </div>
83 </div>
84 </div>
85 </div>
86 </section>
87 </div>
88</div>
89
90<div class="wd-hero">
91 <div class="it-hero-wrapper it-dark it-overlay smaller">
92 <!-- img-->
93 <div class="img-responsive-wrapper">
94 <div class="img-responsive">
95 <div class="img-wrapper">
96 <#if (ImmagineNotizia.getData())?? && ImmagineNotizia.getData() != ''>
97 <#assign heroImgSrc = ImmagineNotizia.getData() />
98 <#else>
99 <#assign heroImgSrc = themeDisplay.getPathThemeImages() + '/default/NEWS.jpg' />
100 </#if>
101
102
103 <img src="${heroImgSrc}" alt="${(ImmagineNotizia.getAttribute('alt'))!''}">
104 </div>
105 </div>
106 </div>
107 </div>
108</div>
109
110<div class="container sidebar-main">
111 <div class="row">
112 <div class="col-12 col-lg-3 right-border">
113 <!--sidebar----------------------------------------------------------------------------------------------->
114 <div class="wd-sidebar affix-top">
115 <nav class="navbar navbar-expand-lg it-right-side affix-top sidebar">
116 <button class="custom-navbar-toggler" type="button" aria-controls="sidebar-nav" aria-expanded="false" aria-label="Toggle navigation" data-target="#sidebar-nav">
117 <svg class="icon icon-sm d-lg-none">
118 <use xlink:href="#it-list"></use>
119 </svg>
120 <@liferay.language key="page-index" />
121 </button>
122 <div class="navbar-collapsable" id="sidebar-nav">
123 <div class="overlay"></div>
124 <div class="close-div sr-only">
125 <button class="btn close-menu" type="button"><span class="it-close"><@liferay.language key="close" /></span></button>
126 </div>
127 <a class="it-back-button d-lg-none" href="#">
128 <svg class="icon icon-sm icon-primary align-top">
129 <use xlink:href="#it-chevron-left"></use>
130 </svg>
131 <span><@liferay.language key="back" /></span>
132 </a>
133 <div class="sidebar-wrapper">
134 <div class="sidebar-linklist-wrapper">
135 <div class="link-list-wrapper">
136 <h3 class="no_toc">${languageUtil.get(currentLocale, "page-index")}</h3>
137 <ul class="link-list">
138
139 <#if TitoloParagrafo.getSiblings()?has_content>
140 <#list TitoloParagrafo.getSiblings() as cur_TitoloParagrafo>
141 <div class="wd-list-item-collapse">
142 <li>
143 <a class="list-item large medium right-icon collapsed" href="#p${cur_TitoloParagrafo?index}" data-toggle="" aria-expanded="" aria-controls="">
144 <span>${cur_TitoloParagrafo.getData()}</span>
145 </a>
146 </li>
147 </div>
148 </#list>
149 </#if>
150
151 </ul>
152 </div>
153 </div>
154 </div>
155 </div>
156 </div>
157 </nav>
158 </div>
159 <div class="col-12 col-lg-8 offset-lg-1">
160
161 <#if (TitoloParagrafo.getSiblings())?has_content>
162 <#list TitoloParagrafo.getSiblings() as cur_TitoloParagrafo>
163 <div class="wd-free-html">
164 <section class="free-html <#if cur_TitoloParagrafo?index == 0>top-space</#if>">
165 <h2 id="p${cur_TitoloParagrafo?index}" data-scroll-menu-trigger="#p${cur_TitoloParagrafo?index}">
166 ${cur_TitoloParagrafo.getData()}
167 </h2>
168
169 <#if (cur_TitoloParagrafo.BloccoParagrafo)?? && cur_TitoloParagrafo.BloccoParagrafo.getSiblings()?has_content>
170 <#list cur_TitoloParagrafo.BloccoParagrafo.getSiblings() as cur_BloccoParagrafo>
171
172 <#-- Paragrafo -->
173
174 <#if (cur_BloccoParagrafo.Testo1.getData())?? && cur_BloccoParagrafo.Testo1.getData() != ''>
175
176 <#if (cur_BloccoParagrafo.Testo1.Bordo.getData())?? && cur_BloccoParagrafo.Testo1.Bordo.getData() == 'green'>
177 <p>
178 <div class="wd-callout">
179 <div class="callout important">
180 <div class="callout-title">
181 <svg class="icon">
182 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-check-circle'}"></use>
183 </svg><span>${(cur_BloccoParagrafo.Testo1.Sottotitolo.getData())!''}</span>
184 </div>
185 ${cur_BloccoParagrafo.Testo1.getData()}
186 </div>
187 </div>
188 </p>
189 <#elseif (cur_BloccoParagrafo.Testo1.Bordo.getData())?? && cur_BloccoParagrafo.Testo1.Bordo.getData() == 'red'>
190 <p>
191 <div class="wd-callout">
192 <div class="callout danger">
193 <div class="callout-title">
194 <svg class="icon">
195 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-check-circle'}"></use>
196 </svg><span>${(cur_BloccoParagrafo.Testo1.Sottotitolo.getData())!''}</span>
197 </div>
198 ${cur_BloccoParagrafo.Testo1.getData()}
199 </div>
200 </div>
201 </p>
202 <#elseif (cur_BloccoParagrafo.Testo1.Bordo.getData())?? && cur_BloccoParagrafo.Testo1.Bordo.getData() == 'pinned'>
203 <p>
204 <div class="notification-wrapper">
205 <h3>
206 ${(cur_BloccoParagrafo.Testo1.Sottotitolo.getData())!''}
207 <svg class="icon card-heading-icon">
208 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-pin'}"></use>
209 </svg>
210 </h3>
211 <div class="free-text">
212 ${cur_BloccoParagrafo.Testo1.getData()}
213 </div>
214 </div
215 </p>
216 <#else>
217 ${cur_BloccoParagrafo.Testo1.getData()}
218 </#if>
219 </#if>
220
221 <#-- Video -->
222
223 <#if (cur_BloccoParagrafo.VideoID.getSiblings())?has_content>
224 <#list cur_BloccoParagrafo.VideoID.getSiblings() as cur_VideoID>
225 <#if (cur_VideoID.getData())?? && cur_VideoID.getData() != ''>
226 <p>
227 <div class="wd-video" video-url="https://www.youtube.com/embed/${cur_VideoID.getData()}" _wd_ischanged="false">
228 <div class="video-wrapper">
229 <iframe width="560" height="315" src="https://www.youtube.com/embed/${cur_VideoID.getData()}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
230 </div>
231 </div>
232 </p>
233 </#if>
234 </#list>
235 </#if>
236
237
238 <#-- Immagine -->
239
240 <#if (cur_BloccoParagrafo.Immagine4660.getData())?? && cur_BloccoParagrafo.Immagine4660.getData() != "">
241 <p>
242 <div class="wd-img-dida">
243 <div class="img-dida">
244 <!-- img-->
245 <div class="img-responsive-wrapper">
246 <div class="img-responsive">
247 <div class="img-wrapper"><img src="${cur_BloccoParagrafo.Immagine4660.getData()}" alt="descrizione"></div>
248 </div>
249 </div>
250 <!-- text-->
251 <div class="dida-text">${cur_BloccoParagrafo.Immagine4660.getAttribute("alt")}</div>
252 </div>
253 </div>
254 </p>
255 </#if>
256
257
258
259 <#-- Documento -->
260
261 <#if (cur_BloccoParagrafo.Documento.getSiblings())?has_content>
262 <div class="row">
263 <#list cur_BloccoParagrafo.Documento.getSiblings() as cur_Documento>
264 <#if cur_Documento.getData()?has_content>
265
266 <#assign jsonData = cur_Documento.data?replace('\\u', '')?eval />
267 <#if dlFileEntryLocalService.fetchFileEntry(jsonData.uuid, jsonData.groupId?number)??>
268 <#assign fileObj = dlFileEntryLocalService.fetchFileEntry(jsonData.uuid, jsonData.groupId?number) />
269 <#assign sizeMB = fileObj.getSize() / (1024*1024) />
270 <#assign titleRaw = fileObj.getTitle() />
271 <#assign title = stringUtil.replace(titleRaw, '_', ' ') />
272 <#-- <#assign description = fileObj.getDescription() />-->
273 <#assign description = sizeMB?string["0.##"] + "MB" />
274 <div class="col-12 col-md-6">
275 <div class="wd-card-download">
276 <div class="card-wrapper card-download">
277 <div class="card">
278 <a href="${cur_Documento.getData()}" download="">
279 <div class="card-body">
280 <svg class="icon">
281 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-clip'}"></use>
282 </svg>
283 <div class="text-container">
284 <h3>${title!''}</h3>
285 <div class="free-text">
286 <p>${description!''}</p>
287 </div>
288 </div>
289 </div>
290 </a>
291 </div>
292 </div>
293
294 </div>
295 </div>
296 </#if>
297 </#if>
298 </#list>
299 </div>
300 </#if>
301
302 <#-- Accordion -->
303
304 <#if (cur_BloccoParagrafo.TitoloAccordion.getSiblings())?has_content>
305
306 <#assign articleId = .vars['reserved-article-id'].data />
307
308 <div class="wd-free-html">
309 <section class="free-html">
310 <div class="wd-collapse-group">
311 <div class="collapse-div collapse-div" role="tablist" id="col-group-${articleId}">
312 <#list cur_BloccoParagrafo.TitoloAccordion.getSiblings() as cur_Accordion>
313 <#if cur_Accordion.getData()?has_content>
314
315 <#if (cur_Accordion.MostraComeTitolo.getData())?? && getterUtil.getBoolean(cur_Accordion.MostraComeTitolo.getData())>
316 <div class="wd-collapse wd-accordion-header">
317 <div class="collapse-header">
318 <h3>
319 <span data-toggle="collapse">${cur_Accordion.getData()}</span>
320 </h3>
321 </div>
322 <#if (cur_Accordion.TestoAccordion.getData())?? >
323 <div class="collapse show">
324 <div class="collapse-body">
325 ${cur_Accordion.TestoAccordion.getData()}
326 </div>
327 </div>
328 </#if>
329 </div>
330 <#else>
331
332 <div class="wd-collapse" data-parent="col-group-${articleId}">
333 <div class="collapse-header" id="heading-col-group-${articleId}-${cur_BloccoParagrafo?index}-${cur_Accordion?index}">
334 <button data-toggle="collapse" data-target="#col-group-${articleId}-${cur_BloccoParagrafo?index}-${cur_Accordion?index}" aria-expanded="false" aria-controls="col-group-${articleId}-${cur_BloccoParagrafo?index}-${cur_Accordion?index}" class="">${cur_Accordion.getData()}</button>
335 </div>
336 <div class="collapse" id="col-group-${articleId}-${cur_BloccoParagrafo?index}-${cur_Accordion?index}" role="tabpanel" aria-labelledby="heading-col-group-${articleId}-${cur_BloccoParagrafo?index}-${cur_Accordion?index}" data-parent="#col-group-${articleId}">
337 <div class="collapse-body">
338 ${(cur_Accordion.TestoAccordion.getData())!''}
339 </div>
340 </div>
341 </div>
342 </#if>
343 </#if>
344 </#list>
345
346 </div>
347 </div>
348 </section>
349 </div>
350 </#if>
351 </#list>
352 </#if>
353
354 </section>
355 </div>
356 </#list>
357 </#if>
358
359
360 <div class="wd-free-html">
361 <section class="free-html">
362 <div class="wd-social-footer">
363 <div class="social-footer">
364 <div class="social-footer-content">
365
366 <div class="left-zone">
367
368 <p>
369 <span class="label">${languageUtil.get(currentLocale, "last-update")}</span>
370 <span class="data">${dataUltimaModifica!''}</span>
371 </p>
372
373 </div>
374
375 <div class="right-zone">
376 <@modalsource.social_share themeDisplay=themeDisplay namespace=namespace />
377 </div>
378 </div>
379 </div>
380 </div>
381 </section>
382 </div>
383 </div>
384 </div>
385</div>