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