Agrégateur de contenus

Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> tomApi.getJsonOffersListResultByMunicipalities(municipalityNames, lang)  [in template "20099#20135#33814" at line 393, column 25]

----
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 offerResults = tomApi.getJson...  [in template "20099#20135#33814" at line 393, column 1]
----
1<#assign structureService = serviceLocator.findService("it.inera.structure.service.StructureService")> 
2 
3<#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 
4<#assign attrattoreStructureId = structureService.getStructureAttrattoreId()> 
5 
6<#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 
7<#assign itinerarioStructureId = structureService.getStructureItinerarioId()> 
8 
9<#assign elasticService = serviceLocator.findService("it.inera.elastic.service.ElasticService")> 
10<#assign journalArticleId = .vars['reserved-article-id'].data/> 
11 
12<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
13<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
14<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
15 
16<#assign vocabularyIdUmbria = structureService.getVocabularyIdByVocabularyName("Vocabolario Umbria") > 
17<#assign vocabularyIdTerritori = structureService.getVocabularyIdByVocabularyName("Territori") > 
18 
19<#if coordinate_principali.getData()?has_content && coordinate_principali.getData()?trim?length gt 0 > 
20	<#assign coordinatePrincipaliJson = coordinate_principali.getData()?eval > 
21	<#if coordinatePrincipaliJson.latitude?has_content && coordinatePrincipaliJson.latitude?trim?length gt 0 > 
22		<#assign latitude = coordinatePrincipaliJson.latitude?c > 
23	</#if> 
24	<#if coordinatePrincipaliJson.longitude?has_content && coordinatePrincipaliJson.longitude?trim?length gt 0 > 
25		<#assign longitude = coordinatePrincipaliJson.longitude?c > 
26	</#if> 
27<#else> 
28	<#assign latitude = "" > 
29	<#assign longitude = "" > 
30</#if> 
31 
32<#assign currentArticle = journalArticleLocalService.getArticle(groupId, journalArticleId) /> 
33 
34<#assign titolo1 = "" /> 
35<#assign testo1 = "" /> 
36 
37<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1")?has_content> 
38	<#assign titolo1_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1") /> 
39	<#list titolo1_custom_field?keys as key> 
40	    <#if key == locale> 
41	        <#assign titolo1 = titolo1_custom_field?values[key_index] /> 
42	    </#if> 
43	</#list> 
44</#if> 
45 
46<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("testo_fascia_1")?has_content> 
47	<#assign testo1_custom_field = currentArticle.getExpandoBridge().getAttribute("testo_fascia_1") /> 
48	<#list testo1_custom_field?keys as key> 
49	    <#if key == locale> 
50	        <#assign testo1 = testo1_custom_field?values[key_index] /> 
51	    </#if> 
52	</#list> 
53</#if> 
54 
55<#assign titolo2 = "" /> 
56<#assign testo2 = "" /> 
57 
58<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_2")?has_content> 
59	<#assign titolo2_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_2") /> 
60	<#list titolo2_custom_field?keys as key> 
61	    <#if key == locale> 
62	        <#assign titolo2 = titolo2_custom_field?values[key_index] /> 
63	    </#if> 
64	</#list> 
65</#if> 
66 
67<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("testo_fascia_2")?has_content> 
68	<#assign testo2_custom_field = currentArticle.getExpandoBridge().getAttribute("testo_fascia_2") /> 
69	<#list testo2_custom_field?keys as key> 
70	    <#if key == locale> 
71	        <#assign testo2 = testo2_custom_field?values[key_index] /> 
72	    </#if> 
73	</#list> 
74</#if> 
75 
76<#assign titolo3 = "" /> 
77<#assign testo3 = "" /> 
78 
79<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_3")?has_content> 
80	<#assign titolo3_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_3") /> 
81	<#list titolo3_custom_field?keys as key> 
82	    <#if key == locale> 
83	        <#assign titolo3 = titolo3_custom_field?values[key_index] /> 
84	    </#if> 
85	</#list> 
86</#if> 
87 
88<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("testo_fascia_3")?has_content> 
89	<#assign testo3_custom_field = currentArticle.getExpandoBridge().getAttribute("testo_fascia_3") /> 
90	<#list testo3_custom_field?keys as key> 
91	    <#if key == locale> 
92	        <#assign testo3 = testo3_custom_field?values[key_index] /> 
93	    </#if> 
94	</#list> 
95</#if> 
96 
97<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() /> 
98<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
99<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
100 
101<#assign categoryList = assetCategoryLocalService.getAssetEntryAssetCategories(currentArticleAssetEntryId) > 
102 
103<#assign categoryListIds = [] > 
104<#assign municipalityName = "" > 
105<#assign municipalityNames = [] > 
106<#assign municipalityNamesString = "" > 
107<#assign territoryNameString = "" > 
108<#assign isTerritorio = false > 
109 
110<#list categoryList as category> 
111	<#assign categoryListIds = categoryListIds + [category.getCategoryId()]> 
112</#list> 
113 
114<#list categoryList as category> 
115	<#if vocabularyIdTerritori == category.getVocabularyId() > 
116		<#assign municipalityName = category.getTitle(themeDisplay.getLanguageId()) > 
117 
118		<#assign childCategories = assetCategoryLocalService.getChildCategories(category.getCategoryId()) > 
119		<#if childCategories?has_content>  
120			<#assign territoryNameString = category.getTitle(themeDisplay.getLanguageId())> 
121			<#list childCategories as curChildCategory>  
122				<#assign isTerritorio = true > 
123				<#assign municipalityNameC = curChildCategory.getTitle(themeDisplay.getLanguageId()) > 
124				<#if curChildCategory?counter != 1 || municipalityNamesString?has_content> 
125					<#assign municipalityNamesString = municipalityNamesString + "," + municipalityNameC> 
126				<#else> 
127					<#assign municipalityNamesString = municipalityNamesString + municipalityNameC> 
128				</#if> 
129				<#assign municipalityNames = municipalityNames + [municipalityNameC]> 
130			</#list>  
131		<#else> 
132			<#assign municipalityNames = municipalityNames + [municipalityName]> 
133			<#if municipalityNamesString?has_content> 
134				<#assign municipalityNamesString = municipalityNamesString + "," + municipalityName> 
135			<#else> 
136				<#assign municipalityNamesString = municipalityNamesString + municipalityName> 
137			</#if> 
138		</#if> 
139	</#if> 
140</#list> 
141 
142<#if !municipalityName?has_content> 
143	<#if comune.getSiblings()?has_content>  
144		<#list comune.getSiblings() as cur_comune>  
145			<#assign municipalityName = cur_comune.getData() > 
146			<#break> 
147		</#list>  
148	</#if> 
149</#if> 
150 
151<#if isTerritorio> 
152	<#assign municipalityName = territoryNameString > 
153</#if> 
154 
155<#assign resultsByCoord = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), attrattoreStructureKey, attrattoreStructureId?c, locale, "12", null , null, journalArticleId, null, null, null) /> 
156 
157<#assign results = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), itinerarioStructureKey, itinerarioStructureId?c, locale, "6", null , null, journalArticleId, null, null, null) /> 
158 
159<#assign widthBannerImg = propsUtil.get("image.scale.fullpage") /> 
160<#assign widthSliderImg = propsUtil.get("image.slider.testobarra.height") /> 
161<#assign tomBaseImagePath = propsUtil.get("tom.base.image.url") /> 
162<#assign widthCardImg = propsUtil.get("image.scale.allpage") /> 
163 
164<div class="container-fluid"> 
165    <div class="row"> 
166  		<div class="header-block header-block-1 padding-top-em-5 padding-bottom-em-5 header-block-image-main"> 
167        	<img class="bg" src="${immagine_banner.getData()}?width=${widthBannerImg}" alt="${testo_alternativo_immagine_banner.getData()}"> 
168        	<div class="container title title-main"> 
169          		<div class="row"> 
170            		<div class="col-12"> 
171            		</div> 
172          		</div> 
173        	</div> 
174      	</div> 
175      	<div class="map map-container map-container-header hidden"> 
176	        <div class="map-content"> 
177          		<div class="leaflet-interactive-map map-summary-results" id="header-map" data-results="${themeDisplay.getPortalURL()}/o/geolocation/get-positions?articleId=${journalArticleId}" data-config="{&quot;clustering&quot;:true}"></div> 
178    		</div> 
179      	</div> 
180    </div> 
181</div> 
182 
183<div class="container-fluid bg-white"> 
184    <div class="row"> 
185  		<article class="container bridge bg-white translate-top-md-rem-5 translate-top-lg-rem-10"> 
186        	<div class="row"> 
187          		<div class="col-12"> 
188          		    <div class="text-left link-back-container margin-left-rem-1"><a class="link-1 link-back margin-top-em-2 padding-left-rem-1" id="backLink" href="#"><i class="im im-angle-left"></i><span class="hidden display-inline-lg"><@liferay.language key="label.indietro" /></span></a></div>   
189            		<div class="text-center padding-top-em-2"> 
190              			<div class="link-1 link-toggle-map" data-target="#header-map" data-inactive="<@liferay.language key="label.visualizza.sulla.mappa" />" data-active="<@liferay.language key="label.visualizza.foto" />"><@liferay.language key="label.visualizza.sulla.mappa" /></div> 
191            		</div> 
192            		<div class="link-tripplanner-container"> 
193                		<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
194              			<a data-id="${journalArticleId}" class="link link-tripplanner link-tripplanner-extended link-tripplanner-top-right margin-right-em-1 padding-right-rem-1" href="${currentUrl}" data-tom="false"> 
195                			<i class="far fa-heart text-red"></i> 
196                			<i class="fas fa-heart text-red" style="display:none"></i> 
197                			<span class="label hidden display-inline-lg"><@liferay.language key="label.aggiungi.al.mio.viaggio" /></span> 
198              			</a> 
199            		</div> 
200      			</div> 
201          		<div class="col-12 col-md-10 offset-md-1"> 
202            		<div class="text-block text-block-center"> 
203            		    <h1 class="title-2 margin-top-em-0">${titolo.getData()}</h1> 
204              			<div class="text text-block-left padding-top-em-1">${descrizione.getData()}</div> 
205            		</div> 
206          		</div> 
207        	</div> 
208      	</article> 
209    </div> 
210</div> 
211 
212 
213 
214<#if url_image_instagram?? && url_image_instagram.getSiblings()?has_content || descrizione_immagine?? && descrizione_immagine.getSiblings()?has_content> 
215    <div class="container-fluid bg-white"> 
216        <div class="row"> 
217            <div class="carousel-container carousel-no-ctrl transparent margin-top-md-em-minus-4 margin-top-lg-em-minus-9 margin-bottom-em-1 tns-overflow-show carousel-image-slide carousel-draggable"> 
218                <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{&quot;autoWidth&quot;:true,&quot;items&quot;:2,&quot;autoplay&quot;:false,&quot;responsive&quot;:{&quot;768&quot;:{&quot;items&quot;:3},&quot;992&quot;:{&quot;items&quot;:4}}}"> 
219                    <#if url_image_instagram?? && url_image_instagram.getData()?has_content> 
220                        <#-- immagini di instagram presenti --> 
221                        <#list url_image_instagram.getSiblings() as cur_url_image_instagram> 
222                         
223                            <#if cur_url_image_instagram.getData()?ends_with("/")> 
224                                <#assign sizeParameter = "media/?size=l" /> 
225                            <#else> 
226                                <#assign sizeParameter = "/media/?size=l" /> 
227                            </#if> 
228                         
229                            <div class="item-with-caption"> 
230                                <div class="card card-type-asset image-card card-2 slide-image-instagram"> 
231                                    <img class="slide-image" src="${cur_url_image_instagram.getData()}${sizeParameter}" alt="${cur_url_image_instagram.alt_text_image_instagram.getData()}"> 
232                                    <i class="fab fa-instagram"></i> 
233                                </div> 
234                                <#if cur_url_image_instagram.alt_text_image_instagram.getData()?? && cur_url_image_instagram.alt_text_image_instagram.getData()?has_content && cur_url_image_instagram.alt_text_image_instagram.getData()?trim?length gt 0 && cur_url_image_instagram.alt_text_image_instagram.getData()?trim != "null"> 
235                    				<p class="caption">${cur_url_image_instagram.alt_text_image_instagram.getData()}</p> 
236                    			</#if> 
237                            </div>  
238                        </#list>  
239                    </#if> 
240                    <#if descrizione_immagine?? && descrizione_immagine.getSiblings()?has_content> 
241                        <#-- immagini della document library presenti --> 
242                        <#list descrizione_immagine.getSiblings() as cur_descrizione_immagine> 
243                            <div class="item-with-caption"> 
244                            	<img class="slide-image" src="${cur_descrizione_immagine.immagine.getData()}?width=${widthSliderImg}" alt="${cur_descrizione_immagine.testo_alternativo.getData()}"> 
245      		                    <#if cur_descrizione_immagine.didascalia.getData()?? && cur_descrizione_immagine.didascalia.getData()?has_content && cur_descrizione_immagine.didascalia.getData()?trim?length gt 0 && cur_descrizione_immagine.didascalia.getData()?trim != "null"> 
246                					<p class="caption">${cur_descrizione_immagine.didascalia.getData()}</p> 
247                				</#if> 
248                            </div>  
249                        </#list> 
250                    </#if> 
251                </div> 
252            </div> 
253        </div> 
254    </div> 
255</#if> 
256 
257<div class="container-fluid bg-white"> 
258    <div class="row"> 
259        <div class="container"> 
260            <div class="row"> 
261                <div class="col-12 col-md-10 offset-md-1"> 
262                    <div class="text-block text-block-center"> 
263                        <div class="text text-block-left"> 
264                            ${descrizione_due.getData()} 
265                        </div> 
266                    </div> 
267                </div> 
268            </div> 
269        </div> 
270    </div> 
271</div> 
272 
273<div class="container-fluid bg-white"> 
274    <div class="row"> 
275        <div class="container"> 
276            <div class="row"> 
277                <div class="col-12 col-md-10 offset-md-1"> 
278                    <div class="text-block text-block-center"> 
279                        <div class="title-2"> 
280              	            <#if titolo1?has_content && titolo1?trim?length gt 0 > 
281              		            ${titolo1} 
282              	            <#else> 
283              		            <@liferay.language key="label.esplora.i.dintorni" /> 
284			  	            </#if> 
285                        </div> 
286                        <div class="text"> 
287              	            <#if testo1?has_content && testo1?trim?length gt 0 > 
288              		            ${testo1} 
289              	            <#else> 
290              		            <@liferay.language key="label.principali.attrazioni" /> 
291			  	            </#if> 
292                        </div> 
293                    </div> 
294                </div> 
295            </div> 
296        </div> 
297    </div> 
298</div> 
299 
300<div class="container-fluid bg-white"> 
301    <div class="row"> 
302        <div class="container bridge bridge-md-bottom margin-top-em-2 margin-bottom-em-2 margin-top-md-em-minus-10 margin-bottom-md-em-0"> 
303            <div class="row"> 
304                <div class="col-12"> 
305                    <div class="carousel-container transparent carousel-no-nav"> 
306                        <div class="tns-carousel tns-carousel-default" data-tns-config="{&quot;loop&quot;:true,&quot;items&quot;:2,&quot;responsive&quot;:{&quot;768&quot;:{&quot;items&quot;:3},&quot;991&quot;:{&quot;items&quot;:4}}}"> 
307                            <#list resultsByCoord as relatedCoord> 
308            					<#assign langId = themeDisplay.getLanguageId() /> 
309            					<#assign contentByLocale = relatedCoord.getContentByLocale(themeDisplay.getLanguageId()) /> 
310            					<#assign document = saxReaderUtil.read(contentByLocale) > 
311            					<#assign rootElement = document.getRootElement()> 
312            				 
313            					<#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
314            					<#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
315            					 
316            					<#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
317            					<#assign relatedSottotitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
318            					 
319            					<#assign xPathCoordinatePrincipali = saxReaderUtil.createXPath("dynamic-element[@name='coordinate_principali']")> 
320            					<#assign relatedCoordinatePrincipali = xPathCoordinatePrincipali.selectSingleNode(rootElement).getStringValue()> 
321            					 
322            					<#if relatedCoordinatePrincipali?has_content && relatedCoordinatePrincipali?trim?length gt 0 > 
323            						<#assign coordinatePrincipaliRelatedJson = relatedCoordinatePrincipali?eval > 
324            						<#assign latitudeRelated = coordinatePrincipaliRelatedJson.latitude > 
325            						<#assign longitudeRelated = coordinatePrincipaliRelatedJson.longitude > 
326            					<#else> 
327            						<#assign latitudeRelated = "" > 
328            						<#assign longitudeRelated = "" > 
329            					</#if> 
330            					 
331            					<#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 
332            					<#assign relatedImmagineBanner = "" > 
333            					 
334            					<#if xPathImmagineBanner?? && xPathImmagineBanner?has_content> 
335                		        	<#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content> 
336            							<#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
337            						</#if> 
338            					</#if> 
339            					 
340            					<#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")> 
341            					<#assign relatedTestoAlternativoImmagineBanner = "" > 
342            					<#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content> 
343                		        	<#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content> 
344            							<#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
345            						</#if> 
346            					</#if> 
347					 
348            					<#if relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 > 
349            						<#assign immagineBannerJson = relatedImmagineBanner?eval > 
350            						<#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthCardImg}"> 
351            					<#else> 
352            						<#assign url = "" > 
353            					</#if> 
354					 
355            					<div> 
356						            <div class="card card-type-asset image-card card-2 no-desc card-small card-geolocalized card-territory" data-lat="${latitudeRelated}" data-lng="${longitudeRelated}" data-url="/-/${relatedCoord.getUrlTitle()}" data-title="${relatedTitolo}"> 
357		                                <a class="aspect-ratio card-item-first aspect-ratio-16-20" href="/-/${relatedCoord.getUrlTitle()}" draggable data-id="${relatedCoord.getArticleId()}" data-tom="true"> 
358		                                    <img class="aspect-ratio-item aspect-ratio-item-center-middle aspect-ratio-item-fluid" src="${url}" alt="${relatedTestoAlternativoImmagineBanner}"> 
359		                    	            <span class="sticker sticker-bottom-left"> 
360    			                  		        <div class="title title-4"> 
361    			                  		            ${relatedTitolo} 
362    			                  		        </div> 
363    			                    	        <div class="text description"></div> 
364    			                            </span> 
365		                                </a> 
366	                  	            </div> 
367                	            </div> 
368				            </#list> 
369                        </div> 
370                    </div> 
371                </div> 
372            </div> 
373        </div> 
374        <div class="map map-container map-banner hidden display-md"> 
375            <div class="map-content"> 
376                <div class="leaflet-interactive-map map-summary-territories" id="map-detail" data-kml="../undefined"></div> 
377            </div> 
378        </div> 
379    </div> 
380</div> 
381 
382 
383<#assign lang = "it"/> 
384<#if themeDisplay.getLanguageId()?contains("_")> 
385    <#assign lang = themeDisplay.getLanguageId()?split("_")[0]/>     
386<#else> 
387	<#assign lang = themeDisplay.getLanguageId()/>    
388</#if> 
389<#assign tomApi = serviceLocator.findService("it.inera.tom.api.TOMAPI")> 
390 
391<#if municipalityNames?has_content && municipalityNames?size gt 0 && lang?has_content && lang?trim?length gt 0 && tomApi?has_content> 
392 
393<#assign offerResults = tomApi.getJsonOffersListResultByMunicipalities(municipalityNames, lang) /> 
394<#if offerResults?? && offerResults?has_content> 
395	<#assign offerResponse = offerResults.getResponse()> 
396	<#if offerResponse?? && offerResponse?has_content> 
397		<#assign offerResults = offerResponse.getResults()> 
398		<#if offerResults?? && offerResults?has_content> 
399	        <aside class="container-fluid bg-white" id="hideable"> 
400    		    <div class="row"> 
401		            <div class="container padding-top-em-3"> 
402		                <div class="row"> 
403		                    <div class="col-12 col-md-10 offset-md-1 margin-bottom-lg-em-0 margin-bottom-em-2"> 
404		                        <div class="text-block text-block-center"> 
405		                            <div class="title-2"> 
406		                                <#if municipalityName?has_content> 
407		                                	<#if isTerritorio> 
408		                                		<@liferay.language key="label.le.migliori.offerte.nel" /> ${municipalityName} 
409		                                	<#else> 
410		                                		<@liferay.language key="label.le.migliori.offerte.a" /> ${municipalityName} 
411		                                	</#if> 
412		                                <#else> 
413		              	                    <@liferay.language key="label.le.migliori.offerte" /> 
414		                                </#if> 
415		                            </div> 
416		                            <div class="text"> 
417		                                <@liferay.language key="label.proposte.vivere.umbria" /> 
418	                                </div> 
419	                            </div> 
420		                    </div> 
421		                </div> 
422	 
423		                <div class="row"> 
424		                    <div class="col-12"> 
425		                        <div class="d-flex flex-justify-content-end"> 
426		                            <a class="link-showall" href="/offerte-luogo?municipality=${municipalityNamesString}&territory=${territoryNameString}"><@liferay.language key="label.vedi.tutte" /> 
427		                                <i class="fas fa-angle-right"></i> 
428	                                </a> 
429		                        </div> 
430		                    </div> 
431		                    <div class="col-12"> 
432		                        <div class="row"> 
433		                            <div class="col-12 padding-bottom-em-3"> 
434		                                <div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2"> 
435		                                    <div class="tns-carousel tns-carousel-default"> 
436		                  	                    <#list offerResults as offerResult> 
437			                  	                    <#if offerResult.getGalleries()?has_content && offerResult.getGalleries().getImages()?has_content 
438			                  	                    && offerResult.getGalleries().getImages()?size gt 0 
439			                  	                    && offerResult.getGalleries().getImages()[0].getFile()?has_content> 
440			                  	                    <div> 
441			                                            <div class="card card-1 card-offerta has-info-commercial"> 
442			                                                <a class="card-link" href="/dettaglio-offerta/-/dettaglio/${offerResult.getSlug()}_${offerResult.getId()}_${offerResult.getType()}"></a> 
443                        			                        <div class="card-header"> 
444    			                                                <div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 
445                        			                          		<#if offerResult.getGalleries()?has_content> 
446                        			                          			<#if offerResult.getGalleries().getImages()?has_content && offerResult.getGalleries().getImages()?size gt 0> 
447                        			                          				<#assign file = ""/> 
448                        			                          				<#assign alt = ""/> 
449                        			                          				<#if offerResult.getGalleries().getImages()[0].getFile()?has_content> 
450                        			                          					<#assign file = tomBaseImagePath + offerResult.getGalleries().getImages()[0].getFile()/> 
451                        			                          				<#else> 
452                        			                          					<#assign file = "/o/umbria-theme/images/loghi/logo_no_image.png"/> 
453                        			                          				</#if> 
454                        			                          				<#if offerResult.getGalleries().getImages()[0].getAlt()?has_content> 
455                        			                          					<#assign alt = offerResult.getGalleries().getImages()[0].getAlt()/> 
456                        			                          				</#if> 
457                        			                          				<img src="${file}?attribute[width]=354" alt="${alt}"> 
458                        			                          			</#if> 
459                        			                          		<#else> 
460                        			                          			<#assign file = "/o/umbria-theme/images/loghi/logo_no_image.png"/> 
461                        			                          			<img src="${file}?attribute[width]=354" alt="logo_no_image"> 
462                        			                          		</#if> 
463    	                          		                        </div> 
464    	                          		                         
465    	                          		                        <#if offerResult.getType()?? && offerResult.getType()?has_content && offerResult.getType()?trim?length gt 0 && offerResult.getType()?trim != "accommodation"> 
466    	                          		                        	<a class="link link-tripplanner link-tripplanner-top-right margin-top-em-2 margin-right-em-1" href="#" data-detail-type="${offerResult.getType()}/offer" data-id="${offerResult.getId()}" data-tom="true"> 
467    	                          		                        		<i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none;"></i></a> 
468    	                          		                        	</a> 
469    	                          		                        <#else> 
470    	                          		                        	<a class="link link-tripplanner link-tripplanner-top-right margin-top-em-2 margin-right-em-1" href="#" data-detail-type="${offerResult.getType()}" data-id="${offerResult.getId()}" data-tom="true"> 
471    	                          		                        		<i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none;"></i></a> 
472    	                          		                        	</a> 
473    	                          		                        </#if> 
474    			                                                <div class="card-header-info"> 
475    			                                                    <div class="card-badges"> 
476        								                                <div class="badge badge-light-blue"> 
477        										                            <#if offerResult.getType() == 'guide'> 
478        										  		                        <@liferay.language key="label.guide" /> 
479        										                            </#if> 
480        										                            <#if offerResult.getType() == 'travelagency'> 
481        										  		                        <@liferay.language key="label.pacchetti.turistici" /> 
482        										                            </#if> 
483        										                            <#if offerResult.getType() == 'consortium'> 
484        										  		                        <@liferay.language key="label.pacchetti.turistici" /> 
485        										                            </#if> 
486        										                            <#if offerResult.getType() == 'accommodation'> 
487        										  		                        <@liferay.language key="label.accommodation" /> 
488        										                            </#if> 
489        								                                </div> 
490        								                            </div> 
491    			                                                    <div class="header-title title-5"> 
492    			                                                    </div> 
493    			                                                </div> 
494    			                                            </div> 
495    			                                            <#if offerResult?has_content> 
496    			                                            <div class="card-body"> 
497        		                                                <div class="card-body-title title-4"> 
498        		                                                    ${offerResult.getTitle()} 
499        			                                            </div> 
500        			                                            <#if offerResult.getSubtitle()?has_content> 
501        			                                            <div class="card-body-subtitle"> 
502        			                                                ${offerResult.getSubtitle()} 
503        			                                            </div> 
504        			                                            </#if> 
505        			                                        </div> 
506        			                                        </#if> 
507    			                                            <div class="card-info card-info-readmore"> 
508    			                                                <div class="info hidden"><@liferay.language key="label.continua.a.leggere" /></div> 
509    			                                            </div> 
510    			                                            <div class="card-info"> 
511    			                        	                    <span class="info"> 
512    			                        		                    <!--<a href="#" class="text-light-blue text-bold"> 
513    			                        		                            <i class="fas fa-map-pin"></i> 
514    	                        		                            </a>--> 
515    		                        		                    </span> 
516    			                                            </div> 
517    			                                            <div class="card-info card-info-commercial"> 
518        		                                                <#if offerResult.getDuration()?has_content && offerResult.getDuration().getCount()?has_content && offerResult.getDuration().getType()?has_content> 
519    				                                                <div class="info info-commercial"> 
520    				                                                    <div class="label"><@liferay.language key="label.durata" /></div> 
521    				                                                    <div class="title text-bold"> 
522    				                                                        ${offerResult.getDuration().getCount()} ${offerResult.getDuration().getType()} 
523    			                                                        </div> 
524    				                                                </div> 
525    				                                            <#else> 
526    				                                            	<div class="info info-commercial"> 
527    				                                                    <div class="label">&nbsp;</div> 
528    				                                                    <div class="title text-bold"> 
529    				                                                        &nbsp; 
530    			                                                        </div> 
531    				                                                </div> 
532    			                                                </#if> 
533    			                                                <div class="info info-commercial"> 
534    		                                                        <#if offerResult.getMinimumPrice()?has_content> 
535	    		                                                        <div class="label"> 
536	    			                                                        <@liferay.language key="label.a.partire.da" /> 
537	    		                                                        </div> 
538	    			                                                    <div class="title text-bold"> 
539	    			                                                        <@liferay.language key="label.euro" /> ${offerResult.getMinimumPrice()} 
540	    		                                                        </div> 
541    		                                                        <#else> 
542	    		                                                        <div class="label"> 
543	    			                                                        <@liferay.language key="label.prezzo.su.richiesta" /> 
544	    		                                                        </div> 
545	    			                                                    <div class="title text-bold"> 
546	    			                                                        &nbsp; 
547	    		                                                        </div> 
548    		                                                        </#if> 
549    			                                                </div> 
550    			                                            </div> 
551			                                            </div> 
552			                                        </div> 
553			                                        </#if> 
554		                  	                    </#list> 
555		                                    </div> 
556		                                </div> 
557		                            </div> 
558		                        </div> 
559		                    </div> 
560	                    </div> 
561		            </div> 
562		        </div> 
563		    </aside> 
564  	    </#if> 
565	</#if> 
566</#if> 
567 
568</#if> 
569 
570<#if results?size gt 0 > 
571    <aside class="container-fluid bg-white"> 
572        <div class="row"> 
573            <div class="container padding-top-em-3"> 
574                <div class="row"> 
575                    <div class="col-12 col-md-10 offset-md-1"> 
576                        <div class="text-block text-block-center"> 
577                            <div class="title-2"> 
578                  	            <#if titolo2?has_content && titolo2?trim?length gt 0 > 
579                  		            ${titolo2} 
580                  	            <#else> 
581                  		            <@liferay.language key="label.potrebbe.interessarti.anche" /> 
582    			  	            </#if> 
583                            </div> 
584                            <div class="text"> 
585                  	            <#if testo2?has_content && testo2?trim?length gt 0 > 
586                  		            ${testo2} 
587                  	            <#else> 
588                  		            <@liferay.language key="label.scopri.proposte.uniche" /> 
589    			  	            </#if> 
590                            </div> 
591                        </div> 
592                    </div> 
593                </div> 
594            </div> 
595        </div> 
596 
597        <div class="row"> 
598            <div class="container padding-top-em-1 padding-bottom-em-5"> 
599                <div class="row"> 
600                    <div class="col-12"> 
601                        <div class="row"> 
602                            <div class="col-12 padding-bottom-em-3"> 
603                                <div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2"> 
604                                    <div class="tns-carousel tns-carousel-default"> 
605                                      	<#list results as related> 
606                    						<#assign langId = themeDisplay.getLanguageId() /> 
607                    						<#assign contentByLocale = related.getContentByLocale(themeDisplay.getLanguageId()) /> 
608                    						<#assign document = saxReaderUtil.read(contentByLocale) > 
609                    						<#assign rootElement = document.getRootElement()> 
610                    					 
611                    						<#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
612                    						<#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
613                    						 
614                    						<#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
615                    						<#assign relatedSottotitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
616                    						 
617                    						<#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 
618                    						<#assign relatedImmagineBanner = "" > 
619                    						 
620                    						<#if xPathImmagineBanner?? && xPathImmagineBanner?has_content> 
621                    	    		        	<#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content> 
622                    								<#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
623                    							</#if> 
624                    						</#if> 
625                    						 
626                    						<#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")> 
627                    						<#assign relatedTestoAlternativoImmagineBanner = "" > 
628                    						<#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content> 
629                    	    		        	<#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content> 
630                    								<#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
631                    							</#if> 
632                    						</#if> 
633                    							 
634                    						<#if relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 > 
635                    							<#assign immagineBannerJson = relatedImmagineBanner?eval > 
636                    							<#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthCardImg}"> 
637                    						<#else> 
638                    							<#assign url = "" > 
639                    						</#if> 
640                    						 
641                    						<#assign resourcePrimKey = related.getResourcePrimKey() /> 
642                    						<#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) /> 
643                    						<#assign assetEntryId = assetEntry.getEntryId() /> 
644                    						 
645                    						<#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntryId) > 
646                    						 
647                    						<#assign categoryNames = [] > 
648                    						 
649                    						<#list categories as category> 
650                    							<#if vocabularyIdUmbria == category.getVocabularyId() > 
651                    								<#assign categoryNames = categoryNames + [category.getTitle(themeDisplay.getLanguageId())] > 
652                    							</#if> 
653                    						</#list> 
654                    	                    <div> 
655                	                            <div class="card card-1 card-offerta"> 
656                    	                      	    <a class="card-link" href="/-/${related.getUrlTitle()}"></a> 
657                    	                            <div class="card-header"> 
658                    	                                <div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 
659                    	                          	        <img src="${url}" alt="${relatedTestoAlternativoImmagineBanner}"> 
660                    	                                </div> 
661                    	                                <a class="link link-tripplanner link-tripplanner-top-right margin-top-em-2 margin-right-em-1" href="/-/${related.getUrlTitle()}" data-id="${related.getArticleId()}" data-tom="false"> 
662                    	                          	        <i class="far fa-heart text-red"></i> 
663                    	                          	        <i class="fas fa-heart text-red" style="display:none"></i> 
664                	                                    </a> 
665                    	                                <div class="card-header-info"> 
666                    	                                    <div class="card-badges"> 
667                        	                          	        <#list categoryNames as categoryName> 
668                        	                            	        <div class="badge badge-red"> 
669                        	                            	            ${categoryName} 
670                    	                            	            </div> 
671                    	                            	            <a class="header-title title-5" href="#"></a> 
672                        								        </#list> 
673                        							        </div> 
674                    	                                </div> 
675                    	                            </div> 
676                    	                            <div class="card-body"> 
677                        	                        	<a class="card-body-title title-4" href="/-/${related.getUrlTitle()}">${relatedTitolo}</a> 
678                        	                          	<div class="card-body-subtitle">${relatedSottotitolo}</div> 
679                        	                        </div> 
680                        	                        <div class="card-info"> 
681                        	                        	<span class="info"></span> 
682                    	                            </div> 
683                    	                        </div> 
684                    	                    </div> 
685                    	                    <#assign categoryNames = [] > 
686                    	                    <#assign categories = [] > 
687                    	                </#list> 
688                                    </div> 
689                                </div> 
690                            </div> 
691                        </div> 
692                    </div> 
693                </div> 
694            </div> 
695        </div> 
696    </aside> 
697</#if> 
698 
699<script id="map-popup-1-template" type="text/x-handlebars-template"> 
700    <div class="map-popup map-popup-1"> 
701		<a href="{{href}}"> 
702        	<div class="title">{{title}}</div> 
703		</a> 
704	</div> 
705</script> 
706 
707<script> 
708$("#backLink").click(function(event) { 
709    event.preventDefault(); 
710    history.back(1); 
711}); 
712</script> 
713<!-- Go to www.addthis.com/dashboard to customize your tools --> 
714<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5c629e6303f68c9f"></script>