Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy83.getEntry(String, long)" threw an exception when invoked on com.sun.proxy.$Proxy83 object "com.liferay.asset.internal.service.AssetEntryAssetCategoryRelAssetEntryLocalServiceWrapper@24a74dfd"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: currentArticleAssetEntry = AELS.getEn... [in template "114284#114319#1231320" in function "getRelatedArticles" at line 917, column 9] - Reached through: #assign-container [in template "114284#114319#1231320" in function "getRelatedArticles" at line 912, column 5] - Reached through: #assign singleEntry = getRelatedArtic... [in template "114284#114319#1231320" at line 663, column 49] ----
1<#assign
2 DLAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"]
3 d40Service = serviceLocator.findService("eu.suggesto.d40.builder.d40.service.TourismItemLocalService")
4 DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
5 mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService")
6 catsService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
7 serverName = request.getServerName()
8 defLng = themeDisplay.getSiteDefaultLocale()
9
10 preferences = freeMarkerPortletPreferences.getPreferences("portletSetupPortletDecoratorId", "barebone")
11/>
12
13
14<div>
15
16 <#if entries?has_content>
17 <#list entries as curEntry>
18 <#assign renderer = curEntry.getAssetRenderer() >
19 <#assign className = renderer.getClassName() >
20 <#if className == "com.liferay.journal.model.JournalArticle" >
21 <#assign journalArticle = renderer.getArticle() >
22 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
23 <#assign rootElement = document.getRootElement() >
24
25<#------------- GET ALL FIELDS
26 <#-- GET Title -->
27 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Title']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
28 <#assign MainTitle = xPathSelector.selectSingleNode(rootElement).getStringValue() >
29
30
31 <#-- GET MainContent (MainImage, TxtBtn, ExtLink, RelatedPage) -->
32 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='MainContent']") >
33 <#assign MainContent = xPathSelector.selectNodes(rootElement) >
34
35
36 <#-- GET RedationalBlocks (1st_content, 1st_Gallery, 1st_Video) -->
37 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='1st_RedationalBlocks']") >
38 <#assign FirstRedationalBlocks = xPathSelector.selectNodes(rootElement) >
39
40
41 <#-- GET EvidenceBlocks (EvImage, EvContent, EvExtLink, EvRelatedPage) -->
42 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='EvidenceBlocks']") >
43 <#assign EvidenceBlocks = xPathSelector.selectNodes(rootElement) >
44
45
46 <#-- GET RedationalBlocks (2nd_content, 2nd_Gallery, 2nd_Video) -->
47 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='2nd_RedationalBlocks']") >
48 <#assign SecondRedationalBlocks = xPathSelector.selectNodes(rootElement) >
49
50 <#-- GET Relations (TxtRel, ViewType, RelatedContents) -->
51 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Relations']") >
52 <#assign Relations = xPathSelector.selectNodes(rootElement) >
53
54
55 <#-- GET CustomBlocks (CustomBoxs, CustomLinkPage, CustomBlockImg, CustomBlockTitle, CustomBlockDesc) -->
56 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBoxs']") >
57 <#assign CustomBlocks = xPathSelector.selectNodes(rootElement) >
58
59 <#-- GET Files -->
60 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Files']") >
61 <#assign Documenti = xPathSelector.selectNodes(rootElement) >
62
63
64 <#-- GET ShowExhibitions -->
65 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ShowExhibitions']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
66 <#assign ShowExhibitions = xPathSelector.selectSingleNode(rootElement).getStringValue() >
67
68
69<#------------- END GET ALL FIELDS -->
70
71
72<#------------- BREADCRUMB -->
73<#if themeDisplay.getLayout().getAncestors()?has_content>
74 <section id="breadcrumb" class="tw:font-heading tw:text-base tw:mt-4 <lg:tw:hidden">
75 <div class="container">
76 <ol class="breadcrumb tw-space-x-2">
77 <li class="breadcrumb-item">
78 <a href="/" class="breadcrumb-link" title="Home">
79 <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">Home</span>
80 </a>
81 </li>
82
83 <#list themeDisplay.getLayout().getAncestors()?reverse as ancestor>
84 <li class="breadcrumb-item">
85 <a href="${ancestor.getFriendlyURL()}" class="breadcrumb-link" title="${ancestor.getHTMLTitle(themeDisplay.getLocale())}">
86 <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">${ancestor.getHTMLTitle(themeDisplay.getLocale())}</span>
87 </a>
88 </li>
89 </#list>
90
91 <li class="breadcrumb-item active">
92 <span class="tw:text-green tw:uppercase" title="">
93 ${htmlUtil.replaceNewLine(MainTitle)}
94 </span>
95 </li>
96 </ol>
97 </div>
98 </section>
99</#if>
100<#------------- END BREADCRUMB -->
101
102
103<#------------- PRE MAIN (title) -->
104 <div class="row row_pre_main pb-5">
105 <div class="container">
106 <h1>${htmlUtil.replaceNewLine(MainTitle)}</h1>
107 </div>
108 </div>
109<#------------- END PRE MAIN -->
110
111
112
113<#------------- INIZIO CONTENUTO PRINCIPALE -->
114 <#if MainContent?has_content>
115 <#-- GET dynamic-content (contenuto) -->
116 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
117 <#assign Content = xPathSelector.selectSingleNode(MainContent).getStringValue() >
118
119
120 <#-- GET MainImage -->
121 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='MainImage']") >
122 <#assign MainImage = xPathSelector.selectSingleNode(MainContent) >
123
124
125 <#-- GET TxtBtn -->
126 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='TxtBtn']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
127 <#assign TxtBtn = xPathSelector.selectSingleNode(MainContent).getStringValue() >
128
129 <#-- GET ExtLink -->
130 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ExtLink']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
131 <#assign ExtLink = xPathSelector.selectSingleNode(MainContent).getStringValue() >
132
133 <#-- GET RelatedPage -->
134 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='RelatedPage']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
135 <#assign RelatedPageStr = xPathSelector.selectSingleNode(MainContent).getStringValue() >
136
137 <#if RelatedPageStr?trim?has_content>
138 <#assign linkGroupId = RelatedPageStr?keep_after("public@")?trim?number >
139 <#assign linkPageId = RelatedPageStr?keep_before("@public")?trim?number>
140 <#assign linkPrivate = false>
141
142 <#-- get layout -->
143 <#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"]>
144 <#assign pageLayout = layoutLocalService.getLayout(linkGroupId, linkPrivate, linkPageId)>
145
146 <#-- get Friendly URL -->
147 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
148 <#assign friendly_page_link = portalUtil.getLayoutFriendlyURL(pageLayout, themeDisplay)>
149
150 </#if>
151
152 <#if (Content?trim?has_content) || (MainImage?trim?has_content)>
153 <div class="row row_main_content pb-5" data-aos="fade-up">
154 <div class="container">
155
156 <#if MainImage?trim?has_content>
157 <#if MainImage.getStringValue()?trim?has_content>
158 <div class="main_image pb-4">
159 <#assign immagine = MainImage.getStringValue()>
160 <#assign
161 jsonField = jsonFactoryUtil.createJSONObject(immagine)
162 fileEntryId = jsonField.classPK?number
163 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
164 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
165 />
166
167 <link rel="preload" as="image" href="${getPrefix(Image, 1280, 550)}" />
168 <img class="lazy-load" datasrc="${getPrefix(Image, 1280, 550)}" src="" alt="${jsonField.alt}">
169
170 <#if TxtBtn?? && TxtBtn?trim?has_content>
171 <div class="btn_over_img">
172 <#if ExtLink?? && ExtLink?has_content>
173 <a href="${ExtLink}" target="_blank">${TxtBtn}</a>
174 <#elseif friendly_page_link?? && friendly_page_link?has_content>
175 <a href="${friendly_page_link}" target="_blank">${TxtBtn}</a>
176 </#if>
177 </div>
178 </#if>
179 </div>
180 </#if>
181 </#if>
182
183 <#if (Content?trim?has_content)>
184 <div class="main_content pb-4">${Content}</div>
185 </#if>
186
187 </div>
188 </div>
189 </#if>
190 </#if>
191<#------------- FINE CONTENUTO PRINCIPALE -->
192
193
194
195<#------------- INIZIO PRIMO BLOCCO REDAZIONALE -->
196 <#if FirstRedationalBlocks?? && FirstRedationalBlocks?has_content> <#assign
197 TestArray = FirstRedationalBlocks[0]
198 xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']")
199 Check = xPathSelector.selectSingleNode(TestArray).getStringValue()
200 />
201 <#if Check?? && Check?has_content>
202 <div class="row row_redational pb-5" data-aos="fade-left">
203 <div class="main_cage">
204
205 <#list FirstRedationalBlocks as SingleBlock>
206
207
208 <#-- GET dynamic-content (titolo) -->
209 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
210 <#assign Title = xPathSelector.selectSingleNode(SingleBlock).getStringValue() >
211 <#if Title?? && Title?has_content>
212 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
213 </#if>
214
215
216
217 <#-- GET 1st_Content -->
218 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='1st_Content']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
219 <#assign Content = xPathSelector.selectSingleNode(SingleBlock).getStringValue() >
220 <#if Content?? && Content?has_content>
221 <div class="redational_content pb-5">${Content}</div>
222 </#if>
223
224 <#-- GET 1st_Gallery -->
225 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='1st_Gallery']") >
226 <#assign Gallery = xPathSelector.selectNodes(SingleBlock) >
227
228 <#if Gallery?has_content>
229 <#if Gallery[0].getStringValue()?trim?has_content>
230 <div class="row gallery pb-5">
231 <#list Gallery as SingleImage>
232 <#if SingleImage?trim?has_content>
233 <#if SingleImage.getStringValue()?trim?has_content>
234 <#assign immagine = SingleImage.getStringValue()>
235 <#assign
236 jsonField = jsonFactoryUtil.createJSONObject(immagine)
237 fileEntryId = jsonField.classPK?number
238 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
239 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
240 />
241
242 <div class="col-sm-6 col-md-4">
243 <a class="magnific" href="${Image}">
244 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}">
245 </a>
246 </div>
247
248 </#if>
249 </#if>
250 </#list>
251 </div>
252 </#if>
253 </#if>
254
255 <#-- GET 1st_Video -->
256 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='1st_Video']") >
257 <#assign Videos = xPathSelector.selectNodes(SingleBlock) >
258
259 <#if Videos?has_content>
260 <#if Videos[0].getStringValue()?trim?has_content>
261 <div class="row row_video pb-5">
262 <#list Videos as SingleVideo>
263 <#assign VideoStr = SingleVideo.getStringValue() >
264 <#assign YTUrl = VideoStr?keep_before("watch?v=")?trim >
265 <#assign VideoId = VideoStr?keep_after("watch?v=")?trim>
266 <#assign UrlVideo = VideoStr?replace("watch?v=", "embed/")?trim >
267
268 <#if VideoId?? && VideoId?has_content>
269 <div class="col-sm-6">
270 <div class="single_video">
271 <div class="video-container">
272 <iframe src="${UrlVideo}?showinfo=1&rel=0&autoplay=0" frameborder="0" allowfullscreen></iframe>
273 </div>
274 </div>
275 </div>
276 </#if>
277 </#list>
278 </div>
279 </#if>
280 </#if>
281 <#-- GET DocumentiEvFirst -->
282 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Files_ev_first']") >
283 <#assign DocumentiEvFirst = xPathSelector.selectNodes(SingleBlock) >
284
285 <#if DocumentiEvFirst?has_content>
286
287 <#if DocumentiEvFirst[0].getStringValue()?trim?has_content>
288 <div class="row area_download" data-aos="fade-in">
289 <div class="main_cage">
290
291 <#list DocumentiEvFirst as cur_Documenti_ev_first>
292
293 <#if cur_Documenti_ev_first.getData()?? && cur_Documenti_ev_first.getData() != "">
294 <div class="contain_row_file">
295
296 <#-- GET dynamic-content (FILE) -->
297 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
298 <#assign SingleFile = xPathSelector.selectSingleNode(cur_Documenti_ev_first).getStringValue() >
299
300 <#-- GET TITLE -->
301 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_title_ev_first']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
302 <#assign DocTitle = xPathSelector.selectSingleNode(cur_Documenti_ev_first).getStringValue() >
303
304 <#-- GET TEXT -->
305 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_text_first']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
306 <#assign DocText = xPathSelector.selectSingleNode(cur_Documenti_ev_first).getStringValue() >
307
308 <#if SingleFile?trim?has_content>
309 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SingleFile) >
310
311 <#assign classPK = JSONObj.classPK?number >
312
313 <#assign FileEntry = DLFileEntryLocalService.getDLFileEntry(classPK)>
314
315 <#assign FolderId = FileEntry.getFolderId()>
316 <#assign FileName = FileEntry.title>
317 <#assign FileNameUrl = FileName>
318 <#assign Url = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + "/" + FolderId + "/" + FileNameUrl>
319
320 <#if DocTitle?trim?has_content>
321 <#assign DocName = DocTitle>
322 <#else>
323 <#assign DocName = FileName>
324 </#if>
325
326 <#if DocText?trim?has_content>
327 <div class="pre_file_dl">${DocText}</div>
328 </#if>
329 <div class="single_dl_file d-flex align-items-center mb-4 mt-3 pb-4">
330 <i class="fas fa-file-download"></i>
331 <a href="${Url}" target="_blank" class="pl-4">${DocName} (${getDocumentSize(FileEntry.size)})</a>
332 </div>
333
334 </#if>
335 </div>
336 </#if>
337 </#list>
338 </div>
339 </div>
340 </#if>
341 </#if>
342 </#list>
343 </div>
344 </div>
345 </#if>
346 </#if>
347<#------------- FINE PRIMO BLOCCO REDAZIONALE -->
348
349
350
351<#------------- INIZIO BLOCCO IN EVIDENZA -->
352 <#if EvidenceBlocks?has_content>
353 <#assign
354 TestArray = EvidenceBlocks[0]
355 xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']")
356 Check = xPathSelector.selectSingleNode(TestArray).getStringValue()
357 />
358 <#if Check?? && Check?has_content>
359 <div class="row row_evidence pb-5">
360 <div class="main_cage">
361 <#list EvidenceBlocks as SingleEv>
362 <#-- GET dynamic-content (titolo) -->
363 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
364 <#assign Title = xPathSelector.selectSingleNode(SingleEv).getStringValue() >
365
366 <#-- GET EvImage -->
367 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='EvImage']") >
368 <#assign EvImage = xPathSelector.selectSingleNode(SingleEv) >
369
370 <#-- GET EvContent -->
371 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='EvContent']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
372 <#assign Content = xPathSelector.selectSingleNode(SingleEv).getStringValue() >
373
374 <#-- GET ExtLink -->
375 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='EvExtLink']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
376 <#assign ExtLink = xPathSelector.selectSingleNode(SingleEv).getStringValue() >
377
378
379 <#-- GET RelatedPage -->
380 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='EvRelatedPage']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
381 <#assign RelatedPageStr = xPathSelector.selectSingleNode(SingleEv).getStringValue() >
382
383 <#if RelatedPageStr?trim?has_content>
384 <#assign linkGroupId = RelatedPageStr?keep_after("public@")?trim?number >
385 <#assign linkPageId = RelatedPageStr?keep_before("@public")?trim?number>
386 <#assign linkPrivate = false>
387
388 <#-- get layout -->
389 <#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"]>
390 <#assign pageLayout = layoutLocalService.getLayout(linkGroupId, linkPrivate, linkPageId)>
391
392 <#-- get Friendly URL -->
393 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
394 <#assign friendly_page_link = portalUtil.getLayoutFriendlyURL(pageLayout, themeDisplay)>
395 </#if>
396
397 <#if SingleEv?index == 0>
398 <#assign EvClass = "" >
399 <#else>
400 <#assign EvClass = "mt-5" >
401 </#if>
402
403 <div class="block_evidence ${EvClass}">
404 <#if Title?? && Title?trim?has_content>
405 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
406 </#if>
407
408 <div class="row">
409 <#if EvImage?? && EvImage?has_content>
410 <#if EvImage?trim?has_content>
411 <#if EvImage.getStringValue()?trim?has_content>
412 <#assign WithImgClass = "col-sm-7" >
413 <#else>
414 <#assign WithImgClass = "col-sm-12" >
415 </#if>
416 </#if>
417 </#if>
418
419
420 <#if EvImage?? && EvImage?has_content>
421 <#if EvImage?trim?has_content>
422 <#if EvImage.getStringValue()?trim?has_content>
423 <div class="col-sm-5" data-aos="fade-right">
424 <#assign immagine = EvImage.getStringValue()>
425 <#assign
426 jsonField = jsonFactoryUtil.createJSONObject(immagine)
427 fileEntryId = jsonField.classPK?number
428 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
429 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
430 />
431
432 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}">
433 </div>
434 </#if>
435 </#if>
436 </#if>
437
438 <div class="${WithImgClass}" data-aos="fade-left">
439 <#if Content?trim?has_content>
440 <div class="redational_content">${Content}</div>
441 </#if>
442 <#if ExtLink?trim?has_content>
443 <a href="${ExtLink}" target="_blank">${getLabel("Scopri_di_più")}</a>
444 <#elseif friendly_page_link?? && friendly_page_link?trim?has_content>
445 <a href="${friendly_page_link}">${getLabel("Scopri_di_più")}</a>
446 </#if>
447 </div>
448 </div>
449 </div>
450
451 </#list>
452 </div>
453 </div>
454 </#if>
455 </#if>
456<#------------- FINE BLOCCO IN EVIDENZA -->
457
458
459
460
461<#------------- INIZIO SECONDO BLOCCO REDAZIONALE -->
462 <#if SecondRedationalBlocks?has_content>
463 <#assign
464 TestArray = SecondRedationalBlocks[0]
465 xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']")
466 Check = xPathSelector.selectSingleNode(TestArray).getStringValue()
467 />
468 <#if Check?? && Check?has_content>
469 <div class="row row_redational pb-5" data-aos="fade-down">
470 <div class="main_cage">
471 <#list SecondRedationalBlocks as SingleBlock>
472 <#-- GET dynamic-content (titolo) -->
473 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
474 <#assign Title = xPathSelector.selectSingleNode(SingleBlock).getStringValue() >
475 <#if Title?trim?has_content>
476 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
477 </#if>
478
479 <#-- GET 2nd_Content -->
480 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='2nd_Content']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
481 <#assign Content = xPathSelector.selectSingleNode(SingleBlock).getStringValue() >
482 <#if Content?trim?has_content>
483 <div class="redational_content pb-5">${Content}</div>
484 </#if>
485
486 <#-- GET 2nd_Gallery -->
487 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='2nd_Gallery']") >
488 <#assign Gallery = xPathSelector.selectNodes(SingleBlock) >
489
490 <#if Gallery?has_content>
491 <#if Gallery[0].getStringValue()?trim?has_content>
492 <div class="row gallery pb-5">
493 <#list Gallery as SingleImage>
494 <#if SingleImage?? && SingleImage?trim?has_content>
495 <#if SingleImage.getStringValue()?trim?has_content>
496 <#assign immagine = SingleImage.getStringValue()>
497 <#assign
498 jsonField = jsonFactoryUtil.createJSONObject(immagine)
499 fileEntryId = jsonField.classPK?number
500 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
501 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
502 />
503
504 <div class="col-sm-6 col-md-4">
505 <a class="magnific" href="${Image}">
506 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}">
507 </a>
508 </div>
509 </#if>
510 </#if>
511 </#list>
512 </div>
513 </#if>
514 </#if>
515
516 <#-- GET 2nd_Video -->
517 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='2nd_Video']") >
518 <#assign Videos = xPathSelector.selectNodes(SingleBlock) >
519
520 <#if Videos?? && Videos?has_content>
521 <#if Videos[0].getStringValue()?trim?has_content>
522 <div class="row row_video pb-5">
523 <#list Videos as SingleVideo>
524 <#assign VideoStr = SingleVideo.getStringValue() >
525 <#assign YTUrl = VideoStr?keep_before("watch?v=")?trim >
526 <#assign VideoId = VideoStr?keep_after("watch?v=")?trim>
527 <#assign UrlVideo = VideoStr?replace("watch?v=", "embed/")?trim >
528
529 <#if VideoStr?trim?has_content>
530 <div class="col-sm-6">
531 <div class="single_video">
532 <div class="video-container">
533 <iframe src="${UrlVideo}?showinfo=1&rel=0&autoplay=0" frameborder="0" allowfullscreen></iframe>
534 </div>
535 </div>
536 </div>
537 </#if>
538 </#list>
539 </div>
540 </#if>
541 </#if>
542
543 <#-- GET DocumentiEv -->
544 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Files_ev']") >
545 <#assign DocumentiEv = xPathSelector.selectNodes(SingleBlock) >
546
547 <#if DocumentiEv?has_content>
548
549 <#if DocumentiEv[0].getStringValue()?trim?has_content>
550 <div class="row area_download" data-aos="fade-in">
551 <div class="main_cage">
552
553 <#list DocumentiEv as cur_Documenti_ev>
554
555 <#if cur_Documenti_ev.getData()?? && cur_Documenti_ev.getData() != "">
556 <div class="contain_row_file">
557
558 <#-- GET dynamic-content (FILE) -->
559 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
560 <#assign SingleFile = xPathSelector.selectSingleNode(cur_Documenti_ev).getStringValue() >
561
562 <#-- GET TITLE -->
563 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_title_ev']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
564 <#assign DocTitle = xPathSelector.selectSingleNode(cur_Documenti_ev).getStringValue() >
565
566 <#-- GET TEXT -->
567 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_text']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
568 <#assign DocText = xPathSelector.selectSingleNode(cur_Documenti_ev).getStringValue() >
569
570 <#if SingleFile?trim?has_content>
571 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SingleFile) >
572
573 <#assign classPK = JSONObj.classPK?number >
574
575 <#assign FileEntry = DLFileEntryLocalService.getDLFileEntry(classPK)>
576
577 <#assign FolderId = FileEntry.getFolderId()>
578 <#assign FileName = FileEntry.title>
579 <#assign FileNameUrl = FileName>
580 <#assign Url = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + "/" + FolderId + "/" + FileNameUrl>
581
582 <#if DocTitle?trim?has_content>
583 <#assign DocName = DocTitle>
584 <#else>
585 <#assign DocName = FileName>
586 </#if>
587
588 <#if DocText?trim?has_content>
589 <div class="pre_file_dl">${DocText}</div>
590 </#if>
591 <div class="single_dl_file d-flex align-items-center mb-4 mt-3 pb-4">
592 <i class="fas fa-file-download"></i>
593 <a href="${Url}" target="_blank" class="pl-4">${DocName} (${getDocumentSize(FileEntry.size)})</a>
594 </div>
595
596 </#if>
597 </div>
598 </#if>
599 </#list>
600 </div>
601 </div>
602 </#if>
603 </#if>
604 </#list>
605 </div>
606 </div>
607 </#if>
608 </#if>
609<#------------- FINE SECONDO BLOCCO REDAZIONALE -->
610
611
612
613<#------------- INIZIO CONTENUTI RELAZIONATI -->
614 <#if Relations?has_content>
615
616 <#assign
617 TestArray = Relations[0]
618 xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']")
619 Check = xPathSelector.selectSingleNode(TestArray).getStringValue()
620 />
621 <#if Check?? && Check?has_content>
622
623
624 <#list Relations as Relation>
625
626 <#-- GET dynamic-content (TITOLO) -->
627 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
628 <#assign Title = xPathSelector.selectSingleNode(Relation).getData() >
629
630 <#-- GET TEXTREL -->
631 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='TxtRel']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
632 <#assign TxtRel = xPathSelector.selectSingleNode(Relation).getStringValue() >
633
634 <#-- GET VIEW TYPE -->
635 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ViewType']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
636 <#assign ViewType = xPathSelector.selectSingleNode(Relation).getStringValue() >
637
638 <#-- GET PAGE_RELATED -->
639 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='RelatedContents']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
640 <#assign RelatedContents = xPathSelector.selectNodes(Relation) >
641
642 <div class="row row_relations pb-5">
643 <div class="main_cage">
644
645 <#if Title?trim?has_content>
646 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
647 </#if>
648
649 <#if TxtRel?trim?has_content>
650 <div class="txt_rel pb-5">
651 ${TxtRel}
652 </div>
653 </#if>
654
655 <div class="${ViewType} contain_relations">
656 <#list RelatedContents as SingleContent>
657 <#if SingleContent.getStringValue()?trim?has_content>
658 <#assign SC2Str = SingleContent.getStringValue() >
659 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SC2Str) >
660
661 <#assign classPK = JSONObj.classPK?number >
662
663 <#assign singleEntry = getRelatedArticles(classPK) >
664
665 <#assign Title = getBaseField(singleEntry, "Title") >
666 <#assign Abstract = getBaseField(singleEntry, "Abstract") >
667 <#assign immagine = getBaseField(singleEntry, "Image") >
668
669
670 <#if immagine?trim?has_content>
671 <#assign
672 jsonField = jsonFactoryUtil.createJSONObject(immagine)
673 fileEntryId = jsonField.classPK?number
674 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
675 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
676 />
677 <#else>
678 <#assign Image = "https://via.placeholder.com/450x300?text=Placeholder">
679 </#if>
680
681
682 <#assign renderer = singleEntry.getAssetRenderer() >
683 <#assign className = renderer.getClassName() >
684 <#if className == "com.liferay.journal.model.JournalArticle" >
685 <#assign journalArticle = renderer.getArticle() >
686
687 <#assign
688 JCSLS = serviceLocator.findService("com.liferay.journal.service.JournalContentSearchLocalService")
689 groupId = journalArticle.getGroupId()
690 articleId = journalArticle.getArticleId()
691 layoutIds = JCSLS.getLayoutIds(groupId, false, articleId)
692 layoutIdsCount = JCSLS.getLayoutIdsCount(articleId)
693 />
694
695
696 <#assign
697 mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService")
698 serverName = request.getServerName()
699 viewUrl = mkspAPI.getArticleUrl(groupId, serverName, articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/placeholder")
700 />
701
702 </#if>
703
704 <#if Title?? && Title != "">
705 <div class="single_relation" data-aos="zoom-in">
706 <a href="${viewUrl}">
707 <div class="related_img">
708 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}"/>
709 </div>
710 <div class="related_content">
711 <div class="rel_title">${Title}</div>
712 <div class="rel_abstract">${Abstract}</div>
713 </div>
714 </a>
715 </div>
716 </#if>
717 </#if>
718 </#list>
719 </div>
720 </div>
721 </div>
722 </#list>
723 </#if>
724 </#if>
725<#------------- FINE CONTENUTI RELAZIONATI -->
726
727
728
729<#------------- INIZIO BLOCCHI PERSONALIZZATI -->
730<#-- GET CustomBlocks (CustomBoxs, CustomLinkPage, CustomBlockImg, CustomBlockTitle, CustomBlockDesc) -->
731 <#if CustomBlocks?has_content>
732
733 <#-- GET dynamic-content (TITOLO) -->
734 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
735 <#assign Title = xPathSelector.selectSingleNode(CustomBlocks).getData() >
736
737 <#-- GET PAGE_RELATED -->
738 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomLinkPage']") >
739 <#assign RelatedPages = xPathSelector.selectNodes(CustomBlocks) >
740
741 <div class="row row_relations pb-5">
742 <div class="main_cage">
743
744 <#if Title?trim?has_content>
745 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
746 </#if>
747
748 <div class="box_view contain_relations">
749 <#list RelatedPages as SingleContent>
750
751 <#-- GET dynamic-content (SinglePage) -->
752 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
753 <#assign SinglePage = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
754
755 <#if SinglePage?trim?has_content>
756
757 <#assign RelatedPageStr = SinglePage?trim >
758
759 <#if RelatedPageStr?trim?has_content>
760 <#assign linkGroupId = RelatedPageStr?keep_after("public@")?trim?number >
761 <#assign linkPageId = RelatedPageStr?keep_before("@public")?trim?number>
762 <#assign linkPrivate = false>
763
764 <#-- get layout -->
765 <#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"]>
766 <#assign pageLayout = layoutLocalService.getLayout(linkGroupId, linkPrivate, linkPageId)>
767
768 <#-- get Friendly URL -->
769 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
770 <#assign friendly_page_link = portalUtil.getLayoutFriendlyURL(pageLayout, themeDisplay)>
771 </#if>
772
773 <#-- GET CustomBlockImg -->
774 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockImg']") >
775 <#assign CustomBlockImg = xPathSelector.selectSingleNode(SingleContent) >
776
777 <#-- GET CustomBlockTitle -->
778 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockTitle']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
779 <#assign CustomBlockTitle = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
780
781 <#-- GET CustomBlockDesc -->
782 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockDesc']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
783 <#assign CustomBlockDesc = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
784
785 <#if CustomBlockImg?? && CustomBlockImg?has_content>
786 <#if CustomBlockImg?trim?has_content>
787 <#if CustomBlockImg.getStringValue()?trim?has_content>
788 <#assign immagine = CustomBlockImg.getStringValue()>
789 <#assign
790 jsonField = jsonFactoryUtil.createJSONObject(immagine)
791 fileEntryId = jsonField.classPK?number
792 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
793 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
794 />
795
796 <div class="single_relation" data-aos="zoom-in">
797 <a href="${friendly_page_link}">
798 <div class="related_img">
799 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}">
800 </div>
801 <div class="related_content">
802 <#if CustomBlockTitle?? && CustomBlockTitle != "">
803 <div class="rel_title">${CustomBlockTitle}</div>
804 </#if>
805 <#if CustomBlockDesc?? && CustomBlockDesc != "">
806 <div class="rel_abstract"><p>${CustomBlockDesc}</p></div>
807 </#if>
808 </div>
809 </a>
810 </div>
811 </#if>
812 </#if>
813 </#if>
814 </#if>
815 </#list>
816 </div>
817 </div>
818 </div>
819 </#if>
820<#------------- FINE BLOCCHI PERSONALIZZATI -->
821
822
823<#------------- INIZIO DOWNLOAD -->
824 <#if Documenti?has_content>
825
826 <#if Documenti[0].getStringValue()?trim?has_content>
827 <div class="row area_download pb-5" data-aos="fade-in">
828 <div class="main_cage">
829 <h2 class="section_title"><span>${getLabel("Area")}<br/>
830 ${getLabel("download")}:</span></h2>
831
832
833 <#list Documenti as cur_Documenti>
834
835 <#if cur_Documenti.getData()?? && cur_Documenti.getData() != "">
836
837 <#-- GET dynamic-content (FILE) -->
838 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
839 <#assign SingleFile = xPathSelector.selectSingleNode(cur_Documenti).getStringValue() >
840
841 <#-- GET TITLE -->
842 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_title']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
843 <#assign DocTitle = xPathSelector.selectSingleNode(cur_Documenti).getStringValue() >
844
845 <#if SingleFile?trim?has_content>
846 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SingleFile) >
847
848 <#assign classPK = JSONObj.classPK?number >
849
850 <#assign FileEntry = DLFileEntryLocalService.getDLFileEntry(classPK)>
851
852 <#assign FolderId = FileEntry.getFolderId()>
853 <#assign FileName = FileEntry.title>
854 <#assign FileNameUrl = FileName>
855 <#assign Url = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + "/" + FolderId + "/" + FileNameUrl>
856
857 <#if DocTitle?trim?has_content>
858 <#assign DocName = DocTitle>
859 <#else>
860 <#assign DocName = FileName>
861 </#if>
862
863 <div class="single_dl_file d-flex align-items-center">
864 <i class="fas fa-file-download"></i>
865 <a href="${Url}" target="_blank" class="pl-4">${DocName} (${getDocumentSize(FileEntry.size)})</a>
866 </div>
867
868 </#if>
869 </#if>
870 </#list>
871 </div>
872 </div>
873 </#if>
874 </#if>
875<#------------- FINE DOWNLOAD -->
876
877
878
879<#------------- INIZIO AGGREGATORE MOSTRE -->
880 <#if ShowExhibitions?has_content && ShowExhibitions?trim == '1'>
881 <@liferay_portlet["runtime"]
882 defaultPreferences="${preferences}"
883 portletProviderAction=portletProviderAction.VIEW
884 instanceId="get_exhibitions"
885 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
886 <#-- queryString="categoryId=${areaId}" -->
887 />
888 </#if>
889<#------------- FINE AGGREGATORE MOSTRE -->
890
891
892
893<#------------- INIZIO AGGREGATORE NEWS -->
894 <@liferay_portlet["runtime"]
895 defaultPreferences="${preferences}"
896 portletProviderAction=portletProviderAction.VIEW
897 instanceId="get_news"
898 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
899 <#-- queryString="categoryId=${IdCat}" -->
900 />
901<#------------- FINE AGGREGATORE NEWS -->
902
903
904 </#if>
905 </#list>
906 </#if>
907</div>
908
909
910<#-- getArticles from classPK -->
911<#function getRelatedArticles classPK>
912 <#assign
913 JALS = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
914 ALLS = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")
915 AELS = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
916 currentArticleResourcePrimKey = classPK
917 currentArticleAssetEntry = AELS.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey)
918 currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId()
919 currentArticleRelatedLinks = ALLS.getDirectLinks(currentArticleAssetEntryId)
920 />
921
922 <#return currentArticleAssetEntry>
923</#function>
924
925
926<#-- getBaseField Value from entry -->
927<#function getBaseField singleEntry fieldName>
928 <#assign renderer = singleEntry.getAssetRenderer() >
929 <#assign className = renderer.getClassName() >
930 <#assign field = "" >
931 <#if className == "com.liferay.journal.model.JournalArticle" >
932 <#assign journalArticle = renderer.getArticle() >
933 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
934 <#assign rootElement = document.getRootElement() >
935 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='" + fieldName + "']") >
936
937 <#if xPathSelector.selectSingleNode(rootElement)??>
938 <#assign field = xPathSelector.selectSingleNode(rootElement).getStringValue() >
939 </#if>
940
941 </#if>
942
943 <#return field>
944</#function>
945
946<#function getDocumentSize bytes>
947 <#if (bytes < 1024)>
948 <#assign result = bytes + "b">
949 <#elseif (bytes < 1048576)>
950 <#assign result = (bytes/1024)?round + "kb">
951 <#elseif (bytes < 1073741824)>
952 <#assign result = (bytes/1048576)?round + "mb">
953 <#else>
954 <#assign result = (bytes/1073741824)?round + "gb">
955 </#if>
956
957 <#return result>
958</#function>
959
960
961<#function getPrefix img width height>
962 <#assign
963 baseUrl = "https://d28r45jypu6nt9.cloudfront.net/o/d40/img/"
964 siteUrl = themeDisplay.getURLPortal()?replace("://", ".")
965 w = width
966 h = height
967 />
968 <#if height?is_string>
969 <#assign prefix = baseUrl + "w_" + w + "/" + siteUrl>
970 <#else>
971 <#assign prefix = baseUrl + "w_" + w + ",h_" + h + "/" + siteUrl>
972 </#if>
973
974 <#if !img?contains("/documents/")>
975 <#assign prefix = "">
976 </#if>
977
978 <#return prefix + img>
979</#function>
980
981<#function getLabel label>
982 <#return mkspAPI.msg(companyId, groupId, label, locale, "it", locale)>
983</#function>