ArticleDetails

Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> embed.descrizioneEmbedAudio  [in template "1315478#1315513#1674222" at line 409, column 290]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to 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: #if (embed.AudioFields.titoloEmbedAud...  [in template "1315478#1315513#1674222" at line 409, column 137]
----
1<#include "_TEMPLATE_CONTEXT_/1315478/1331017/23609/1656602"> 
2 
3<#assign 
4    articleId = .vars['reserved-article-id'].data 
5    territorioCategories = getContentVocabularyCategories(articleId, "TERRITORIO", groupId) 
6    sliderCategories = [] 
7    slides = 0 
8    hasSlides = false 
9    hasGallery = false 
10    hasDownloads = false 
11    lat = 0 
12    lng = 0 
13     
14    groupedCategories = getNavCircCategories(articleId, groupId) 
15/> 
16 
17<#-- MASONRY  --> 
18<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.js"></script> 
19 
20<#list territorioCategories as tCat> 
21    <#if tCat.parentCategoryId != 0> 
22        <#assign sliderCategories += [tCat.name]> 
23    </#if> 
24</#list> 
25 
26<#if tourismItem.geoRef.getData()?has_content> 
27    <#assign 
28        geoObj = createObject(tourismItem.geoRef.getData()) 
29        lat = geoObj.getDouble("latitude") 
30        lng = geoObj.getDouble("longitude") 
31    /> 
32</#if> 
33 
34<#if tourismItem.coordinateTestuali.getData()?has_content> 
35    <#assign 
36        lat = tourismItem.coordinateTestuali.getData()?keep_before(",")?number 
37        lng = tourismItem.coordinateTestuali.getData()?keep_after(",")?number 
38    /> 
39</#if> 
40 
41<#if tourismItem.slideHeader?? && tourismItem.slideHeader.getSiblings()?has_content> 
42    <#list tourismItem.slideHeader.getSiblings() as slide> 
43        <#if slide.getData()?has_content> 
44            <#assign 
45                hasSlides = true 
46                slides = tourismItem.slideHeader.getSiblings()?size 
47            /> 
48            <#break> 
49        </#if> 
50    </#list> 
51</#if> 
52 
53<#if tourismItem.ImmagineGallery?? && tourismItem.ImmagineGallery.getSiblings()?has_content> 
54    <#list tourismItem.ImmagineGallery.getSiblings() as item> 
55        <#if item.getData()?has_content> 
56            <#assign hasGallery = true> 
57            <#break> 
58        </#if> 
59    </#list> 
60</#if> 
61 
62<#if tourismItem.downloadsFieldSet.downloadsFieldSetFieldSet?? && tourismItem.downloadsFieldSet.downloadsFieldSetFieldSet.getSiblings()?has_content> 
63    <#list tourismItem.downloadsFieldSet.downloadsFieldSetFieldSet.getSiblings() as item> 
64        <#if item.downloadUrl.getData()?has_content> 
65            <#assign hasDownloads = true> 
66            <#break> 
67        </#if> 
68    </#list> 
69</#if> 
70 
71<!-- Modello punto di interesse --> 
72 
73<div id="${portletNamespace}" v-cloak> 
74 
75		<#if themeDisplay.getLayout().getAncestors()?has_content> 
76        <section id="breadcrumb" class="mt-4"> 
77            <div class="container-fluid custom-container d-flex align-items-center"> 
78                <ol class="breadcrumb tw-space-x-2"> 
79                    <li class="breadcrumb-item"> 
80                        <a href="/" class="breadcrumb-link" title="Home"> 
81                            <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">Home</span> 
82                        </a> 
83                    </li> 
84                     
85                    <#list themeDisplay.getLayout().getAncestors()?reverse as ancestor> 
86                        <li class="breadcrumb-item"> 
87                            <a href="${ancestor.getFriendlyURL()}" class="breadcrumb-link" title="${escape(ancestor.getHTMLTitle(themeDisplay.getLocale()))}"> 
88                                <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">${escape(ancestor.getHTMLTitle(themeDisplay.getLocale()))}</span> 
89                            </a> 
90                        </li> 
91                    </#list> 
92                     
93                    <li class="breadcrumb-item active"> 
94                        <span class="tw:text-green tw:uppercase" title="${tourismItem.title.getData()?js_string}"> 
95                            ${tourismItem.title.getData()} 
96                        </span> 
97                    </li> 
98                </ol> 
99                 
100                <div class="d-flex align-items-center ml-auto"> 
101                    <button type="button" @click="isFavorite(item.id) ? removeFavorite(item) : setFavorite(item);" class="btn btn-link tw:no-underline" :title="isFavorite(item.id) ? `${getLabel('rimuovi_preferiti', groupId)}` : `${getLabel('aggiungi_preferiti', groupId)}`"> 
102                        <i :class="(isFavorite(item.id) ? 'fas' : 'fal') + ' fa-heart fa-2x tw:text-green'"></i> 
103                    </button> 
104                     
105                    <div class="btn dropdown tw:px-0"> 
106                        <button type="button" class="btn btn-link dropdown-toggle tw:no-underline tw:text-green" data-toggle="dropdown"> 
107                            <i class="fas fa-share-alt fa-2x"></i> 
108                        </button> 
109                        <div class="dropdown-menu dropdown-menu-center"> 
110                            <button type="button" @click="customShare('facebook', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
111                                <i class="fab fa-facebook-f fa-lg tw:text-green"></i> 
112                                <span class="tw:text-dark"> 
113                                    Facebook 
114                                </span> 
115                            </button> 
116                             
117                            <button type="button" @click="customShare('twitter', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
118                                <i class="fab fa-twitter fa-lg tw:text-green"></i> 
119                                <span class="tw:text-dark"> 
120                                    Twitter 
121                                </span> 
122                            </button> 
123                             
124                            <button type="button" @click="customShare('pinterest', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
125                                <i class="fab fa-pinterest fa-lg tw:text-green"></i> 
126                                <span class="tw:text-dark"> 
127                                    Pinterest 
128                                </span> 
129                            </button> 
130                             
131                            <button type="button" @click="customShare('whatsapp', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
132                                <i class="fab fa-whatsapp fa-lg tw:text-green"></i> 
133                                <span class="tw:text-dark"> 
134                                    WhatsApp 
135                                </span> 
136                            </button> 
137                             
138                            <button type="button" @click="customShare('telegram', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
139                                <i class="fab fa-telegram fa-lg tw:text-green"></i> 
140                                <span class="tw:text-dark"> 
141                                    Telegram 
142                                </span> 
143                            </button> 
144                             
145                            <button type="button" @click="customShare('print', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
146                                <i class="fas fa-print fa-lg tw:text-green"></i> 
147                                <span class="tw:text-dark"> 
148                                    Print 
149                                </span> 
150                            </button> 
151                             
152                            <a :href="'mailto:inserisci indirizzo email?subject=' + item.contentJSON.title + '&body=${currentUrl} ' + item.contentJSON.description" class="dropdown-item tw:space-x-2"> 
153                                <i class="fas fa-envelope fa-lg tw:text-green"></i> 
154                                <span class="tw:text-dark"> 
155                                    Email 
156                                </span> 
157                            </a> 
158                             
159                            <button type="button" @click="customShare('link', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
160                                <i class="fas fa-link fa-lg tw:text-green"></i> 
161                                <span class="tw:text-dark"> 
162                                    Link 
163                                </span> 
164                            </button> 
165                        </div> 
166                    </div> 
167                </div> 
168            </div> 
169        </section> 
170    </#if> 
171 
172    <section id="slideshow" class="container-fluid custom-container"> 
173        <div class="swiper-container"> 
174            <div class="swiper-wrapper"> 
175                <#if hasSlides> 
176                    <#list tourismItem.slideHeader.getSiblings() as slide> 
177                        <div class="swiper-slide"> 
178                            <img data-src="${getPrefix(slide.getData(), 1920, 730)}" loading="lazy" class="lazyload tw:object-cover" alt="${slide.getAttribute('alt')}"/> 
179                            <div class="card-img-overlay tw:bg-dark tw:bg-opacity-40"></div> 
180                         
181                            <div class="carousel-caption tw:flex tw:text-left tw:transform lg:tw:top-2/4 lg:tw:-translate-y-2/4"> 
182                                <#if tourismItem.testoHeader?? && tourismItem.testoHeader.getData()?has_content> 
183                                    <#assign locationClass = "tw:my-auto"> 
184                                <#else> 
185                                    <#assign locationClass = "tw:mt-auto tw:mb-20"> 
186                                </#if> 
187                             
188                                <div class="tw:flex tw:flex-col ${locationClass}"> 
189                                    <div class="hcm-bg-capable tw:text-white tw:font-heading tw:uppercase tw:text-2xl tw:mr-auto tw:p-4 tw:rounded-md lg:tw:text-4xl"> 
190                                        <#if tourismItem.testoHeader?? && tourismItem.testoHeader.getData()?has_content> 
191                                            <p>${tourismItem.testoHeader.getData()}</p> 
192                                            <div class="dropdown-divider tw:border-green tw:border-t-3 tw:w-3/5 tw:mt-5 tw:mr-auto lg:tw:w-1/5 lg:tw:mt-10"></div> 
193                                        </#if> 
194                                    </div> 
195                                    <#if sliderCategories?has_content> 
196                                        <div class="tw:flex tw:mt-7"> 
197                                            <i class="fas fa-map-marker-alt fa-2x tw:text-white"></i> 
198                                            <p class="tw:text-white tw:uppercase tw:font-heading tw:font-medium tw:my-auto tw:ml-3"> 
199                                                ${sliderCategories?join(", ")} 
200                                            </p> 
201                                        </div> 
202                                    </#if> 
203                                </div> 
204                            </div> 
205                        </div> 
206                    </#list> 
207                <#else> 
208                    <div class="swiper-slide"> 
209                        <img data-src="https://via.placeholder.com/1920x730" loading="lazy" class="lazyload tw:object-cover tw:h-full tw:w-full" alt=""/> 
210                        <div class="card-img-overlay tw:bg-dark tw:bg-opacity-40"></div> 
211     
212                        <div class="carousel-caption tw:flex tw:text-left tw:transform lg:tw:top-2/4 lg:tw:-translate-y-2/4"> 
213                            <#if tourismItem.testoHeader?? && tourismItem.testoHeader.getData()?has_content> 
214                                <#assign locationClass = "tw:my-auto"> 
215                            <#else> 
216                                <#assign locationClass = "tw:mt-auto tw:mb-20"> 
217                            </#if> 
218                                 
219                            <div class="tw:flex tw:flex-col ${locationClass}"> 
220                                <div class="hcm-bg-capable tw:text-white tw:font-heading tw:uppercase tw:text-2xl tw:mr-auto tw:p-4 tw:rounded-md lg:tw:text-4xl"> 
221                                    <#if tourismItem.testoHeader?? && tourismItem.testoHeader.getData()?has_content> 
222                                        <p>${tourismItem.testoHeader.getData()}</p> 
223                                        <div class="dropdown-divider tw:border-green tw:border-t-3 tw:w-3/5 tw:mt-5 tw:mr-auto lg:tw:w-1/5 lg:tw:mt-10"></div> 
224                                    </#if> 
225                                </div> 
226     
227                                <#if territorioCategories?has_content> 
228                                    <div class="tw:flex tw:mt-7"> 
229                                        <i class="fas fa-map-marker-alt fa-2x tw:text-white"></i> 
230                                        <p class="tw:text-white tw:uppercase tw:font-heading tw:font-medium tw:my-auto tw:ml-3"> 
231                                            <#list territorioCategories as cat> 
232                                                <#if cat.parentCategoryId != 0> 
233                                                    ${cat.name} 
234     
235                                                    <#if cat?has_next>,</#if> 
236                                                </#if> 
237                                            </#list> 
238                                        </p> 
239                                    </div> 
240                                </#if> 
241                            </div> 
242                        </div> 
243                    </div>               
244                </#if> 
245            </div> 
246        </div> 
247    </section> 
248     
249    <section id="intro-description-image"> 
250        <div class="d-flex container-fluid custom-container"> 
251            <div class="tw:flex tw:mt-9 lg:tw:hidden"> 
252                <button type="button" @click="isFavorite(item.id) ? removeFavorite(item) : setFavorite(item);" class="btn btn-link tw:no-underline" :title="isFavorite(item.id) ? `${getLabel('rimuovi_preferiti', groupId)}` : `${getLabel('aggiungi_preferiti', groupId)}`"> 
253                    <i :class="(isFavorite(item.id) ? 'fas' : 'fal') + ' fa-heart fa-lg tw:text-green'"></i> 
254                </button> 
255                <button type="button" @click="share(item.contentJSON.title, item.contentJSON.description)" class="btn btn-link tw:no-underline"> 
256                    <i class="fas fa-share-alt fa-lg tw:text-green"></i> 
257                </button> 
258            </div> 
259        </div> 
260         
261        <#if tourismItem.icona_pagina?? && tourismItem.icona_pagina.getData()?has_content> 
262            <div class="d-none flex-justify-end mt-4"> 
263                <div class="pr-3 pb-3"> 
264                    <div class="sticker sticker-circle sticker-lg"> 
265                        <i class="${tourismItem.icona_pagina.getData()} fa-lg tw:text-dark"></i> 
266                    </div> 
267                </div> 
268            </div> 
269        </#if> 
270         
271        <div class="d-flex container-fluid custom-container"> 
272            <div class="row mt-4 w-100"> 
273                <div class="col-12 col-lg-7"> 
274										<div> 
275												<#if tourismItem.title?? && tourismItem.title.getData()?has_content> 
276														<h1 class="mb-3">${tourismItem.title.getData()}</h1> 
277												</#if> 
278 
279												<#if tourismItem.subTitle?? && tourismItem.subTitle.getData()?has_content> 
280														<h3>${tourismItem.subTitle.getData()}</h3> 
281												</#if>   
282										</div> 
283								 
284                    <#if tourismItem.introDescription?? && tourismItem.introDescription.getData()?has_content> 
285                        <div class="text-dark mt-4"> 
286                            ${tourismItem.introDescription.getData()} 
287                        </div> 
288                    </#if>   
289 
290                    <#if InfoOrariFieldSet.InfoOrari?? && InfoOrariFieldSet.InfoOrari.getData()?has_content> 
291                        <div class="text-dark mt-4"> 
292                            <span style="text-transform: uppercase;">${getLabel('orari')}</span><br/> 
293                            ${InfoOrariFieldSet.InfoOrari.getData()} 
294                            <#if InfoOrariFieldSet.InfoOrari.hideExtraInfo??> 
295                                <#if InfoOrariFieldSet.InfoOrari.hideExtraInfo.getData() != "true"> 
296                                    <i>${getLabel('nota-extra-info-orari')}</i> 
297                                </#if>    
298                            <#else>  
299                                <i>${getLabel('nota-extra-info-orari')}</i>          
300                            </#if> 
301                        </div> 
302                    </#if>  
303                     
304                   
305     
306                    <@contatti/>  
307     
308                </div> 
309     
310                <div class="col-12 col-lg-5"> 
311                    <div id="suggesto-map" class="map-image map-styled tw:z-10 tw:mt-10" style="height: 350px;"></div> 
312                </div> 
313            </div> 
314        </div> 
315    </section> 
316     
317		 
318		<#-- MASONRY GALLERY --> 
319    <#if hasGallery> 
320        <section id="gallery" class="mt-4"> 
321            <div class="container-fluid custom-container"> 
322                    <div class="gallery-grid grid"> 
323                        <#list tourismItem.ImmagineGallery.getSiblings() as pic> 
324                            <div class="grid-item"> 
325                                <a href="javascript:void(0);" data-toggle="modal" data-target="#lightbox-modal" data-slider="${pic?index}"> 
326																		<img src="${getKitPrefix(pic.getData(), 'tr:w-900,fo-center')}" alt="${pic.getAttribute('alt')!''}"  /> 
327                                </a> 
328                            </div> 
329                        </#list> 
330                    </div> 
331            </div> 
332             
333            <div id="lightbox-modal" tabindex="-1" role="dialog" class="modal fade"> 
334                <div class="modal-dialog modal-full-screen tw:inset-0 tw:border-none tw:shadow-none"> 
335                    <div class="modal-content tw:bg-transparent"> 
336                        <div class="modal-body tw:overflow-hidden"> 
337                            <div class="tw:absolute tw:top-0 tw:right-0 tw:z-5"> 
338                                <button type="button" data-dismiss="modal" class="btn btn-monospaced btn-secondary m-3"> 
339                                    <i class="fal fa-times fa-lg"></i> 
340                                </button> 
341                            </div> 
342                             
343                            <#-- lightbox --> 
344            				<div id="lightbox-swiper" class="swiper-container h-75 my-auto"> 
345            				    <div class="swiper-button-prev tw:w-12 tw:h-12"> 
346                                    <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 
347                                        <span class="sticker-overlay"> 
348                                            <i class="fas fa-chevron-left fa-2x tw:text-white"></i> 
349                                        </span> 
350                                    </span> 
351                                </div> 
352                                 
353                                <div class="swiper-button-next tw:w-12 tw:h-12"> 
354                                    <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 
355                                        <span class="sticker-overlay"> 
356                                            <i class="fas fa-chevron-right fa-2x tw:text-white"></i> 
357                                        </span> 
358                                    </span> 
359                                </div> 
360                                 
361                                <div class="swiper-wrapper tw:h-full"> 
362                                    <#list tourismItem.ImmagineGallery.getSiblings() as pic> 
363                                        <div class="swiper-slide tw:h-full"> 
364                                            <img data-src="${getPrefix(pic.getData(), 1920, '')}" loading="lazy" class="lazyload tw:h-full tw:object-contain tw:mx-auto" alt="${pic.getAttribute('alt')!''}"> 
365                                        </div> 
366                                    </#list> 
367                                </div> 
368                            </div> 
369                             
370                            <#-- thumbnails --> 
371            				<div id="thumbnail-swiper" class="swiper-container" thumbsSlider=""> 
372                                <div class="swiper-wrapper"> 
373                                    <#list tourismItem.ImmagineGallery.getSiblings() as pic> 
374                                        <div class="swiper-slide"> 
375                                            <img data-src="${getPrefix(pic.getData(), 300, '')}" loading="lazy" class="lazyload tw:object-cover tw:cursor-pointer tw:h-full tw:w-full" alt="${pic.getAttribute('alt')!''}"> 
376                                        </div> 
377                                    </#list> 
378                                </div> 
379                            </div> 
380                        </div> 
381                    </div> 
382                </div> 
383            </div> 
384        </section> 
385    </#if> 
386 
387    <#if tourismItem.descriptionFieldSet.description?? && tourismItem.descriptionFieldSet.description.getData()?has_content> 
388    <section id="description" class="mt-5"> 
389        <div class="container-fluid custom-container"> 
390            <p class="tw:inline tw:text-dark tw:font-heading tw:font-extrabold tw:text-2xl tw:uppercase lg:tw:text-4xl">${getLabel('scopri-di-piu-parte1')}</p> 
391            <p class="tw:inline tw:text-dark tw:font-heading tw:font-light tw:text-2xl tw:uppercase lg:tw:text-4xl">${getLabel('scopri-di-piu-parte2')}</p> 
392            <div class="text-dark mt-5"> 
393                ${tourismItem.descriptionFieldSet.description.getData()} 
394            </div> 
395        </div> 
396    </section> 
397    </#if> 
398 
399    <#if AudioBlock.CodiceEmbedAudioAltro?? && AudioBlock.CodiceEmbedAudioAltro.data?has_content> 
400        <section id="embeds" class="mt-20"> 
401            <div class="d-flex container-fluid custom-container"> 
402                <div class="row"> 
403											<#list AudioBlock.getSiblings() as embed> 
404													<div class="col-12 col-lg-6 m-auto"> 
405															<div class="card"> 
406																	<div class="embed-responsive embed-responsive-16by9 tw:rounded-md"> 
407																			${embed.CodiceEmbedAudioAltro.getData()} 
408																	</div> 
409																	<#if (embed.AudioFields.titoloEmbedAudio?? && embed.AudioFields.titoloEmbedAudio.getData()?has_content) || (embed.AudioFields.descrizioneEmbedAudio?? && embed.descrizioneEmbedAudio.getData()?has_content)> 
410																	<div class="card-body tw:px-0"> 
411																			<#if embed.AudioFields.titoloEmbedAudio?? && embed.AudioFields.titoloEmbedAudio.getData()?has_content > 
412																			<p class="tw:text-dark tw:uppercase tw:font-heading tw:font-bold tw:text-xl lg:tw:text-2xl mb-4">${embed.AudioFields.titoloEmbedAudio.getData()}</p> 
413																			</#if> 
414																			<#if embed.AudioFields.descrizioneEmbedAudio?? && embed.AudioFields.descrizioneEmbedAudio.getData()?has_content> 
415																			<p class="tw:text-dark tw:font-light">${embed.AudioFields.descrizioneEmbedAudio.getData()}</p> 
416																			</#if> 
417																	</div> 
418																	</#if> 
419															</div> 
420													</div> 
421											</#list> 
422                </div> 
423            </div> 
424        </section> 
425    </#if> 
426     
427    <#if VideoBlock.embed_video?? && VideoBlock.embed_video.data?has_content> 
428        <section id="videos" class="mt-5"> 
429            <div class="d-flex container-fluid custom-container"> 
430                <div class="row w-100"> 
431                    <#list VideoBlock.getSiblings() as video> 
432                        <div class="col-12 col-lg-6 offset-lg-2"> 
433                            <div class="card"> 
434                                <div class="embed-responsive embed-responsive-16by9"> 
435                                    <iframe class="embed-responsive-item" src="${video.embed_video.getData()}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe> 
436                                </div> 
437                                <#if (video.VideoFields.titoloEmbedVideo?? && video.VideoFields.titoloEmbedVideo.getData()?has_content) || (video.VideoFields.descrizioneEmbedVideo?? && video.VideoFields.descrizioneEmbedVideo.getData()?has_content)> 
438                                <div class="card-body py-3 px-0"> 
439                                    <#if video.VideoFields.titoloEmbedVideo?? && video.VideoFields.titoloEmbedVideo.getData()?has_content > 
440                                        <p class="vid-title">${video.VideoFields.titoloEmbedVideo.getData()}</p> 
441                                    </#if> 
442                                    <#if video.VideoFields.descrizioneEmbedVideo?? && video.VideoFields.descrizioneEmbedVideo.getData()?has_content> 
443                                        <p class="vid-desc">${video.VideoFields.titoloEmbedVideo.getData()}</p> 
444                                    </#if> 
445                                </div> 
446                                </#if> 
447                            </div> 
448                        </div> 
449                    </#list> 
450                </div> 
451            </div> 
452        </section> 
453    </#if> 
454		 
455    <#if hasDownloads> 
456        <section id="downloads"> 
457            <div class="d-flex container-fluid custom-container mt-20"> 
458                <div class="sheet tw-bg-light tw:space-y-4 p-3"> 
459                    <#list tourismItem.downloadsFieldSet.downloadsFieldSetFieldSet.getSiblings() as item> 
460                        <#-- #assign doc = getFileFromUuid(createObject(item.downloadUrl.data).uuid, groupId) --> 
461                         
462                        <div class="card tw:bg-transparent tw:border-0 tw:shadow-none"> 
463                            <div class="card-row"> 
464                                <div class="autofit-col"> 
465                                    <div class="autofit-section"> 
466                                        <i class="fal fa-file-pdf fa-lg tw:text-dark"></i> 
467                                    </div> 
468                                </div> 
469                                <div class="autofit-col autofit-col-expand autofit-col-gutters"> 
470                                    <div class="autofit-section"> 
471                                        <a href="${item.downloadUrl.getData()}" class="tw:text-dark tw:font-bold" download> 
472                                            <#-- ${doc.fileName} --> 
473                                            ${item.downloadText.getData()} 
474                                             
475                                            <span class="tw:font-light muted tw:ml-2">(${getLabel('scarica_qui')})</span> 
476                                        </a> 
477                                    </div> 
478                                </div> 
479                            </div> 
480                        </div> 
481                    </#list> 
482                </div> 
483            </div> 
484        </section> 
485    </#if> 
486     
487     
488    <#macro contatti> 
489    <#assign  
490            contactNameSz="" 
491            street_number1Sz="" 
492            localitaSz="" 
493            comuneSz="" 
494            countrySz="" 
495            zipCodeSz="" 
496            telSz="" 
497            emailSz="" 
498            email2Sz="" 
499            webSiteSz="" 
500            facebookSz="" 
501            instagramSz="" 
502            thereAreContcats="false" 
503    /> 
504    <#if tourismItem.contactFields.singleContact.contactName?? && tourismItem.contactFields.singleContact.contactName.getData()?has_content> 
505        <#assign contactNameSz=tourismItem.contactFields.singleContact.contactName.getData()> 
506        <#assign thereAreContcats="true"> 
507    </#if> 
508    <#if tourismItem.contactFields.singleContact.street_number1?? && tourismItem.contactFields.singleContact.street_number1.getData()?has_content> 
509        <#assign street_number1Sz=tourismItem.contactFields.singleContact.street_number1.getData()> 
510        <#assign thereAreContcats="true"> 
511    </#if> 
512    <#if tourismItem.contactFields.singleContact.localita?? && tourismItem.contactFields.singleContact.localita.getData()?has_content> 
513        <#assign localitaSz=tourismItem.contactFields.singleContact.localita.getData()> 
514        <#assign thereAreContcats="true"> 
515    </#if> 
516    <#if tourismItem.contactFields.singleContact.comune?? && tourismItem.contactFields.singleContact.comune.getData()?has_content> 
517        <#assign comuneSz=tourismItem.contactFields.singleContact.comune.getData()> 
518        <#assign thereAreContcats="true"> 
519    </#if> 
520    <#if tourismItem.contactFields.singleContact.country?? && tourismItem.contactFields.singleContact.country.getData()?has_content> 
521        <#assign countrySz=tourismItem.contactFields.singleContact.country.getData()> 
522        <#assign thereAreContcats="true"> 
523    </#if> 
524    <#if tourismItem.contactFields.singleContact.zipCode?? && tourismItem.contactFields.singleContact.zipCode.getData()?has_content> 
525        <#assign zipCodeSz=tourismItem.contactFields.singleContact.zipCode.getData()> 
526        <#assign thereAreContcats="true"> 
527    </#if> 
528    <#if tourismItem.contactFields.singleContact.tel?? && tourismItem.contactFields.singleContact.tel.getSiblings()?has_content> 
529        <#assign telSz=tourismItem.contactFields.singleContact.tel.getSiblings()> 
530        <#assign thereAreContcats="true"> 
531    </#if> 
532    <#if tourismItem.contactFields.singleContact.email?? && tourismItem.contactFields.singleContact.email.getData()?has_content> 
533        <#assign emailSz=tourismItem.contactFields.singleContact.email.getData()> 
534        <#assign thereAreContcats="true"> 
535    </#if> 
536    <#if tourismItem.contactFields.singleContact.email2?? && tourismItem.contactFields.singleContact.email2.getData()?has_content> 
537        <#assign email2Sz=tourismItem.contactFields.singleContact.email2.getData()> 
538        <#assign thereAreContcats="true"> 
539    </#if> 
540    <#if tourismItem.contactFields.singleContact.webSite?? && tourismItem.contactFields.singleContact.webSite.getData()?has_content> 
541        <#assign webSiteSz=tourismItem.contactFields.singleContact.webSite.getData()> 
542        <#assign thereAreContcats="true"> 
543    </#if> 
544    <#if tourismItem.contactFields.singleContact.facebook?? && tourismItem.contactFields.singleContact.facebook.getData()?has_content> 
545        <#assign facebookSz=tourismItem.contactFields.singleContact.facebook.getData()> 
546        <#assign thereAreContcats="true"> 
547    </#if> 
548    <#if tourismItem.contactFields.singleContact.instagram?? && tourismItem.contactFields.singleContact.instagram.getData()?has_content> 
549        <#assign instagramSz=tourismItem.contactFields.singleContact.instagram.getData()> 
550        <#assign thereAreContcats="true"> 
551    </#if> 
552     
553    <#assign acapo="false"> 
554    <#if thereAreContcats == "true"> 
555    <div class="text-dark mt-4">         
556            <#if contactNameSz != ""> 
557                ${contactNameSz} 
558                <#assign acapo="true"> 
559            </#if> 
560            <#if street_number1Sz != ""> 
561                <#if acapo == "true"><br/></#if> 
562                ${street_number1Sz} 
563                <#assign acapo="true"> 
564            </#if> 
565            <#if localitaSz  != ""> 
566                <#if acapo == "true"><br/></#if> 
567                ${localitaSz} 
568                <#assign acapo="true"> 
569            </#if> 
570     
571            <#if zipCodeSz != "" || comuneSz != "" || countrySz != ""> 
572                <#if acapo == "true"><br/></#if> 
573                ${zipCodeSz} ${comuneSz} ${countrySz} 
574                <#assign acapo="true"> 
575            </#if> 
576            
577            <#if telSz?has_content> 
578                <#assign telExists = false> 
579                 
580                <#list telSz as tel> 
581                    <#if tel.getData()?has_content> 
582                        <#assign telExists = true> 
583                        <#break> 
584                    </#if> 
585                </#list> 
586                 
587                <#if telExists> 
588                    <#if acapo == "true"><br/></#if> 
589                     
590                    <div class="card-row tw:space-x-2"> 
591                        <div class="autofit-col mb-auto"> 
592                            <div class="autofit-section"> 
593                                <p class="tw:text-dark tw:text-base mb-0">${getLabel('tel')}:</p> 
594                            </div> 
595                        </div> 
596                        <div class="autofit-col autofit-col-expand"> 
597                            <div class="autofit-section"> 
598                                <#list telSz as tel> 
599                                    <p class="tw:text-dark tw:text-base mb-0">${tel.getData()}</p> 
600                                </#list> 
601                            </div> 
602                        </div> 
603                    </div> 
604                     
605                    <#assign acapo="true"> 
606                </#if> 
607            </#if> 
608            <#if emailSz != ""> 
609                <#if acapo == "true"><br/></#if> 
610                ${getLabel('email')}: <a href="mailto:${emailSz}" >${emailSz}</a> 
611                <#if email2Sz != ""> 
612                    <a href="mailto:${email2Sz}" style="margin-left: 20px;">${email2Sz}</a> 
613                 </#if> 
614                <#assign acapo="true"> 
615            </#if> 
616             
617     
618            <#if webSiteSz != "" || facebookSz != "" || instagramSz != ""> 
619                <#if acapo == "true"><br/></#if> 
620                <#if webSiteSz != ""> 
621                    <a href="${webSiteSz}" title="${webSiteSz}" alt="${webSiteSz}" target="_blank">${getLabel('sito-web')}</a>      
622                </#if> 
623                <#if facebookSz != "">   
624                    <a href="${facebookSz}" title="${facebookSz}" alt="${facebookSz}" target="_blank"><i class="fab fa-facebook-f" style="margin-left: 20px;"></i></a>      
625                </#if> 
626                <#if instagramSz != "">  
627                    <a href="${instagramSz}" title="${instagramSz}" alt="${instagramSz}" target="_blank"><i class="fab fa-instagram" style="margin-left: 20px;"></i></a>  
628                </#if> 
629     
630            </#if> 
631                   
632    </div> 
633    </#if> 
634    </#macro> 
635</div> 
636 
637<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/components/securityV2.js"></script> 
638 
639<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/components/initVueApp.js"></script> 
640<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/mixins/js/favorites.js"></script> 
641<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/mixins/js/share.js"></script> 
642 
643<script> 
644    var ${portletNamespace}_custom_hook = { 
645        data: { 
646            title: "${tourismItem.title.getData()?js_string}", 
647            item: { 
648                id: "${articleId}", 
649                contentJSON: { 
650                    title: "${tourismItem.title.getData()?js_string}", 
651                    description: "${tourismItem.introDescription.getData()?js_string}", 
652                    geoRef: '${tourismItem.geoRef.getData()}', 
653                    previewPicture: "${tourismItem.previewPicture.getData()}", 
654                    viewUrl: window.location.href 
655
656            }, 
657            loading: true, 
658            coords: { 
659                lat: "${lat}", 
660                lng: "${lng}" 
661            }, 
662            regionLat: "44.3921388", 
663            regionLng: "7.5211695", 
664            slider: null, 
665            gallery: null, 
666            thumbnails: null, 
667            lightbox: null, 
668            map: null 
669        }, 
670        mounted(){ 
671            var that = this; 
672             
673            if(this.coords.lat != 0 && this.coords.lng != 0){ 
674                this.createMap(); 
675
676             
677            if(${hasSlides?c}){ 
678                this.initSlider(); 
679
680             
681            if(${hasGallery?c}){ 
682                this.initGallery(); 
683             
684                $("#lightbox-modal").on("shown.bs.modal", function(e){ 
685                    that.lightbox.update(); 
686                    that.thumbnails.update(); 
687                    that.lightbox.slideTo($(e.relatedTarget).data("slider")); 
688                    that.lightbox.update(); 
689                }); 
690                 
691                $("#lightbox-modal .swiper-wrapper").on("click", function(e){ 
692                    if($(e.target).attr("class").includes("swiper-slide")){ 
693                        $("#lightbox-modal").modal("hide"); 
694
695                }); 
696
697             
698            this.loading = false; 
699        }, 
700        methods: { 
701            createMap: function(){ 
702                var map = new SuggestoMap("suggesto-map"), 
703                    maskImage = "${images_folder}/cuneo-mask-styled.png", 
704                    maskBounds = [[ 44.86534447171959, 6.845056749880314 ], [ 44.04193085127058, 8.226587511599066 ]], 
705                    location = [ 
706                        parseFloat(this.coords.lat), 
707                        parseFloat(this.coords.lng) 
708                    ], 
709                    mapData = { 
710                        tilelayer: "none", 
711                        tilelayers: [''], 
712                        mapcenter: [ 
713                            parseFloat(this.regionLat), 
714                            parseFloat(this.regionLng) 
715                        ], 
716                        zoom: 9, 
717                        zoomControl: false, 
718                        attributionControl: false, 
719                        markersFilter: "*", 
720                        gestureHandling: false, 
721                        fitBounds: false, 
722                        markers: [], 
723                        layers: [] 
724                    }; 
725                 
726                map.sm.createMap(mapData); 
727                map.sm.disableMapTouch(); 
728         
729                var marker = L.circleMarker(location, { 
730                    radius: 3, 
731                    color: "#000", 
732                    fillOpacity: 1 
733                }).addTo(map.sm.lmap); 
734         
735                var icon = L.divIcon({ 
736                    iconSize: -10, 
737                    html: this.title.toUpperCase() 
738                }); 
739                 
740                L.marker(location, { 
741                    icon: icon 
742                }).addTo(map.sm.lmap); 
743                 
744                L.imageOverlay(maskImage, maskBounds).addTo(map.sm.lmap); 
745                L.imageOverlay(maskImage, maskBounds).bringToFront(); 
746                 
747                this.map = map; 
748            }, 
749            initSlider: function(){ 
750                this.slider = new Swiper("#slideshow .swiper-container", { 
751        			loop: ${(slides > 1)?c}, 
752        			effect: "fade", 
753        			speed: 3000, 
754        			allowTouchMove: false, 
755        			autoplay: { 
756        				delay: 3000, 
757        				disableOnInteraction: false, 
758        			}, 
759        			fadeEffect: { 
760        				crossFade: true, 
761        			}, 
762        		}); 
763            }, 
764            initGallery: function(){ 
765                this.gallery = new Swiper("#gallery .swiper-container", { 
766        			slidesPerView: 1, 
767        			spaceBetween: 25, 
768        			centerSlides: true, 
769        			centerInsufficientSlides: true, 
770        			navigation: { 
771        				prevEl: ".btn-prev", 
772        				nextEl: ".btn-next", 
773        			}, 
774        			breakpoints: { 
775        				768: { 
776        					slidesPerView: 2, 
777        					spaceBetween: 25, 
778        				}, 
779        				992: { 
780        					slidesPerView: 3, 
781        					spaceBetween: 25, 
782        				}, 
783        			}, 
784        		}); 
785        		 
786        		this.thumbnails = new Swiper("#thumbnail-swiper", { 
787                    spaceBetween: 10, 
788                    slidesPerView: 2, 
789                    centerInsufficientSlides: true, 
790                    freeMode: true, 
791                    watchSlidesVisibility: true, 
792                    watchSlidesProgress: true, 
793        			breakpoints: { 
794        				768: { 
795        					slidesPerView: 3 
796        				}, 
797        				992: { 
798        					slidesPerView: 4 
799        				}, 
800        				1200: { 
801        					slidesPerView: 5 
802
803        			}, 
804                }); 
805                 
806                this.lightbox = new Swiper("#lightbox-swiper", { 
807        		    spaceBetween: 10, 
808                    autoHeight: true, 
809                    observer: true, 
810                    observeSlideChildren: true, 
811                    keyboard: { 
812                        enabled: true 
813                    }, 
814                    navigation: { 
815                        nextEl: ".swiper-button-next", 
816                        prevEl: ".swiper-button-prev" 
817                    }, 
818                    thumbs: { 
819                        swiper: this.thumbnails 
820
821                }); 
822            }, 
823            customShare: function(type, title, description, image = ""){ 
824                if(type == "facebook"){ 
825                    var winHeight = 450, 
826                        winWidth = 600, 
827                        winTop = window.screen.height / 2 - winHeight / 2, 
828                        winLeft = window.screen.width / 2 - winWidth / 2, 
829                        params = "scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=" + winWidth + ",height=" + winHeight + ",left=" + winLeft + ",top=" + winTop, 
830                        link = "http://www.facebook.com/sharer.php?s=100&p[title]=" + encodeURIComponent(title) + "&p[summary]=" + encodeURIComponent(description) + "&p[url]=" + window.location.href + "&p[images][0]=" + image; 
831     
832                    window.open(link, "Facebook", params); 
833
834                 
835                if(type == "twitter"){ 
836                    var link = "https://twitter.com/intent/tweet?text=" + encodeURIComponent(title) + "&url=" + encodeURIComponent(window.location.href); 
837                     
838                    window.open(link, "_blank").focus(); 
839
840                 
841                if(type == "pinterest"){ 
842                    var link = "https://pinterest.com/pin/create/button/?url=" + encodeURIComponent(window.location.href) + "&description=" + encodeURIComponent(title); 
843                     
844                    window.open(link, "_blank").focus(); 
845
846                 
847                if(type == "whatsapp"){ 
848                    var link = "https://wa.me?text=" + encodeURIComponent(title + ": " + window.location.href); 
849                     
850                    window.open(link, "_blank").focus(); 
851
852                 
853                if(type == "telegram"){ 
854                    var link = "https://t.me/share/url?url=" + window.location.href + "&text=" + encodeURIComponent(title); 
855                     
856                    window.open(link, "_blank").focus(); 
857
858                 
859                if(type == "print"){ 
860                    window.print(); 
861
862                 
863                if(type == "link"){ 
864                    this.legacyShare(); 
865
866
867
868    }; 
869         
870    document.addEventListener("DOMContentLoaded", function(){ 
871		var app = initVueApp( 
872            "#${portletNamespace}", 
873            "${portletNamespace}", 
874            [d40_favorites, d40_share, ${portletNamespace}_custom_hook] 
875        ); 
876    }); 
877     
878    var groupedCategories = '${groupedCategories?js_string}'; 
879    var contentCoords = [${lat}, ${lng}]; 
880    console.log("espongo " + groupedCategories); 
881</script> 

Agrégateur de contenus

fr_FR

À faire

Aucun résultat trouvé

fr_FR

Expériences

Aucun résultat trouvé

fr_FR

dormir

Aucun résultat trouvé

fr_FR

Offres

Aucun résultat trouvé

fr_FR

Informations

Aucun résultat trouvé