Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> printImage [in template "33201#33237#33894" at line 54, column 54]
----
Tip: If the failing expression is known to 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: #if printImage [in template "33201#33237#33894" at line 54, column 49]
----
1<#-- Chiave del template globale "Utils" -->
2<#include "${templatesPath}/33878" />
3
4<#assign pathNewsList = "elenco-notizie">
5
6<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
7<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
8<#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
9<#assign AssetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")>
10<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) />
11<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticle.getResourcePrimKey()) />
12
13<#assign title = .vars['reserved-article-title'].data />
14<#assign urlTitle = .vars['reserved-article-url-title'].data />
15<#assign date = .vars['reserved-article-display-date'].data>
16<#assign dateTimeFormat = "dd MMMM yyyy">
17<#assign articleURL = themeDisplay.getURLPortal() + themeDisplay.getScopeGroup().getPathFriendlyURL(false, themeDisplay) + themeDisplay.getScopeGroup().getFriendlyURL() + "/-/" + urlTitle />
18
19
20<#setting locale = localeUtil.getDefault()>
21<#assign notizieLandingPage = "#">
22<#if themeDisplay.getThemeSetting("notizie-landing-page")?has_content>
23 <#assign notizieLandingPage = themeDisplay.getThemeSetting("notizie-landing-page")>
24</#if>
25
26<div class="container portale-istituzionale">
27 <div class="row notizia">
28 <div class="col-md-8">
29 <!-- Inestazione -->
30 <div class="row">
31 <div class="col">
32 <h2 class="h1">${title}</h2>
33 <#if parentStructure.Sottotitolo.getData()?has_content>
34 <h2>${parentStructure.Sottotitolo.getData()}</h2>
35 </#if>
36 </div>
37 </div>
38 <!-- Inestazione -->
39 <!-- Corpo -->
40 <#if parentStructure.TestoNotizia?has_content>
41 <div class="row corpo" >
42 <div class="col">
43 <#if parentStructure.showImage?? && parentStructure.showImage.getData()?has_content && parentStructure.showImage.getData() != "hide">
44 <#assign
45 printImage = true
46 imageCss = "full-width-img"
47 >
48 <#if parentStructure.showImage.getData() == "float">
49 <#assign imageCss = "float-img">
50 </#if>
51 </#if>
52
53
54 <#if printImage>
55
56 <#assign
57 imageUrl = ""
58 imageAlt = ""
59 />
60
61 <#if parentStructure.principalImage?? && parentStructure.principalImage.getData()?has_content>
62 <#attempt>
63 <#assign
64 imgData = parentStructure.principalImage.getData()
65 imageObj = jsonFactoryUtil.createJSONObject(imgData)
66 />
67 <#if (imageObj.getString("url")?has_content && imageObj.getString("url")?length > 1) >
68 <#assign imageUrl = imageObj.getString("url") />
69 <#assign imageAlt = imageObj.getString("alt")!"" />
70 </#if>
71 <#recover>
72
73 </#attempt>
74 </#if>
75
76 <#if !imageUrl?has_content && parentStructure.principalImage_old?? && parentStructure.principalImage_old.getData()?has_content>
77 <#assign imageUrl = parentStructure.principalImage_old.getData() />
78 <#assign imageAlt = parentStructure.principalImage_old.getAttribute("alt")!"" />
79 </#if>
80
81 <#if imageUrl?has_content>
82 <img class="${imageCss}" src="${imageUrl}" alt="${imageAlt}" />
83 </#if>
84 </#if>
85 <div class="news-description">
86 ${parentStructure.TestoNotizia.getData()}
87 </div>
88 </div>
89 </div>
90 </#if>
91 <!-- Corpo -->
92
93 <!-- slider Immagini o video -->
94 <#assign expandoBridge = currentArticle.getExpandoBridge() />
95 <#if expandoBridge?? && expandoBridge.getAttribute("dlFolderID")?? >
96 <#assign idFolder = expandoBridge.getAttribute("dlFolderID") />
97 </#if>
98
99 <#if (idFolder?? && idFolder != "" && parentStructure?? && parentStructure.sliderVideoContent??) >
100 <div class="row media-slider">
101 <div class="col-md-12">
102 <!-- parentStructure.sliderVideoContent -->
103 <@printMediaGallery
104 items=parentStructure.sliderVideoContent
105 fieldImageName="sliderImageContent"
106 />
107 </div>
108 </div>
109 </#if>
110 <!-- slider Immagini o video -->
111
112 <!-- Categorizzazione -->
113 <div class="row col-md-12" >
114
115 <#list currentArticleAssetEntry.getCategories() as category>
116 <#assign badgeClass = "grigio">
117 <#assign categoryVocabulary = vocabularyService.getVocabulary(category['vocabularyId']?number)['name']>
118 <#if categoryVocabulary=="Aree Tematiche">
119 <#assign badgeClass = AssetCategoryPropertyLocalService.getCategoryProperty(category['categoryId']?number, 'css_class')['value'] >
120 </#if>
121
122 <#if categoryVocabulary=="Tipologia">
123 <#assign badgeClass = "tipologia-press" >
124 </#if>
125
126
127 <a class="link-badge mr-1" href="/${themeDisplay.getLocale()?substring(0, 2)}/web${themeDisplay.getScopeGroup()['friendlyURL']}/${pathNewsList}?p_r_p_categoryId=${category['categoryId']}">
128 <span class="badge badge-${badgeClass}">
129 ${category.getTitle(locale)}
130 </span>
131 </a>
132 </#list>
133
134 </div>
135 <!-- Categorizzazione -->
136 <!-- Data di visualizzazione -->
137 <div class="row col-md-12">
138
139 <#assign languagePubblicato = 'Pubblicato il'/>
140 <#if themeDisplay.getLanguageId()=='en_GB' || themeDisplay.getLanguageId()=='en_US'>
141 <#assign languagePubblicato = 'Posted on'/>
142 </#if>
143 <p>${languagePubblicato} ${date?datetime("EEE, d MMM yyyy HH:mm:ss Z")?string(dateTimeFormat)}</p>
144
145 </div>
146 <!-- Data di visualizzazione -->
147 </div>
148
149 <!-- Contenuti multimediali -->
150 <div class="col-md-4">
151 <div class="row">
152 <div class="d-none d-md-block">
153 <@printSocialBlock title=title url=articleURL />
154 </div>
155 </div>
156
157 <#assign
158 fromDate= getterUtil.getString(gruppoEvento.dataInizio.getData())
159 toDate= getterUtil.getString(gruppoEvento.dataFine.getData())
160 address = ''
161 city = ''
162 timeVisibility = 'hide'
163 timeSeparator = ''
164 fromTime = ''
165 toTime = ''
166 timePattern = "^(?:[01]\\d|2[0-3]):[0-5]\\d$"
167 >
168
169 <#if validator.isNotNull(fromDate)>
170
171 <div class="row">
172 <div class="col-12 documents-news">
173 <div class="news-document-block">
174 <#assign languageEventLabel = 'Evento'/>
175 <#if themeDisplay.getLanguageId()=='en_GB' || themeDisplay.getLanguageId()=='en_US'>
176 <#assign languageEventLabel = 'Event'/>
177 </#if>
178 <h3 >${languageEventLabel}</h3>
179
180 <#if (gruppoEvento.titoloEvento.getData())?has_content>
181 <div class="titolo-evento mb-1"><b>${gruppoEvento.titoloEvento.getData()}</b></div>
182 </#if>
183
184 <#if (gruppoEvento.luogoEvento.getData())?has_content>
185 <div class="luogo-evento mb-1">
186 <span><b>Luogo: </b></span>
187 <span> ${gruppoEvento.luogoEvento.getData()}</span>
188 </div>
189 </#if>
190
191 <#assign
192 address = gruppoEvento.indirizzoEvento.getData()
193 city = gruppoEvento.cittaEvento.getData()
194 addressVisibility = (address?has_content || city?has_content)?then('','hide')
195 separator = (address?has_content && city?has_content)?then('-','')
196 >
197
198 <div class="indirizzo-evento ${addressVisibility} m-b-1">
199 <span><b>Indirizzo: </b></span>
200 <span> ${address} ${separator} ${city} </span>
201 </div>
202
203 <div class="data-evento mb-1">
204 <span><b>Data: </b></span>
205
206 <#if validator.isNotNull(toDate)>
207 <span>dal ${fromDate?datetime("yyyy-MM-dd")?string(dateTimeFormat)} al ${toDate?datetime("yyyy-MM-dd")?string(dateTimeFormat)}</span>
208 <#else>
209 <span>${fromDate?datetime("yyyy-MM-dd")?string(dateTimeFormat)}</span>
210 </#if>
211 </div>
212
213 <#if (gruppoEvento.oraInizio.getData())?has_content && (gruppoEvento.oraInizio.getData())?matches(timePattern) >
214 <#assign fromTime = gruppoEvento.oraInizio.getData() />
215 <#assign timeVisibility = '' />
216 <#if (gruppoEvento.oraFine.getData())?has_content && (gruppoEvento.oraFine.getData())?matches(timePattern)>
217 <#assign toTime = gruppoEvento.oraFine.getData() />
218 <#assign timeSeparator = 'alle' />
219 </#if>
220 </#if>
221
222 <div class="orario-evento ${timeVisibility} mb-1">
223 <span><b>Orario: </b></span>
224 <span>dalle ${fromTime} ${timeSeparator} ${toTime} </span>
225 </div>
226 </div>
227 </div>
228 </div>
229 </#if>
230
231
232
233 <!-- Allegati -->
234 <#if groupItemHasContent(parentStructure.newsAttachmentFieldSet.newsAttachment)>
235 <div class="row">
236 <div class="col-12 documents-news">
237 <div class="news-document-block">
238 <#assign languageDocumentLabel = 'Documenti'/>
239 <#if themeDisplay.getLanguageId()=='en_GB' || themeDisplay.getLanguageId()=='en_US'>
240 <#assign languageDocumentLabel = 'Documents'/>
241 </#if>
242 <h3 >${languageDocumentLabel}</h3>
243 <@printDocumentList
244 documentList=parentStructure.newsAttachmentFieldSet.newsAttachment
245 documentTitleChildrenName="newsAttachmentTitle"
246 documentDescriptionChildrenName="newsAttachmentDescription"
247 printIcons = true />
248 </div>
249 </div>
250 </div>
251 </#if>
252 <!-- Allegati -->
253 </div>
254 <!-- Contenuti multimediali -->
255 </div>
256</div>
257
258
259
260<style>
261
262body.portal-popup .row.media-slider #loader-cube {
263 display: none;
264}
265
266body.portal-popup .row.media-slider #first-slider{
267 display: block !important;
268}
269
270
271body.portal-popup .row.media-slider #first-slider .splide__slide.first_slider,
272body.portal-popup .row.media-slider #first-slider .splide__slide.first_slider a{
273 display:none;
274}
275
276
277body.portal-popup .row.media-slider #first-slider .splide__slide.first_slider:first-child{
278 display:block;
279}
280
281.row.corpo{
282 margin-bottom: 24px !important;
283}
284
285</style>