An error occurred while processing the template.
The following has evaluated to null or missing:
==> response.data.docs.getJSONObject(0)  [in template "3572636#3572671#4340009" at line 24, column 24]

----
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 doc = response.data.docs.getJ...  [in template "3572636#3572671#4340009" at line 24, column 9]
----
1<#import "_TEMPLATE_CONTEXT_/3572636/3574130/23609/3793037" as d40> 
2 
3<#setting url_escaping_charset="UTF-8"> 
4 
5<#assign 
6    PUTIL = objectUtil("com.liferay.portal.kernel.util.PortalUtil") 
7    uuid = themeDisplay.getURLCurrent()?keep_after("-/c/n/")?keep_before("?")?keep_after_last("_") 
8    langId = locale?keep_before("_") 
9    contentType = "poi" 
10    vueActions = "" 
11    doc = "" 
12    lat = "0" 
13    lng = "0" 
14    hasCoords = false 
15/> 
16 
17<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
18<#assign z=request.setAttribute("ogUrl","${currentUrl}")> 
19 
20<#if uuid?has_content> 
21    <#assign response = d40.fetchData("https://guestapp.d40.it/v1/search/apt-trento/${contentType}/?uuid=${uuid}")> 
22     
23    <#if !response.error && response.data.docs?has_content> 
24        <#assign doc = response.data.docs.getJSONObject(0)> 
25         
26        ${request.session.removeAttribute("circularCategories")} 
27        ${request.session.setAttribute("circularCategories", doc.details.assetCategoryIds)} 
28    </#if> 
29</#if> 
30 
31<#if doc?has_content> 
32    <#if doc.details?? && doc.details.name[langId]?has_content> 
33        ${PUTIL.setPageTitle(doc.details.name[langId], request)} 
34    </#if> 
35     
36    <#assign vueActions = "getFavorites();"> 
37     
38    <#if doc.details.location.geoCoords.lat?has_content && doc.details.location.geoCoords.lon?has_content> 
39        <#assign 
40            hasCoords = true 
41            lat = doc.details.location.geoCoords.lat 
42            lng = doc.details.location.geoCoords.lon 
43            vueActions = "getFavorites();buildMap(${lat}, ${lng})" 
44        /> 
45    </#if> 
46</#if> 
47 
48<style> 
49    .swiper-button-next:after{ 
50        content: ""; 
51
52    .swiper-button-prev:after{ 
53        content: ""; 
54
55    .bg-darkgray{ 
56        background-color: #e5e5e5 !important; 
57
58    .min-h-12{ 
59        min-height: 3rem; 
60
61    .-ml-5{ 
62        margin-left: -5%; 
63
64</style> 
65 
66<div v-scope id="${d40.portletNamespace}" @vue:mounted="${vueActions}" v-cloak> 
67    <#if doc?has_content> 
68        <#if themeDisplay.getLayout().getAncestors()?has_content> 
69            <section id="breadcrumb" class="z-15 mt-25"> 
70                <div class="container"> 
71                    <ol class="breadcrumb flex lg:justify-center"> 
72                        <li class="pl-1 text-sm mr-2 relative">${d40.getLabel("sei_in")}:</li> 
73                         
74                        <li class="breadcrumb-item"> 
75                            <a href="/" class="breadcrumb-link" title="Home"> 
76                                <span class="breadcrumb-text-truncate text-dark underline">Home</span> 
77                            </a> 
78                        </li> 
79                         
80                        <#list themeDisplay.getLayout().getAncestors()?reverse as ancestor> 
81                            <li class="breadcrumb-item"> 
82                                <a href="${ancestor.getFriendlyURL()}" class="breadcrumb-link" title="${d40.escape(ancestor.getHTMLTitle(locale))}"> 
83                                    <span class="breadcrumb-text-truncate text-dark underline"> 
84                                        ${d40.escape(ancestor.getHTMLTitle(locale))} 
85                                    </span> 
86                                </a> 
87                            </li> 
88                        </#list> 
89                         
90                        <li class="breadcrumb-item active"> 
91                            <span class="breadcrumb-text-truncate text-dark"> 
92                                ${doc.details.name[langId]} 
93                            </span> 
94                        </li> 
95                    </ol> 
96                </div> 
97            </section> 
98        </#if> 
99         
100        <section class="relative mt-20"> 
101            <div class="container"> 
102                <div class="row"> 
103                    <div class="col-12 col-lg-7"> 
104                        <div class="card-row flex-col lg:flex-row mb-10"> 
105                            <div class="autofit-col autofit-col-expand order-2 lg:order-1"> 
106                                <div class="autofit-section"> 
107                                    <p class="text-dark font-semibold font-heading text-3xl lg:text-4xl uppercase"> 
108                                        ${doc.details.name[langId]} 
109                                        <#assign z=request.setAttribute("ogTitle","${doc.details.name[langId]}")>                                         
110                                    </p> 
111                                </div> 
112                            </div> 
113                            <div class="autofit-col justify-start order-1 lg:order-2 mb-3 lg:mb-0"> 
114                                <div class="autofit-section"> 
115                                    <div class="flex space-x-4"> 
116                                        <button type="button" v-if="isFavorite('${doc.uuid}')" @click="removeFavorite($event, '${doc.uuid}')" class="btn btn-link px-2"> 
117                                            <i class="fas fa-heart text-dark fa-2x"></i> 
118                                        </button> 
119                                        <button type="button" v-else @click="setFavorite($event, {id: '${doc.uuid}', contentJSON: {title: '${doc.details.name[langId]?js_string}', previewDescription: '', description: '', geoRef: '', previewPicture: '${d40.getDTNPreview(doc)}', viewUrl: '${d40.getDTNUrl(doc.details.name[langId], doc.uuid, contentType)}'}})" class="btn btn-link px-2"> 
120                                            <i class="fal fa-heart text-dark fa-2x"></i> 
121                                        </button> 
122                                         
123                                        <button type="button" @click="share('${doc.details.name[langId]}', '')" class="btn btn-link px-2"> 
124                                            <i class="fas fa-share-alt text-dark fa-2x"></i> 
125                                        </button> 
126                                    </div> 
127                                </div> 
128                            </div> 
129                        </div> 
130                         
131                        <#if doc.timetables.timeDescription[langId]?has_content> 
132                            <div class="text-dark text-lg font-light mb-15 mt-5"> 
133                                ${doc.timetables.timeDescription[langId]} 
134                            </div> 
135                        </#if> 
136                         
137                        <#if doc.details.description[langId]?has_content> 
138                            <div class="underline-grow text-dark font-light lg:text-lg leading-loose"> 
139                                ${doc.details.description[langId]} 
140                                <#if doc.details.description[langId]?length lt 160> 
141                                    <#assign  
142                                        z=request.setAttribute("ogDesc","${htmlUtil.stripHtml(doc.details.description[langId])}") 
143                                    /> 
144                                <#else> 
145                                    <#assign  
146                                        z=request.setAttribute("ogDesc","${htmlUtil.stripHtml(doc.details.description[langId])?substring(0,160)}") 
147                                    /> 
148                                </#if> 
149                                 
150                            </div> 
151                        </#if> 
152                    </div> 
153                     
154                    <div class="xl:absolute col-12 col-lg-5 xl:max-w-xl lg:right-0"> 
155                        <div class="bg-light"> 
156                            <div class="card-body px-5 pt-5 lg:px-10 lg:pt-10 pb-0"> 
157                                <p class="text-dark font-bold uppercase text-lg mb-0"> 
158                                    ${d40.getLabel("informazioni_contatti")} 
159                                </p> 
160                                <#if doc.details.townLabel != "{}"> 
161                                    <p class="text-dark text-lg mb-0"> 
162                                        ${d40.getLabel("localita")}: <span class="text-capitalize">${doc.details.townLabel[langId]}</span> 
163                                    </p> 
164                                </#if> 
165                                <#if doc.timetables.time_infos?has_content> 
166                                    <p class="text-dark font-bold text-lg mb-0 mt-3"> 
167                                        ${d40.getLabel("date_apertura")} 
168                                    </p> 
169                                </#if> 
170                            </div> 
171                             
172                            <#if doc.timetables.time_infos?has_content> 
173                                <div class="flex min-h-12"> 
174                                    <details class="bg-darkgray w-full lg:w-105% right-0 -ml-5"> 
175                                        <summary class="btn btn-link text-dark no-underline my-1 ml-12"> 
176                                            <i class="fal fa-calendar-alt"></i> 
177                                            <span>${doc.timetables.time_infos.getJSONObject(0).date_from} - ${doc.timetables.time_infos.getJSONObject(0).time_from} - ${doc.timetables.time_infos.getJSONObject(0).time_to}</span> 
178                                            <i class="fal fa-chevron-down fa-lg ml-5"></i> 
179                                        </summary> 
180                                         
181                                        <div class="card-body px-5 lg:px-10"> 
182                                            <ul> 
183                                                <#list doc.timetables.time_infos.iterator() as datetime> 
184                                                    <li class="text-dark mb-1"> 
185                                                        ${d40.getLabel("dal")} ${datetime.date_from} 
186                                                        ${d40.getLabel("al")} ${datetime.date_to} 
187                                                        ${d40.getLabel("dalle")} ${datetime.time_from} 
188                                                        ${d40.getLabel("alle")} ${datetime.time_to} 
189                                                    </li> 
190                                                </#list> 
191                                            </ul> 
192                                        </div> 
193                                    </details> 
194                                </div> 
195                            </#if> 
196                            <div class="card-body px-5 lg:px-10"> 
197                                <#if doc.contacts.getJSONObject(0).telephone?? && doc.contacts.getJSONObject(0).telephone?has_content> 
198                                    <#list doc.contacts.getJSONObject(0).telephone.iterator() as phone> 
199                                        <p class="text-dark text-lg mb-0"> 
200                                            Tel: ${phone} 
201                                        </p> 
202                                    </#list> 
203                                </#if> 
204                                <#if doc.contacts.getJSONObject(0).mail?? && doc.contacts.getJSONObject(0).mail?has_content> 
205                                    <a href="mailto:${doc.contacts.getJSONObject(0).mail}" class="block no-underline text-dark text-lg space-x-2 mb-0"> 
206                                        <i class="far fa-envelope text-dark"></i> 
207                                        <u>${doc.contacts.getJSONObject(0).mail}</u> 
208                                    </a> 
209                                </#if> 
210                                <#if doc.contacts.getJSONObject(0).websiteUrl[langId]?? && doc.contacts.getJSONObject(0).websiteUrl[langId]?has_content> 
211                                    <a href="${doc.contacts.getJSONObject(0).websiteUrl[langId]}" class="block no-underline text-dark text-lg space-x-2 mb-0" target="_blank"> 
212                                        <i class="far fa-external-link text-dark"></i> 
213                                        <u>${d40.getLabel("sito_web")}</u> 
214                                    </a> 
215                                </#if> 
216                                 
217                                <#if langId == 'en'> 
218                                    <#assign ri_url = "/contact-tourist-office-trento" /> 
219                                <#elseif langId == 'de'> 
220                                    <#assign ri_url = "/kontakt-info-anfrage-trento" /> 
221                                <#else> 
222                                    <#assign ri_url = "/richiesta-informazioni" /> 
223                                </#if> 
224                                 
225                                <a href="#contact-form" class="btn bg-green text-white font-bold uppercase px-4 py-2 rounded-0 mt-10"> 
226                                    ${d40.getLabel("richiedi_info")} 
227                                </a> 
228                            </div> 
229                             
230                            <#if hasCoords> 
231                                <div class="relative flex h-70"> 
232                                    <div class="absolute w-full lg:w-105% h-full right-0"> 
233                                        <div id="suggesto-map" class="monochrome-map size-full border-0"></div> 
234                                    </div> 
235                                </div> 
236                                <div class="card-body p-5 lg:px-10"> 
237                                    <!-- https://www.google.com/maps/@${lat},${lng},14z --> 
238                                    <a href="https://www.google.com/maps/dir/?api=1&travelmode=driving&destination=${lat},${lng}" class="d-block no-underline space-x-5" target="_blank"> 
239                                        <span class="font-bold text-dark uppercase"> 
240                                            ${d40.getLabel("indicazioni_stradali")} 
241                                        </span> 
242                                        <img src="${d40.icons_folder}/arrow_circle-dark.svg" class="w-20" /> 
243                                    </a> 
244                                </div> 
245                            </#if> 
246                        </div> 
247                    </div> 
248                </div> 
249            </div> 
250        </section> 
251         
252        <#if doc.details.images?has_content> 
253            <#assign usePreview = false> 
254             
255            <section id="gallery" class="relative overflow-x-hidden mt-20 lg:mt-40"> 
256                <div class="container"> 
257                    <p class="text-dark uppercase text-lg lg:text-3xl mb-7"> 
258                        ${d40.getLabel("galleria_immagini")} 
259                    </p> 
260                     
261                    <div class="swiper-container"> 
262                        <div class="swiper-wrapper"> 
263                            <#if doc.details.cover != "[]"> 
264                                <#assign usePreview = true> 
265                                 
266                                <#list doc.details.cover.iterator() as pic> 
267                                    <div class="swiper-slide"> 
268                                        <a href="javascript:void(0);" class="card shadow-none border-0 bg-transparent no-underline" data-toggle="modal" data-target="#lightbox-modal" data-slider="${pic?index}" data-senna-off="true"> 
269                                            <div class="relative"> 
270                                                <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload rounded-custom size-full fit-cover" alt="" /> 
271                                            </div> 
272                                        </a> 
273                                    </div> 
274                                    <#--assign z=request.setAttribute("ogImage","${pic[langId]}")-->                                          <#assign z=request.setAttribute("ogImage","${d40.getKitPrefix(pic[langId], 'n-preview_h')}")>                                     
275 
276                                    <#break> 
277                                </#list> 
278                            </#if> 
279                             
280                            <#list doc.details.images.iterator() as pic> 
281                                <#if usePreview> 
282                                    <#assign counter = pic?counter> 
283                                <#else> 
284                                    <#assign counter = pic?index> 
285                                </#if> 
286                                 
287                                <div class="swiper-slide"> 
288                                    <a href="javascript:void(0);" class="card shadow-none border-0 bg-transparent no-underline" data-toggle="modal" data-target="#lightbox-modal" data-slider="${counter}" data-senna-off="true"> 
289                                        <div class="relative"> 
290                                            <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload rounded-custom size-full fit-cover" alt="" /> 
291                                        </div> 
292                                    </a> 
293                                </div> 
294                            </#list> 
295                        </div> 
296                    </div> 
297                </div> 
298                <div class="btn-square absolute btn-prev bg-white left-0"> 
299                    <span class="sr-only">${d40.getLabel("precedente")}</span> 
300                    <i class="fas fa-chevron-left text-dark w-6 h-6"></i> 
301                </div> 
302                <div class="btn-square absolute btn-next bg-white right-0"> 
303                    <span class="sr-only">${d40.getLabel("successivo")}</span> 
304                    <i class="fas fa-chevron-right text-dark w-6 h-6"></i> 
305                </div> 
306            </section> 
307             
308            <div id="lightbox-modal" tabindex="-1" role="dialog" class="modal fade"> 
309                <div class="modal-dialog modal-full-screen inset-0 border-0 shadow-none"> 
310                    <div class="modal-content bg-transparent"> 
311                        <div class="modal-body overflow-hidden"> 
312                            <div class="absolute top-0 right-0 z-5"> 
313                                <button type="button" data-dismiss="modal" class="btn btn-monospaced btn-secondary m-3"> 
314                                    <span class="sr-only">${d40.getLabel("chiudi")}</span> 
315                                    <i class="fal fa-times fa-lg"></i> 
316                                </button> 
317                            </div> 
318                             
319                            <#-- lightbox --> 
320            				<div id="lightbox-swiper" class="swiper-container h-75 my-auto"> 
321            				    <div class="swiper-button-prev w-12 h-12"> 
322                                    <span class="sticker sticker-circle bg-green size-full"> 
323                                        <span class="sticker-overlay"> 
324                                            <i class="fas fa-chevron-left fa-2x text-white"></i> 
325                                        </span> 
326                                    </span> 
327                                </div> 
328                                 
329                                <div class="swiper-button-next w-12 h-12"> 
330                                    <span class="sticker sticker-circle bg-green size-full"> 
331                                        <span class="sticker-overlay"> 
332                                            <i class="fas fa-chevron-right fa-2x text-white"></i> 
333                                        </span> 
334                                    </span> 
335                                </div> 
336                                 
337                                <div class="swiper-wrapper h-full"> 
338                                    <#if doc.details.cover != "[]"> 
339                                        <#list doc.details.cover.iterator() as pic> 
340                                            <div class="swiper-slide h-full"> 
341                                                <img data-src="${d40.getKitPrefix(pic[langId], 'n-full_hd')}" loading="lazy" class="lazyload flex h-full object-contain mx-auto" alt=""> 
342                                            </div> 
343                                            <#break> 
344                                        </#list> 
345                                    </#if> 
346                                     
347                                    <#list doc.details.images.iterator() as pic> 
348                                        <div class="swiper-slide h-full"> 
349                                            <img data-src="${d40.getKitPrefix(pic[langId], 'n-full_hd')}" loading="lazy" class="lazyload flex h-full object-contain mx-auto" alt=""> 
350                                        </div> 
351                                    </#list> 
352                                </div> 
353                            </div> 
354                             
355                            <#-- thumbnails --> 
356            				<div id="thumbnail-swiper" class="swiper-container" thumbsSlider=""> 
357                                <div class="swiper-wrapper"> 
358                                    <#if doc.details.cover != "[]"> 
359                                        <#list doc.details.cover.iterator() as pic> 
360                                            <div class="swiper-slide"> 
361                                                <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload object-cover cursor-pointer size-full" alt=""> 
362                                            </div> 
363                                            <#break> 
364                                        </#list> 
365                                    </#if> 
366                                     
367                                    <#list doc.details.images.iterator() as pic> 
368                                        <div class="swiper-slide"> 
369                                            <img data-src="${d40.getKitPrefix(pic[langId], 'n-preview_h')}" loading="lazy" class="lazyload object-cover cursor-pointer size-full" alt=""> 
370                                        </div> 
371                                    </#list> 
372                                </div> 
373                            </div> 
374                        </div> 
375                    </div> 
376                </div> 
377            </div> 
378        </#if> 
379         
380        <#-- SEZIONE NON USATA 
381        <section class="mt-20"> 
382            <div class="container"> 
383                <div class="bg-light max-w-xl p-5 lg:p-10"> 
384                    <div class="card-row space-x-5"> 
385                        <div class="autofit-col"> 
386                            <div class="autofit-section"> 
387                                <i class="fas fa-download text-dark w-7 h-7"></i> 
388                            </div> 
389                        </div> 
390                        <div class="autofit-col autofit-col-expand"> 
391                            <div class="autofit-section"> 
392                                <p class="text-dark font-bold text-lg lg:text-xl uppercase mb-0"> Programma completo </p> 
393                            </div> 
394                        </div> 
395                    </div> 
396                </div> 
397                 
398                <div class="row mt-10 lg:mt-20"> 
399                    <div class="col-12 col-lg-8"> 
400                        <div class="space-y-10"> 
401                            <p class="text-dark uppercase text-lg lg:text-3xl"> 
402                                ${d40.getLabel("dettagli")} 
403                            </p> 
404                            <div class="space-y-5"> 
405                                <div class="row"> 
406                                    <div class="col-12 col-md-3 col-lg-2"> 
407                                        <p class="text-dark font-bold uppercase">Data</p> 
408                                    </div> 
409                                    <div class="col-12 col-md-9 col-lg-10"> 
410                                        <div class="text-dark font-light text-lg"> 
411                                            Dettagli 
412                                        </div> 
413                                    </div> 
414                                </div> 
415                            </div> 
416                        </div> 
417                    </div> 
418                </div> 
419            </div> 
420        </section> 
421        --> 
422         
423        <section class="mt-20"> 
424            <div class="container"> 
425                <div class="bg-light"> 
426                    <div class="space-y-10 p-5 lg:p-10"> 
427                        <p class="text-dark uppercase text-lg lg:text-3xl mb-0"> 
428                            ${d40.getLabel("organizzazione")} 
429                        </p> 
430                        <div class="space-y-2"> 
431                            <#if doc.contacts.getJSONObject(0).address.fulltext?? && doc.contacts.getJSONObject(0).address.fulltext?has_content> 
432                                <p class="text-dark mb-0"> 
433                                    ${doc.contacts.getJSONObject(0).address.fulltext} 
434                                </p> 
435                            </#if> 
436                             
437                            <#if doc.contacts.getJSONObject(0).mail?? && doc.contacts.getJSONObject(0).mail?has_content> 
438                                <a href="mailto:${doc.contacts.getJSONObject(0).mail}" class="d-block text-dark underline"> 
439                                    ${doc.contacts.getJSONObject(0).mail} 
440                                </a> 
441                            </#if> 
442                             
443                            <#if doc.contacts.getJSONObject(0).telephone?? && doc.contacts.getJSONObject(0).telephone?has_content> 
444                                <#list doc.contacts.getJSONObject(0).telephone.iterator() as phone> 
445                                    <p class="text-dark mb-0"> 
446                                        <span class="font-bold">${d40.getLabel("telefono")}:</span> 
447                                        ${phone} 
448                                    </p> 
449                                </#list> 
450                            </#if> 
451                        </div> 
452                    </div> 
453                </div> 
454            </div> 
455        </section> 
456         
457        <#-- 
458        <section class="mt-10"> 
459            <div class="container"> 
460                <p class="text-dark uppercase text-lg lg:text-3xl mb-7"> Info sezione </p> 
461                <p class="text-dark text-lg font-light mb-0"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </p> 
462            </div> 
463        </section> 
464        --> 
465    <#else> 
466        <div class="text-center mt-35"> 
467            <p class="text-dark"> 
468                ${d40.getLabel("errore_caricamento_contenuto")} 
469            </p> 
470        </div> 
471    </#if> 
472</div> 
473 
474<script type="module"> 
475    import { createApp } from "https://cdnjs.cloudflare.com/ajax/libs/petite-vue/0.4.1/petite-vue.es.min.js"; 
476 
477    createApp({ 
478        isMobile: window.innerWidth < 768, 
479        favorites: [], 
480        getFavorites() { 
481            if(localStorage.getItem("favorites") !== null) { 
482    			this.favorites = JSON.parse(localStorage.getItem("favorites")); 
483
484        }, 
485        setFavorite(e, item) { 
486            e.preventDefault(); 
487    		this.getFavorites(); 
488     
489    		var newFavorite = { 
490    			id: item.id, 
491        			contentJSON: { 
492    				title: item.contentJSON.title, 
493    				previewDescription: item.contentJSON.previewDescription, 
494    				description: item.contentJSON.description, 
495    				geoRef: item.contentJSON.geoRef, 
496    				previewPicture: item.contentJSON.previewPicture, 
497    				viewUrl: item.contentJSON.viewUrl, 
498    				type: "lfr", 
499
500    		}; 
501     
502    		this.favorites.push(newFavorite); 
503    		this.saveFavorites(); 
504    	}, 
505    	removeFavorite(e, itemId) { 
506    	    e.preventDefault(); 
507    		this.favorites = this.favorites.filter((obj) => obj.id !== itemId); 
508    		this.saveFavorites(); 
509    	}, 
510    	saveFavorites() { 
511    		localStorage.setItem("favorites", JSON.stringify(this.favorites)); 
512    	}, 
513    	isFavorite(itemId) { 
514    		if (this.favorites.some((e) => e.id == itemId)) { 
515    			return true; 
516
517     
518    		return false; 
519    	}, 
520    	buildMap(lat, lng) { 
521            var map = new SuggestoMap("suggesto-map"), 
522                location = [parseFloat(lat), parseFloat(lng)]; 
523             
524            var svgIcon = L.divIcon({ 
525                html: ` 
526                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44.537 64.343"> 
527                        <path d="M32.952,68c-4.491-5.935-9.221-11.692-12.837-18.251-3.4-6.175-5.892-12.453-4.094-19.725,2.422-9.787,12.253-17.363,22.112-16.878,11.322.558,20.189,8.638,21.649,19.385.8,5.867-1.25,10.892-3.84,15.837A105.38,105.38,0,0,1,43.958,65.889c-.687.844-1.309,1.739-1.96,2.611-.953,1.06-1.971,2.068-2.841,3.191-.965,1.245-1.729,1.629-2.844.1A50.506,50.506,0,0,0,32.952,68m4.722-46.328A14.156,14.156,0,0,0,23.76,35.59c-.168,7.053,6.542,13.748,13.813,13.783A14.234,14.234,0,0,0,51.46,35.693,14.138,14.138,0,0,0,37.674,21.676" transform="translate(-15.419 -13.129)" fill="#5098c6"/> 
528                        <path d="M31.941,63.206A50.288,50.288,0,0,1,35.3,67c1.116,1.526,1.878,1.142,2.844-.1.87-1.123,1.889-2.132,2.841-3.191a8.579,8.579,0,0,1,5.414,2.22c1.659,1.642,1.586,3.631-.455,4.627a21.209,21.209,0,0,1-16.871.723c-1.611-.565-3.293-1.51-3.092-3.645.19-2.018,1.855-2.718,3.511-3.342.833-.315,1.791-.363,2.447-1.079" transform="translate(-14.408 -8.331)" fill="#222"/> 
529                        <path d="M36.946,20.929A14.137,14.137,0,0,1,50.732,34.944,14.236,14.236,0,0,1,36.844,48.626c-7.27-.036-13.98-6.732-13.813-13.783A14.157,14.157,0,0,1,36.946,20.929m-.023,5.445a8.4,8.4,0,1,0,8.394,8.22,8.5,8.5,0,0,0-8.394-8.22" transform="translate(-14.69 -12.381)" fill="#fdfcf9"/> 
530                        <path d="M36.45,25.9a8.4,8.4,0,0,1,.077,16.809A8.405,8.405,0,1,1,36.45,25.9" transform="translate(-14.218 -11.905)" fill="#222"/> 
531                    </svg>`, 
532                className: "", 
533                iconSize: [44.537, 64.343], 
534                iconAnchor: [22.287, 64.343], 
535            }); 
536                 
537            var mapData = { 
538                tilelayer: "osm", 
539                gestureHandling: true, 
540                fitBounds: false, 
541                mapcenter: location, 
542                zoom: 15, 
543                markersFilter: "*", 
544                markers: [], 
545                layers: [] 
546            }; 
547                 
548            map.sm.createMap(mapData); 
549             
550            L.circleMarker(location, { 
551                radius: 0, 
552                color: "#000", 
553                fillOpacity: 0, 
554                weight: 0 
555            }).addTo(map.sm.lmap); 
556             
557            L.marker(location, { 
558                icon: svgIcon 
559            }).addTo(map.sm.lmap); 
560        }, 
561        share(title, desc, mode = "legacy") { 
562            if (this.isMobile) { 
563                var shareData = { 
564                    title: title, 
565                    text: desc, 
566                    url: window.location.href.replaceAll("{", "%7B").replaceAll("}", "%7D") 
567                }; 
568 
569                try { 
570                    navigator.share(shareData); 
571                } catch (err) { 
572                    console.error("Error sharing: " + err); 
573 
574                    if (mode == "legacy") { 
575                        this.legacyShare(); 
576                    } else if (mode == "social") { 
577                        this.socialShare(title, desc); 
578
579
580            } else { 
581                if (mode == "legacy") { 
582                    this.legacyShare(); 
583                } else if (mode == "social") { 
584                    this.socialShare(title, desc); 
585
586
587        }, 
588        legacyShare() { 
589            var clip = document.createElement("input"), 
590                toCopy = window.location.href.replaceAll("{", "%7B").replaceAll("}", "%7D"); 
591 
592            document.body.appendChild(clip); 
593            clip.value = toCopy; 
594            clip.select(); 
595            clip.setSelectionRange(0, 999999); 
596 
597            navigator.clipboard.writeText(clip.value); 
598            document.body.removeChild(clip); 
599 
600            alert("Link copiato"); 
601        }, 
602        socialShare(title, desc, image = "") { 
603            var link = "#", 
604                winHeight = 450, 
605                winWidth = 600, 
606                winTop = window.screen.height / 2 - winHeight / 2, 
607                winLeft = window.screen.width / 2 - winWidth / 2, 
608                params = "scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=" + winWidth + ",height=" + winHeight + ",left=" + winLeft + ",top=" + winTop; 
609 
610            link = "http://www.facebook.com/sharer.php?s=100&p[title]=" + encodeURIComponent(title) + "&p[summary]=" + encodeURIComponent(desc) + "&p[url]=" + window.location.href + "&p[images][0]=" + image; 
611 
612            window.open(link, "Facebook", params); 
613
614    }).mount("#${d40.portletNamespace}"); 
615</script> 
616 
617<#if doc?has_content> 
618    <script> 
619        document.addEventListener("DOMContentLoaded", function(){ 
620 
621            document.querySelectorAll('a[href^="#contact"]').forEach(anchor => { 
622                anchor.addEventListener('click', function (e) { 
623                    e.preventDefault(); 
624             
625                    document.querySelector(this.getAttribute('href')).scrollIntoView({ 
626                        behavior: 'smooth' 
627                    }); 
628                }); 
629            }); 
630         
631         
632            if(${(doc.details.images?has_content)?c}){ 
633                new Swiper("#gallery .swiper-container", { 
634                    slidesPerView: 1, 
635                    spaceBetween: 50, 
636                    centerSlides: true, 
637                    centerInsufficientSlides: true, 
638                    breakpoints: { 
639                        768: { 
640                            slidesPerView: 2, 
641                            spaceBetween: 25 
642                        }, 
643                        992: { 
644                            slidesPerView: 3, 
645                            spaceBetween: 25 
646
647                    }, 
648                    navigation: { 
649                        prevEl: "#gallery .btn-prev", 
650                        nextEl: "#gallery .btn-next" 
651
652                }); 
653                 
654                var thumbnails = new Swiper("#thumbnail-swiper", { 
655                    spaceBetween: 10, 
656                    slidesPerView: 2, 
657                    centerInsufficientSlides: true, 
658                    freeMode: true, 
659                    watchSlidesVisibility: true, 
660                    watchSlidesProgress: true, 
661        			breakpoints: { 
662        				768: { 
663        					slidesPerView: 3 
664        				}, 
665        				992: { 
666        					slidesPerView: 4 
667        				}, 
668        				1200: { 
669        					slidesPerView: 5 
670
671        			}, 
672                }); 
673                 
674                var lightbox = new Swiper("#lightbox-swiper", { 
675        		    spaceBetween: 10, 
676                    autoHeight: true, 
677                    observer: true, 
678                    observeSlideChildren: true, 
679                    keyboard: { 
680                        enabled: true 
681                    }, 
682                    navigation: { 
683                        nextEl: ".swiper-button-next", 
684                        prevEl: ".swiper-button-prev" 
685                    }, 
686                    thumbs: { 
687                        swiper: thumbnails 
688
689                }); 
690                 
691                $("#lightbox-modal").on("shown.bs.modal", function(e){ 
692                    lightbox.update(); 
693                    thumbnails.update(); 
694                    lightbox.slideTo($(e.relatedTarget).data("slider")); 
695                    lightbox.update(); 
696                }); 
697                 
698                $("#lightbox-modal .swiper-wrapper").on("click", function(e){ 
699                    if($(e.target).attr("class").includes("swiper-slide")){ 
700                        $("#lightbox-modal").modal("hide"); 
701
702                }); 
703                 
704                if ($(window).width() > 991) { 
705                    var left_col_h = $(".relative.mt-20 > .container > .row > .col-lg-7").outerHeight(); 
706                    var right_col_h = $(".relative.mt-20 > .container > .row > .col-lg-5").outerHeight(); 
707                    var marg_h = right_col_h - left_col_h + 40; 
708                     
709                    if(right_col_h > left_col_h) 
710
711                        $('#gallery').removeClass('lg:mt-40 mt-20'); 
712                        $('#gallery').css({'margin-top':marg_h+'px'});  
713
714
715
716        }); 
717    </script> 
718</#if> 

Your request was sent successfully