Indietro SOS ENATTOS
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> cur_linkToInternalPageDataJson.title [in template "20098#20124#40920" at line 192, column 47] ---- 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: ${cur_linkToInternalPageDataJson.title} [in template "20098#20124#40920" at line 192, column 45] ----
1<#-- instanceId -->
2<#assign instanceId = themeDisplay.getPortletDisplay().getId()?keep_after("INSTANCE_") />
3
4<#-- labels -->
5<#assign label_news = languageUtil.get(locale, "label_news") />
6<#assign label_date_of_publication = languageUtil.get(locale, "label_date_of_publication") />
7<#assign label_author = languageUtil.get(locale, "label_author") />
8<#assign label_attachments = languageUtil.get(locale, "label_attachments") />
9<#assign label_see_image = languageUtil.get(locale, "label_see_image") />
10<#assign label_go_to_the_page = languageUtil.get(locale, "label_go_to_the_page") />
11<#assign label_download_attachment = languageUtil.get(locale, "label_download_attachment") />
12<#assign label_go_back=languageUtil.get(locale, "label_go_back")/>
13
14
15<#-- Service for taking Journal Article Data -->
16<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
17<#-- Service for taking object layout -->
18<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
19<#-- Service for taking category -->
20<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
21
22<#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryLocalService') />
23<#assign dlAppService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLAppService') />
24
25<#-- Function for escaping extra character -->
26<#function escapeExtraChar text>
27 <#return text?replace("\"",""", "r")?replace("'","’", "r")>
28</#function>
29
30<#-- Check if list have at least on element -->
31<#function atLeastOneElement list>
32 <#assign isNotEmpty = false />
33 <#if list?? && list?has_content && list.getSiblings()?has_content>
34 <#list list.getSiblings() as cur_elem>
35 <#if validator.isNotNull(cur_elem) && validator.isNotNull(cur_elem.getData()) && cur_elem.getData() != "{}">
36 <#assign isNotEmpty = true />
37 <#break>
38 </#if>
39 </#list>
40 </#if>
41 <#return isNotEmpty>
42</#function>
43
44<#-- Taking the label of radio button-->
45<#function getOptionLabel ddmStructure fieldSelectName optionValue>
46 <#assign optionLabel = "" />
47 <#if ddmStructure.getDDMFormField(fieldSelectName).getDDMFormFieldOptions().getOptionLabels(optionValue)??>
48 <#assign optionLabel = ddmStructure.getDDMFormField(fieldSelectName).getDDMFormFieldOptions().getOptionLabels(optionValue).getString(locale) />
49 </#if>
50 <#return optionLabel />
51</#function>
52<#-- Taking the label of checkbox -->
53<#function getCheckboxLabel ddmStructure fieldCheckboxName>
54 <#return ddmStructure.getDDMFormField(fieldCheckboxName).getLabel().getString(locale)/>
55</#function>
56<#-- Taking the label of field -->
57<#function getFieldLabel ddmStructure fieldName>
58 <#return ddmStructure.getDDMFormField(fieldName).getLabel().getString(locale)/>
59</#function>
60
61<#-- Taking metadata's on all article -->
62<#-- Taking article id -->
63<#assign articleId = .vars['reserved-article-id'].data />
64<#-- Taking the title -->
65<#assign titolo = .vars['reserved-article-title'].data />
66
67<#-- Other data associated with the item that I obtain via API -->
68<#assign article = journalArticleLocalService.getArticle( groupId, articleId ) />
69
70<#-- Article last modification date -->
71<#assign articleModifiedDateObj = article.getModifiedDate() />
72<#-- Format last modification date -->
73<#if validator.isNotNull(articleModifiedDateObj)>
74 <#assign articleModifiedDate = dateUtil.getDate(articleModifiedDateObj, "dd/MM/yyyy, hh:mm", locale) />
75</#if>
76<#-- Url Title journal article -->
77<#assign articleUrlTitle = article.getUrlTitle() />
78<#-- Primary key journal article -->
79<#assign articlePrimKey = article.resourcePrimKey/>
80<#-- Structure journal article -->
81<#assign articleStructure = article.getDDMStructure() />
82
83<#-- Functions to obtain a list of categories -->
84<#-- If the indicated character is the category prefix, it indicates that the category must not be shown on the screen, but is only used for functional purposes -->
85<#assign PREFIX_SERVICE_CATEGORY = "_" />
86<#-- I get all the categories associated with an article except those that have a prefix "_" -->
87<#function getCategoryByArticlePrimKey articlePrimKey>
88 <#assign tmp = "" />
89 <#assign articleCatNames = catLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey)) />
90 <#if (articleCatNames?size > 0)>
91 <#list articleCatNames as category>
92 <#if category.name?substring(0,1) != PREFIX_SERVICE_CATEGORY >
93 <#assign tmp = tmp + category.name + ", " />
94 </#if>
95 </#list>
96 <#assign tmp = tmp?keep_before_last(",") />
97 </#if>
98 <#return tmp>
99</#function>
100<#-- Variant: Returns only the list of category objects -->
101<#function getListCategoryByArticlePrimKey articlePrimKey>
102 <#assign listCategories = [] />
103 <#assign articleCat = catLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey)) />
104 <#if (articleCat?size > 0)>
105 <#list articleCat as category>
106 <#if category.name?substring(0,1) != PREFIX_SERVICE_CATEGORY >
107 <#assign listCategories = listCategories + [category] />
108 </#if>
109 </#list>
110 </#if>
111 <#return listCategories>
112</#function>
113
114
115
116<#-- html -->
117<section class="news-detail" vocab="https://schema.org/" typeof="NewsArticle">
118 <div class="container mb-5">
119 <div class="col-12">
120 <div class="row justify-content-between align-items-center">
121 <#if (title.getData())??>
122 <h1 property="name" class="mb-4 mt-3">${title.getData()}</h1>
123 </#if>
124 <#-- <a class="btn btn-primary h-50 text-decoration-none" href="javascript:history.back(1)">${label_go_back}</a> -->
125 </div>
126 <div class="row">
127 <#assign publicationDate_Data = getterUtil.getString(publicationDate.getData())>
128 <#if validator.isNotNull(publicationDate_Data) || validator.isNotNull(author.getData())>
129 <p>
130 <#if validator.isNotNull(publicationDate_Data)>
131 <#assign publicationDate_DateObj = dateUtil.parseDate("yyyy-MM-dd", publicationDate_Data, locale)>
132 <span property="datePublished" content="${dateUtil.getDate(publicationDate_DateObj, 'dd MMM yyyy - HH:mm:ss', locale)}}">${label_date_of_publication} ${dateUtil.getDate(publicationDate_DateObj, "dd/MM/yyyy", locale)}</span>
133 </#if>
134 <#if validator.isNotNull(publicationDate_Data) && validator.isNotNull(author.getData())>
135 -
136 </#if>
137 <#if validator.isNotNull(author.getData())>
138 <span property="author">${label_author} ${author.getData()}</span>
139 </#if>
140 </p>
141 </#if>
142 </div>
143 <div class="row mb-4">
144 <span class="news-events-badge news-badge-color">
145 ${label_news}
146 </span>
147 </div>
148 <div class="row d-block min-height-350">
149 <#if (image.getData())?? && image.getData() != "">
150 <div class="article-image">
151 <a href="${image.getData()}" data-toggle="lightbox" data-type="image" title="${label_see_image}" aria-label="${label_see_image}">
152 <img property="image" alt="${image.getAttribute("alt")}" data-fileentryid="${image.getAttribute("fileEntryId")}" src="${image.getData()}" class="object-fit-cover w-100 h-100">
153 </a>
154 <p>${image.getAttribute("alt")}</p>
155 </div>
156 </#if>
157 <#if (description.getData())??>
158 <div property="description" class="text-justify">${description.getData()}</div>
159 </#if>
160 </div>
161 <#if atLeastOneElement(attachment)>
162 <div class="row">
163 <h3 class="font-weight-bold mb-4 mt-3">${label_attachments}</h3>
164 <div class="col-12 ml-4">
165 <#list attachment.getSiblings() as cur_attachment>
166 <#if validator.isNotNull(cur_attachment) && validator.isNotNull(cur_attachment.getData())>
167 <div class="row mb-3">
168 <a href="${cur_attachment.getData()}" class="text-body" title="${label_download_attachment}" aria-label="${label_download_attachment}">
169 <i class="icon-file-alt text-body mr-1 text-decoration-none"></i>
170 <#assign cur_attachmentJson = jsonFactoryUtil.createJSONObject(cur_attachment) />
171 <#assign cur_attachmentDataJson = jsonFactoryUtil.createJSONObject(cur_attachmentJson.data) />
172 ${cur_attachmentDataJson.title?keep_before("." + cur_attachmentDataJson.extension?string)}
173 </a>
174 </div>
175 </#if>
176 </#list>
177 </div>
178 </div>
179 </#if>
180 <#if atLeastOneElement(linkToInternalPage) || atLeastOneElement(linkToExternalPage)>
181 <div class="row">
182 <h3 class="font-weight-bold mb-4 mt-3">Link</h3>
183 <div class="col-12 ml-4">
184 <#if atLeastOneElement(linkToInternalPage)>
185 <#list linkToInternalPage.getSiblings() as cur_linkToInternalPage>
186 <#if validator.isNotNull(cur_linkToInternalPage) && validator.isNotNull(cur_linkToInternalPage.getData()) && cur_linkToInternalPage.getData() != "{}">
187 <div class="row mb-3">
188 <#assign cur_linkToInternalPageJson = jsonFactoryUtil.createJSONObject(cur_linkToInternalPage) />
189 <#assign cur_linkToInternalPageDataJson = jsonFactoryUtil.createJSONObject(cur_linkToInternalPageJson.data) />
190 <a data-senna-off="true" href="${cur_linkToInternalPage.getFriendlyUrl()}" class="text-body" title="${label_go_to_the_page}" aria-label="${label_go_to_the_page}">
191 <i class="icon-link text-body mr-1 text-decoration-none"></i>
192 ${cur_linkToInternalPageDataJson.title}
193 </a>
194 </div>
195 </#if>
196 </#list>
197 </#if>
198 <#if atLeastOneElement(linkToExternalPage)>
199 <#list linkToExternalPage.getSiblings() as cur_linkToExternalPage>
200 <#if (cur_linkToExternalPage.getData())??>
201 <div class="row mb-3 text-body">
202 <i class="icon-link text-body mr-2 text-decoration-none"></i>
203 ${cur_linkToExternalPage.getData()}
204 </div>
205 </#if>
206 </#list>
207 </#if>
208 </div>
209 </div>
210 </#if>
211 </div>
212 </div>
213</section>
214
215<script type="text/javascript">
216 $(document).off("click", '[data-toggle="lightbox"]').on("click", '[data-toggle="lightbox"]', function(event) {
217 event.preventDefault();
218 $(this).ekkoLightbox();
219 });
220</script>