Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> cardImageJson.groupId  [in template "20096#20121#CONFINDUSTRIA-ARTICOLO-REDAZIONALE" at line 26, column 22]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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: cardImageGroupId = cardImageJson.groupId  [in template "20096#20121#CONFINDUSTRIA-ARTICOLO-REDAZIONALE" at line 26, column 3]
----
1<#include "${templatesPath}/MACRO-CONFINDUSTRIA" /> 
2 
3<#assign journalLocalService = serviceLocator.findService('com.liferay.journal.service.JournalArticleLocalService') /> 
4<#assign assetEntryLocalService = serviceLocator.findService('com.liferay.asset.kernel.service.AssetEntryLocalService') /> 
5 
6<#assign 
7  articleid = .vars['reserved-article-id'].data 
8  journalArticle = journalLocalService.getArticle(groupId, articleid) 
9  classPK = journalArticle.resourcePrimKey?number 
10  assetEntry = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle',classPK) 
11  categories = assetEntry.getCategories() 
12  areeCategories = confindustria_template_tool.getAreeTematiche(categories) 
13  materieCategories = confindustria_template_tool.getMaterie(categories) 
14  tags = assetEntry.getTags() 
15  viewCount = assetEntry.viewCount 
16 
17  displaydate = journalArticle.getDisplayDate()?datetime 
18  displaydate = confindustria_template_tool.getDateFormattedDetailBy(displaydate?string("dd MMMMM yyyy"), "dd MMMMM yyyy", locale) 
19	 
20	item = confindustria_template_tool.getDDMJournalArticleValuesMap(classPK, locale) 
21  title=item.title.value 
22  abstract=item.abstract.value 
23  text=item.text.value 
24  cardImageOri = item.image.value 
25  cardImageJson = jsonFactoryUtil.createJSONObject(cardImageOri) 
26  cardImageGroupId = cardImageJson.groupId 
27  cardImageUuid = cardImageJson.uuid 
28  coverImage = confindustria_template_tool.getDDMImageURL(cardImageUuid,cardImageGroupId?number,themeDisplay) 
29  fileEntryImage = confindustria_template_tool.getFileEntry(cardImageUuid,cardImageGroupId?number,themeDisplay) 
30  entryId = fileEntryImage.getFileEntryId() 
31  fileName = fileEntryImage.getFileName() 
32/> 
33 
34<#assign 
35   contentVisible = false 
36   publicArticle=item.public.value 
37/> 
38<#if publicArticle?boolean == true> 
39  <#assign contentVisible = true/> 
40<#elseif isLoggedIn == true> 
41  <#assign contentVisible = confindustria_template_tool.canViewContent(themeDisplay.getUserId(),areeCategories, themeDisplay)/> 
42</#if> 
43 
44<article> 
45  <div class="box-page-name d-flex align-items-center"> 
46    <div class="container"> 
47      <div class="row"> 
48        <div class="col-12 col-md-10 col-lg-8"> 
49          <h1 class="box-page-name__title">${title}</h1> 
50        </div> 
51      </div> 
52    </div> 
53  </div> 
54 
55  <#-- Info --> 
56  <div class="box-info"> 
57    <div class="container"> 
58      <div class="row"> 
59        <div class="col-12"> 
60          <div class="d-flex flex-column flex-md-row justify-content-md-between align-items-md-end"> 
61            <div> 
62              <#if displaydate?? && displaydate != ""> 
63                <div class="box-info__date">${displaydate}</div> 
64              </#if> 
65              <div class="d-flex align-items-center"> 
66                <#if areeCategories?size gt 0> 
67                  <#list areeCategories as area> 
68                   <div class="box-info__category">${area.getTitle(locale)}</div> 
69                  </#list> 
70                </#if> 
71                <#if materieCategories?size gt 0> 
72                  <div class="box-info__materia"> 
73                    <span>${(materieCategories?size == 1)?then(languageUtil.get(locale, "confindustria.materia"), languageUtil.get(locale, "confindustria.materie"))}:</span> 
74                    <#list materieCategories as mat> 
75                      ${mat.getTitle(locale)} 
76                    </#list> 
77                  </div> 
78                </#if> 
79              </div> 
80            </div> 
81          </div> 
82        </div> 
83      </div> 
84    </div> 
85  </div> 
86 
87  <#-- Articolo --> 
88  <div class="container"> 
89    <div class="row"> 
90      <div class="col-12 col-lg-8 ${(contentVisible == false)?then('col-reserved','')}"> 
91        <div class="article"> 
92          <#if contentVisible == false> 
93            <#-- Non sono loggato: popup login contenuto riservato--> 
94            <#if isLoggedIn == false> 
95              <#include "${templatesPath}/CONFINDUSTRIA-PRIVATE-CONTENT-LOGIN" /> 
96            <#elseif contentVisible == false> 
97              <#include "${templatesPath}/CONFINDUSTRIA-PRIVATE-CONTENT-CATEGORY-MESSAGE" /> 
98            </#if> 
99          </#if> 
100          <#-- Immagine --> 
101          <#if coverImage?? && coverImage != ""> 
102            <img src="/o/adaptive-media/adapt-image/${entryId}/${fileName}?w=980&q=100&fm=webp" alt="${cardImageJson.alt}" class="article__img w-100" /> 
103          </#if> 
104          <#-- Abstract --> 
105          <#if contentVisible == true && abstract?? && abstract != ""> 
106            <div class="article__intro">${abstract}</div> 
107          </#if> 
108          <#--  Bodytext (sono loggato) --> 
109          <#if contentVisible == true > 
110            <#if text?? && text != ""> 
111              <div class="article__text">${text}</div> 
112            </#if> 
113          </#if> 
114        </div> 
115      </div> 
116 
117      <#--  Allegati (sono loggato) --> 
118      <#if contentVisible == true > 
119        <div class="col-12 col-lg-4"> 
120          <#if groupDocuments.getSiblings()[0].document.getData() != ""> 
121            <div class="article__info"> 
122              <div class="article__label"><@liferay.language key="confindustria.attachments" /></div> 
123              <#list groupDocuments.getSiblings() as allegato> 
124                <#if allegato.document.getData() != ""> 
125                    <#assign 
126                        allegatoMap = allegato.document['data']?eval 
127                        allegatoTitle = allegatoMap['title'] 
128                    /> 
129                    <div class="mb-3"> 
130                      <a href="${allegato.document.getData()}" title="${allegatoTitle}" class="article__attachments d-flex align-items-start"> 
131                          <svg class="ico-svg add"> 
132                              <use xlink:href="${themeIconsPath}#arrow-down-to-line-light"></use> 
133                          </svg> 
134                          <span>${allegatoTitle}</span> 
135                      </a> 
136                    </div> 
137                </#if> 
138              </#list> 
139            </div> 
140          </#if> 
141					<#if groupLink.getSiblings()[0].link.getData() != ""> 
142            <div class="article__info"> 
143				      <div class="article__label"><@liferay.language key="confindustria.links" /></div> 
144              <#list groupLink.getSiblings() as cur_link_esterni> 
145                <#if cur_link_esterni.titleLink.getData() !="" && cur_link_esterni.link.getData() !=""> 
146                   <div class="mb-3"> 
147                     <a href="${cur_link_esterni.link.getData()}" title="Scarica ${cur_link_esterni.titleLink.getData()}" target="cur_link_esterni.link.getData()" class="article__attachments d-flex align-items-start"> 
148                        <svg class="ico-svg add"> 
149                          <use xlink:href="${themeIconsPath}#arrow-down-to-line-light"/> 
150                       </svg> 
151                       <span>${cur_link_esterni.titleLink.getData()}</span> 
152                     </a> 
153                   </div> 
154                </#if> 
155              </#list> 
156            </div> 
157			    </#if> 
158        </div> 
159		  </#if> 
160 
161    </div> 
162 
163    <#if contentVisible == true && images.getSiblings()?has_content && images.getSiblings()?size gt 0 && images.getSiblings()[0].getData()?? && images.getSiblings()[0].getData()?has_content> 
164				<section class="section photogallery"> 
165					<div class="row"> 
166						<div class="col-12"> 
167							<div class="section__wrap-title d-flex justify-content-between align-items-end"> 
168								<div class="section__title"><@liferay.language key="confindustria.photogallery"/></div> 
169								<div class="slider-controls slider-controls-gallery d-flex align-items-center"> 
170									<div class="dots"/> 
171								</div> 
172							</div> 
173						</div> 
174					</div> 
175					<div class="row"> 
176						<div class="col-12 col-lg-8"> 
177							<div class="slider slider-gallery"> 
178								<#list images.getSiblings() as image> 
179								<div> 
180									<div class="box-photo-lightbox text-center"> 
181										<a data-senna-off="true" href="${image.getData()}" title="${image.getAttribute("alt")}" id="slider-sede-${image?index}" class="box-photo-lightbox__link fresco" style="background-image: url('${image.getData()}')" data-fresco-group="photogallery_sede" data-fresco-caption="${image.getAttribute("alt")}"> 
182										<#if image.getAttribute("alt") ?? && image.getAttribute("alt") !=""> 
183											<span class="box-photo-lightbox__title">${image.getAttribute("alt")}</span> 
184										</#if> 
185										<span class="d-none"> 
186											<@liferay.language key="image"/> "${image?index}" </span> 
187										</a> 
188									</div> 
189								</div> 
190								</#list> 
191							</div> 
192						</div> 
193					</div> 
194				</section> 
195    </#if> 
196 
197  </div> 
198</article> 
199 
200<#-- Contatti --> 
201<#assign hasContacts = contact.getSiblings()?has_content && contact.getSiblings()?size gt 0 && contact.getSiblings()[0].getData() != ''/> 
202<#if contentVisible == true && hasContacts > 
203  <section id="riferimenti" class="section section--dark" data-group="true"> 
204    <div class="container"> 
205      <div class="row"> 
206        <div class="col-12"> 
207          <div class="section__wrap-title d-flex justify-content-between align-items-end"> 
208            <div class="section__title"><@liferay.language key="confindustria.contatti.title" /></div> 
209            <div class="slider-controls slider-controls-contatti d-flex align-items-center"><div class="dots"></div></div> 
210          </div> 
211        </div> 
212      </div> 
213      <div class="row"> 
214        <div class="col-12"> 
215          <div class="slider slider-contatti"> 
216            <#list contact.getSiblings() as cur_contact> 
217              <#assign 
218                webContentData = jsonFactoryUtil.createJSONObject(cur_contact.getData()) 
219              /> 
220              <#if webContentData?? && webContentData.subtype?? && webContentData.subtype == 'CONTATTO'> 
221 
222                  <#assign 
223                      classPK = webContentData.classPK 
224                      item = confindustria_template_tool.getDDMJournalArticleValuesMap(classPK?number, locale) 
225                      nome = item.nome.value 
226                      cognome = item.cognome.value 
227                      ruolo = item.ruolo.value 
228                      telefono = item.telefono.value 
229                      mobile = item.mobile.value 
230                      email = item.email.value 
231                      cardImageOri = item.picture.value 
232                      cardImageJson = jsonFactoryUtil.createJSONObject(cardImageOri) 
233                      fileEntryImage = '' 
234                      entryId = '' 
235                      fileName = '' 
236                  /> 
237                  <#if cardImageJson.groupId?? && cardImageJson.groupId!=""> 
238                    <#assign 
239                          cardImageGroupId = cardImageJson.groupId 
240                          cardImageUuid = cardImageJson.uuid 
241                          fileEntryImage = confindustria_template_tool.getFileEntry(cardImageUuid,cardImageGroupId?number,themeDisplay) 
242                          entryId = fileEntryImage.getFileEntryId() 
243                          fileName = fileEntryImage.getFileName() 
244                    /> 
245                  </#if> 
246                  <div> 
247                    <#include "${templatesPath}/CONFINDUSTRIA-CONTATTO-CARD" /> 
248                  </div> 
249 
250              </#if> 
251            </#list> 
252          </div> 
253        </div> 
254      </div> 
255    </div> 
256  </section> 
257</#if>