Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy89.getEntry(String, long)" threw an exception when invoked on com.sun.proxy.$Proxy89 object "com.liferay.asset.internal.service.AssetEntryAssetCategoryRelAssetEntryLocalServiceWrapper@4ce0504a"; 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 944, column 9] - Reached through: #assign-container [in template "114284#114319#1231320" in function "getRelatedArticles" at line 939, column 5] - Reached through: #assign singleEntry = getRelatedArtic... [in template "114284#114319#1231320" at line 669, 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 curURL = themeDisplay.getURLCurrent()
9 defLng = themeDisplay.getSiteDefaultLocale()
10
11 preferences = freeMarkerPortletPreferences.getPreferences("portletSetupPortletDecoratorId", "barebone")
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
456 <#else>
457 <div class="d-none">
458 ${jsonFactoryUtil.looseSerialize(EvidenceBlocks)}
459 </div>
460 </#if>
461<#------------- FINE BLOCCO IN EVIDENZA -->
462
463
464
465
466<#------------- INIZIO SECONDO BLOCCO REDAZIONALE -->
467 <#if SecondRedationalBlocks?has_content>
468 <#assign
469 TestArray = SecondRedationalBlocks[0]
470 xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']")
471 Check = xPathSelector.selectSingleNode(TestArray).getStringValue()
472 />
473 <#if Check?? && Check?has_content>
474 <div class="row row_redational pb-5" data-aos="fade-down">
475 <div class="main_cage">
476 <#list SecondRedationalBlocks as SingleBlock>
477 <#-- GET dynamic-content (titolo) -->
478 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
479 <#assign Title = xPathSelector.selectSingleNode(SingleBlock).getStringValue() >
480 <#if Title?trim?has_content>
481 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
482 </#if>
483
484 <#-- GET 2nd_Content -->
485 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='2nd_Content']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
486 <#assign Content = xPathSelector.selectSingleNode(SingleBlock).getStringValue() >
487 <#if Content?trim?has_content>
488 <div class="redational_content pb-5">${Content}</div>
489 </#if>
490
491 <#-- GET 2nd_Gallery -->
492 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='2nd_Gallery']") >
493 <#assign Gallery = xPathSelector.selectNodes(SingleBlock) >
494
495 <#if Gallery?has_content>
496 <#if Gallery[0].getStringValue()?trim?has_content>
497 <div class="row gallery pb-5">
498 <#list Gallery as SingleImage>
499 <#if SingleImage?? && SingleImage?trim?has_content>
500 <#if SingleImage.getStringValue()?trim?has_content>
501 <#assign immagine = SingleImage.getStringValue()>
502 <#assign
503 jsonField = jsonFactoryUtil.createJSONObject(immagine)
504 fileEntryId = jsonField.classPK?number
505 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
506 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
507 />
508
509 <div class="col-sm-6 col-md-4">
510 <a class="magnific" href="${Image}">
511 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}">
512 </a>
513 </div>
514 </#if>
515 </#if>
516 </#list>
517 </div>
518 </#if>
519 </#if>
520
521 <#-- GET 2nd_Video -->
522 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='2nd_Video']") >
523 <#assign Videos = xPathSelector.selectNodes(SingleBlock) >
524
525 <#if Videos?? && Videos?has_content>
526 <#if Videos[0].getStringValue()?trim?has_content>
527 <div class="row row_video pb-5">
528 <#list Videos as SingleVideo>
529 <#assign VideoStr = SingleVideo.getStringValue() >
530 <#assign YTUrl = VideoStr?keep_before("watch?v=")?trim >
531 <#assign VideoId = VideoStr?keep_after("watch?v=")?trim>
532 <#assign UrlVideo = VideoStr?replace("watch?v=", "embed/")?trim >
533
534 <#if VideoStr?trim?has_content>
535 <div class="col-sm-6">
536 <div class="single_video">
537 <div class="video-container">
538 <iframe src="${UrlVideo}?showinfo=1&rel=0&autoplay=0" frameborder="0" allowfullscreen></iframe>
539 </div>
540 </div>
541 </div>
542 </#if>
543 </#list>
544 </div>
545 </#if>
546 </#if>
547
548 <#-- GET DocumentiEv -->
549 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Files_ev']") >
550 <#assign DocumentiEv = xPathSelector.selectNodes(SingleBlock) >
551
552 <#if DocumentiEv?has_content>
553
554 <#if DocumentiEv[0].getStringValue()?trim?has_content>
555 <div class="row area_download" data-aos="fade-in">
556 <div class="main_cage">
557
558 <#list DocumentiEv as cur_Documenti_ev>
559
560 <#if cur_Documenti_ev.getData()?? && cur_Documenti_ev.getData() != "">
561 <div class="contain_row_file">
562
563 <#-- GET dynamic-content (FILE) -->
564 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
565 <#assign SingleFile = xPathSelector.selectSingleNode(cur_Documenti_ev).getStringValue() >
566
567 <#-- GET TITLE -->
568 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_title_ev']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
569 <#assign DocTitle = xPathSelector.selectSingleNode(cur_Documenti_ev).getStringValue() >
570
571 <#-- GET TEXT -->
572 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_text']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
573 <#assign DocText = xPathSelector.selectSingleNode(cur_Documenti_ev).getStringValue() >
574
575 <#if SingleFile?trim?has_content>
576 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SingleFile) >
577
578 <#assign classPK = JSONObj.classPK?number >
579
580 <#assign FileEntry = DLFileEntryLocalService.getDLFileEntry(classPK)>
581
582 <#assign FolderId = FileEntry.getFolderId()>
583 <#assign FileName = FileEntry.title>
584 <#assign FileNameUrl = FileName>
585 <#assign Url = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + "/" + FolderId + "/" + FileNameUrl>
586
587 <#if DocTitle?trim?has_content>
588 <#assign DocName = DocTitle>
589 <#else>
590 <#assign DocName = FileName>
591 </#if>
592
593 <#if DocText?trim?has_content>
594 <div class="pre_file_dl">${DocText}</div>
595 </#if>
596 <div class="single_dl_file d-flex align-items-center mb-4 mt-3 pb-4">
597 <i class="fas fa-file-download"></i>
598 <a href="${Url}" target="_blank" class="pl-4">${DocName} (${getDocumentSize(FileEntry.size)})</a>
599 </div>
600
601 </#if>
602 </div>
603 </#if>
604 </#list>
605 </div>
606 </div>
607 </#if>
608 </#if>
609 </#list>
610 </div>
611 </div>
612 </#if>
613 </#if>
614<#------------- FINE SECONDO BLOCCO REDAZIONALE -->
615
616
617
618<#------------- INIZIO CONTENUTI RELAZIONATI -->
619 <#if Relations?has_content>
620
621 <#assign
622 TestArray = Relations[0]
623 xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']")
624 Check = xPathSelector.selectSingleNode(TestArray).getStringValue()
625 />
626 <#if Check?? && Check?has_content>
627
628
629 <#list Relations as Relation>
630
631 <#-- GET dynamic-content (TITOLO) -->
632 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
633 <#assign Title = xPathSelector.selectSingleNode(Relation).getData() >
634
635 <#-- GET TEXTREL -->
636 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='TxtRel']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
637 <#assign TxtRel = xPathSelector.selectSingleNode(Relation).getStringValue() >
638
639 <#-- GET VIEW TYPE -->
640 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ViewType']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
641 <#assign ViewType = xPathSelector.selectSingleNode(Relation).getStringValue() >
642
643 <#-- GET PAGE_RELATED -->
644 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='RelatedContents']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
645 <#assign RelatedContents = xPathSelector.selectNodes(Relation) >
646
647 <#if Title?trim?has_content>
648 <div class="row row_relations pb-5">
649 <div class="main_cage">
650
651 <#if Title?trim?has_content>
652 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
653 </#if>
654
655 <#if TxtRel?trim?has_content>
656 <div class="txt_rel pb-5">
657 ${TxtRel}
658 </div>
659 </#if>
660
661 <div class="${ViewType} contain_relations">
662 <#list RelatedContents as SingleContent>
663 <#if SingleContent.getStringValue()?trim?has_content>
664 <#assign SC2Str = SingleContent.getStringValue() >
665 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SC2Str) >
666
667 <#assign classPK = JSONObj.classPK?number >
668
669 <#assign singleEntry = getRelatedArticles(classPK) >
670
671 <#assign Title = getBaseField(singleEntry, "Title") >
672 <#assign Abstract = getBaseField(singleEntry, "Abstract") >
673 <#assign immagine = getBaseField(singleEntry, "Image") >
674
675
676 <#if immagine?trim?has_content>
677 <#assign
678 jsonField = jsonFactoryUtil.createJSONObject(immagine)
679 fileEntryId = jsonField.classPK?number
680 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
681 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
682 />
683 <#else>
684 <#assign Image = "https://via.placeholder.com/450x300?text=Placeholder">
685 </#if>
686
687
688 <#assign renderer = singleEntry.getAssetRenderer() >
689 <#assign className = renderer.getClassName() >
690 <#if className == "com.liferay.journal.model.JournalArticle" >
691 <#assign journalArticle = renderer.getArticle() >
692
693 <#assign
694 JCSLS = serviceLocator.findService("com.liferay.journal.service.JournalContentSearchLocalService")
695 groupId = journalArticle.getGroupId()
696 articleId = journalArticle.getArticleId()
697 layoutIds = JCSLS.getLayoutIds(groupId, false, articleId)
698 layoutIdsCount = JCSLS.getLayoutIdsCount(articleId)
699 />
700
701
702 <#assign
703 mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService")
704 serverName = request.getServerName()
705 viewUrl = mkspAPI.getArticleUrl(groupId, serverName, articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/placeholder")
706 />
707
708 </#if>
709
710 <#if Title?? && Title != "">
711 <div class="single_relation" data-aos="zoom-in">
712 <a href="${viewUrl}">
713 <div class="related_img">
714 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}"/>
715 </div>
716 <div class="related_content">
717 <div class="rel_title">${Title}</div>
718 <div class="rel_abstract">${Abstract}</div>
719 </div>
720 </a>
721 </div>
722 </#if>
723 </#if>
724 </#list>
725 </div>
726 </div>
727 </div>
728 </#if>
729 </#list>
730 </#if>
731 </#if>
732<#------------- FINE CONTENUTI RELAZIONATI -->
733
734
735
736<#------------- INIZIO BLOCCHI PERSONALIZZATI -->
737<#-- GET CustomBlocks (CustomBoxs, CustomLinkPage, CustomBlockImg, CustomBlockTitle, CustomBlockDesc) -->
738 <#if CustomBlocks?has_content>
739
740 <#-- GET dynamic-content (TITOLO) -->
741 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
742 <#assign Title = xPathSelector.selectSingleNode(CustomBlocks).getData() >
743
744 <#-- GET PAGE_RELATED -->
745 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomLinkPage']") >
746 <#assign RelatedPages = xPathSelector.selectNodes(CustomBlocks) >
747
748 <#if Title?trim?has_content>
749 <div class="row row_relations pb-5">
750 <div class="main_cage">
751
752 <#if Title?trim?has_content>
753 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
754 </#if>
755
756 <div class="box_view contain_relations">
757 <#list RelatedPages as SingleContent>
758
759 <#-- GET dynamic-content (SinglePage) -->
760 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
761 <#assign SinglePage = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
762
763 <#if SinglePage?trim?has_content>
764
765 <#assign RelatedPageStr = SinglePage?trim >
766
767 <#if RelatedPageStr?trim?has_content>
768 <#assign linkGroupId = RelatedPageStr?keep_after("public@")?trim?number >
769 <#assign linkPageId = RelatedPageStr?keep_before("@public")?trim?number>
770 <#assign linkPrivate = false>
771
772 <#-- get layout -->
773 <#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"]>
774 <#assign pageLayout = layoutLocalService.getLayout(linkGroupId, linkPrivate, linkPageId)>
775
776 <#-- get Friendly URL -->
777 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
778 <#assign friendly_page_link = portalUtil.getLayoutFriendlyURL(pageLayout, themeDisplay)>
779 </#if>
780
781 <#-- GET CustomBlockImg -->
782 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockImg']") >
783 <#assign CustomBlockImg = xPathSelector.selectSingleNode(SingleContent) >
784
785 <#-- GET CustomBlockTitle -->
786 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockTitle']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
787 <#assign CustomBlockTitle = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
788
789 <#-- GET CustomBlockDesc -->
790 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockDesc']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
791 <#assign CustomBlockDesc = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
792
793 <#if CustomBlockImg?? && CustomBlockImg?has_content>
794 <#if CustomBlockImg?trim?has_content>
795 <#if CustomBlockImg.getStringValue()?trim?has_content>
796 <#assign immagine = CustomBlockImg.getStringValue()>
797 <#assign
798 jsonField = jsonFactoryUtil.createJSONObject(immagine)
799 fileEntryId = jsonField.classPK?number
800 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
801 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
802 />
803
804 <div class="single_relation" data-aos="zoom-in">
805 <a href="${friendly_page_link}">
806 <div class="related_img">
807 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}">
808 </div>
809 <div class="related_content">
810 <#if CustomBlockTitle?? && CustomBlockTitle != "">
811 <div class="rel_title">${CustomBlockTitle}</div>
812 </#if>
813 <#if CustomBlockDesc?? && CustomBlockDesc != "">
814 <div class="rel_abstract"><p>${CustomBlockDesc}</p></div>
815 </#if>
816 </div>
817 </a>
818 </div>
819 </#if>
820 </#if>
821 </#if>
822 </#if>
823 </#list>
824 </div>
825 </div>
826 </div>
827 </#if>
828 </#if>
829<#------------- FINE BLOCCHI PERSONALIZZATI -->
830
831
832<#------------- INIZIO DOWNLOAD -->
833 <#if Documenti?has_content>
834
835 <#if Documenti[0].getStringValue()?trim?has_content>
836 <div class="row area_download pb-5" data-aos="fade-in">
837 <div class="main_cage">
838 <h2 class="section_title"><span>${getLabel("Area")}<br/>
839 ${getLabel("download")}:</span></h2>
840
841
842 <#list Documenti as cur_Documenti>
843
844 <#if cur_Documenti.getData()?? && cur_Documenti.getData() != "">
845
846 <#-- GET dynamic-content (FILE) -->
847 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
848 <#assign SingleFile = xPathSelector.selectSingleNode(cur_Documenti).getStringValue() >
849
850 <#-- GET TITLE -->
851 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_title']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
852 <#assign DocTitle = xPathSelector.selectSingleNode(cur_Documenti).getStringValue() >
853
854 <#if SingleFile?trim?has_content>
855 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SingleFile) >
856
857 <#assign classPK = JSONObj.classPK?number >
858
859 <#assign FileEntry = DLFileEntryLocalService.getDLFileEntry(classPK)>
860
861 <#assign FolderId = FileEntry.getFolderId()>
862 <#assign FileName = FileEntry.title>
863 <#assign FileNameUrl = FileName>
864 <#assign Url = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + "/" + FolderId + "/" + FileNameUrl>
865
866 <#if DocTitle?trim?has_content>
867 <#assign DocName = DocTitle>
868 <#else>
869 <#assign DocName = FileName>
870 </#if>
871
872 <div class="single_dl_file d-flex align-items-center">
873 <i class="fas fa-file-download"></i>
874 <a href="${Url}" target="_blank" class="pl-4">${DocName} (${getDocumentSize(FileEntry.size)})</a>
875 </div>
876
877 </#if>
878 </#if>
879 </#list>
880 </div>
881 </div>
882 </#if>
883 </#if>
884<#------------- FINE DOWNLOAD -->
885
886
887<#-- Injection in mets per tutti -->
888<#if curURL == "/il-mets-per-tutti">
889 <script type="text/javascript">
890 (function (w,d,s,o,f,js,fjs) {
891 w['GingerWidget']=o;w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
892 js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
893 js.id = o; js.src = f; js.async = 1; fjs.parentNode.insertBefore(js, fjs);
894 }(window, document, 'script', 'igp', '//www.ideaginger.it/js-widget-svg/widgetProgetto.js'));
895 // Parametri progetto //
896 igp('init', { progettoGinger: 'il-mets-per-tutti', IDprogetto: 'ID-3579', wdBox: 'auto'}); // [wdBox: auto || verticale || orizzontale]
897 // --------------------------- //
898 </script>
899
900 <section id="il-mets-per-tutti" class="container"></section>
901</#if>
902<#-- fine Injection -->
903
904
905
906<#------------- INIZIO AGGREGATORE MOSTRE -->
907 <#if ShowExhibitions?has_content && ShowExhibitions?trim == '1'>
908 <@liferay_portlet["runtime"]
909 defaultPreferences="${preferences}"
910 portletProviderAction=portletProviderAction.VIEW
911 instanceId="get_exhibitions"
912 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
913 <#-- queryString="categoryId=${areaId}" -->
914 />
915 </#if>
916<#------------- FINE AGGREGATORE MOSTRE -->
917
918
919
920<#------------- INIZIO AGGREGATORE NEWS -->
921 <@liferay_portlet["runtime"]
922 defaultPreferences="${preferences}"
923 portletProviderAction=portletProviderAction.VIEW
924 instanceId="get_news"
925 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
926 <#-- queryString="categoryId=${IdCat}" -->
927 />
928<#------------- FINE AGGREGATORE NEWS -->
929
930
931 </#if>
932 </#list>
933 </#if>
934</div>
935
936
937<#-- getArticles from classPK -->
938<#function getRelatedArticles classPK>
939 <#assign
940 JALS = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
941 ALLS = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")
942 AELS = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
943 currentArticleResourcePrimKey = classPK
944 currentArticleAssetEntry = AELS.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey)
945 currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId()
946 currentArticleRelatedLinks = ALLS.getDirectLinks(currentArticleAssetEntryId)
947 />
948
949 <#return currentArticleAssetEntry>
950</#function>
951
952
953<#-- getBaseField Value from entry -->
954<#function getBaseField singleEntry fieldName>
955 <#assign renderer = singleEntry.getAssetRenderer() >
956 <#assign className = renderer.getClassName() >
957 <#assign field = "" >
958 <#if className == "com.liferay.journal.model.JournalArticle" >
959 <#assign journalArticle = renderer.getArticle() >
960 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
961 <#assign rootElement = document.getRootElement() >
962 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='" + fieldName + "']") >
963
964 <#if xPathSelector.selectSingleNode(rootElement)??>
965 <#assign field = xPathSelector.selectSingleNode(rootElement).getStringValue() >
966 </#if>
967
968 </#if>
969
970 <#return field>
971</#function>
972
973<#function getDocumentSize bytes>
974 <#if (bytes < 1024)>
975 <#assign result = bytes + "b">
976 <#elseif (bytes < 1048576)>
977 <#assign result = (bytes/1024)?round + "kb">
978 <#elseif (bytes < 1073741824)>
979 <#assign result = (bytes/1048576)?round + "mb">
980 <#else>
981 <#assign result = (bytes/1073741824)?round + "gb">
982 </#if>
983
984 <#return result>
985</#function>
986
987
988<#function getPrefix img width height>
989 <#assign
990 baseUrl = "https://d28r45jypu6nt9.cloudfront.net/o/d40/img/"
991 siteUrl = themeDisplay.getURLPortal()?replace("://", ".")
992 w = width
993 h = height
994 />
995 <#if height?is_string>
996 <#assign prefix = baseUrl + "w_" + w + "/" + siteUrl>
997 <#else>
998 <#assign prefix = baseUrl + "w_" + w + ",h_" + h + "/" + siteUrl>
999 </#if>
1000
1001 <#if !img?contains("/documents/")>
1002 <#assign prefix = "">
1003 </#if>
1004
1005 <#return prefix + img>
1006</#function>
1007
1008<#function getLabel label>
1009 <#return mkspAPI.msg(companyId, groupId, label, locale, "it", locale)>
1010</#function>