An error occurred while processing the template.
The following has evaluated to null or missing:
==> testo  [in template "114284#114319#581019" at line 163, column 51]

----
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: ${testo}  [in template "114284#114319#581019" at line 163, column 49]
----
1<#assign 
2    DLAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 
3    mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService") 
4    catsService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
5    serverName = request.getServerName() 
6    defLng = themeDisplay.getSiteDefaultLocale() 
7     
8    id_vocabolario_diario = 572714 
9/> 
10<div class="gradient_bg"> 
11    <div class="page_content container-fluid text-center pt-5 pb-0"> 
12    	<h1 class="pb-3">Il nostro Diario</h1> 
13    	<img style="max-width:200px;" src="${themeDisplay.getPathThemeImages()}/diario.png"/> 
14    </div> 
15     
16    <div class="row_di_cosa_parliamo container pb-5" style="display:none !important;"> 
17     
18    	<div class="row justify-content-center"> 
19     
20            <#list catsService.getVocabularyCategories(id_vocabolario_diario, -1, -1, null) as cat> 
21                <#assign  
22                    catUrl = renderResponse.createRenderURL() 
23                /> 
24                 
25    	        ${catUrl.setParameter("categoryId", cat.categoryId?string)} 
26                 
27                <a href="${catUrl}" class="col-lg-4 col-md-6 my-2"> 
28        			<div class=" d-flex align-items-center p-1 single_argomento"> 
29        			    <#assign full_obj = jsonFactoryUtil.looseSerialize(cat) > 
30                        ${jsonFactoryUtil.createJSONObject(full_obj).getString("descriptionCurrentValue")} 
31        				<p class="pl-3">${cat.getName()}</p> 
32        			</div> 
33        		</a> 
34            </#list> 
35     
36    	</div> 
37    </div> 
38     
39    <div class="list_blog container pb-5"> 
40    	<div class="row row_principale"> 
41    	 
42            <#if entries?has_content> 
43             
44                <#assign  
45                    num_block = 1 
46                /> 
47             
48                <div class="col-lg-8"> 
49                <#list entries as entry> 
50                    <#assign 
51                        entry = entry 
52                        assetRenderer = entry.getAssetRenderer() 
53                        className = assetRenderer.getClassName() 
54                        entryTitle = htmlUtil.escape(assetRenderer.getTitle(themeDisplay.getLocale())) 
55                    /> 
56                    
57                    <#if className == "com.liferay.journal.model.JournalArticle"> 
58                        <#assign 
59                            journalArticle = assetRenderer.getArticle() 
60                            document = saxReaderUtil.read(journalArticle.getContent()) 
61                            rootElement = document.getRootElement() 
62                        /> 
63                         
64                         
65                        <#-- FORMATTAZIONE DATA ("dataContenuto" è la data finale da usare) --> 
66                         
67                        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Datacd0n']")>  
68                        <#if xPathSelector.selectSingleNode(rootElement)??> 
69                            <#assign stringData = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim> 
70                            <#setting locale = themeDisplay.getLocale()> 
71                             
72                            <#if validator.isNotNull(stringData)> 
73                                <#assign dataObj = dateUtil.parseDate("yyyy-MM-dd", stringData, locale)> 
74                                <#assign dataContenuto = dateUtil.getDate(dataObj, "dd MMMM yyyy", locale)> 
75                            <#else> 
76                                <#assign dataContenuto = ""> 
77                            </#if> 
78                        </#if> 
79                        
80                        <#assign stringSelector = "dynamic-element[@name='ImmaginePrincipale']"> 
81                        <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 
82                        <#if xPathSelector.selectSingleNode(rootElement)??> 
83                            <#assign 
84                                immagine = xPathSelector.selectSingleNode(rootElement).getStringValue() 
85                                fileEntryId = assetRenderer.getClassPK() 
86                            /> 
87                            <#if immagine?trim?has_content> 
88                                <#assign 
89                                    jsonField = jsonFactoryUtil.createJSONObject(immagine) 
90                                    fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId) 
91                                    immagine = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid 
92                                /> 
93                            <#else> 
94                                <#assign immagine = "https://via.placeholder.com/450x300?text=Placeholder"> 
95                            </#if> 
96                        </#if> 
97                         
98                        <#assign stringSelector = "dynamic-element[@name='Icona']"> 
99                        <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 
100                        <#if xPathSelector.selectSingleNode(rootElement)??> 
101                            <#assign 
102                                icona = xPathSelector.selectSingleNode(rootElement).getStringValue() 
103                                fileEntryId = assetRenderer.getClassPK() 
104                            /> 
105                            <#if icona?trim?has_content> 
106                                <#assign 
107                                    jsonField = jsonFactoryUtil.createJSONObject(icona) 
108                                    fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId) 
109                                    icona = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid 
110                                /> 
111                            <#else> 
112                                <#assign icona = "https://via.placeholder.com/450x300?text=Placeholder"> 
113                            </#if> 
114                        </#if> 
115                        
116                        <#assign stringSelector = "dynamic-element[@name='DescrizioneBreve']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']"> 
117                        <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 
118                        <#if xPathSelector.selectSingleNode(rootElement)??> 
119                            <#assign testo = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
120                        </#if> 
121                        
122                        <#assign stringSelector = "dynamic-element[@name='ext_link']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']"> 
123                        <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 
124                        <#if xPathSelector.selectSingleNode(rootElement)??> 
125                            <#assign viewUrl = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
126                            <#assign blank = "target='_blank'"> 
127                            <#if viewUrl?trim == ''> 
128                                <#assign blank = ""> 
129                                <#assign viewUrl = mkspAPI.getArticleUrl(groupId, serverName, journalArticle.articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/articoli-diario")> 
130                            </#if> 
131                        <#else> 
132                            <#assign viewUrl = mkspAPI.getArticleUrl(groupId, serverName, journalArticle.articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/articoli-diario")> 
133                        </#if> 
134         
135         
136                        <#assign 
137                            list_categories = entry.getCategories() 
138                        /> 
139         
140                        <#if num_block == 1> 
141                            <!-- blocco principale - immagine centrale con testo sotto --> 
142                			<div class="blocco_principale text_content text-center my-2 mt-sm-5 p-3 pb-5"> 
143                                <div class="btn_diary"> 
144                                    <#list list_categories as single_cat> 
145                                        <span class="btn mt-4 ml-4"> 
146                                            ${single_cat.getName()} 
147                                        </span> 
148                                    </#list> 
149                                </div> 
150     
151                                <div class="contain_img"> 
152                				    <img src="${immagine}"> 
153            				    </div> 
154            				    <div class="btn_diary" style="position:relative;"> 
155        							<#list list_categories as single_cat> 
156                                        <span class="btn mt-5"> 
157                                            ${single_cat.getName()} 
158                                        </span> 
159                                    </#list> 
160                                </div> 
161                				<h2 class="pt-2">${entryTitle}</h2> 
162                				<span class="d-block pb-2">${dataContenuto}</span> 
163                				${testo} 
164                				<!-- lo stile lo trovi nel general style --> 
165                				<a href="${viewUrl}" ${blank} class="vedi_tutte">leggi tutto</a> 
166                			</div> 
167            			<#elseif num_block == 2 || num_block == 3> 
168                			<div class="text_on_block <#if num_block == 2>pos_left<#else>pos_right</#if> my-md-0 my-2"> 
169            					<div class="text_content text-center p-sm-4 p-3 w-100 h-100"> 
170            					    <a href="${viewUrl}" ${blank}> 
171            					        <div class="contain_img mb-4"> 
172                						    <img src="${getPrefix(immagine, 320, '')}"> 
173            						    </div> 
174                						<div class="btn_diary"> 
175                    						<#list list_categories as single_cat> 
176                                                <span class="btn"> 
177                                                    ${single_cat.getName()} 
178                                                </span> 
179                                            </#list> 
180                                        </div> 
181                						<h2 class="pt-4"> 
182                							${entryTitle} 
183                						</h2> 
184                						<span class="d-block pb-2">${dataContenuto}</span> 
185                						${testo} 
186            						</a> 
187            					</div> 
188                			</div> 
189                        <#elseif num_block == 4> 
190                			<!-- immagine sulla sinistra con testo a destra --> 
191                			<div class="text_content clear_this text-center mt-sm-5 p-sm-4 p-3"> 
192                				<a href="${viewUrl}" ${blank} class="row align-items-center"> 
193                				 
194                					<div class="col-md-6"> 
195                					    <div class="contain_img"> 
196                						    <img src="${getPrefix(immagine, 350, '')}"> 
197            						    </div> 
198                					</div> 
199                 
200                					<div class="col-md-6"> 
201                					    <div class="btn_diary"> 
202                    						<#list list_categories as single_cat> 
203                                                <span class="btn mt-lg-0 mt-4"> 
204                                                    ${single_cat.getName()} 
205                                                </span> 
206                                            </#list> 
207                                        </div> 
208                						<h2 class="pt-3"> 
209                							${entryTitle} 
210                						</h2> 
211                						<span class="d-block pb-2">${dataContenuto}</span> 
212                						${testo} 
213                					</div> 
214                				</a> 
215                			</div> 
216                        <#elseif num_block == 5 || num_block == 6> 
217                			<!-- coppia di div con immagine sopra e testo in verticale sotto --> 
218            				<div class="text_content text-center <#if num_block == 5>pos_left<#else>pos_right</#if> my-md-0 my-2 pt-5 p-sm-4 p-3"> 
219            				    <a href="${viewUrl}" ${blank}> 
220            				        <div class="contain_img mb-4"> 
221            						    <img src="${getPrefix(immagine, 320, '')}"> 
222        						    </div> 
223            						<div class="btn_diary"> 
224                						<#list list_categories as single_cat> 
225                                            <span class="btn"> 
226                                                ${single_cat.getName()} 
227                                            </span> 
228                                        </#list> 
229                                    </div> 
230            						<h2 class="pt-4"> 
231            							${entryTitle} 
232            						</h2> 
233            						<span class="d-block pb-2">${dataContenuto}</span> 
234            						${testo} 
235            				    </a> 
236        				    </div> 
237                        <#else> 
238                			<!-- immagine sulla destra con testo sulla sinistra --> 
239                			<div class="text_content clear_this text-center mt-sm-5 p-sm-4 p-3"> 
240                				<a href="${viewUrl}" ${blank} class="row align-items-center"> 
241                				 
242                					<div class="col-md-6"> 
243                					    <div class="btn_diary"> 
244                    						<#list list_categories as single_cat> 
245                                                <span class="btn"> 
246                                                    ${single_cat.getName()} 
247                                                </span> 
248                                            </#list> 
249                                        </div> 
250                						<h2 class="pt-3 pb-sm-5 pb-3"> 
251                							${entryTitle} 
252                						</h2> 
253                						<span class="d-block pb-2">${dataContenuto}</span> 
254                						${testo} 
255                					</div> 
256                 
257                					<div class="col-md-6 pt-md-0 pt-3"> 
258                					    <div class="contain_img"> 
259                						    <img src="${getPrefix(immagine, 350, '')}"> 
260            						    </div> 
261                					</div> 
262                				</a> 
263                			</div> 
264            			</#if> 
265            			 
266            			<#assign  
267                            num_block++ 
268                        /> 
269                         
270                        <#if num_block == 8> 
271                            <#assign  
272                                num_block = 1 
273                            /> 
274                        </#if> 
275                         
276                    </#if> 
277                </#list> 
278                </div> 
279            </#if> 
280     
281    		<!-- blocco in evidenza sulla destra del contenitore principale --> 
282    		<div class="col-lg-4"> 
283    			<div class="in_evidenza pr-4 pl-4 pt-5 mb-5"> 
284    				<h3>In evidenza</h3> 
285    				<hr> 
286    				 
287    				<#assign preferences = freeMarkerPortletPreferences.getPreferences("portletSetupPortletDecoratorId", "barebone")> 
288         
289                    <@liferay_portlet["runtime"] 
290                        defaultPreferences="${preferences}" 
291                        portletProviderAction=portletProviderAction.VIEW 
292                        instanceId="diario_evidenza" 
293                        portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet" 
294                    /> 
295     
296    			</div> 
297    		</div> 
298    	</div> 
299    </div> 
300</div> 
301 
302<#function getPrefix img width height> 
303    <#assign 
304        baseUrl = "https://d28r45jypu6nt9.cloudfront.net/o/d40/img/" 
305        siteUrl = themeDisplay.getURLPortal()?replace("://", ".") 
306        w = width 
307        h = height 
308    /> 
309    <#if height?is_string> 
310        <#assign prefix = baseUrl + "w_" + w + "/" + siteUrl> 
311    <#else> 
312        <#assign prefix = baseUrl + "w_" + w + ",h_" + h + "/" + siteUrl> 
313    </#if> 
314     
315    <#if !img?contains("/documents/")> 
316        <#assign prefix = ""> 
317    </#if> 
318     
319    <#return prefix + img> 
320</#function>