Colfiorito Park - Colfiorito Park
An error occurred while processing the template.
The following has evaluated to null or missing:
==> offerResults.getResponse() [in template "20099#20135#33911" at line 829, column 38]
----
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 offerResponse = offerResults... [in template "20099#20135#33911" at line 829, column 13]
---- 1<#--ITINERARIO ESERCIZIO 10/06/2025--> 2<style> 3 .link-list .link-container:last-child { 4 border-bottom: 4px solid #395a3e; 5 } 6 7 .link-sidebar-1 .link .label { 8 font-size: 1.1rem; 9 } 10</style> 11<#assign structureService = serviceLocator.findService("it.inera.structure.service.StructureService")> 12<#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 13<#assign itinerarioStructureId = structureService.getStructureItinerarioId()> 14<#assign elasticService = serviceLocator.findService("it.inera.elastic.service.ElasticService")> 15<#assign journalArticleId = .vars['reserved-article-id'].data/> 16 17<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 18<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 19<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 20 21<#-- GESTIONE RALATED ASSETS IMPORTS--> 22<#assign journalArticleConverter = serviceLocator.findService("it.inera.journalarticleconverter.service.JournalArticleConverter")> 23<#assign searchService = serviceLocator.findService("it.inera.structure.search.service.SearchService")> 24<#-- FINE GESTIONE RALATED ASSETS IMPORTS--> 25 26<#assign vocabularyIdUmbria = structureService.getVocabularyIdByVocabularyName("Vocabolario Umbria") > 27 28<#if coordinate_principali.getData()?has_content && coordinate_principali.getData()?trim?length gt 0 > 29 <#assign coordinatePrincipaliJson = coordinate_principali.getData()?eval > 30 <#if coordinatePrincipaliJson.latitude?has_content && coordinatePrincipaliJson.latitude?trim?length gt 0 > 31 <#assign latitude = coordinatePrincipaliJson.latitude?c > 32 </#if> 33 <#if coordinatePrincipaliJson.longitude?has_content && coordinatePrincipaliJson.longitude?trim?length gt 0 > 34 <#assign longitude = coordinatePrincipaliJson.longitude?c > 35 </#if> 36<#else> 37 <#assign latitude = "" > 38 <#assign longitude = "" > 39</#if> 40 41<#assign currentArticle = journalArticleLocalService.getArticle(groupId, journalArticleId) /> 42 43<#-- GESTIONE ASSET LINGUA DI DEFAULT --> 44<#assign currentObjectDefaultLanguage = journalArticleConverter.getItinerario(currentArticle, localeUtil.getDefault())> 45 46<#-- GESTIONE RALATED ASSETS VALORIZZAZIONE ARRAY--> 47<#assign currentObject = journalArticleConverter.getItinerario(currentArticle, themeDisplay.getLocale())> 48<#assign relatedAssets = currentObject.getDirectRelatedAssets()> 49<#assign relatedResults = []> 50<#if relatedAssets?? && relatedAssets?has_content> 51 <#assign relatedResult = searchService.getResponse(relatedAssets, themeDisplay.getLocale(), null, themeDisplay)> 52 <#if relatedResult?? && relatedResult?has_content> 53 <#assign relatedResults = relatedResult.getData()> 54 </#if> 55</#if> 56<#-- GESTIONE RALATED ASSETS VALORIZZAZIONE ARRAY--> 57 58<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() /> 59<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 60<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 61 62<#assign categoryList = assetCategoryLocalService.getAssetEntryAssetCategories(currentArticleAssetEntryId) > 63 64<#assign vocabularyIdTerritori = structureService.getVocabularyIdByVocabularyName("Territori") > 65<#assign categoryListIds = [] > 66<#assign municipalityNames = [] > 67<#assign municipalityNamesString = "" > 68<#assign isTerritorio = false > 69<#assign territoryNameString = "" > 70 71<#assign hasTappe = false > 72<#assign hasTappewithGeolocation = false > 73<#if tappa.getData()?has_content> 74 <#list tappa.getSiblings() as cur_tappa> 75 <#if cur_tappa.titolo_tappa.getData()?has_content> 76 <#assign hasTappe = true > 77 </#if> 78 79 <#if (cur_tappa?has_content && cur_tappa.comune?has_content && cur_tappa.comune.geolocalizzazione?has_content 80 && cur_tappa.comune.geolocalizzazione.getData() != "" && cur_tappa.comune.geolocalizzazione.getData()?has_content)> 81 <#list cur_tappa.comune.getSiblings() as comune_tappa> 82 <#if comune_tappa?has_content && comune_tappa.geolocalizzazione?has_content && comune_tappa.geolocalizzazione.getData()?has_content> 83 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(comune_tappa.geolocalizzazione.getData())> 84 <#assign latitude = geolocationJSONObject.getDouble("latitude")> 85 <#assign longitude = geolocationJSONObject.getDouble("longitude")> 86 <#if latitude?has_content && longitude?has_content> 87 <#assign hasTappewithGeolocation = true> 88 <#break> 89 </#if> 90 </#if> 91 </#list> 92 </#if> 93 94 </#list> 95</#if> 96 97<#if hasTappewithGeolocation> 98 <#assign latitude = "" > 99 <#assign longitude = "" > 100</#if> 101 102<#list categoryList as category> 103 <#if vocabularyIdUmbria == category.getVocabularyId() > 104 <#assign categoryListIds = categoryListIds + [category.getCategoryId()]> 105 </#if> 106</#list> 107 108 109<#list categoryList as category> 110 <#if vocabularyIdTerritori == category.getVocabularyId() > 111 <#assign municipalityName = category.getTitle(themeDisplay.getLanguageId()) > 112 113 <#assign childCategories = assetCategoryLocalService.getChildCategories(category.getCategoryId()) > 114 <#if childCategories?has_content> 115 <#assign territoryNameString = category.getTitle(themeDisplay.getLanguageId())> 116 <#list childCategories as curChildCategory> 117 <#assign isTerritorio = true > 118 <#assign municipalityNameC = curChildCategory.getTitle(themeDisplay.getLanguageId()) > 119 <#if curChildCategory?counter != 1 || municipalityNamesString?has_content> 120 <#assign municipalityNamesString = municipalityNamesString + "," + municipalityNameC> 121 <#else> 122 <#assign municipalityNamesString = municipalityNamesString + municipalityNameC> 123 </#if> 124 <#assign municipalityNames = municipalityNames + [municipalityNameC]> 125 </#list> 126 <#else> 127 <#assign municipalityNames = municipalityNames + [municipalityName]> 128 <#if municipalityNamesString?has_content> 129 <#assign municipalityNamesString = municipalityNamesString + "," + municipalityName> 130 <#else> 131 <#assign municipalityNamesString = municipalityNamesString + municipalityName> 132 </#if> 133 </#if> 134 </#if> 135</#list> 136 137<#assign isgu = structureService.isGroupUmbria(themeDisplay)> 138<#assign sitiESottositiCategories = ""> 139<#if !isgu> 140 <#assign sitiESottositiCategories = structureService.getSiteCategoryIdsByVocabularyName(themeDisplay, "Siti-e-sottositi")> 141</#if> 142<#if validator.isNotNull(sitiESottositiCategories)> 143 <#list sitiESottositiCategories as cat> 144 <#assign categoryListIds = categoryListIds + [cat]> 145 </#list> 146</#if> 147 148<#if isgu> 149 <#assign results = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), itinerarioStructureKey, itinerarioStructureId?c, locale, "6", null , null, journalArticleId, null, null, null) /> 150<#else> 151 <#assign results = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), itinerarioStructureKey, itinerarioStructureId?c, locale, "6", null , sitiESottositiCategories, journalArticleId, null, null, null) /> 152</#if> 153 154<#-- per categoria --> 155 156<#assign categoryArray=[]> 157<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")> 158<#assign vocabularyName = "Vocabolario Umbria"/> 159<#assign specificVocabulary = assetVocabularyLocalService.getGroupVocabulary(themeDisplay.getCompany().getGroupId(), vocabularyName)/> 160<#if validator.isNotNull(specificVocabulary)> 161 <#assign cats = specificVocabulary.getCategories()/> 162</#if> 163 164<#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(currentArticleAssetEntryId) /> 165<#if validator.isNotNull(cats)> 166 <#list cats as cat> 167 <#list categories as cate> 168 <#if cat == cate> 169 <#assign categoryArray = categoryArray + [cat]> 170 </#if> 171 </#list> 172 </#list> 173</#if> 174 175<#--<#if categoryArray?? && categoryArray?has_content> 176 <#assign firstCategory = categoryArray[0] /> 177 <#assign titleCategory = firstCategory.getTitle(themeDisplay.getLocale())> 178</#if>--> 179 180<#-- per categoria FINE --> 181 182<#assign widthBannerImg = propsUtil.get("image.scale.fullpage") /> 183<#assign widthSliderTappaImg = propsUtil.get("image.slider.testobarra.height") /> 184<#assign widthSliderImg = propsUtil.get("image.slider.testobarra.height") /> 185<#assign widthCardImg = propsUtil.get("image.scale.allpage") /> 186<#assign tomBaseImagePath = propsUtil.get("tom.base.image.url") /> 187 188<#assign urlBanner = immagine_banner.getData() > 189<#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() > 190<#attempt> 191 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagineBanner()?has_content> 192 <#assign urlBanner = currentObjectDefaultLanguage.getImmagineBanner().getUrl() > 193 </#if> 194 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner()?has_content> 195 <#assign testAlternativoImmagineBanner = currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner() > 196 </#if> 197 <#recover> 198 <#assign urlBanner = immagine_banner.getData() > 199 <#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() > 200</#attempt> 201 202<#if urlBanner?contains("?")> 203 <#assign urlBanner = urlBanner + "&width=" + widthBannerImg > 204<#else> 205 <#assign urlBanner = urlBanner + "?width=" + widthBannerImg > 206</#if> 207 208<div class="container-fluid"> 209 <div class="row"> 210 <div class="header-block header-block-1 header-block-image-main header-block-tagged"> 211 212 <img class="bg" src="${urlBanner}" alt="${testAlternativoImmagineBanner}"> 213 <div class="container title title-main"> 214 <div class="row"> 215 <div class="col-12"> 216 <#assign titleCategory = ""> 217 <#assign titleParentCategory = ""> 218 <#list categoryList as category> 219 <#if vocabularyIdUmbria == category.getVocabularyId() > 220 <#assign titleCategory = category.getTitle(themeDisplay.getLocale())> 221 <#assign parentCategoryId = category.getParentCategoryId()> 222 <#if parentCategoryId?? && parentCategoryId?has_content && parentCategoryId != 0> 223 <#assign pc = assetCategoryLocalService.getCategory(parentCategoryId) > 224 <#if pc?? && pc?has_content> 225 <#assign titleParentCategory = pc.getTitle("it_IT")> 226 </#if> 227 </#if> 228 <#if titleCategory?? && titleCategory?has_content> 229 <span class="hidden" id="tagmanager_init_pagegroup">${titleParentCategory}</span> 230 <span class="hidden" id="tagmanager_init_pagecategory">${titleCategory}</span> 231 <div class="badge badge-light badge-uppercase"> 232 ${titleCategory} 233 </div> 234 </#if> 235 </#if> 236 </#list> 237 <h1 class="title-1 text-weight-300 margin-top-em-0 margin-bottom-em-0"> 238 ${titolo.getData()} 239 </h1> 240 </div> 241 </div> 242 </div> 243 </div> 244 </div> 245</div> 246<#assign categoryArray=[]> 247 248 249<#assign count = 0 /> 250<#if dati_tecnici_chiave?? && dati_tecnici_chiave?has_content > 251 <#list dati_tecnici_chiave.getSiblings() as cur_dati_tecnici_chiave> 252 <#if cur_dati_tecnici_chiave.dati_tecnici_valore?? && cur_dati_tecnici_chiave.dati_tecnici_valore.getData()?has_content > 253 <#assign count = count + 1 /> 254 </#if> 255 </#list> 256</#if> 257 258<#if count gt 0 > 259 <#assign dividendo = 12/count /> 260</#if> 261 262<div class="container-fluid bg-white"> 263 <#if count gt 0 && count lt 4> 264 <div class="row flex-column-reverse flex-lg"> 265 <div class="container bridge bridge-top"> 266 <div class="row"> 267 <div class="col-12"> 268 <div class="card-bar card-bar-1 card-bar-dark"> 269 <div class="card-row"> 270 <#list dati_tecnici_chiave.getSiblings() as cur_dati_tecnici_chiave> 271 <div class="col-${dividendo}"> 272 <div class="card card-horizontal card-3"> 273 <div class="card-row"> 274 <div class="card-icon card-item-first"> 275 <i class="fas ${cur_dati_tecnici_chiave.dati_tecnici_icona.getData()}"></i> 276 </div> 277 <div class="card-body"> 278 <div class="row"> 279 <div class="col-12"> 280 <div class="card-subtitle title-6"> 281 ${cur_dati_tecnici_chiave.getData()} 282 </div> 283 </div> 284 <div class="col-12"> 285 <div class="card-title"> 286 ${cur_dati_tecnici_chiave.dati_tecnici_valore.getData()} 287 </div> 288 </div> 289 </div> 290 </div> 291 </div> 292 </div> 293 </div> 294 </#list> 295 </div> 296 </div> 297 </div> 298 </div> 299 </div> 300 </div> 301 </#if> 302 303 <div class="row"> 304 <article class="container padding-bottom-em-4"> 305 <div class="row"> 306 307 <div class="col-12"> 308 <div class="text-left link-back-container margin-left-rem-1"><a class="link-1 link-back margin-top-em-2 padding-left-rem-1" id="backLink" href="#"><i class="im im-angle-left"></i><span class="hidden display-inline-lg"><@liferay.language key="label.indietro" /></span></a></div> 309 <div class="text-center padding-top-em-2"> 310 <div class="link-1 link-toggle-map"></div> 311 </div> 312 <div class="link-tripplanner-container"> 313 <#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 314 <a data-id="${journalArticleId}" class="link link-tripplanner link-tripplanner-1 link-tripplanner-extended link-tripplanner-top-right margin-right-em-1 padding-right-rem-1" href="${currentUrl}" data-tom="false"> 315 <i class="far fa-heart text-red"></i> 316 <i class="fas fa-heart text-red" style="display:none"></i> 317 <span class="label hidden display-inline-lg"><@liferay.language key="label.aggiungi.al.mio.viaggio" /></span> 318 </a> 319 </div> 320 321 <div class="hidden infos"> 322 <div class="hidden" id="tagmanager_item_"> 323 <span id="tagmanager_item_id">${currentArticleAssetEntryId}</span> 324 <span id="tagmanager_item_category">${titleCategory}</span> 325 <span id="tagmanager_item_name">${titolo.getData()}</span> 326 <span id="tagmanager_item_list_name">${titleCategory}</span> 327 <span id="tagmanager_item_list_id"></span> 328 <span id="tagmanager_item_brand">${titleParentCategory}</span> 329 <span id="tagmanager_index">1</span> 330 </div> 331 </div> 332 </div> 333 334 335 <div class="col-12 col-md-8"> 336 <div class="text-block text-block-left"> 337 <div class="title-4 padding-bottom-em-1 mt-5 e mt-lg-0"> 338 ${sottotitolo.getData()} 339 </div> 340 <div class="text"> 341 ${descrizione.getData()} 342 </div> 343 344 345 <#if hasTappe?c = "false"> 346 <br> 347 <#if validator.isNotNull(descrizione_due.getData()) && descrizione_due.getData() != '<p>null</p>'> 348 <div class="text"> 349 ${descrizione_due.getData()} 350 </div> 351 </#if> 352 </#if> 353 </div> 354 </div> 355 356 357 <#assign fileKml = "" /> 358 <#assign checkFileKml = false /> 359 <#assign urlFileKml = "" /> 360 361 <#assign fileGps = "" /> 362 <#assign checkFileGps = false /> 363 <#assign urlFileGps = "" /> 364 <#assign urlFileGpsNoWaypoints = ""> 365 366 <#assign countFile = 0 /> 367 <#if file_tecnici?? && file_tecnici?has_content> 368 <#list file_tecnici.getSiblings() as cur_file_tecnici> 369 <#if cur_file_tecnici.file.getData()?? && cur_file_tecnici.file.getData()?has_content > 370 371 <#assign counter = 0 > 372 373 <#list cur_file_tecnici.file.getData()?split("/") as x> 374 <#if counter == 2> 375 <#assign groupIdd = x?number > 376 </#if> 377 <#if counter == 5> 378 <#assign uuId = x > 379 <#if uuId?contains("?t=") > 380 <#assign uuid = uuId?keep_before("?t=") /> 381 </#if> 382 </#if> 383 <#assign counter = counter + 1 > 384 </#list> 385 386 <#assign fileEntry = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryLocalService') /> 387 <#assign file=fileEntry.getFileEntryByUuidAndGroupId(uuid,groupIdd) > 388 389 <#if file.getExtension() == "kml" > 390 <#assign fileKml = file /> 391 <#assign checkFileKml = true /> 392 <#assign countFile = countFile - 1 /> 393 <#assign urlFileKml = "/documents/"+ fileKml.getGroupId() +"/" +fileKml.getClassPK() +"/"+ fileKml.getTitle() +"/"+fileKml.getUuid() > 394 </#if> 395 396 <#if file.getExtension() == "gpx" > 397 <#assign fileGps = file /> 398 <#if fileGps?has_content> 399 <#assign fileGpsNoWaypoints = currentObject.removeMarkerFromGpxItinerario(fileGps, themeDisplay)> 400 <#else> 401 <#assign fileGpsNoWaypoints = ""> 402 </#if> 403 404 <#assign checkFileGps = true /> 405 <#assign urlFileGps = "/documents/"+ fileGps.getGroupId() +"/" +fileGps.getClassPK() +"/"+ fileGps.getTitle() +"/"+fileGps.getUuid() > 406 <#if fileGpsNoWaypoints?has_content> 407 <#assign urlFileGpsNoWaypoints = "/documents/"+ fileGpsNoWaypoints.getGroupId() +"/" +fileGpsNoWaypoints.getClassPK() +"/"+ fileGpsNoWaypoints.getTitle() +"/"+fileGpsNoWaypoints.getUuid()> 408 </#if> 409 410 </#if> 411 412 <#assign countFile = countFile + 1 /> 413 </#if> 414 </#list> 415 </#if> 416 417 <div class="col-md-4" style="margin-top:5rem;"> 418 <#if countFile gt 0> 419 <div class="text-block text-block-1"> 420 <div class="link-sidebar link-sidebar-1"> 421 <div class="title" style="border-top: 4px solid #395a3e; margin-top: 40px; padding-top: 1.5rem;"> 422 <@liferay.language key="label.download"/> 423 </div> 424 <ul class="link-list"> 425 <#list file_tecnici.getSiblings() as cur_file_tecnici> 426 <#if !cur_file_tecnici.getData()?contains("kml")> 427 <li class="link-container"> 428 <a class="link" href="${cur_file_tecnici.file.getData()}"> 429 <i class="fas fa-angle-right"></i> 430 <span class="label"> 431 <#if cur_file_tecnici.getData()?? && cur_file_tecnici.getData()?has_content> 432 ${cur_file_tecnici.getData()} 433 <#else> 434 Scarica traccia completa 435 </#if> 436 </span> 437 </a> 438 </li> 439 </#if> 440 </#list> 441 </ul> 442 </div> 443 </div> 444 </#if> 445 <#if titolo_link_card?? && titolo_link_card.getData()?has_content> 446 447 <#assign titoloLinkCardList = titolo_link_card.getSiblings()![]> 448 449 <#list titoloLinkCardList as item> 450 <#assign titoloLink = item.getData()?string!"" /> 451 <#assign sottotitoloLink = item.getChild("sottotitolo_link_card")?has_content?then(item.getChild("sottotitolo_link_card").getData()?string, "") /> 452 <#assign urlLink = item.getChild("url_link_card").getData()?string!"" /> 453 <#assign immagineLink = item.getChild("immagine_link_card").getData()?string!"" /> 454 455 <#if urlLink?has_content && titoloLink?has_content && immagineLink?has_content> 456 <div class="mb-4"> 457 <div class="card card-horizontal card-event-1 card-event-default h-100"> 458 <a class="card-link" href="${urlLink}" aria-label="${titoloLink}"></a> 459 <span class="card-row"> 460 <span class="card-image aspect-ratio card-item-first"> 461 <img class="aspect-ratio-item aspect-ratio-item-center-ceil aspect-ratio-item-fluid bike-card" 462 src="${immagineLink}" alt="${titoloLink}"> 463 </span> 464 <span class="card-body"> 465 <div class="row"> 466 <div class="col-12"> 467 <span class="card-title" style="font-size:20px;">${titoloLink}</span> 468 </div> 469 <#if sottotitoloLink?has_content> 470 <div class="col-12"> 471 <span class="card-subtitle title-6">${sottotitoloLink}</span> 472 </div> 473 </#if> 474 </div> 475 </span> 476 </span> 477 </div> 478 </div> 479 </#if> 480 </#list> 481 </#if> 482 </div> 483 </div> 484 </article> 485 </div> 486 <#assign non_visualizzare_la_mappa = non_visualizzare_la_mappa!false> 487 488 <#if non_visualizzare_la_mappa?is_hash> 489 <#assign non_visualizzare_la_mappa_value = non_visualizzare_la_mappa.getData()?trim> 490 <#if non_visualizzare_la_mappa_value?has_content> 491 <#assign non_visualizzare_la_mappa_bool = non_visualizzare_la_mappa_value?boolean> 492 <#else> 493 <#assign non_visualizzare_la_mappa = false> 494 <#assign non_visualizzare_la_mappa_bool = false> 495 </#if> 496 <#else> 497 <#assign non_visualizzare_la_mappa_bool = false> 498 </#if> 499 500 <#-- Mostra campo accessibilita --> 501 <#if accessibilita.getData()?? && accessibilita.getData()?has_content> 502 <div class="container-fluid bg-white"> 503 <div class="row"> 504 <article class="container"> 505 <div class="row"> 506 <div class="col-12 col-md-8"> 507 <div class="text-block text-block-left"> 508 <div class="text"> 509 <strong><@liferay.language key="label.accessibilita" /></strong> 510 ${accessibilita.getData()} 511 </div> 512 </div> 513 </div> 514 </div> 515 </article> 516 </div> 517 </div> 518 </#if> 519 520 <#-- Mostra campo sicurezza --> 521 <#if sicurezza.getData()?? && sicurezza.getData()?has_content> 522 <div class="container-fluid bg-white"> 523 <div class="row"> 524 <article class="container"> 525 <div class="row"> 526 <div class="col-12 col-md-8"> 527 <div class="text-block text-block-left"> 528 <div class="text"> 529 <strong><@liferay.language key="label.sicurezza" /></strong> 530 ${sicurezza.getData()} 531 </div> 532 </div> 533 </div> 534 </div> 535 </article> 536 </div> 537 </div> 538 </#if> 539 540 <#if non_visualizzare_la_mappa_bool> 541 <!-- mappa non visualizzata --> 542 543 <#else> 544 545 <div class="container-fluid"> 546 <div class="row"> 547 <div class="map map-container map-banner"> 548 <div class="map-content"> 549 <div class="leaflet-interactive-map map-summary-itinerary" id="map-itinerary" data-config="{"otherTemplate":true, "isItinerary":true}" data-kml="${urlFileKml}" data-gpx="${urlFileGpsNoWaypoints}"></div> 550 </div> 551 </div> 552 </div> 553 </div> 554 <#if (latitude?has_content && longitude?has_content)> 555 <div class="itinerary-stage" id="" data-lat="${latitude}" data-lng="${longitude}" data-img="" data-title="${titolo.getData()}" data-info="${titolo.getData()}" style="display:none;" data-altri-data="{"data-altri-data":true}"></div> 556 </#if> 557 </#if> 558 559 <#if tappa.getData()?has_content> 560 <div class="container-fluid bg-white"> 561 <div class="row padding-top-em-5"> 562 <div class="container"> 563 <div class="row"> 564 <div class="col-12 col-md-10 col-lg-8"> 565 <#list tappa.getSiblings() as cur_tappa> 566 <#assign latitude = 0> 567 <#assign longitude = 0> 568 569 <#--CICLO COORDINATE TAPPA--> 570 <#assign coords = []> 571 <#assign coordsObj = ""> 572 <#if (cur_tappa?has_content && cur_tappa.comune?has_content && cur_tappa.comune.geolocalizzazione?has_content && cur_tappa.comune.geolocalizzazione.getData() != "" && cur_tappa.comune.geolocalizzazione.getData()?has_content)> 573 <#list cur_tappa.comune.getSiblings() as comune_tappa> 574 575 <#if comune_tappa?has_content && comune_tappa.geolocalizzazione?has_content && comune_tappa.geolocalizzazione.getData()?has_content> 576 577 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(comune_tappa.geolocalizzazione.getData())> 578 <#assign latitude = geolocationJSONObject.getDouble("latitude")> 579 <#assign longitude = geolocationJSONObject.getDouble("longitude")> 580 581 <#assign info = ""> 582 <#if (comune_tappa.via_piazza?has_content && comune_tappa.via_piazza.getData() != "")> 583 <#assign info = info + comune_tappa.via_piazza.getData()> 584 </#if> 585 586 <#if (comune_tappa.localita?has_content && comune_tappa.localita.getData() != "")> 587 <#assign info = info + " " + comune_tappa.localita.getData()> 588 </#if> 589 590 <#if (comune_tappa.cap?has_content && comune_tappa.cap.getData() != "")> 591 <#assign info = info + " " + comune_tappa.cap.getData()> 592 </#if> 593 594 <#if (comune_tappa.getData() != "")> 595 <#assign info = info + " " + comune_tappa.getData()> 596 </#if> 597 598 <#assign info = info?replace("\"",""")> 599 <#assign info = info?replace("'","'")> 600 601 <#assign coord = {"lat" : latitude, "lng" : longitude, "info": info}> 602 <#assign coords = coords + [coord]> 603 604 </#if> 605 606 </#list> 607 <#assign coordsObj = jsonFactoryUtil.looseSerializeDeep(coords)> 608 </#if> 609 <#--FINE CICLO COORDINATE TAPPA--> 610 611 <#if (cur_tappa?has_content && 612 cur_tappa.comune?has_content && 613 cur_tappa.comune.geolocalizzazione?has_content && 614 cur_tappa.comune.geolocalizzazione.getData() != "")> 615 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(cur_tappa.comune.geolocalizzazione.getData())> 616 <#assign latitude = geolocationJSONObject.getDouble("latitude")> 617 <#assign longitude = geolocationJSONObject.getDouble("longitude")> 618 </#if> 619 620 <#assign info = ""> 621 622 <#if (cur_tappa?has_content && cur_tappa.comune?has_content && cur_tappa.comune.via_piazza?has_content && 623 cur_tappa.comune.via_piazza.getData() != "")> 624 <#assign info = info + cur_tappa.comune.via_piazza.getData()> 625 </#if> 626 627 <#if (cur_tappa?has_content && cur_tappa.comune?has_content && cur_tappa.comune.localita?has_content && 628 cur_tappa.comune.localita.getData() != "")> 629 <#assign info = info + " " + cur_tappa.comune.localita.getData()> 630 </#if> 631 632 <#if (cur_tappa?has_content && cur_tappa.comune?has_content && cur_tappa.comune.cap?has_content && 633 cur_tappa.comune.cap.getData() != "")> 634 <#assign info = info + " " + cur_tappa.comune.cap.getData()> 635 </#if> 636 637 <#if (cur_tappa?has_content && cur_tappa.comune?has_content && cur_tappa.comune.getData() != "")> 638 <#assign info = info + " " + cur_tappa.comune.getData()> 639 </#if> 640 641 <#if cur_tappa.titolo_immagine_tappa.immagine_tappa.getData()?? && cur_tappa.titolo_immagine_tappa.immagine_tappa.getData()?has_content> 642 <#assign data_img = cur_tappa.titolo_immagine_tappa.immagine_tappa.getData()> 643 <#else> 644 <#assign data_img = ""/> 645 </#if> 646 647 <#assign dataMarkerLabel = cur_tappa.getData()> 648 649 <div class="itinerary-stage" id="${cur_tappa.titolo_tappa.getData()?replace("’","-")?replace(" ", "-")?replace("(", "")?replace(")", "")}" data-img="${data_img}" data-title="${cur_tappa.titolo_tappa.getData()}" data-lat="${latitude}" data-lng="${longitude}" data-info="${info}" data-coords='${coordsObj}' data-altri-data="{"data-altri-data":true}" data-marker-label="${dataMarkerLabel}"> 650 <div class="row"> 651 <div class="col-2"> 652 <div class="itinerary-sidebar"> 653 <div class="marker"> 654 <img src="/o/umbria-theme/images/icons/leaflet/marker-icon.svg" alt="Marker"> 655 <div class="marker-label text-red">${cur_tappa.getData()}</div> 656 </div> 657 <div class="track"></div> 658 </div> 659 </div> 660 <div class="col-10"> 661 <div class="itinerary-body padding-bottom-em-5"> 662 <div class="title">${cur_tappa.titolo_tappa.getData()}</div> 663 <#if cur_tappa.titolo_immagine_tappa.getData()?has_content> 664 <div class="image-container" style="margin-bottom:3rem;"> 665 <div class="carousel-container transparent"> 666 <div class="tns-carousel tns-carousel-default" data-tns-config="{"items":1,"autoplay":true,"autoplayHoverPause":true,"autoplayButtonOutput":false,"speed":1000}"> 667 <#list cur_tappa.titolo_immagine_tappa.getSiblings() as titolo_immagine_tappa> 668 <div> 669 <#assign linkImmagine = ""> 670 <#if titolo_immagine_tappa.immagine_tappa.getData()?contains("?")> 671 <#assign linkImmagine = titolo_immagine_tappa.immagine_tappa.getData() + "&width=" + widthSliderTappaImg > 672 <#else> 673 <#assign linkImmagine = titolo_immagine_tappa.immagine_tappa.getData() + "?width=" + widthSliderTappaImg > 674 </#if> 675 676 <#assign altImg = ""/> 677 <#if titolo_immagine_tappa.testo_alternativo_tappa?? && titolo_immagine_tappa.testo_alternativo_tappa.getData()?has_content && titolo_immagine_tappa.testo_alternativo_tappa.getData() != "null"> 678 <#assign altImg = titolo_immagine_tappa.testo_alternativo_tappa.getData()/> 679 <#else> 680 <#if cur_tappa.titolo_tappa.getData()?has_content> 681 <#assign altImg = "Immagine: " + cur_tappa.titolo_tappa.getData()/> 682 </#if> 683 </#if> 684 <img class="slide-image" src="${linkImmagine}" alt="${altImg}"> 685 <#if titolo_immagine_tappa.didascalia_immagine_tappa.getData()?? 686 && titolo_immagine_tappa.didascalia_immagine_tappa.getData()?has_content 687 && titolo_immagine_tappa.didascalia_immagine_tappa.getData()?trim?length gt 0 688 && titolo_immagine_tappa.didascalia_immagine_tappa.getData()?trim != "null"> 689 <p class="caption" style="margin-bottom: 12px;">${titolo_immagine_tappa.didascalia_immagine_tappa.getData()}</p> 690 </#if> 691 </div> 692 </#list> 693 </div> 694 </div> 695 </div> 696 </#if> 697 <#if cur_tappa.descrizione_tappa.getData()?has_content && cur_tappa.descrizione_tappa.getData()?trim != "null"> 698 <div class="text-block-expandable"> 699 <div class="text"> 700 ${cur_tappa.descrizione_tappa.getData()} 701 </div> 702 </div> 703 <div class="margin-top-em-2 btn btn-flat btn-default btn-small btn-text-block-expand show-more" data-showmore="<@liferay.language key="label.leggi.di.piu" />" data-showless="<@liferay.language key="label.leggi.di.meno" />"><@liferay.language key="label.leggi.di.piu" /></div> 704 </#if> 705 </div> 706 </div> 707 </div> 708 </div> 709 </#list> 710 </div> 711 </div> 712 </div> 713 </div> 714 </div> 715 </#if> 716 717 718 <#if hasTappe?c = "true"> 719 <#if validator.isNotNull(descrizione_due.getData()) && descrizione_due.getData() != '<p>null</p>'> 720 <div class="container-fluid bg-white"> 721 <div class="row"> 722 <article class="container padding-bottom-em-3"> 723 <div class="row"> 724 <div class="col-12 col-md-8"> 725 <div class="text-block text-block-left"> 726 <div class="text"> 727 ${descrizione_due.getData()} 728 </div> 729 </div> 730 </div> 731 </div> 732 </article> 733 </div> 734 </div> 735 </#if> 736 </#if> 737 738 739 740 741 742 <#if descrizione_immagine?? && descrizione_immagine.getSiblings()?has_content && descrizione_immagine.getSiblings()?size gt 0 && descrizione_immagine.getSiblings()[0].immagine.getData()?? && descrizione_immagine.getSiblings()[0].immagine.getData()?has_content> 743 <div class="container-fluid bg-white"> 744 <div class="row"> 745 <div class="carousel-container carousel-no-ctrl transparent margin-bottom-em-1 tns-overflow-show carousel-image-slide carousel-draggable"> 746 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"autoWidth":true,"items":2,"autoplay":false, 747 "responsive":{"768":{"items":3},"992":{"items":4}}}"> 748 <#if descrizione_immagine?? && descrizione_immagine.getSiblings()?has_content> 749 <#list descrizione_immagine.getSiblings() as cur_descrizione_immagine> 750 <div class="item-with-caption"> 751 752 <#assign linkImmagine = ""> 753 <#if cur_descrizione_immagine.immagine.getData()?contains("?")> 754 <#assign linkImmagine = cur_descrizione_immagine.immagine.getData() + "&width=1082"> 755 <#else> 756 <#assign linkImmagine = cur_descrizione_immagine.immagine.getData() + "?width=1082"> 757 </#if> 758 759 <img class="slide-image" src="${linkImmagine}" alt="${cur_descrizione_immagine.testo_alternativo.getData()}"> 760 <#if cur_descrizione_immagine.didascalia.getData()?? && cur_descrizione_immagine.didascalia.getData()?has_content && cur_descrizione_immagine.didascalia.getData()?trim?length gt 0 && cur_descrizione_immagine.didascalia.getData()?trim != "null"> 761 <p class="caption">${cur_descrizione_immagine.didascalia.getData()}</p> 762 </#if> 763 </div> 764 </#list> 765 </#if> 766 </div> 767 </div> 768 </div> 769 </div> 770 <#else> 771 <#attempt> 772 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagini()?has_content> 773 <div class="container-fluid bg-white"> 774 <div class="row"> 775 <div class="carousel-container carousel-no-ctrl transparent margin-bottom-em-1 tns-overflow-show carousel-image-slide carousel-draggable"> 776 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"autoWidth":true,"items":2,"autoplay":false,"responsive":{"768":{"items":3},"992":{"items":4}}}"> 777 <#list currentObjectDefaultLanguage.getImmagini() as imm> 778 <div class="item-with-caption"> 779 <#if imm.getImmagine()?? && imm.getImmagine()?has_content && imm.getImmagine().getUrl()?? && imm.getImmagine().getUrl()?has_content> 780 <img class="slide-image" src="${imm.getImmagine().getUrl()}?width=1082" alt="${imm.getTestoAlternativo()}"> 781 <#if imm.getDidascalia()?? && imm.getDidascalia()?has_content && imm.getDidascalia()?trim?length gt 0 && imm.getDidascalia()?trim != "null"> 782 <p class="caption">${imm.getDidascalia()}</p> 783 </#if> 784 </#if> 785 </div> 786 </#list> 787 </div> 788 </div> 789 </div> 790 </div> 791 </#if> 792 <#recover> 793 794 </#attempt> 795 </#if> 796 797 798 <#assign lang = "it"/> 799 <#if themeDisplay.getLanguageId()?contains("_")> 800 <#assign lang = themeDisplay.getLanguageId()?split("_")[0]/> 801 <#else> 802 <#assign lang = themeDisplay.getLanguageId()/> 803 </#if> 804 <#assign tomApi = serviceLocator.findService("it.inera.tom.api.TOMAPI")> 805 806 <#if municipalityNames?has_content && municipalityNames?size gt 0 && lang?has_content && lang?trim?length gt 0 && tomApi?has_content> 807 808 <#assign offerResults = [] /> 809 810 <#-- Recupera e assegna il parametro solo se presente --> 811 <#if request.getParameter("OFFERSELECTPORTALTAGS")?? && request.getParameter("OFFERSELECTPORTALTAGS")?has_content> 812 <#assign OFFERSELECTPORTALTAGS = request.getParameter("OFFERSELECTPORTALTAGS")?split(",") /> 813 </#if> 814 815 <#attempt> 816 <#if OFFERSELECTPORTALTAGS?? && OFFERSELECTPORTALTAGS?size gt 0> 817 <#assign offerResults = tomApi.getJsonOffersListResultByMunicipalitiesAndTag(municipalityNames, lang, OFFERSELECTPORTALTAGS) /> 818 <#else> 819 <#assign offerResults = tomApi.getJsonOffersListResultByMunicipalities(municipalityNames, lang) /> 820 </#if> 821 <#recover> 822 <#-- Eventuale gestione errore --> 823 </#attempt> 824 825 826 827 828 <#if offerResults?? && offerResults?has_content> 829 <#assign offerResponse = offerResults.getResponse()> 830 <#if offerResponse?? && offerResponse?has_content> 831 <#assign offerResults = offerResponse.getResults()> 832 <#if offerResults?? && offerResults?has_content> 833 <aside class="container-fluid bg-white" id="hideable"> 834 <div class="row"> 835 <div class="container padding-top-em-3"> 836 <div class="row"> 837 <div class="col-12 col-md-10 offset-md-1 margin-bottom-lg-em-0 margin-bottom-em-2"> 838 <div class="text-block text-block-center"> 839 <div class="title-2"> 840 <@liferay.language key="label.migliori.offerte" /> 841 </div> 842 <div class="text"> 843 <@liferay.language key="label.proposte.vivere.umbria" /> 844 </div> 845 </div> 846 </div> 847 </div> 848 849 <div class="row"> 850 <div class="col-12"> 851 <div class="d-flex flex-justify-content-end"> 852 <a class="link-showall" href="/lista-offerte?municipality=${municipalityNamesString}&territory=${territoryNameString}"><@liferay.language key="label.vedi.tutte" /> 853 <i class="fas fa-angle-right"></i> 854 </a> 855 </div> 856 </div> 857 <div class="col-12"> 858 <div class="row"> 859 <div class="col-12 padding-bottom-em-3"> 860 <div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2"> 861 <div class="tns-carousel tns-carousel-default"> 862 <#list offerResults as offerResult> 863 864 <div> 865 <div class="card card-1 card-offerta has-info-commercial"> 866 <a class="card-link" href="/dettaglio-offerta/-/dettaglio/${offerResult.getSlug()}_${offerResult.getId()}_${offerResult.getType()}" aria-label="${offerResult.getTitle()}"></a> 867 <div class="card-header"> 868 869 <div class="hidden" id="tagmanager_item_card"> 870 <span id="tagmanager_item_id">${offerResult.getId()}</span> 871 <span id="tagmanager_item_category_card">${offerResult.getType()}</span> 872 <span id="tagmanager_item_name">${offerResult.getTitle()}</span> 873 <span id="tagmanager_item_list_name_card">Le migliori offerte per te</span> 874 <span id="tagmanager_item_list_id"></span> 875 <span id="tagmanager_item_brand">${offerResult.getType()}</span> 876 <span id="tagmanager_index">${offerResult_index}</span> 877 </div> 878 <div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 879 <#if offerResult.getGalleries()?has_content> 880 <#if offerResult.getGalleries().getImages()?has_content && offerResult.getGalleries().getImages()?size gt 0> 881 <#assign file = ""/> 882 <#assign alt = ""/> 883 <#if offerResult.getGalleries().getImages()[0].getFile()?has_content> 884 <#assign file = tomBaseImagePath + offerResult.getGalleries().getImages()[0].getFile()/> 885 <#else> 886 <#assign file = "/o/umbria-theme/images/loghi/logo_no_image.png"/> 887 </#if> 888 <#if offerResult.getGalleries().getImages()[0].getAlt()?has_content> 889 <#assign alt = offerResult.getGalleries().getImages()[0].getAlt()/> 890 </#if> 891 892 <#if !offerResult.getGalleries().getImages()[0].getAlt()?has_content> 893 <#assign alt ="Titolo: " + offerResult.getTitle()/> 894 </#if> 895 <img src="${file}?params[width]=354" alt="${alt}"> 896 </#if> 897 <#else> 898 <#assign file = "/o/umbria-theme/images/loghi/logo_no_image.png"/> 899 <img src="${file}?params[width]=354" alt="logo_no_image"> 900 </#if> 901 </div> 902 903 <#if offerResult.getType()?? && offerResult.getType()?has_content && offerResult.getType()?trim?length gt 0 && offerResult.getType()?trim != "accommodation"> 904 <button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-detail-type="${offerResult.getType()}/offer" data-id="${offerResult.getId()}" data-tom="true" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 905 <i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none;"></i></a> 906 </button> 907 <#else> 908 <button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-detail-type="${offerResult.getType()}" data-id="${offerResult.getId()}" data-tom="true" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 909 <i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none;"></i></a> 910 </button> 911 </#if> 912 <div class="card-header-info"> 913 <div class="card-badges"> 914 <div class="badge badge-light-blue"> 915 <#if offerResult.getType() == 'guide'> 916 <@liferay.language key="label.guide" /> 917 </#if> 918 <#if offerResult.getType() == 'travelagency'> 919 <@liferay.language key="label.pacchetti.turistici" /> 920 </#if> 921 <#if offerResult.getType() == 'consortium'> 922 <@liferay.language key="label.pacchetti.turistici" /> 923 </#if> 924 <#if offerResult.getType() == 'accommodation'> 925 <@liferay.language key="label.accommodation" /> 926 </#if> 927 <#if offerResult.getType() == 'service'> 928 <@liferay.language key="label.esperienze.in.azienda" /> 929 </#if> 930 <#if offerResult.getType() == 'educationalfarm'> 931 <@liferay.language key="label.percorsi.didattici" /> 932 </#if> 933 </div> 934 </div> 935 <div class="header-title title-5">${offerResult.getTitle()}</div> 936 </div> 937 </div> 938 <#if offerResult?has_content> 939 <div class="card-body"> 940 <div class="card-body-title title-4"> 941 ${offerResult.getTitle()} 942 </div> 943 <#if offerResult.getSubtitle()?has_content> 944 <div class="card-body-subtitle"> 945 ${offerResult.getSubtitle()} 946 </div> 947 </#if> 948 </div> 949 </#if> 950 <div class="card-info card-info-readmore"> 951 <div class="info hidden"><@liferay.language key="label.continua.a.leggere" /></div> 952 </div> 953 <div class="card-info"> 954 <span class="info"> 955 <!--<a href="#" class="text-light-blue text-bold"> 956 <i class="fas fa-map-pin"></i> 957 </a>--> 958 </span> 959 </div> 960 <div class="card-info card-info-commercial"> 961 <#if offerResult.getDuration()?has_content && offerResult.getDuration().getCount()?has_content && offerResult.getDuration().getType()?has_content> 962 <div class="info info-commercial"> 963 <div class="label"><@liferay.language key="label.durata" /></div> 964 <div class="title text-bold"> 965 ${offerResult.getDuration().getCount()} ${offerResult.getDuration().getType()} 966 </div> 967 </div> 968 <#else> 969 <div class="info info-commercial"> 970 <div class="label"> </div> 971 <div class="title text-bold"> 972 973 </div> 974 </div> 975 </#if> 976 <div class="info info-commercial"> 977 <#if offerResult.getMinimumPrice()?has_content && offerResult.getMinimumPrice()!=0> 978 <div class="label"> 979 <@liferay.language key="label.a.partire.da" /> 980 </div> 981 <div class="title text-bold"> 982 <@liferay.language key="label.euro" /> ${offerResult.getMinimumPrice()} 983 </div> 984 <#else> 985 <div class="label"> 986 <@liferay.language key="label.prezzo.su.richiesta" /> 987 </div> 988 <div class="title text-bold"> 989 990 </div> 991 </#if> 992 </div> 993 </div> 994 </div> 995 </div> 996 997 </#list> 998 </div> 999 </div> 1000 </div> 1001 </div> 1002 </div> 1003 </div> 1004 </div> 1005 </div> 1006 </aside> 1007 </#if> 1008 </#if> 1009 </#if> 1010 1011 </#if> 1012 1013 <#if results?size gt 0 || relatedResults?size gt 0> 1014 <aside class="container-fluid bg-gray"> 1015 <div class="row"> 1016 <div class="container padding-top-em-3 padding-bottom-em-5"> 1017 <div class="row"> 1018 <div class="col-12 col-md-10 offset-md-1 margin-bottom-em-2 margin-bottom-lg-em-0"> 1019 <div class="text-block text-block-center"> 1020 <div class="title-2"> 1021 <@liferay.language key="label.potrebbe.interessarti.anche"/> 1022 </div> 1023 <div class="text"> 1024 <@liferay.language key="label.scopri.proposte.uniche"/> 1025 </div> 1026 </div> 1027 </div> 1028 1029 <div class="col-12"> 1030 <div class="row"> 1031 <div class="col-12 padding-bottom-em-3"> 1032 <div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2"> 1033 <div class="tns-carousel tns-carousel-default"> 1034 1035 <#-- GESTIONE RALATED ASSETS RENDERIZZAZIONE--> 1036 <#list relatedResults as relatedResult> 1037 <div> 1038 <div class="card card-1 card-offerta"> 1039 1040 <#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 1041 <a class="card-link" href="${relatedResult.getHref()}" aria-label="${relatedResult.getTitle()}"></a> 1042 1043 <div class="card-header"> 1044 <div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 1045 <#assign alternativeAlt = relatedResult.getImg().getAlt()> 1046 <#if !relatedResult.getImg().getAlt()?trim?has_content> 1047 <#assign alternativeAlt = "Titolo: " + relatedResult.getTitle()> 1048 </#if> 1049 <img src="${relatedResult.getImg().getSrc()}" alt="${alternativeAlt}"> 1050 </div> 1051 <button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-id="${relatedResult.getId()}" data-tom="false" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 1052 <i class="far fa-heart text-red"></i> 1053 <i class="fas fa-heart text-red" style="display:none"></i> 1054 </button> 1055 <div class="card-header-info"> 1056 <div class="card-badges"> 1057 <#assign categoryNames = relatedResult.getHeader().getInfo() > 1058 <#list categoryNames as categoryName> 1059 <div class="badge badge-red"> 1060 ${categoryName} 1061 </div> 1062 <a class="header-title title-5" href="#">${relatedResult.getTitle()}</a> 1063 </#list> 1064 </div> 1065 </div> 1066 </div> 1067 <div class="card-body"> 1068 <a class="card-body-title title-4" href="${relatedResult.getHref()}"> 1069 ${relatedResult.getTitle()} 1070 </a> 1071 <div class="card-body-subtitle"> 1072 <#if relatedResult.getSubtitle()?? && relatedResult.getSubtitle()?has_content && relatedResult.getSubtitle()?trim?length gt 0 && relatedResult.getSubtitle()?trim != "null"> 1073 ${relatedResult.getSubtitle()} 1074 </#if> 1075 </div> 1076 1077 </div> 1078 <div class="card-info"> 1079 <span class="info"></span> 1080 </div> 1081 </div> 1082 </div> 1083 </#list> 1084 <#-- GESTIONE RALATED ASSETS FINE RENDERIZZAZIONE--> 1085 1086 <#list results as related> 1087 <#assign langId = themeDisplay.getLanguageId() /> 1088 <#assign contentByLocale = related.getContentByLocale(themeDisplay.getLanguageId()) /> 1089 <#assign contentGroupId = related.getGroupId() /> 1090 <#assign document = saxReaderUtil.read(contentByLocale) > 1091 <#assign rootElement = document.getRootElement()> 1092 1093 <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 1094 <#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 1095 1096 <#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 1097 <#assign relatedSottotitolo = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()> 1098 1099 <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 1100 <#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 1101 1102 <#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")> 1103 <#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()> 1104 1105 <#if relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 > 1106 1107 <#attempt> 1108 <#assign immagineBannerJson = relatedImmagineBanner?eval > 1109 <#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthCardImg}"> 1110 <#recover> 1111 <#assign url = "" > 1112 </#attempt> 1113 1114 <#else> 1115 <#assign url = "" > 1116 </#if> 1117 1118 <#assign resourcePrimKey = related.getResourcePrimKey() /> 1119 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) /> 1120 <#assign assetEntryId = assetEntry.getEntryId() /> 1121 1122 <#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntryId) > 1123 1124 <#assign categoryNames = [] > 1125 1126 <#list categories as category> 1127 <#if vocabularyIdUmbria == category.getVocabularyId() > 1128 <#assign categoryNames = categoryNames + [category.getTitle(themeDisplay.getLanguageId())] > 1129 </#if> 1130 </#list> 1131 1132 <#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 1133 1134 <div> 1135 <div class="card card-1 card-offerta"> 1136 <a class="card-link" href="${detailBaseUrl}/-/${related.getUrlTitle(locale)}" aria-label="${related.getTitle()}"></a> 1137 <div class="card-header"> 1138 1139 <div class="hidden" id="tagmanager_item_card_potrebbe_interessarti"> 1140 <span id="tagmanager_item_id_potrebbe_interessarti">${related.getId()}</span> 1141 <span id="tagmanager_item_category_card_potrebbe_interessarti">${titleCategory}</span> 1142 <span id="tagmanager_item_name_potrebbe_interessarti">${related.getTitle()}</span> 1143 <span id="tagmanager_item_list_name_potrebbe_interessarti">Potrebbe interessarti</span> 1144 <span id="tagmanager_item_list_id_potrebbe_interessarti"></span> 1145 <span id="tagmanager_item_brand_potrebbe_interessarti">${titleCategory}</span> 1146 <span id="tagmanager_index_potrebbe_interessarti">${related_index}</span> 1147 </div> 1148 1149 <div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 1150 <#if !relatedTestoAlternativoImmagineBanner?? || !relatedTestoAlternativoImmagineBanner?trim?has_content> 1151 <#assign relatedTestoAlternativoImmagineBanner = "Titolo: " + related.getTitle()> 1152 </#if> 1153 <img src="${url}" alt="${relatedTestoAlternativoImmagineBanner}"> 1154 </div> 1155 <button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-id="${related.getArticleId()}" data-tom="false" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 1156 <i class="far fa-heart text-red"></i> 1157 <i class="fas fa-heart text-red" style="display:none"></i> 1158 </button> 1159 <div class="card-header-info"> 1160 <div class="card-badges"> 1161 <#list categoryNames as categoryName> 1162 <div class="badge badge-red"> 1163 ${categoryName} 1164 </div> 1165 <a class="header-title title-5" href="#">${related.getTitle()}</a> 1166 </#list> 1167 </div> 1168 </div> 1169 </div> 1170 <div class="card-body"> 1171 <a class="card-body-title title-4" href="/-/${related.getUrlTitle(locale)}"> 1172 ${relatedTitolo} 1173 </a> 1174 <div class="card-body-subtitle"> 1175 ${relatedSottotitolo} 1176 </div> 1177 </div> 1178 <div class="card-info"> 1179 <span class="info"></span> 1180 </div> 1181 </div> 1182 </div> 1183 <#assign categoryNames = [] > 1184 <#assign categories = [] > 1185 </#list> 1186 </div> 1187 </div> 1188 </div> 1189 </div> 1190 </div> 1191 </div> 1192 </div> 1193 </div> 1194 </aside> 1195 </#if> 1196 1197 <script> 1198 $("#backLink").click(function(event) { 1199 event.preventDefault(); 1200 history.back(1); 1201 }); 1202 </script> 1203 1204 1205 <script id="map-popup-1-template" type="text/x-handlebars-template"> 1206 <div class="map-popup map-popup-1 map-popup-detail"> 1207 <div class="row"> 1208 <div class="col-12 col-lg-3"> 1209 <div class="img"> 1210 <div class="img-wrapper"><img src="{{img.src}}" alt="{{img.alt}}"/></div> 1211 </div> 1212 </div> 1213 <div class="col-12 col-lg-9"> 1214 <div class="row"> 1215 <div class="col-12"> 1216 <div class="title">{{title}}</div> 1217 <div class="subtitle">{{subtitle}}</div> 1218 </div> 1219 </div> 1220 <div class="row"> 1221 <div class="col-12 col-lg-6"> 1222 <div class="title">Orari</div> 1223 <div class="info"> 1224 <ul>{{#each openings}} 1225 <li> 1226 <div class="row"> 1227 <div class="col-3">{{@key}}</div> 1228 <div class="col-9"> 1229 <ul>{{#each this}} 1230 <li>{{this}}</li>{{/each}} 1231 </ul> 1232 </div> 1233 </div> 1234 </li>{{/each}} 1235 </ul> 1236 </div> 1237 </div> 1238 <div class="col-12 col-lg-6"> 1239 <div class="title">Contatti</div> 1240 <div class="info"> 1241 <ul>{{#each info}} 1242 <li><a href="{{../href}}">{{this}}</a></li>{{/each}} 1243 </ul> 1244 </div> 1245 </div> 1246 </div> 1247 </div> 1248 </div> 1249 </div> 1250 </script> 1251 <script id="map-popup-2-template" type="text/x-handlebars-template"> 1252 <div class="map-popup map-popup-1" style="width:301px"> 1253 <a class="card card-5" href="#" aria-label="{{title}}"> 1254 {{#if image}} 1255 <div class="card-header"> 1256 <div class="card-image"><img src="{{image}}" alt="{{alt}}"/></div> 1257 </div> 1258 {{/if}} 1259 <div class="card-body{{#unless image}} card-body-no-image{{/unless}}"> 1260 <div class="card-info">{{type}}</div> 1261 <div class="card-title" id="button-popup" data-href="{{href}}">{{title}}</div> 1262 <div class="card-text">{{text}}</div> 1263 </div> 1264 </a> 1265 </div> 1266 </script> 1267 <script id="map-popup-3-template" type="text/x-handlebars-template"> 1268 <div class="map-popup map-popup-1" style="width:301px"> 1269 <a class="card card-5" href="#" aria-label="{{title}}"> 1270 {{#if image}} 1271 <div class="card-header"> 1272 <div class="card-image"><img src="{{image}}" alt="{{alt}}"/></div> 1273 </div> 1274 {{/if}} 1275 <div class="card-body{{#unless image}} card-body-no-image{{/unless}}"> 1276 <div class="card-info">{{type}}</div> 1277 <div class="card-title">{{title}}</div> 1278 <div class="card-text">{{text}}</div> 1279 </div> 1280 <div class="card-footer"> 1281 <div class="card-info"> 1282 </div> 1283 </div> 1284 </a> 1285 </div> 1286 </script> 1287 1288 1289 <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5c5d3c404544fcaf"></script> 1290 1291 <style> 1292 .card-body-no-image { 1293 padding-top: 15px; 1294 } 1295 </style>