Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> renderer.getArticle() [in template "114284#114319#1231320" at line 937, column 35] ---- 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 journalArticle = renderer.get... [in template "114284#114319#1231320" in function "getBaseField" at line 937, column 9] - Reached through: #assign Title = getBaseField(singleEn... [in template "114284#114319#1231320" at line 670, 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
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 <div class="row row_relations pb-5">
648 <div class="main_cage">
649
650 <#if Title?trim?has_content>
651 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
652 </#if>
653
654 <#if TxtRel?trim?has_content>
655 <div class="txt_rel pb-5">
656 ${TxtRel}
657 </div>
658 </#if>
659
660 <div class="${ViewType} contain_relations">
661 <#list RelatedContents as SingleContent>
662 <#if SingleContent.getStringValue()?trim?has_content>
663 <#assign SC2Str = SingleContent.getStringValue() >
664 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SC2Str) >
665
666 <#assign classPK = JSONObj.classPK?number >
667
668 <#assign singleEntry = getRelatedArticles(classPK) >
669
670 <#assign Title = getBaseField(singleEntry, "Title") >
671 <#assign Abstract = getBaseField(singleEntry, "Abstract") >
672 <#assign immagine = getBaseField(singleEntry, "Image") >
673
674
675 <#if immagine?trim?has_content>
676 <#assign
677 jsonField = jsonFactoryUtil.createJSONObject(immagine)
678 fileEntryId = jsonField.classPK?number
679 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
680 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
681 />
682 <#else>
683 <#assign Image = "https://via.placeholder.com/450x300?text=Placeholder">
684 </#if>
685
686
687 <#assign renderer = singleEntry.getAssetRenderer() >
688 <#assign className = renderer.getClassName() >
689 <#if className == "com.liferay.journal.model.JournalArticle" >
690 <#assign journalArticle = renderer.getArticle() >
691
692 <#assign
693 JCSLS = serviceLocator.findService("com.liferay.journal.service.JournalContentSearchLocalService")
694 groupId = journalArticle.getGroupId()
695 articleId = journalArticle.getArticleId()
696 layoutIds = JCSLS.getLayoutIds(groupId, false, articleId)
697 layoutIdsCount = JCSLS.getLayoutIdsCount(articleId)
698 />
699
700
701 <#assign
702 mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService")
703 serverName = request.getServerName()
704 viewUrl = mkspAPI.getArticleUrl(groupId, serverName, articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/placeholder")
705 />
706
707 </#if>
708
709 <#if Title?? && Title != "">
710 <div class="single_relation" data-aos="zoom-in">
711 <a href="${viewUrl}">
712 <div class="related_img">
713 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}"/>
714 </div>
715 <div class="related_content">
716 <div class="rel_title">${Title}</div>
717 <div class="rel_abstract">${Abstract}</div>
718 </div>
719 </a>
720 </div>
721 </#if>
722 </#if>
723 </#list>
724 </div>
725 </div>
726 </div>
727 </#list>
728 </#if>
729 </#if>
730<#------------- FINE CONTENUTI RELAZIONATI -->
731
732
733
734<#------------- INIZIO BLOCCHI PERSONALIZZATI -->
735<#-- GET CustomBlocks (CustomBoxs, CustomLinkPage, CustomBlockImg, CustomBlockTitle, CustomBlockDesc) -->
736 <#if CustomBlocks?has_content>
737
738 <#-- GET dynamic-content (TITOLO) -->
739 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
740 <#assign Title = xPathSelector.selectSingleNode(CustomBlocks).getData() >
741
742 <#-- GET PAGE_RELATED -->
743 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomLinkPage']") >
744 <#assign RelatedPages = xPathSelector.selectNodes(CustomBlocks) >
745
746 <div class="row row_relations pb-5">
747 <div class="main_cage">
748
749 <#if Title?trim?has_content>
750 <h2 class="section_title"><span>${htmlUtil.replaceNewLine(Title)}</span></h2>
751 </#if>
752
753 <div class="box_view contain_relations">
754 <#list RelatedPages as SingleContent>
755
756 <#-- GET dynamic-content (SinglePage) -->
757 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
758 <#assign SinglePage = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
759
760 <#if SinglePage?trim?has_content>
761
762 <#assign RelatedPageStr = SinglePage?trim >
763
764 <#if RelatedPageStr?trim?has_content>
765 <#assign linkGroupId = RelatedPageStr?keep_after("public@")?trim?number >
766 <#assign linkPageId = RelatedPageStr?keep_before("@public")?trim?number>
767 <#assign linkPrivate = false>
768
769 <#-- get layout -->
770 <#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"]>
771 <#assign pageLayout = layoutLocalService.getLayout(linkGroupId, linkPrivate, linkPageId)>
772
773 <#-- get Friendly URL -->
774 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
775 <#assign friendly_page_link = portalUtil.getLayoutFriendlyURL(pageLayout, themeDisplay)>
776 </#if>
777
778 <#-- GET CustomBlockImg -->
779 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockImg']") >
780 <#assign CustomBlockImg = xPathSelector.selectSingleNode(SingleContent) >
781
782 <#-- GET CustomBlockTitle -->
783 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockTitle']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
784 <#assign CustomBlockTitle = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
785
786 <#-- GET CustomBlockDesc -->
787 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CustomBlockDesc']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
788 <#assign CustomBlockDesc = xPathSelector.selectSingleNode(SingleContent).getStringValue() >
789
790 <#if CustomBlockImg?? && CustomBlockImg?has_content>
791 <#if CustomBlockImg?trim?has_content>
792 <#if CustomBlockImg.getStringValue()?trim?has_content>
793 <#assign immagine = CustomBlockImg.getStringValue()>
794 <#assign
795 jsonField = jsonFactoryUtil.createJSONObject(immagine)
796 fileEntryId = jsonField.classPK?number
797 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)
798 Image = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid
799 />
800
801 <div class="single_relation" data-aos="zoom-in">
802 <a href="${friendly_page_link}">
803 <div class="related_img">
804 <img class="lazy-load" datasrc="${getPrefix(Image, 720, 480)}" src="" alt="${jsonField.alt}">
805 </div>
806 <div class="related_content">
807 <#if CustomBlockTitle?? && CustomBlockTitle != "">
808 <div class="rel_title">${CustomBlockTitle}</div>
809 </#if>
810 <#if CustomBlockDesc?? && CustomBlockDesc != "">
811 <div class="rel_abstract"><p>${CustomBlockDesc}</p></div>
812 </#if>
813 </div>
814 </a>
815 </div>
816 </#if>
817 </#if>
818 </#if>
819 </#if>
820 </#list>
821 </div>
822 </div>
823 </div>
824 </#if>
825<#------------- FINE BLOCCHI PERSONALIZZATI -->
826
827
828<#------------- INIZIO DOWNLOAD -->
829 <#if Documenti?has_content>
830
831 <#if Documenti[0].getStringValue()?trim?has_content>
832 <div class="row area_download pb-5" data-aos="fade-in">
833 <div class="main_cage">
834 <h2 class="section_title"><span>${getLabel("Area")}<br/>
835 ${getLabel("download")}:</span></h2>
836
837
838 <#list Documenti as cur_Documenti>
839
840 <#if cur_Documenti.getData()?? && cur_Documenti.getData() != "">
841
842 <#-- GET dynamic-content (FILE) -->
843 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
844 <#assign SingleFile = xPathSelector.selectSingleNode(cur_Documenti).getStringValue() >
845
846 <#-- GET TITLE -->
847 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Doc_title']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']") >
848 <#assign DocTitle = xPathSelector.selectSingleNode(cur_Documenti).getStringValue() >
849
850 <#if SingleFile?trim?has_content>
851 <#assign JSONObj = jsonFactoryUtil.createJSONObject(SingleFile) >
852
853 <#assign classPK = JSONObj.classPK?number >
854
855 <#assign FileEntry = DLFileEntryLocalService.getDLFileEntry(classPK)>
856
857 <#assign FolderId = FileEntry.getFolderId()>
858 <#assign FileName = FileEntry.title>
859 <#assign FileNameUrl = FileName>
860 <#assign Url = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + "/" + FolderId + "/" + FileNameUrl>
861
862 <#if DocTitle?trim?has_content>
863 <#assign DocName = DocTitle>
864 <#else>
865 <#assign DocName = FileName>
866 </#if>
867
868 <div class="single_dl_file d-flex align-items-center">
869 <i class="fas fa-file-download"></i>
870 <a href="${Url}" target="_blank" class="pl-4">${DocName} (${getDocumentSize(FileEntry.size)})</a>
871 </div>
872
873 </#if>
874 </#if>
875 </#list>
876 </div>
877 </div>
878 </#if>
879 </#if>
880<#------------- FINE DOWNLOAD -->
881
882
883
884<#------------- INIZIO AGGREGATORE MOSTRE -->
885 <#if ShowExhibitions?has_content && ShowExhibitions?trim == '1'>
886 <@liferay_portlet["runtime"]
887 defaultPreferences="${preferences}"
888 portletProviderAction=portletProviderAction.VIEW
889 instanceId="get_exhibitions"
890 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
891 <#-- queryString="categoryId=${areaId}" -->
892 />
893 </#if>
894<#------------- FINE AGGREGATORE MOSTRE -->
895
896
897
898<#------------- INIZIO AGGREGATORE NEWS -->
899 <@liferay_portlet["runtime"]
900 defaultPreferences="${preferences}"
901 portletProviderAction=portletProviderAction.VIEW
902 instanceId="get_news"
903 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
904 <#-- queryString="categoryId=${IdCat}" -->
905 />
906<#------------- FINE AGGREGATORE NEWS -->
907
908
909 </#if>
910 </#list>
911 </#if>
912</div>
913
914
915<#-- getArticles from classPK -->
916<#function getRelatedArticles classPK>
917 <#assign
918 JALS = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
919 ALLS = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")
920 AELS = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
921 currentArticleResourcePrimKey = classPK
922 currentArticleAssetEntry = AELS.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey)
923 currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId()
924 currentArticleRelatedLinks = ALLS.getDirectLinks(currentArticleAssetEntryId)
925 />
926
927 <#return currentArticleAssetEntry>
928</#function>
929
930
931<#-- getBaseField Value from entry -->
932<#function getBaseField singleEntry fieldName>
933 <#assign renderer = singleEntry.getAssetRenderer() >
934 <#assign className = renderer.getClassName() >
935 <#assign field = "" >
936 <#if className == "com.liferay.journal.model.JournalArticle" >
937 <#assign journalArticle = renderer.getArticle() >
938 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
939 <#assign rootElement = document.getRootElement() >
940 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='" + fieldName + "']") >
941
942 <#if xPathSelector.selectSingleNode(rootElement)??>
943 <#assign field = xPathSelector.selectSingleNode(rootElement).getStringValue() >
944 </#if>
945
946 </#if>
947
948 <#return field>
949</#function>
950
951<#function getDocumentSize bytes>
952 <#if (bytes < 1024)>
953 <#assign result = bytes + "b">
954 <#elseif (bytes < 1048576)>
955 <#assign result = (bytes/1024)?round + "kb">
956 <#elseif (bytes < 1073741824)>
957 <#assign result = (bytes/1048576)?round + "mb">
958 <#else>
959 <#assign result = (bytes/1073741824)?round + "gb">
960 </#if>
961
962 <#return result>
963</#function>
964
965
966<#function getPrefix img width height>
967 <#assign
968 baseUrl = "https://d28r45jypu6nt9.cloudfront.net/o/d40/img/"
969 siteUrl = themeDisplay.getURLPortal()?replace("://", ".")
970 w = width
971 h = height
972 />
973 <#if height?is_string>
974 <#assign prefix = baseUrl + "w_" + w + "/" + siteUrl>
975 <#else>
976 <#assign prefix = baseUrl + "w_" + w + ",h_" + h + "/" + siteUrl>
977 </#if>
978
979 <#if !img?contains("/documents/")>
980 <#assign prefix = "">
981 </#if>
982
983 <#return prefix + img>
984</#function>
985
986<#function getLabel label>
987 <#return mkspAPI.msg(companyId, groupId, label, locale, "it", locale)>
988</#function>