Soggiorni studio

Vedi tutti

Programmi per Anno scolastico all'estero

Vedi tutti

Programmi per Corsi Online

Vedi tutti

Nessun risultato

Programmi per PCTO (per gruppi scuole)

Vedi tutti

Nessun risultato

Programmi per Stage linguistico (per gruppi scuole)

Vedi tutti

Nessun risultato

Programmi per Soggiorni studio 18+

Vedi tutti

Nessun risultato

Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy78.getCategory(long)" threw an exception when invoked on com.sun.proxy.$Proxy78 object "com.liferay.asset.categories.internal.service.AssetCategoryPropertyAssetCategoryLocalServiceWrapper@56f13098"; 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 tutti

Nessun risultato