Articolo
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> categs[topic] [in template "20101#20127#40211" at line 62, column 31] ---- Tip: It's the final [] step that caused this error, not those before it. ---- 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: #assign topicentry = categs[topic] [in template "20101#20127#40211" at line 62, column 9] ----
1<#assign imageurl = ''>
2<#if coverImage.getData()?? && coverImage.getData() != "">
3 <#assign imageurl = coverImage.getData()>
4</#if>
5
6<section class="wow fadeIn cover-background background-position-top top-space"
7 style="background-image:url('${imageurl}');">
8 <div class="opacity-medium bg-extra-dark-gray"></div>
9 <div class="container">
10 <div class="row align-items-center">
11 <div class="col-12 d-flex justify-content-center flex-column text-center page-title-large padding-30px-tb">
12 <!-- start sub title -->
13 <span class="text-white-2 opacity6 alt-font margin-10px-bottom d-block text-uppercase text-small"><a href="" class="text-white-2"></a></span>
14 <!-- end sub title -->
15 <!-- start page title -->
16 <h1 class="text-white-2 alt-font font-weight-600 margin-20px-bottom">${title.getData()}</h1>
17 <h5 class="text-white-2 alt-font font-weight-600 margin-10px-bottom">${subTitle.getData()}</h5>
18 <!-- end page title -->
19 </div>
20 </div>
21 </div>
22</section>
23<div class="text-right mr-2">${coverImage.getAttribute("alt")}</div>
24
25<#assign categs = request.getAttribute("categ_entries_map")!''>
26<#assign categsurl = request.getAttribute("categ_imgsurl_map")!''>
27<#assign selectedperspective = request.getParameter('prs_sel')!''>
28<#assign selectedtopic = request.getParameter('tpc_sel')!''>
29
30<#if categs?has_content>
31 <#assign persp = ''>
32 <#assign topic = ''>
33 <#assign tags = .vars['reserved-article-asset-tag-names'].data>
34 <#if tags?has_content>
35 <#list tags?split(",") as tag>
36 <#if tag?starts_with("p_")>
37 <#assign persp = tag>
38 </#if>
39 <#if tag?starts_with("t_")>
40 <#assign topic = tag>
41 </#if>
42 </#list>
43 </#if>
44 <#-- Se trova la selezione prospettiva o topic
45 sovrascrive gli assegnamenti delle righe sopra
46 -->
47 <#if selectedperspective?has_content>
48 <#if categs[selectedperspective]?has_content>
49 <#assign persp = selectedperspective>
50 </#if>
51 </#if>
52 <#if selectedtopic?has_content>
53 <#if categs[selectedtopic]?has_content>
54 <#assign topic = selectedtopic>
55 </#if>
56 </#if>
57
58 <#if persp?has_content && topic?has_content>
59 <#assign perspentry = categs[persp]>
60 <#assign pfldm = perspentry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()/>
61 <#assign ppredicate = pfldm['predicate1'][0].getValue().getString(local)!''>
62 <#assign topicentry = categs[topic]>
63 <#assign tfldm = topicentry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()/>
64 <#assign tpredicate = tfldm['predicate2'][0].getValue().getString(local)!''>
65
66 <#if tags?has_content>
67 <section class="wow fadeIn padding-20px-tb border-bottom border-color-extra-light-gray">
68 <div class="container">
69 <div class="row">
70 </div>
71 </div>
72 </section>
73 <section class="wow fadeIn padding-20px-tb border-bottom border-color-extra-light-gray">
74 <div class="container">
75 <div class="row">
76 <div class="col-12 col-lg-10 d-flex flex-wrap mx-auto p-0">
77 <div class="col-12 col-lg-8 col-md-6 text-center text-md-left">
78 <div class="">
79 <div class="text-large alt-font text-extra-dark-gray font-weight-600">
80 <#assign middleurl = "perspective?p_r_p_tags=${persp}">
81 <a href="${middleurl}"><img style="width: 50px;" src="${categsurl[persp]}" alt=""></a>
82 ${ppredicate} <a href="${middleurl}" class="text-orange">${perspentry.getTitle(locale)}</a>
83 </div>
84 </div>
85 </div>
86 </div>
87 </div>
88 <div class="row">
89 <div class="col-12 col-lg-10 d-flex flex-wrap mx-auto p-0">
90 <div class="col-12 col-lg-8 col-md-6 text-center text-md-left">
91 <div class="">
92 <div class="margin-10px-top text-large alt-font text-extra-dark-gray font-weight-600">
93 <#assign middleurl = "topic?p_r_p_tags=${topic}">
94 <a href="${middleurl}"><img style="width: 50px;" src="${categsurl[topic]}" alt=""></a>
95 ${tpredicate} <a href="${middleurl}" class="text-orange">${topicentry.getTitle(locale)}</a>
96 </div>
97 </div>
98 </div>
99 </div>
100 </div>
101 </div>
102 </section>
103 </#if>
104 </#if>
105</#if>
106
107
108<#-- ASSIGNMENTS. Usato dalla sezione Author e per il link di Edit -->
109<#assign rpk = request.getParameter('rpk')!''>
110<#if !rpk?has_content>
111 <#assign artid = .vars['reserved-article-id'].data>
112 <#assign artgrpid = .vars['articleGroupId']>
113 <#assign jals = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
114 <#assign rpk = jals.getArticle(artgrpid, artid).getResourcePrimKey()?string>
115</#if>
116<#if rpk?has_content>
117
118 <#-- BUILD SEQUENCES OF RELATED -->
119 <#assign alls = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
120 <#assign aels = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
121 <#assign articleEntry = aels.getEntry("com.liferay.journal.model.JournalArticle", rpk?number) />
122
123 <#assign rlinks = alls.getDirectLinks(articleEntry.getEntryId()) />
124 <#assign authorsseq = []>
125 <#assign relsseq = []>
126 <#list rlinks as related_entry>
127 <#assign relatedAssetEntryId = related_entry.getEntryId2() />
128 <#assign relatedAssetEntry = aels.getEntry(relatedAssetEntryId) />
129 <#--
130 <#assign isauthor = false>
131 <#list relatedAssetEntry.getCategories() as cat>
132 <#assign isauthor = isauthor || (cat.getName() = 'Author')>
133 </#list>
134 <#if isauthor>
135 -->
136 <#if relatedAssetEntry.getClassTypeId() == 216501><#-- if is Author Structure -->
137 <#assign authorsseq = authorsseq + [relatedAssetEntry]>
138 <#else>
139 <#assign relsseq = relsseq + [relatedAssetEntry]>
140 </#if>
141 </#list>
142
143 <#-- EDIT URL -->
144 <#assign assetRenderer = articleEntry.getAssetRenderer() />
145 <#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())>
146 <#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse)!"" />
147 </#if>
148</#if>
149
150
151<#-- ARTICLE -->
152<#assign article = articleEntry.getAssetRenderer().getArticle()>
153<#assign summary = .vars['reserved-article-description'].data>
154<section class="wow fadeIn">
155 <div class="container">
156 <div class="row">
157 <#-- OLD EDIT URL (when user is logged in)
158 <#if themeDisplay.isSignedIn()>
159 <#assign articleid = request.getAttribute("article_id_x_editlink")!''>
160 <div class="col-12">
161 <a href="/group/guest/~/control_panel/manage?p_p_id=com_liferay_journal_web_portlet_JournalPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_com_liferay_journal_web_portlet_JournalPortlet_mvcPath=%2Fedit_article.jsp&_com_liferay_journal_web_portlet_JournalPortlet_redirect=https%3A%2F%2Fwww.open-science.it%3A443%2Fgroup%2Fguest%2F%7E%2Fcontrol_panel%2Fmanage%3Fp_p_id%3Dcom_liferay_journal_web_portlet_JournalPortlet%26p_p_lifecycle%3D0%26p_p_state%3Dmaximized%26p_p_mode%3Dview%26_com_liferay_journal_web_portlet_JournalPortlet_cur%3D2%26_com_liferay_journal_web_portlet_JournalPortlet_displayStyle%3Ddescriptive%26_com_liferay_journal_web_portlet_JournalPortlet_orderByCol%3Dmodified-date%26_com_liferay_journal_web_portlet_JournalPortlet_orderByType%3Dasc%26_com_liferay_journal_web_portlet_JournalPortlet_delta%3D20%26_com_liferay_journal_web_portlet_JournalPortlet_resetCur%3Dfalse%26_com_liferay_journal_web_portlet_JournalPortlet_folderId%3D38486%26p_p_auth%3DGWRihZ2Y&_com_liferay_journal_web_portlet_JournalPortlet_referringPortletResource=&_com_liferay_journal_web_portlet_JournalPortlet_groupId=20123&_com_liferay_journal_web_portlet_JournalPortlet_folderId=38486&_com_liferay_journal_web_portlet_JournalPortlet_articleId=${articleid}&_com_liferay_journal_web_portlet_JournalPortlet_version=1.2&p_p_auth=GWRihZ2Y"><strong>Edit</strong></a>
162 </div>
163 </#if>
164 -->
165 <#if editPortletURL?has_content>
166 <div class="col-12">
167 <a href="${editPortletURL}"><strong>EDIT</strong></a>
168 </div>
169 </#if>
170
171 <div class="col-12 col-lg-10 mx-auto last-paragraph-no-margin os-article-body">
172 ${summary}
173 ${content.getData()}
174 <p class="os-article-date">${dateUtil.getDate(article.getDisplayDate(), "dd MMMM yyyy", locale)}</p>
175 </div>
176<#-- Saranno chiusi in Parametric Article Template
177 </div>
178 </div>
179</section>
180-->
181
182<#--
183<#if tags?has_content>
184 <#list tags?split(",") as tag>
185 <#if !tag?starts_with("p_") && !tag?starts_with("t_") >
186 <span style="border: 1px solid black;">${tag}</span>
187 </#if>
188 </#list>
189</#if>
190-->
191
192<#-- RENDER RELATED AUTHORS -->
193<#if authorsseq?has_content>
194 <#-- Riordina gli autori nel caso particolare articolo Riflessioni giuridiche -->
195 <#if rpk == "220966">
196 <#assign authorsseq = authorsseq?reverse>
197 </#if>
198 <#-- Riordina gli autori nel caso particolare articolo Una comunita aperta per promuovere l'Open Science a Torino -->
199 <#if rpk == "344058">
200 <#assign authorsseq = [authorsseq[1], authorsseq[2], authorsseq[0], authorsseq[3]]>
201 </#if>
202 <#list authorsseq as entry>
203 <div class="col-12 col-lg-10 mx-auto margin-50px-bottom md-margin-30px-bottom wow fadeInUp" style="visibility: visible; animation-name: fadeInUp;">
204 <#assign thumburl = entry.getAssetRenderer().getThumbnailPath(renderRequest)!''>
205 <#assign authorurl = '/-/' + entry.getAssetRenderer().getArticle().getUrlTitle(locale)!'#'>
206 <#assign fldmA = entry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()/>
207 <div class="d-block d-md-flex width-100 align-items-center align-items-md-start border border-color-extra-light-gray padding-50px-all md-padding-30px-all sm-padding-20px-all">
208 <div class="width-150px text-center sm-margin-15px-bottom">
209 <img src="${thumburl}" class="rounded-circle width-100px" alt="" data-no-retina="">
210 </div>
211 <div class="width-100 padding-40px-left last-paragraph-no-margin sm-no-padding-left text-center text-md-left">
212 <span class="text-extra-dark-gray text-uppercase alt-font font-weight-600 margin-10px-bottom d-inline-block text-small"><a href="${authorurl}" style="text-decoration: underline;">${entry.getTitle(locale)}</a></span>
213 <#assign osrole = fldmA['osRole'][0].getValue().getString(locale)!''>
214 <#-- Caso particolare articolo "Redazione" -->
215 <#if osrole?has_content && rpk == "208806">
216 <span class="text-light-gray2 text-extra-small text-uppercase text-medium-gray" style="letter-spacing: 1px"> (${osrole})</span>
217 </#if>
218 <!--
219 <a href="#" class="text-extra-dark-gray text-uppercase alt-font font-weight-600 margin-10px-bottom d-inline-block text-small">${entry.getTitle(locale)}</a>
220 <p>${entry.getSummary(locale)}</p>
221 -->
222 <#assign contentA = fldmA['htmlContent'][0].getValue().getString(locale) />
223 <span class="no-first-child-bold link-underline">${contentA}</span>
224 <a href="${authorurl}" class="btn btn-very-small btn-black margin-20px-top">Tutti i contenuti dell'autore</a>
225 </div>
226 </div>
227 </div>
228 </#list>
229</#if>
230
231
232<#-- CUSTOM RELATED ARTICLE SECTION -->
233<#if customRelated?has_content>
234 <#if customRelated.getSiblings()?has_content>
235 <#assign aelService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
236
237 <#assign foundAlmost1Rel = false>
238 <#list customRelated.getSiblings() as cur_customRelated>
239 <#assign cur_custRelData = cur_customRelated.getData()>
240 <#if cur_custRelData?has_content>
241 <#assign foundAlmost1Rel = foundAlmost1Rel || true>
242 </#if>
243 </#list>
244 <#if foundAlmost1Rel>
245 <div class="col-12 col-lg-10 mx-auto text-center margin-80px-bottom sm-margin-40px-bottom mt-3">
246 <div class="position-relative overflow-hidden width-100">
247 <span class="text-small text-outside-line-full alt-font font-weight-600 text-uppercase text-extra-dark-gray">Potrebbe interessarti anche</span>
248 </div>
249 </div>
250 </#if>
251
252 <div class="col-12 col-lg-10 d-flex flex-wrap mx-auto">
253 <#list customRelated.getSiblings() as cur_customRelated>
254 <#assign cur_custRelData = cur_customRelated.getData()>
255 <#if cur_custRelData?has_content>
256 <#assign curcrJson = jsonFactoryUtil.createJSONObject(cur_custRelData)>
257 <#assign className = curcrJson['className']>
258 <#assign classPK = curcrJson['classPK']?number>
259 <#assign relArticleEntry = aelService.fetchEntry(className, classPK)>
260 <#assign relAssetRend = relArticleEntry.getAssetRenderer()>
261 <#assign fldm = relAssetRend.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()/>
262 <#assign thumburl = relAssetRend.getThumbnailPath(renderRequest)!''>
263 <#if !thumburl?has_content>
264 <#attempt>
265 <#if fldm['coverImage']?has_content>
266 <#assign coverval = fldm['coverImage'][0].getValue()!''>
267 <#if coverval?has_content>
268 <#assign json = jsonFactoryUtil.createJSONObject(coverval.getString(locale))>
269 <#assign groupId = json['groupId']?number>
270 <#assign classUuid = json['uuid']>
271 <#assign coverentry = aelService.getEntry(groupId, classUuid)>
272 <#assign thumburl = coverentry.getAssetRenderer().getURLDownload(themeDisplay)!''>
273 </#if>
274 </#if>
275 <#recover>
276 <!-- missing cover of ${classPK} -->
277 </#attempt>
278 </#if>
279
280 <#if relArticleEntry.getClassTypeId() == 200447><#-- News structure ID -->
281 <#assign viewurl = "/-/" + relAssetRend.getArticle().getUrlTitle(locale)/>
282 <#assign htmlContent = fldm['htmlContent'][0].getValue().getString(locale) />
283 <#assign summary = stringUtil.shorten(htmlUtil.stripHtml(htmlContent), 500)/>
284 <#if !thumburl?has_content>
285 <#assign image = fldm['image']!''>
286 <#if image?has_content>
287 <#assign imageval = fldm['image'][0].getValue()!''>
288 <#if imageval?has_content>
289 <#assign imagevaljst = imageval.getString(locale)>
290 <#if imagevaljst?has_content>
291 <#assign json = jsonFactoryUtil.createJSONObject(imagevaljst)>
292 <#assign groupId = json['groupId']?number>
293 <#assign classUuid = json['uuid']>
294 <#assign imageentry = aelService.getEntry(groupId, classUuid)>
295 <#assign thumburl = imageentry.getAssetRenderer().getURLDownload(themeDisplay)!''>
296 <#else>
297 <#assign thumburl = "/documents/20123/0/blank-picture-1.png/be57bd7d-5248-d2a5-dbdf-88affd75267d?t=1662563236171">
298 </#if>
299 </#if>
300 </#if>
301 </#if>
302 <#else><#-- else Article structure -->
303 <#assign viewurl = "article?rpk=${relAssetRend.getArticle().getResourcePrimKey()}">
304 <#assign summary = relArticleEntry.getSummary(locale)/>
305 </#if>
306
307 <div class="col-12 col-lg-6 pl-0 md-no-padding-lr last-paragraph-no-margin">
308 <div class="bg-light-gray padding-50px-all md-padding-25px-all">
309 <a href="${viewurl}"><span class="text-medium font-weight-600 text-extra-dark-gray alt-font">${curcrJson.title}</span></a>
310 <a href="${viewurl}"><img src="${thumburl}" alt="" class="width-100 margin-30px-tb"></a>
311 <p>${summary}</p>
312 </div>
313 </div>
314 </#if>
315 </#list>
316 </div>
317 </#if>
318</#if>