Si è verificato un errore nell'elaborarazione del modello.
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="d-none 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            var form_title = "${d40.getLabel('contatta_ufficio_apt')}"; 
622             
623            $("<div class='container-fluid bg-light-green'><div class='container'><h3 class='text-light font-semibold font-heading text-3xl lg:text-4xl uppercase pt-4 mb-0'>" + form_title + "</h3></div></div>").insertBefore('#contact-form'); 
624 
625            document.querySelectorAll('a[href^="#contact"]').forEach(anchor => { 
626                anchor.addEventListener('click', function (e) { 
627                    e.preventDefault(); 
628             
629                    document.querySelector(this.getAttribute('href')).scrollIntoView({ 
630                        behavior: 'smooth' 
631                    }); 
632                }); 
633            }); 
634         
635         
636            if(${(doc.details.images?has_content)?c}){ 
637                new Swiper("#gallery .swiper-container", { 
638                    slidesPerView: 1, 
639                    spaceBetween: 50, 
640                    centerSlides: true, 
641                    centerInsufficientSlides: true, 
642                    breakpoints: { 
643                        768: { 
644                            slidesPerView: 2, 
645                            spaceBetween: 25 
646                        }, 
647                        992: { 
648                            slidesPerView: 3, 
649                            spaceBetween: 25 
650
651                    }, 
652                    navigation: { 
653                        prevEl: "#gallery .btn-prev", 
654                        nextEl: "#gallery .btn-next" 
655
656                }); 
657                 
658                var thumbnails = new Swiper("#thumbnail-swiper", { 
659                    spaceBetween: 10, 
660                    slidesPerView: 2, 
661                    centerInsufficientSlides: true, 
662                    freeMode: true, 
663                    watchSlidesVisibility: true, 
664                    watchSlidesProgress: true, 
665        			breakpoints: { 
666        				768: { 
667        					slidesPerView: 3 
668        				}, 
669        				992: { 
670        					slidesPerView: 4 
671        				}, 
672        				1200: { 
673        					slidesPerView: 5 
674
675        			}, 
676                }); 
677                 
678                var lightbox = new Swiper("#lightbox-swiper", { 
679        		    spaceBetween: 10, 
680                    autoHeight: true, 
681                    observer: true, 
682                    observeSlideChildren: true, 
683                    keyboard: { 
684                        enabled: true 
685                    }, 
686                    navigation: { 
687                        nextEl: ".swiper-button-next", 
688                        prevEl: ".swiper-button-prev" 
689                    }, 
690                    thumbs: { 
691                        swiper: thumbnails 
692
693                }); 
694                 
695                $("#lightbox-modal").on("shown.bs.modal", function(e){ 
696                    lightbox.update(); 
697                    thumbnails.update(); 
698                    lightbox.slideTo($(e.relatedTarget).data("slider")); 
699                    lightbox.update(); 
700                }); 
701                 
702                $("#lightbox-modal .swiper-wrapper").on("click", function(e){ 
703                    if($(e.target).attr("class").includes("swiper-slide")){ 
704                        $("#lightbox-modal").modal("hide"); 
705
706                }); 
707                 
708                if ($(window).width() > 991) { 
709                    var left_col_h = $(".relative.mt-20 > .container > .row > .col-lg-7").outerHeight(); 
710                    var right_col_h = $(".relative.mt-20 > .container > .row > .col-lg-5").outerHeight(); 
711                    var marg_h = right_col_h - left_col_h + 40; 
712                     
713                    if(right_col_h > left_col_h) 
714
715                        $('#gallery').removeClass('lg:mt-40 mt-20'); 
716                        $('#gallery').css({'margin-top':marg_h+'px'});  
717
718
719
720        }); 
721    </script> 
722</#if> 

L'invio della richiesta è andata a buon fine