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 373, 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 373, 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<div class="wd-hero-nav">
44 <div class="wd-section">
45 <section class="no-space-bottom">
46 <div class="hero-nav" style="background-image:url(${headerBackgroundImage})">
47 <div class="container">
48 <div class="row">
49 <div class="col-10 offset-1 col-lg-6 offset-lg-1">
50
51 ${freeMarkerPortletPreferences.setValue("displayStyle", "ddmTemplate_BREADCRUMB_HEADER")}
52
53 <@liferay_portlet["runtime"]
54 defaultPreferences=freeMarkerPortletPreferences.toString()
55 instanceId="breadcrumb-header-event"
56 portletProviderAction=portletProviderAction.VIEW
57 portletProviderClassName="com.liferay.portal.kernel.servlet.taglib.ui.BreadcrumbEntry"
58 />
59
60 <h1>${.vars['reserved-article-title'].data}</h1>
61
62 <div class="bottom-zone">
63 <p><@liferay.language key="date" />:<br><strong>${dataText!''}</strong></p>
64 </div>
65
66 </div>
67 <div class="col-10 offset-1 col-lg-4 offset-lg-1">
68
69 <!-- navigation_menu_right -->
70 <#assign preferencesMap = {"displayStyle": "ddmTemplate_NAV_MENU_HEADER"} />
71
72 <@liferay_portlet["runtime"]
73 defaultPreferences=freeMarkerPortletPreferences.getPreferences(preferencesMap)
74 instanceId="navMenu-header-right-event"
75 portletProviderAction=portletProviderAction.VIEW
76 portletProviderClassName="com.liferay.portal.kernel.theme.NavItem"
77 />
78
79 </div>
80 </div>
81 </div>
82 </div>
83 </section>
84 </div>
85</div>
86
87<div class="wd-hero">
88 <div class="it-hero-wrapper it-dark it-overlay smaller">
89 <!-- img-->
90 <div class="img-responsive-wrapper">
91 <div class="img-responsive">
92 <div class="img-wrapper">
93 <#if (ImmagineNotizia.getData())?? && ImmagineNotizia.getData() != ''>
94 <#assign heroImgSrc = ImmagineNotizia.getData() />
95 <#else>
96 <#assign heroImgSrc = themeDisplay.getPathThemeImages() + '/default/NEWS.jpg' />
97 </#if>
98
99
100 <img src="${heroImgSrc}" alt="${(ImmagineNotizia.getAttribute('alt'))!''}">
101 </div>
102 </div>
103 </div>
104 </div>
105</div>
106
107<div class="container sidebar-main">
108 <div class="row">
109 <div class="col-12 col-lg-3 right-border">
110 <!--sidebar----------------------------------------------------------------------------------------------->
111 <div class="wd-sidebar affix-top">
112 <nav class="navbar navbar-expand-lg it-right-side affix-top sidebar">
113 <button class="custom-navbar-toggler" type="button" aria-controls="sidebar-nav" aria-expanded="false" aria-label="Toggle navigation" data-target="#sidebar-nav">
114 <svg class="icon icon-sm d-lg-none">
115 <use xlink:href="#it-list"></use>
116 </svg>
117 <@liferay.language key="page-index" />
118 </button>
119 <div class="navbar-collapsable" id="sidebar-nav">
120 <div class="overlay"></div>
121 <div class="close-div sr-only">
122 <button class="btn close-menu" type="button"><span class="it-close"><@liferay.language key="close" /></span></button>
123 </div>
124 <a class="it-back-button d-lg-none" href="#">
125 <svg class="icon icon-sm icon-primary align-top">
126 <use xlink:href="#it-chevron-left"></use>
127 </svg>
128 <span><@liferay.language key="back" /></span>
129 </a>
130 <div class="sidebar-wrapper">
131 <div class="sidebar-linklist-wrapper">
132 <div class="link-list-wrapper">
133 <h3 class="no_toc"><@liferay.language key="page-index" /></h3>
134 <ul class="link-list">
135
136 <#if TitoloParagrafo.getSiblings()?has_content>
137 <#list TitoloParagrafo.getSiblings() as cur_TitoloParagrafo>
138 <div class="wd-list-item-collapse">
139 <li>
140 <a class="list-item large medium right-icon collapsed" href="#p${cur_TitoloParagrafo?index}" data-toggle="" aria-expanded="" aria-controls="">
141 <span>${cur_TitoloParagrafo.getData()}</span>
142 </a>
143 </li>
144 </div>
145 </#list>
146 </#if>
147
148 </ul>
149 </div>
150 </div>
151 </div>
152 </div>
153 </div>
154 </nav>
155 </div>
156 <div class="col-12 col-lg-8 offset-lg-1">
157
158 <#if (TitoloParagrafo.getSiblings())?has_content>
159 <#list TitoloParagrafo.getSiblings() as cur_TitoloParagrafo>
160 <div class="wd-free-html">
161 <section class="free-html <#if cur_TitoloParagrafo?index == 0>top-space</#if>">
162 <h2 id="p${cur_TitoloParagrafo?index}" data-scroll-menu-trigger="#p${cur_TitoloParagrafo?index}">
163 ${cur_TitoloParagrafo.getData()}
164 </h2>
165
166 <#if (cur_TitoloParagrafo.BloccoParagrafo)?? && cur_TitoloParagrafo.BloccoParagrafo.getSiblings()?has_content>
167 <#list cur_TitoloParagrafo.BloccoParagrafo.getSiblings() as cur_BloccoParagrafo>
168
169 <#-- Paragrafo -->
170
171 <#if (cur_BloccoParagrafo.Testo1.getData())?? && cur_BloccoParagrafo.Testo1.getData() != ''>
172
173 <#if (cur_BloccoParagrafo.Testo1.Bordo.getData())?? && cur_BloccoParagrafo.Testo1.Bordo.getData() == 'green'>
174 <p>
175 <div class="wd-callout">
176 <div class="callout important">
177 <div class="callout-title">
178 <svg class="icon">
179 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-check-circle'}"></use>
180 </svg><span>${(cur_BloccoParagrafo.Testo1.Sottotitolo.getData())!''}</span>
181 </div>
182 ${cur_BloccoParagrafo.Testo1.getData()}
183 </div>
184 </div>
185 </p>
186 <#elseif (cur_BloccoParagrafo.Testo1.Bordo.getData())?? && cur_BloccoParagrafo.Testo1.Bordo.getData() == 'red'>
187 <p>
188 <div class="wd-callout">
189 <div class="callout danger">
190 <div class="callout-title">
191 <svg class="icon">
192 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-check-circle'}"></use>
193 </svg><span>${(cur_BloccoParagrafo.Testo1.Sottotitolo.getData())!''}</span>
194 </div>
195 ${cur_BloccoParagrafo.Testo1.getData()}
196 </div>
197 </div>
198 </p>
199 <#elseif (cur_BloccoParagrafo.Testo1.Bordo.getData())?? && cur_BloccoParagrafo.Testo1.Bordo.getData() == 'pinned'>
200 <p>
201 <div class="notification-wrapper">
202 <h3>
203 ${(cur_BloccoParagrafo.Testo1.Sottotitolo.getData())!''}
204 <svg class="icon card-heading-icon">
205 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-pin'}"></use>
206 </svg>
207 </h3>
208 <div class="free-text">
209 ${cur_BloccoParagrafo.Testo1.getData()}
210 </div>
211 </div
212 </p>
213 <#else>
214 ${cur_BloccoParagrafo.Testo1.getData()}
215 </#if>
216 </#if>
217
218 <#-- Video -->
219
220 <#if (cur_BloccoParagrafo.VideoID.getSiblings())?has_content>
221 <#list cur_BloccoParagrafo.VideoID.getSiblings() as cur_VideoID>
222 <#if (cur_VideoID.getData())?? && cur_VideoID.getData() != ''>
223 <p>
224 <div class="wd-video" video-url="https://www.youtube.com/embed/${cur_VideoID.getData()}" _wd_ischanged="false">
225 <div class="video-wrapper">
226 <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>
227 </div>
228 </div>
229 </p>
230 </#if>
231 </#list>
232 </#if>
233
234
235 <#-- Immagine -->
236
237 <#if (cur_BloccoParagrafo.Immagine4660.getData())?? && cur_BloccoParagrafo.Immagine4660.getData() != "">
238 <p>
239 <div class="wd-img-dida">
240 <div class="img-dida">
241 <!-- img-->
242 <div class="img-responsive-wrapper">
243 <div class="img-responsive">
244 <div class="img-wrapper"><img src="${cur_BloccoParagrafo.Immagine4660.getData()}" alt="descrizione"></div>
245 </div>
246 </div>
247 <!-- text-->
248 <div class="dida-text">${cur_BloccoParagrafo.Immagine4660.getAttribute("alt")}</div>
249 </div>
250 </div>
251 </p>
252 </#if>
253
254
255
256 <#-- Documento -->
257
258 <#if (cur_BloccoParagrafo.Documento.getSiblings())?has_content>
259 <div class="row">
260 <#list cur_BloccoParagrafo.Documento.getSiblings() as cur_Documento>
261 <#if cur_Documento.getData()?has_content>
262
263 <#assign jsonData = cur_Documento.data?replace('\\u', '')?eval />
264 <#if dlFileEntryLocalService.fetchFileEntry(jsonData.uuid, jsonData.groupId?number)??>
265 <#assign fileObj = dlFileEntryLocalService.fetchFileEntry(jsonData.uuid, jsonData.groupId?number) />
266 <#assign sizeMB = fileObj.getSize() / (1024*1024) />
267 <#assign titleRaw = fileObj.getTitle() />
268 <#assign title = stringUtil.replace(titleRaw, '_', ' ') />
269 <#-- <#assign description = fileObj.getDescription() />-->
270 <#assign description = sizeMB?string["0.##"] + "MB" />
271 <div class="col-12 col-md-6">
272 <div class="wd-card-download">
273 <div class="card-wrapper card-download">
274 <div class="card">
275 <a href="${cur_Documento.getData()}" download="">
276 <div class="card-body">
277 <svg class="icon">
278 <use xlink:href="${themeDisplay.getPathThemeImages() + '/sprite.svg#it-clip'}"></use>
279 </svg>
280 <div class="text-container">
281 <h3>${title!''}</h3>
282 <div class="free-text">
283 <p>${description!''}</p>
284 </div>
285 </div>
286 </div>
287 </a>
288 </div>
289 </div>
290
291 </div>
292 </div>
293 </#if>
294 </#if>
295 </#list>
296 </div>
297 </#if>
298
299 <#-- Accordion -->
300
301 <#if (cur_BloccoParagrafo.TitoloAccordion.getSiblings())?has_content>
302
303 <#assign articleId = .vars['reserved-article-id'].data />
304
305 <div class="wd-free-html">
306 <section class="free-html">
307 <div class="wd-collapse-group">
308 <div class="collapse-div collapse-div" role="tablist" id="col-group-${articleId}">
309 <#list cur_BloccoParagrafo.TitoloAccordion.getSiblings() as cur_Accordion>
310 <#if cur_Accordion.getData()?has_content>
311
312 <#if (cur_Accordion.MostraComeTitolo.getData())?? && getterUtil.getBoolean(cur_Accordion.MostraComeTitolo.getData())>
313 <div class="wd-collapse wd-accordion-header">
314 <div class="collapse-header">
315 <h3>
316 <span data-toggle="collapse">${cur_Accordion.getData()}</span>
317 </h3>
318 </div>
319 <#if (cur_Accordion.TestoAccordion.getData())?? >
320 <div class="collapse show">
321 <div class="collapse-body">
322 ${cur_Accordion.TestoAccordion.getData()}
323 </div>
324 </div>
325 </#if>
326 </div>
327 <#else>
328
329 <div class="wd-collapse" data-parent="col-group-${articleId}">
330 <div class="collapse-header" id="heading-col-group-${articleId}-${cur_BloccoParagrafo?index}-${cur_Accordion?index}">
331 <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>
332 </div>
333 <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}">
334 <div class="collapse-body">
335 ${(cur_Accordion.TestoAccordion.getData())!''}
336 </div>
337 </div>
338 </div>
339 </#if>
340 </#if>
341 </#list>
342
343 </div>
344 </div>
345 </section>
346 </div>
347 </#if>
348 </#list>
349 </#if>
350
351 </section>
352 </div>
353 </#list>
354 </#if>
355
356
357 <div class="wd-free-html">
358 <section class="free-html">
359 <div class="wd-social-footer">
360 <div class="social-footer">
361 <div class="social-footer-content">
362
363 <div class="left-zone">
364
365 <p>
366 <span class="label"><@liferay.language key="last-update" /></span>
367 <span class="data">${dataUltimaModifica!''}</span>
368 </p>
369
370 </div>
371
372 <div class="right-zone">
373 <@modalsource.social_share themeDisplay=themeDisplay namespace=namespace />
374 </div>
375 </div>
376 </div>
377 </div>
378 </section>
379 </div>
380 </div>
381 </div>
382</div>