Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> stringUtil.shorten(htmlUtil.stripHtml(descrizione), 200) [in template "170938#170973#213095" at line 64, column 34] ---- 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: ${stringUtil.shorten(htmlUtil.stripHt... [in template "170938#170973#213095" at line 64, column 32] ----
1<#assign
2 DLAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"]
3 mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService")
4 totale = 0
5/>
6
7<#if entries?has_content>
8 <#assign totale = entries?size>
9</#if>
10
11<section id="strip_list_master">
12 <div class="container">
13 <div class="row">
14 <div class="title_section padding-element col-md-9">
15 <h3><span>I compositori</span> delle bande Trentine</h3>
16 </div>
17 <div class="search_list col-md-3">
18 <input name="search" class="field-icon" placeholder="Cerca nell'elenco" id="doc-search" type="search">
19 <p id="results" class="text-right m-3">Risultati: ${totale}</p>
20 </div>
21 </div>
22 <#if entries?has_content>
23 <#list entries as entry>
24 <#assign
25 entry = entry
26 assetRenderer = entry.getAssetRenderer()
27 className = assetRenderer.getClassName()
28 entryTitle = htmlUtil.escape(assetRenderer.getTitle(themeDisplay.getLocale()))
29 />
30
31 <#if className == "com.liferay.journal.model.JournalArticle">
32 <#assign
33 journalArticle = assetRenderer.getArticle()
34 document = saxReaderUtil.read(journalArticle.getContent())
35 rootElement = document.getRootElement()
36 />
37
38 <#assign stringSelector = "dynamic-element[@name='foto']">
39 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
40 <#if xPathSelector.selectSingleNode(rootElement)??>
41 <#assign foto = xPathSelector.selectSingleNode(rootElement).getStringValue()>
42 <#assign fileEntryId = assetRenderer.getClassPK()>
43 <#assign jsonField = jsonFactoryUtil.createJSONObject(foto)>
44 <#assign fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId)>
45 <#assign foto = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid>
46 </#if>
47
48 <#assign stringSelector = "dynamic-element[@name='titolo_sezione']/dynamic-element[@name='descrizione_sezione']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']">
49 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>
50 <#if xPathSelector.selectSingleNode(rootElement)??>
51 <#assign descrizione = xPathSelector.selectSingleNode(rootElement).getStringValue()>
52 </#if>
53
54 <#assign viewUrl = mkspAPI.getArticleUrl(groupId, serverName, journalArticle.articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), localeUtil.fromLanguageId(themeDisplay.getLocale()), "/dettaglio-compositore")>
55
56 <div class="row block_abstract align-items-center">
57 <div class="col-md-3">
58 <div class="img_master">
59 <img src="${foto}" class="img-fluid" alt="${entryTitle}">
60 </div>
61 </div>
62 <div class="col-md-7 info_master">
63 <p class="name_master">${entryTitle}</p>
64 <p>${stringUtil.shorten(htmlUtil.stripHtml(descrizione), 200)}</p>
65 </div>
66 <div class="col-md-2 link_detail">
67 <a href="${viewUrl}">Dettagli</a> <i class="fa fa-arrow-right"></i>
68 </div>
69 </div>
70 </#if>
71 </#list>
72 </#if>
73 </div>
74</section>
75
76<#-- Search filter -->
77<script>
78 $("#doc-search").keyup(function(){
79 var filter = $(this).val().toLowerCase(),
80 count = 0;
81
82 $(".block_abstract").each(function(){
83 if($(this).text().search(new RegExp(filter, "i")) < 0){
84 $(this).addClass("d-none");
85 }else{
86 $(this).removeClass("d-none");
87 count++;
88 }
89 });
90
91 $("#results").text("Risultati: " + count);
92 });
93</script>