Viaggi Studio in Spagna
Programmi per Anno scolastico all'estero
Vedi tuttiProgrammi per Corsi Online
Vedi tuttiProgrammi per Stage linguistico (per gruppi scuole)
Vedi tuttiProgrammi per Soggiorni studio 18+
Vedi tuttiNessun risultato
Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy85.getCategory(long)" threw an exception when invoked on com.sun.proxy.$Proxy85 object "com.liferay.asset.categories.internal.service.AssetCategoryPropertyAssetCategoryLocalServiceWrapper@5b29366d"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #return ACLS.getCategory(categoryId)... [in template "1724005" in function "getCategoryName" at line 215, column 5]
- Reached through: ${d40.getCategoryName(queryValues0[0]... [in template "383767#383802#2181264" at line 74, column 29]
---- 1<#import "${templatesPath}/1724005" as d40> 2 3<#assign 4 DLAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 5 mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService") 6 favouriteServiceAPI = serviceLocator.findService("eu.suggesto.d40.builder.d40.service.FavoriteServiceLocalService") 7 wishlistObj = favouriteServiceAPI.getWishList(groupId, themeDisplay.getSessionId(), themeDisplay.getUserId()?string) 8 wishlist = wishlistObj.getJSONArray("data") 9 serverName = request.getServerName() 10 defLng = themeDisplay.getSiteDefaultLocale() 11 vocTipoProgramma = 1080085 12 vocSottocategoriaProgramma = 1088412 13 structureProgramma = 932161 14 structureSoggiorno = 402303 15 portletTitle = "" 16 btnLink = "#" 17 articleId = 1 18 portletClass = "d-none" 19 20 prefs = renderRequest.getPreferences() 21 structureKey = "" 22 classTypeIds = prefs.getValue("classTypeIds", "")!"" 23 classTypeIds = prefs.getValue("classTypeIds", "")!"" 24 orderByColumn1 = prefs.getValue("orderByColumn1", "")!"" 25 orderByColumn2 = prefs.getValue("orderByColumn2", "")!"" 26 orderByType1 = prefs.getValue("orderByType1", "")!"" 27 orderByType2 = prefs.getValue("orderByType2", "")!"" 28 queryValues0 = prefs.getValues("queryValues0", null)!"" 29 queryValues1 = prefs.getValues("queryValues1", null)!"" 30 f0 = prefs.getValue("queryValues0", "") 31 f1 = prefs.getValue("queryValues1", "") 32 queryAndOperator0 = prefs.getValue("queryAndOperator0", "") 33 queryAndOperator1 = prefs.getValue("queryAndOperator1", "") 34 numItems = prefs.getValue("delta", "10")!5 35/> 36 37<#if entries?has_content> 38 <#assign portletClass = ""> 39</#if> 40 41<#if classTypeIds?has_content> 42 <#assign structureKey = classTypeIds?number-1!> 43</#if> 44 45<#if queryValues0?has_content> 46 <#assign f0 = queryValues0?join(", ")> 47</#if> 48 49<#if queryValues1?has_content> 50 <#assign f1 = queryValues1?join(", ")> 51</#if> 52 53<#if structureKey == structureProgramma> 54 <#assign 55 portletTitle = "Programmi" 56 btnLink = "/ricerca-programmi" 57 /> 58</#if> 59<#if structureKey == structureSoggiorno> 60 <#assign 61 portletTitle = "Soggiorni studio" 62 btnLink = "/soggiorni-studio" 63 /> 64</#if> 65 66<section id="${d40.portletNamespace}" class="${portletClass}"> 67 <#if portletTitle?has_content> 68 <div class="container pt-5 my-5"> 69 <div class="d-flex justify-content-between"> 70 <p class="h1 display-5 text-center text-lg-left title-responsive title-large text-gradient jost font-weight-bolder text-uppercase my-auto"> 71 ${portletTitle} 72 73 <#if queryValues0?has_content && queryValues0[0]!= "1205870" > 74 per ${d40.getCategoryName(queryValues0[0]?number)} 75 </#if> 76 </p> 77 78 <a href="${btnLink}" class="see-all btn btn-gradient btn-lg d-none d-lg-flex px-5 ml-auto"> 79 <span class="my-auto">Vedi tutti</span> 80 </a> 81 </div> 82 </div> 83 </#if> 84 85 <#if entries?has_content> 86 <div class="swiper-container px-3 px-lg-0"> 87 <div class="card-row carousel-controls position-absolute half-float mb-5 mb-lg-0"> 88 <div class="autofit-col autofit-col-expand no-events"> 89 <section class="autofit-section"> 90 <div class="swiper-button-prev rounded-circle raised all-events"> 91 <i class="fas fa-caret-left text-white"></i> 92 </div> 93 </section> 94 </div> 95 <div class="autofit-col autofit-col-expand no-events"> 96 <section class="autofit-section"> 97 <div class="swiper-button-next rounded-circle raised all-events"> 98 <i class="fas fa-caret-right text-white"></i> 99 </div> 100 </section> 101 </div> 102 </div> 103 <div class="swiper-wrapper"> 104 105 <#list entries as entry> 106 <#assign 107 entry = entry 108 assetRenderer = entry.getAssetRenderer() 109 className = assetRenderer.getClassName() 110 entryTitle = htmlUtil.escape(assetRenderer.getTitle(themeDisplay.getLocale())) 111 /> 112 113 <#if className == "com.liferay.journal.model.JournalArticle"> 114 <#assign 115 journalArticle = assetRenderer.getArticle() 116 document = saxReaderUtil.read(journalArticle.getContent()) 117 rootElement = document.getRootElement() 118 articleId = journalArticle.articleId 119 /> 120 121 <#assign stringSelector = "dynamic-element[@name='anteprima']"> 122 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 123 <#if xPathSelector.selectSingleNode(rootElement)??> 124 <#assign 125 immagine = xPathSelector.selectSingleNode(rootElement).getStringValue() 126 fileEntryId = assetRenderer.getClassPK() 127 /> 128 <#if immagine?trim?has_content> 129 <#assign 130 jsonField = jsonFactoryUtil.createJSONObject(immagine) 131 fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId) 132 immagine = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid 133 /> 134 <#else> 135 <#assign immagine = "https://via.placeholder.com/450x300?text=Anteprima"> 136 </#if> 137 </#if> 138 139 <#assign stringSelector = "dynamic-element[@name='nome_scuola']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']"> 140 <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 141 <#if xPathSelector.selectSingleNode(rootElement)??> 142 <#assign nome = xPathSelector.selectSingleNode(rootElement).getStringValue()> 143 </#if> 144 145 <#assign viewUrl = mkspAPI.getArticleUrl(groupId, serverName, journalArticle.articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/placeholder")> 146 147 <div class="swiper-slide"> 148 <a href="${viewUrl}" class="card aspect-ratio aspect-ratio-3-to-4 card-item-first rounded invertible hoverable"> 149 <img data-src="${d40.getPrefix(immagine, 550, 365)}" loading="lazy" class="lazyload aspect-ratio-item-vertical-fluid fit-cover w-100 h-100" alt="${entryTitle}"> 150 <div class="overlay"></div> 151 <div class="d-flex card-img-overlay"> 152 <div class="w-100 mt-auto"> 153 <div class="mb-4"> 154 <p class="h2 text-truncate font-weight-bold text-white jost text-uppercase mb-0">${entryTitle}</p> 155 <p class="h2 text-white jost font-weight-regular"></p> 156 <p class="h2 font-weight-bold text-white jost text-uppercase mb-0"></p> 157 158 <#list d40.getEntryCategories(entry) as cat> 159 <#if cat.vocabularyId == vocTipoProgramma> 160 <div class="btn btn-gradient no-events px-2 py-1"> 161 ${cat.name} 162 163 <img src="${d40.icons_folder}/world_marker_white.svg" class="ml-1" height="25"> 164 </div> 165 </#if> 166 </#list> 167 </div> 168 </div> 169 </div> 170 </a> 171 <div class="triangle-top d-flex position-absolute rounded-right"> 172 <div class="mb-auto ml-auto p-3 p-lg-2 text-right"> 173 <#if isFavourite(articleId)> 174 <button class="btn btn-monospaced bg-transparent" onclick="removeFavourite('${articleId}')"> 175 <img src="${d40.icons_folder}/heart_filled.svg" width="35" height="35"> 176 </button> 177 <#else> 178 <button class="btn btn-monospaced bg-transparent" onclick="addFavourite('${articleId}')"> 179 <img src="${d40.icons_folder}/heart.svg" width="35" height="35"> 180 </button> 181 </#if> 182 </div> 183 </div> 184 </div> 185 </#if> 186 </#list> 187 </div> 188 </div> 189 <#else> 190 <div class="row"> 191 <div class="col-12 text-center"> 192 <p class="text-dark my-4">Nessun risultato</p> 193 </div> 194 </div> 195 </#if> 196 197 <div class="container text-center my-4"> 198 <a href="#" class="btn btn-gradient btn-lg d-lg-none px-5"> 199 <span class="my-auto">Vedi tutti</span> 200 </a> 201 </div> 202</section> 203 204<script> 205 document.addEventListener("DOMContentLoaded", function (){ 206 function addFavourite(elemId){ 207 Liferay.Service('/destinazione.favorite/add-to-wish-list', { 208 groupId: Liferay.ThemeDisplay.getScopeGroupId(), 209 sessionId: String(Liferay.ThemeDisplay.getSessionId()), 210 userId: String(Liferay.ThemeDisplay.getUserId()), 211 itemGroupId: 11, 212 itemId: String(elemId) 213 }, function(res) { 214 console.log("addToWishList response: ", res); 215 }).catch(function(err){ 216 console.error("Error adding to wishlist: ", err); 217 }); 218 219 Liferay.Portlet.refresh('#p_p_id${renderResponse.getNamespace()}'); 220 } 221 222 function removeFavourite(elemId){ 223 Liferay.Service('/destinazione.favorite/get-wish-list', { 224 groupId: Liferay.ThemeDisplay.getScopeGroupId(), 225 sessionId: String(Liferay.ThemeDisplay.getSessionId()), 226 userId: String(Liferay.ThemeDisplay.getUserId()), 227 }, function(res){ 228 console.log("getWishList response: ", res); 229 230 if(res.data){ 231 res.data.forEach(function(elem){ 232 if(elem.itemId == elemId){ 233 elemOid = elem._id.$oid; 234 235 Liferay.Service('/destinazione.favorite/delete-item-from-wish-list', { 236 oid: elemOid 237 }, function(res) { 238 console.log("deleteFromWishList response: ", res); 239 }).catch(function(err){ 240 console.error("Error removing from wishlist: ", err); 241 }); 242 } 243 }); 244 } 245 }).catch(function(err){ 246 console.log("Error adding to wishlist: ", err); 247 }); 248 249 Liferay.Portlet.refresh('#p_p_id${renderResponse.getNamespace()}'); 250 } 251 252 <#if entries?has_content> 253 new Swiper("#${d40.portletNamespace} .swiper-container", { 254 slidesPerView: 1, 255 spaceBetween: 25, 256 navigation: { 257 nextEl: '.swiper-button-next', 258 prevEl: '.swiper-button-prev', 259 }, 260 breakpoints: { 261 576: { 262 slidesPerView: 1, 263 spaceBetween: 20 264 }, 265 992: { 266 slidesPerView: 3, 267 spaceBetween: 25 268 }, 269 1200: { 270 slidesPerView: 5, 271 spaceBetween: 25 272 } 273 } 274 275 }); 276 </#if> 277 }); 278</script> 279 280<#function isFavourite articleId> 281 <#assign ret = false> 282 283 <#if (wishlist.length() > 0)> 284 <#list 0..wishlist.length()-1 as i> 285 <#if wishlist.getString(i)?has_content> 286 <#assign item = wishlist.getJSONObject(i)> 287 288 <#if item.itemId?has_content> 289 <#if item.itemId?number == articleId?number> 290 <#assign ret = true> 291 </#if> 292 </#if> 293 </#if> 294 </#list> 295 </#if> 296 297 <#return ret> 298</#function> Programmi per Work Experience - Stage
Vedi tuttiesempi di as xml: xml serveResource con templateId (chiave)
esempi di as json: json serveResource con templateId (chiave)
esempi di as json e siteId: json serveResource con siteid