Dettaglio Corso
An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy524.getLatestArticle(long)" threw an exception when invoked on com.sun.proxy.$Proxy524 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@1dbdf134"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: article = JournalArticleLocalService... [in template "20116#20152#COURSE-TEMPLATE" at line 437, column 13]
- Reached through: #assign-container [in template "20116#20152#COURSE-TEMPLATE" at line 434, column 9]
---- 1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 2<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 3<#assign 4 serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() 5 themeDisplay = serviceContext.getThemeDisplay() 6 group_id = themeDisplay.getScopeGroupId() 7 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 8> 9<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 10<#assign currentCyclePK =""/> 11 12 13<div class="course-details"> 14<div class="row"> 15 <div class="col-xs-12 mb-4"> 16 <div class="course-title"> 17 <h2>${Titolo.getData()}</h2> 18 <div class="decorator"></div> 19 </div> 20 </div> 21 <div class="col-xs-12 mb-4"> 22 <div class="presentation"> 23 <h4>Presentazione del corso</h4> 24 </div> 25 </div> 26 <div class="col-xs-12 mb-4"> 27 <div class="text-with-image"> 28 <p> 29 <#if Immagine?has_content> 30 <img src="${Immagine.getData()}"/> 31 </#if> 32 ${Contenuto.getData()} 33 </p> 34 </div> 35 </div> 36 <div class="col-xs-12 mb-4"> 37 <div class="location-wrapper"> 38 <h4 class="title">Sede</h4> 39 <div class="location-content"> 40 <i class="fal fa-map-marker-alt d-none d-md-block"></i> 41 <span>${Sede.getData()}</span> 42 </div> 43 </div> 44 </div> 45 46 <div class="col-xs-12 mb-4"> 47 <div class="cycle-infos d-block d-sm-flex"> 48 <#if Ciclo.getSiblings()?has_content> 49 50 <#list Ciclo.getSiblings() as cur_Ciclo> 51 52 <#assign 53 cur_Ciclo_map = cur_Ciclo.getData()?eval 54 cur_Ciclo_classPK = cur_Ciclo_map.classPK 55 ciclo = JournalArticleLocalService.getLatestArticle(cur_Ciclo_classPK?number) 56 ciclo_id = ciclo.articleId 57 ciclo_content = JournalArticleLocalService.getArticleContent(group_id, ciclo_id, null, locale, themeDisplay) 58 > 59 <#assign document = saxReaderUtil.read(ciclo.getContent()) /> 60 <#assign rootElement = document.getRootElement() /> 61 <#assign Attivo = "" /> 62 <#assign AttivoxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='isActive']") /> 63 <#if AttivoxPathSelector??> 64 <#assign AttivoObj = AttivoxPathSelector.selectSingleNode(rootElement)!""/> 65 <#if AttivoObj?has_content> 66 <#assign Attivo = AttivoObj.getStringValue()/> 67 </#if> 68 </#if> 69 <#if Attivo?trim=='true'> 70 <!--<#assign currentCyclePK = cur_Ciclo_classPK?trim/> 71 <#assign CicloTitle = "" /> 72 <#assign CicloTitlexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='CycleNumber']") /> 73 <#if CicloTitlexPathSelector??> 74 <#assign CicloTitleObj = CicloTitlexPathSelector.selectSingleNode(rootElement)!""/> 75 <#if CicloTitleObj?has_content> 76 <#assign CicloTitle = CicloTitleObj.getStringValue()/> 77 <div class="w-auto mb-3 mb-sm-0"> 78 <span class="title">${CicloTitle}</span> 79 </div> 80 </#if> 81 </#if>--> 82 83 <#assign CicloLink = "" /> 84 <#assign CicloLinkxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='LinkToPage']") /> 85 <#if CicloLinkxPathSelector??> 86 <#assign CicloLinkObj = CicloLinkxPathSelector.selectSingleNode(rootElement)!""/> 87 <#if CicloLinkObj?has_content> 88 <#assign CicloLink = CicloLinkObj.getStringValue()/> 89 <#assign layout_id = CicloLink?split("@")?first?trim?number /> 90 <#assign group_id = CicloLink?split("@")?last?trim?number /> 91 <#assign page_layout = layoutLocalService.getLayout(group_id, false, layout_id) /> 92 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]> 93 <#assign friendly_page_link = portalUtil.getLayoutFriendlyURL(page_layout, themeDisplay)> 94 <span class="title"> 95 <a href="${friendly_page_link}" class="w-auto title"> 96 <!--<i class="fal fa-file-spreadsheet"></i> ${page_layout.getName(locale)} <i class="fal fa-long-arrow-right"></i> --> 97 <i class="fal fa-file-spreadsheet"></i> Dottorandi <i class="fal fa-long-arrow-right"></i> 98 </a> 99 </span> 100 </#if> 101 </#if> 102 </#if> 103 </#list> 104 </#if> 105 </div> 106 </div> 107 <#if ((ModuliSpecificiDelDottorato.getSiblings()?size > 1) || (ModuliUtiliPerAggiungereCrediti.getSiblings()?size > 1))> 108 <div class="col-xs-12 mb-4"> 109 <div class="presentation"> 110 <h4>Moduli formativi</h4> 111 </div> 112 </div> 113 </#if> 114 <div class="col-xs-12 mb-4"> 115 <div class="row"> 116 <#if (ModuliSpecificiDelDottorato.getSiblings()?size > 1)> 117 <div class="col-xs-12 mb-2 modules-cat"> 118 <h4>Moduli specifici del dottorato</h4> 119 </div> 120 <#list ModuliSpecificiDelDottorato.getSiblings() as cur_webContent> 121 <#if cur_webContent.getData()?has_content> 122 <div class="col-xs-12 col-sm-6 col-xl-4 mb-3"> 123 <div class="col-xs-12 h-100 p-0"> 124 <div class="module h-100"> 125 <#assign 126 cur_webContent_map = cur_webContent.getData()?eval 127 cur_webContent_classPK = cur_webContent_map.classPK 128 article = JournalArticleLocalService.getLatestArticle(cur_webContent_classPK?number) 129 article_id = article.articleId 130 article_content = JournalArticleLocalService.getArticleContent(group_id, article_id, null, locale, themeDisplay) 131 > 132 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale)) /> 133 <#assign rootElement = document.getRootElement() /> 134 <#assign InPresenza = ""/> 135 <#assign InPresenzaxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='InPresenza']") /> 136 <#if InPresenzaxPathSelector??> 137 <#assign InPresenzaObj = InPresenzaxPathSelector.selectSingleNode(rootElement)!""/> 138 <#if InPresenzaObj?has_content> 139 <#assign InPresenza = InPresenzaObj.getStringValue()/> 140 </#if> 141 </#if> 142 <#assign ELearning =""/> 143 <#assign ELearningxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='OnLine']") /> 144 <#if ELearningxPathSelector??> 145 <#assign ELearningObj = ELearningxPathSelector.selectSingleNode(rootElement)!""/> 146 <#if ELearningObj?has_content> 147 <#assign ELearning = ELearningObj.getStringValue()/> 148 </#if> 149 </#if> 150 <#assign Title = ""/> 151 <#assign TitlexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Name']") /> 152 <#if TitlexPathSelector??> 153 <#assign TitleObj = TitlexPathSelector.selectSingleNode(rootElement)!""/> 154 <#if TitleObj?has_content> 155 <#assign Title = TitleObj.getStringValue()/> 156 <div class="title h-100"> 157 <p>${Title}</p> 158 <#if InPresenza?trim != ""> 159 <span><i class="fas fa-chalkboard-teacher"></i> IN PRESENZA</span> 160 </#if> 161 <#if ELearning?trim != ""> 162 <span><i class="fal fa-desktop-alt"></i> E-LEARNING</span> 163 </#if> 164 <#assign DocentexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Docente']") /> 165 166 <#if DocentexPathSelector??> 167 <#assign DocenteObj = DocentexPathSelector.selectSingleNode(rootElement)!""/> 168 <#if DocenteObj?has_content> 169 <#assign Docente = DocenteObj.getStringValue()/> 170 <#if Docente?trim?has_content> 171 <#assign 172 cur_Docente_map = Docente?trim?eval 173 Docente_classPK = cur_Docente_map.classPK 174 Docente_article = JournalArticleLocalService.getLatestArticle(Docente_classPK?number) 175 Docente_article_id = Docente_article.articleId 176 Docente_article_content = JournalArticleLocalService.getArticleContent(group_id, Docente_article_id, null, locale, themeDisplay) 177 > 178 <#assign Docente_document = saxReaderUtil.read(Docente_article.getContentByLocale(locale)) /> 179 <#assign Docente_rootElement = Docente_document.getRootElement() /> 180 <#assign 181 Docente_Nome = "" 182 Docente_Cognome = "" 183 Docente_Titolo = "" 184 Docente_Link = "" 185 /> 186 <#assign Docente_NomexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Nome']") /> 187 <#if Docente_NomexPathSelector??> 188 <#assign Docente_NomeObj = Docente_NomexPathSelector.selectSingleNode(Docente_rootElement)!""/> 189 190 <#if Docente_NomeObj?has_content> 191 <#assign Docente_Nome = Docente_NomeObj.getStringValue()/> 192 </#if> 193 </#if> 194 <#assign Docente_CognomexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Cognome']") /> 195 <#if Docente_CognomexPathSelector??> 196 <#assign Docente_CognomeObj = Docente_CognomexPathSelector.selectSingleNode(Docente_rootElement)!""/> 197 198 <#if Docente_CognomeObj?has_content> 199 <#assign Docente_Cognome = Docente_CognomeObj.getStringValue()/> 200 </#if> 201 </#if> 202 <#assign Docente_TitoloxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Titolo']") /> 203 <#if Docente_TitoloxPathSelector??> 204 <#assign Docente_TitoloObj = Docente_TitoloxPathSelector.selectSingleNode(Docente_rootElement)!""/> 205 206 <#if Docente_TitoloObj?has_content> 207 <#assign Docente_Titolo = Docente_TitoloObj.getStringValue()/> 208 </#if> 209 </#if> 210 <#assign Docente_LinkxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='LinkMenzione']") /> 211 <#if Docente_LinkxPathSelector??> 212 <#assign Docente_LinkObj = Docente_LinkxPathSelector.selectSingleNode(Docente_rootElement)!""/> 213 214 <#if Docente_LinkObj?has_content> 215 <#assign Docente_Link = Docente_LinkObj.getStringValue()/> 216 </#if> 217 </#if> 218 <p class="pt-3"> 219 <#if Docente_Link?has_content> 220 <a target="_blank" href="${Docente_Link}"> 221 </#if> 222 ${Docente_Titolo} ${Docente_Cognome} ${Docente_Nome} 223 <#if Docente_Link?has_content> 224 <i class="fas fa-external-link-alt"></i></a> 225 </#if> 226 </p> 227 </#if> 228 229 </#if> 230 </#if> 231 <#assign ProgrammaxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Programma']") /> 232 233 <#if ProgrammaxPathSelector??> 234 <#assign ProgrammaObj = ProgrammaxPathSelector.selectSingleNode(rootElement)!""/> 235 <#if ProgrammaObj?has_content> 236 <#assign Programma = ProgrammaObj.getStringValue()/> 237 <#if Programma?trim?has_content> 238 <p><a target="_blank" href="${Programma}"><i class="fal fa-download"></i> Scarica il programma</a></p> 239 </#if> 240 </#if> 241 </#if> 242 </div> 243 </#if> 244 </#if> 245 <#assign 246 Hours = "" 247 /> 248 <#assign HoursxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Ore']") /> 249 <#if HoursxPathSelector??> 250 <#assign HoursObj = HoursxPathSelector.selectSingleNode(rootElement)!""/> 251 <#if HoursObj?has_content> 252 <#assign Hours = HoursObj.getStringValue()/> 253 <div class="hours h-100"> 254 <span>ORE </br> <span classs="tot">${Hours}</span></span> 255 </div> 256 </#if> 257 </#if> 258 </div> 259 </div> 260 </div> 261 </#if> 262 </#list> 263 </#if> 264 </div> 265 </div> 266 <div class="col-xs-12 mb-4"> 267 <div class="row"> 268 <#if (ModuliUtiliPerAggiungereCrediti.getSiblings()?size > 1)> 269 <div class="col-xs-12 mb-2 modules-cat"> 270 <h4>Moduli utili per aggiungere crediti</h4> 271 </div> 272 <#list ModuliUtiliPerAggiungereCrediti.getSiblings() as cur_webContent> 273 274 <#if cur_webContent.getData()?has_content> 275 <div class="col-xs-12 col-sm-6 col-xl-4 mb-3"> 276 <div class="col-xs-12 h-100 p-0"> 277 <div class="module h-100"> 278 <#assign 279 cur_webContent_map = cur_webContent.getData()?eval 280 cur_webContent_classPK = cur_webContent_map.classPK 281 article = JournalArticleLocalService.getLatestArticle(cur_webContent_classPK?number) 282 article_id = article.articleId 283 article_content = JournalArticleLocalService.getArticleContent(group_id, article_id, null, locale, themeDisplay) 284 > 285 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale)) /> 286 <#assign rootElement = document.getRootElement() /> 287 <#assign 288 Title = "" 289 /> 290 <#assign TitlexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Name']") /> 291 <#if TitlexPathSelector??> 292 <#assign TitleObj = TitlexPathSelector.selectSingleNode(rootElement)!""/> 293 <#if TitleObj?has_content> 294 <#assign Title = TitleObj.getStringValue()/> 295 <div class="title h-100"> 296 <p>${Title}</p> 297 <span><i class="fal fa-desktop-alt"></i> E-LEARNING</span> 298 <#assign DocentexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Docente']") /> 299 300 <#if DocentexPathSelector??> 301 <#assign DocenteObj = DocentexPathSelector.selectSingleNode(rootElement)!""/> 302 <#if DocenteObj?has_content> 303 <#assign Docente = DocenteObj.getStringValue()/> 304 <#if Docente?trim?has_content> 305 <#assign 306 cur_Docente_map = Docente?trim?eval 307 Docente_classPK = cur_Docente_map.classPK 308 Docente_article = JournalArticleLocalService.getLatestArticle(Docente_classPK?number) 309 Docente_article_id = Docente_article.articleId 310 Docente_article_content = JournalArticleLocalService.getArticleContent(group_id, Docente_article_id, null, locale, themeDisplay) 311 > 312 <#assign Docente_document = saxReaderUtil.read(Docente_article.getContentByLocale(locale)) /> 313 <#assign Docente_rootElement = Docente_document.getRootElement() /> 314 <#assign 315 Docente_Nome = "" 316 Docente_Cognome = "" 317 Docente_Titolo = "" 318 Docente_Link = "" 319 /> 320 <#assign Docente_NomexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Nome']") /> 321 <#if Docente_NomexPathSelector??> 322 <#assign Docente_NomeObj = Docente_NomexPathSelector.selectSingleNode(Docente_rootElement)!""/> 323 324 <#if Docente_NomeObj?has_content> 325 <#assign Docente_Nome = Docente_NomeObj.getStringValue()/> 326 </#if> 327 </#if> 328 <#assign Docente_CognomexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Cognome']") /> 329 <#if Docente_CognomexPathSelector??> 330 <#assign Docente_CognomeObj = Docente_CognomexPathSelector.selectSingleNode(Docente_rootElement)!""/> 331 332 <#if Docente_CognomeObj?has_content> 333 <#assign Docente_Cognome = Docente_CognomeObj.getStringValue()/> 334 </#if> 335 </#if> 336 <#assign Docente_TitoloxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Titolo']") /> 337 <#if Docente_TitoloxPathSelector??> 338 <#assign Docente_TitoloObj = Docente_TitoloxPathSelector.selectSingleNode(Docente_rootElement)!""/> 339 340 <#if Docente_TitoloObj?has_content> 341 <#assign Docente_Titolo = Docente_TitoloObj.getStringValue()/> 342 </#if> 343 </#if> 344 <#assign Docente_LinkxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='LinkMenzione']") /> 345 <#if Docente_LinkxPathSelector??> 346 <#assign Docente_LinkObj = Docente_LinkxPathSelector.selectSingleNode(Docente_rootElement)!""/> 347 348 <#if Docente_LinkObj?has_content> 349 <#assign Docente_Link = Docente_LinkObj.getStringValue()/> 350 </#if> 351 </#if> 352 <p class="pt-3"> 353 <#if Docente_Link?has_content> 354 <a target="_blank" href="${Docente_Link}"> 355 </#if> 356 ${Docente_Titolo} ${Docente_Cognome} ${Docente_Nome} 357 <#if Docente_Link?has_content> 358 <i class="fas fa-external-link-alt"></i></a> 359 </#if> 360 </p> 361 </#if> 362 363 </#if> 364 </#if> 365 <#assign ProgrammaxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Programma']") /> 366 367 <#if ProgrammaxPathSelector??> 368 <#assign ProgrammaObj = ProgrammaxPathSelector.selectSingleNode(rootElement)!""/> 369 <#if ProgrammaObj?has_content> 370 <#assign Programma = ProgrammaObj.getStringValue()/> 371 <#if Programma?trim?has_content> 372 <p><a target="_blank" href="${Programma}"><i class="fal fa-download"></i> Scarica il programma</a></p> 373 </#if> 374 </#if> 375 </#if> 376 </div> 377 </#if> 378 </#if> 379 <#assign 380 Hours = "" 381 /> 382 <#assign HoursxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Ore']") /> 383 <#if HoursxPathSelector??> 384 <#assign HoursObj = HoursxPathSelector.selectSingleNode(rootElement)!""/> 385 <#if HoursObj?has_content> 386 <#assign Hours = HoursObj.getStringValue()/> 387 <div class="hours h-100"> 388 <span>ORE </br> <span classs="tot">${Hours}</span></span> 389 </div> 390 </#if> 391 </#if> 392 </div> 393 </div> 394 </div> 395 </#if> 396 </#list> 397 </#if> 398 </div> 399 </div> 400 <#if (Allegato.getSiblings()?size > 1)> 401 402 <div class="col-xs-12 mb-4"> 403 <div class="presentation"> 404 <h4>Documentazione</h4> 405 </div> 406 </div> 407 <#list Allegato.getSiblings() as cur_Allegato> 408 <div class="link mb-4"> 409 <a href="${cur_Allegato.getData()}"> 410 <#list cur_Allegato.getData()?split("/") as x> 411 <#if x?counter ==3> 412 <#assign groupId = x> 413 </#if> 414 <#if x?counter ==6> 415 <#assign uuId = x> 416 </#if> 417 </#list> 418 <#assign dlFileEntry = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 419 <#if (uuId??) && (groupId??)> 420 <#assign file = dlFileEntry.getFileEntryByUuidAndGroupId(uuId,groupId?number) > 421 </#if> 422 <#if file?has_content> 423 <div class="link-name">${file.getFileName()}<i class="fal fa-long-arrow-right"></i></div> 424 <i class="fal fa-file-download"></i> 425 </#if> 426 </a> 427 </div> 428 </#list> 429 </#if> 430 431 <#if Coordinatore.getSiblings()?has_content> 432 <#list Coordinatore.getSiblings() as cur_webContent> 433 434 <#assign 435 cur_webContent_map = cur_webContent.getData()?eval 436 cur_webContent_classPK = cur_webContent_map.classPK 437 article = JournalArticleLocalService.getLatestArticle(cur_webContent_classPK?number) 438 article_id = article.articleId 439 > 440 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale)) /> 441 <#assign rootElement = document.getRootElement() /> 442 <#assign 443 Name = "" 444 /> 445 <#assign NamexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Nome']") /> 446 <#if NamexPathSelector??> 447 <#assign NameObj = NamexPathSelector.selectSingleNode(rootElement)!""/> 448 <#if NameObj?has_content> 449 <#assign Name = NameObj.getStringValue()/> 450 </#if> 451 </#if> 452 <#assign 453 Surname = "" 454 /> 455 <#assign SurnamexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Cognome']") /> 456 <#if SurnamexPathSelector??> 457 <#assign SurnameObj = SurnamexPathSelector.selectSingleNode(rootElement)!""/> 458 <#if SurnameObj?has_content> 459 <#assign Surname = SurnameObj.getStringValue()/> 460 461 </#if> 462 </#if> 463 <#assign 464 Title = "" 465 /> 466 <#assign TitlexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Titolo']") /> 467 <#if TitlexPathSelector??> 468 <#assign TitleObj = TitlexPathSelector.selectSingleNode(rootElement)!""/> 469 <#if TitleObj?has_content> 470 <#assign Title = TitleObj.getStringValue()/> 471 472 </#if> 473 </#if> 474 <#assign 475 Description = "" 476 /> 477 <#assign DescriptionxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='BreveDescrizione']") /> 478 <#if DescriptionxPathSelector??> 479 <#assign DescriptionObj = DescriptionxPathSelector.selectSingleNode(rootElement)!""/> 480 <#if DescriptionObj?has_content> 481 <#assign Description = DescriptionObj.getStringValue()/> 482 483 </#if> 484 </#if> 485 <div class="col-xs-12"> 486 <div class="wrapper coordinator"> 487 <div class="presentation mb-4"> 488 <h4>Coordinatore dottorato</h4> 489 </div> 490 <div class="name"> 491 <p>${Title} ${Name} ${Surname}</p> 492 </div> 493 <div class="description"> 494 <p>${Description}</p> 495 </div> 496 </div> 497 </div> 498 </#list> 499 </#if> 500 501 <div class="col-xs-12"> 502 <div class="teachers-wrapper"> 503 <div class="row"> 504 <div class="col-xs-12 mb-4 accordion"> 505 <div class="presentation "> 506 <h4>Collegio docenti</h4> 507 <i class="fal fa-angle-down"></i> 508 </div> 509 </div> 510 <div class="col-xs-12 tab-content"> 511 <#if DocenteOrdinario.getSiblings()?has_content> 512 <#assign teacherMapList = []> 513 <#list DocenteOrdinario.getSiblings() as cur_webContent> 514 <#if cur_webContent.getData()?has_content> 515 <#assign 516 cur_webContent_map = cur_webContent.getData()?eval 517 cur_webContent_classPK = cur_webContent_map.classPK 518 article = JournalArticleLocalService.getLatestArticle(cur_webContent_classPK?number) 519 article_id = article.articleId 520 /> 521 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale)) /> 522 <#assign rootElement = document.getRootElement() /> 523 <#assign teacherMap = {}/> 524 <#assign Name = ""/> 525 <#assign NamexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Nome']") /> 526 <#if NamexPathSelector??> 527 <#assign NameObj = NamexPathSelector.selectSingleNode(rootElement)!""/> 528 <#if NameObj?has_content> 529 <#assign Name = NameObj.getStringValue()/> 530 <#assign teacherMap = teacherMap + {"name": Name}> 531 </#if> 532 </#if> 533 <#assign Surname = ""/> 534 <#assign SurnamexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Cognome']") /> 535 <#if SurnamexPathSelector??> 536 <#assign SurnameObj = SurnamexPathSelector.selectSingleNode(rootElement)!""/> 537 <#if SurnameObj?has_content> 538 <#assign Surname = SurnameObj.getStringValue()/> 539 <#assign teacherMap = teacherMap + {"surname": Surname}> 540 </#if> 541 </#if> 542 <#assign Title = ""/> 543 <#assign TitlexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Titolo']") /> 544 <#if TitlexPathSelector??> 545 <#assign TitleObj = TitlexPathSelector.selectSingleNode(rootElement)!""/> 546 <#if TitleObj?has_content> 547 <#assign Title = TitleObj.getStringValue()/> 548 <#assign teacherMap = teacherMap + {"title": Title}> 549 </#if> 550 </#if> 551 <#assign Description = ""/> 552 <#assign DescriptionxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='BreveDescrizione']") /> 553 <#if DescriptionxPathSelector??> 554 <#assign DescriptionObj = DescriptionxPathSelector.selectSingleNode(rootElement)!""/> 555 <#if DescriptionObj?has_content> 556 <#assign Description = DescriptionObj.getStringValue()/> 557 <#assign teacherMap = teacherMap + {"description": Description}> 558 </#if> 559 </#if> 560 <#assign Link = ""/> 561 <#assign LinkxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='LinkMenzione']") /> 562 <#if LinkxPathSelector??> 563 <#assign LinkObj = LinkxPathSelector.selectSingleNode(rootElement)!""/> 564 <#if LinkObj?has_content> 565 <#assign Link = LinkObj.getStringValue()/> 566 <#assign teacherMap = teacherMap + {"link": Link}> 567 </#if> 568 </#if> 569 <#assign teacherMapList = teacherMapList + [teacherMap]> 570 </#if> 571 </#list> 572 <#list teacherMapList?sort_by("surname") as teacher> 573 <div class="col-xs-12 mt-2"> 574 <#if teacher.link?? && teacher.link?trim != ""> 575 <div class="wrapper ordinary"> 576 <a class="link" href="${teacher.link}" target="_blank"> 577 <div class="name"> 578 <p>${teacher.title} ${teacher.name} ${teacher.surname}</p> 579 </div> 580 <div class="description"> 581 <p>${teacher.description}</p> 582 <i class="fal fa-long-arrow-right"></i> 583 </div> 584 </a> 585 </div> 586 <#else> 587 <div class="wrapper ordinary"> 588 <div class="name"> 589 <p>${teacher.title} ${teacher.name} ${teacher.surname}</p> 590 </div> 591 <div class="description"> 592 <p>${teacher.description}</p> 593 </div> 594 </div> 595 </#if> 596 </div> 597 </#list> 598 </#if> 599 </div> 600 </div> 601 </div> 602 603 <#if dottorando??> 604 <#if (dottorando.getSiblings()?size > 1)> 605 <#assign studentMapList = []/> 606 <div class="row students-wrapper"> 607 <div class="col-xs-12 mb-4"> 608 <div class="presentation accordion"> 609 <h4>Dottorandi</h4> 610 <i class="fal fa-angle-down"></i> 611 </div> 612 <div class="tab-content"> 613 <#list dottorando.getSiblings() as cur_webContent> 614 <#if cur_webContent.getData()?has_content> 615 <#assign 616 cur_webContent_map = cur_webContent.getData()?eval 617 cur_webContent_classPK = cur_webContent_map.classPK 618 article = JournalArticleLocalService.getLatestArticle(cur_webContent_classPK?number) 619 article_id = article.articleId 620 article_content = JournalArticleLocalService.getArticleContent(group_id, article_id, null, locale, themeDisplay) 621 > 622 <#assign studentMap = {}> 623 <#assign studentTag="" /> 624 <#list AssetTagLocalService.getTags(cur_webContent_map.className, cur_webContent_classPK?number) as tag> 625 <#assign studentTag = tag.name/> 626 <#assign studentMap = studentMap + {"cycle", studentTag}/> 627 </#list> 628 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale)) /> 629 <#assign rootElement = document.getRootElement() /> 630 <#assign StudentCycle = "" /> 631 <#assign CyclexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Ciclo']") /> 632 <#if CyclexPathSelector??> 633 <#assign CycleObj = CyclexPathSelector.selectSingleNode(rootElement)!""/> 634 <#if CycleObj?has_content> 635 <#assign 636 cycle = CycleObj.getStringValue() 637 cyclePK = cycle?eval.classPK 638 cycleArticle = JournalArticleLocalService.getLatestArticle(cyclePK?number) 639 cycleId = cycleArticle.articleId 640 cycleContent = JournalArticleLocalService.getArticleContent(group_id, cycleId, null, locale, themeDisplay) 641 /> 642 </#if> 643 </#if> 644 <#assign Name = ""/> 645 <#assign NamexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Nome']") /> 646 <#if NamexPathSelector??> 647 <#assign NameObj = NamexPathSelector.selectSingleNode(rootElement)!""/> 648 <#if NameObj?has_content> 649 <#assign Name = NameObj.getStringValue()/> 650 <#assign studentMap = studentMap + {"name", Name}/> 651 </#if> 652 </#if> 653 <#assign Surname = ""/> 654 <#assign SurnamexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Cognome']") /> 655 <#if SurnamexPathSelector??> 656 <#assign SurnameObj = SurnamexPathSelector.selectSingleNode(rootElement)!""/> 657 <#if SurnameObj?has_content> 658 <#assign Surname = SurnameObj.getStringValue()/> 659 <#assign studentMap = studentMap + {"surname", Surname}/> 660 </#if> 661 </#if> 662 <#assign Email = ""/> 663 <#assign EmailxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Email']") /> 664 <#if EmailxPathSelector??> 665 <#assign EmailObj = EmailxPathSelector.selectSingleNode(rootElement)!""/> 666 <#if EmailObj?has_content> 667 <#assign Email = EmailObj.getStringValue()/> 668 <#assign studentMap = studentMap + {"email", Email}/> 669 </#if> 670 </#if> 671 <#assign Project = ""/> 672 <#assign ProjectxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ProgettoDiRicerca']") /> 673 <#if ProjectxPathSelector??> 674 <#assign ProjectObj = ProjectxPathSelector.selectSingleNode(rootElement)!""/> 675 <#if ProjectObj?has_content> 676 <#assign Project = ProjectObj.getStringValue()/> 677 <#assign studentMap = studentMap + {"project", Project}/> 678 </#if> 679 </#if> 680 <#assign StudentCurriculum = "" /> 681 <#assign StudentCurriculumxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Curriculum']") /> 682 <#if StudentCurriculumxPathSelector??> 683 <#assign StudentCurriculumObj = StudentCurriculumxPathSelector.selectSingleNode(rootElement)!""/> 684 <#if StudentCurriculumObj?has_content> 685 <#assign StudentCurriculum = StudentCurriculumObj.getStringValue()/> 686 <#assign studentMap = studentMap + {"curriculum", StudentCurriculum}/> 687 </#if> 688 </#if> 689 <#assign StudentLocation = "" /> 690 <#assign StudentLocationxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Sede']") /> 691 <#if StudentLocationxPathSelector??> 692 <#assign StudentLocationObj = StudentLocationxPathSelector.selectSingleNode(rootElement)!""/> 693 <#if StudentLocationObj?has_content> 694 <#assign StudentLocation = StudentLocationObj.getStringValue()/> 695 <#assign studentMap = studentMap + {"location", StudentLocation}/> 696 </#if> 697 </#if> 698 <#assign Attachment = "" /> 699 <#assign AttachmentxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Allegato']") /> 700 <#if AttachmentxPathSelector??> 701 <#assign AttachmentObj = AttachmentxPathSelector.selectSingleNode(rootElement)!""/> 702 <#if AttachmentObj?has_content> 703 <#assign Attachment = AttachmentObj.getStringValue()/> 704 <#assign studentMap = studentMap + {"attachment", Attachment}/> 705 <#list Attachment?split("/") as x> 706 <#if x?counter ==3> 707 <#assign groupId = x?trim> 708 </#if> 709 <#if x?counter ==6> 710 <#assign uuId = x?trim> 711 </#if> 712 </#list> 713 <#assign dlFileEntry = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService")> 714 <#if (uuId??) && (groupId??)> 715 <#assign file = dlFileEntry.getFileEntryByUuidAndGroupId(uuId,groupId?number) > 716 <#assign studentMap = studentMap + {"file", file}/> 717 </#if> 718 </#if> 719 </#if> 720 <#assign studentMapList = studentMapList + [studentMap]> 721 </#if> 722 </#list> 723 <#assign studentMapList = studentMapList?sort_by("surname")?reverse/> 724 <#list studentMapList?sort_by("cycle")?reverse as student> 725 <div class="student"> 726 <#if student.cycle?? && student.cycle?trim?has_content> 727 <div class="mb-2 mt-2"><span style="background:#f0cb00;font-weight:600;padding:6px">${student.cycle}° Ciclo</span></div> 728 </#if> 729 <span class="name"><strong>Nome: </strong>${student.name} ${student.surname}</span> 730 <div> 731 <span><strong>Email: </strong>${student.email}</span> 732 </div> 733 <#if student.attachment?? && student.attachment?trim != "" && student.file?? && student.file?trim?has_content> 734 <div> 735 <div class="link-name"> 736 <span><strong>Progetto di ricerca: </strong><a href="${student.attachment}" target="_blank"> ${student.project}<i class="fal fa-long-arrow-right"></i> </a> 737 </div> 738 </div> 739 <#else> 740 <div> 741 <span><strong>Progetto di ricerca: </strong>${student.project}</span> 742 </div> 743 </#if> 744 <#if student.curriculum?? && student.curriculum?trim != "" > 745 <div> 746 <span><strong>Curriculum: </strong>${StudentCurriculum}</span> 747 </div> 748 </#if> 749 <#if student.location?? && student.location?trim != ""> 750 <div> 751 <span><strong>Sede di svolgimento: </strong>${StudentLocation}</span> 752 </div> 753 </#if> 754 </div> 755 <div class="separator"></div> 756 </#list> 757 </div> 758 </div> 759 </div> 760 </#if> 761 </#if> 762 763 <!-- Finanziamenti --> 764 <div class="teachers-wrapper"> 765 766 <#if finanziamento??> 767 <#assign showFin = false/> 768 <#if (finanziamento.getSiblings()?size >= 1)> 769 <#assign showFin = true/> 770 </#if> 771 <#if showFin> 772 <div class="row"> 773 <#list finanziamento.getSiblings() as cur_finanziamento> 774 <#if cur_finanziamento.getData()?has_content> 775 <#assign 776 cur_finanziamento_map = cur_finanziamento.getData()?eval 777 cur_finanziamento_classPK = cur_finanziamento_map.classPK 778 article = JournalArticleLocalService.getLatestArticle(cur_finanziamento_classPK?number) 779 article_id = article.articleId 780 article_content = JournalArticleLocalService.getArticleContent(group_id, article_id, null, locale, themeDisplay) 781 > 782 <#assign document = saxReaderUtil.read(article.getContentByLocale(locale)) /> 783 <#assign rootElement = document.getRootElement() /> 784 <#assign 785 FinTitle = "" 786 /> 787 <#assign FinTitlexPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Titolo']") /> 788 <#if FinTitlexPathSelector??> 789 <#assign FinTitleObj = FinTitlexPathSelector.selectSingleNode(rootElement)!""/> 790 <#if FinTitleObj?has_content> 791 <#assign FinTitle = FinTitleObj.getStringValue()/> 792 </#if> 793 </#if> 794 <#assign 795 FinDescription = "" 796 /> 797 <#assign FinDescriptionxPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Contenuto']") /> 798 <#if FinDescriptionxPathSelector??> 799 <#assign FinDescriptionObj = FinDescriptionxPathSelector.selectSingleNode(rootElement)!""/> 800 <#if FinDescriptionObj?has_content> 801 <#assign FinDescription = FinDescriptionObj.getStringValue()/> 802 </#if> 803 </#if> 804 <div class="col-xs-12 mb-4 accordion"> 805 <div class="presentation"> 806 <h4>${FinTitle}</h4> 807 <i class="fal fa-angle-down"></i> 808 </div> 809 </div> 810 <div class="col-xs-12 tab-content"> 811 ${FinDescription} 812 813 </div> 814 </#if> 815 </#list> 816 </div> 817 </#if> 818 </#if> 819 </div> 820 <!-- End Finanziamenti --> 821 <!-- Contatti--> 822 <#if contacts??> 823 824 <#if contacts.getData()?has_content> 825 <div class="row"> 826 <div class="col-xs-12"> 827 <div class="wrapper"> 828 <div class="presentation mb-4"> 829 <h4>Informazioni contatto</h4> 830 </div> 831 <div class="description"> 832 ${contacts.getData()} 833 </div> 834 </div> 835 </div> 836 </div> 837 838 </#if> 839 </#if> 840 <!-- End contatti--> 841 </div> 842 </div> 843 844 </div> 845</div> 846</div> 847 848<script> 849 850Liferay.on( 851'allPortletsReady', 852function(){ 853 var acc = document.getElementsByClassName("accordion"); 854 var i; 855 856 for (i = 0; i < acc.length; i++) { 857 858 acc[i].addEventListener("click", function() { 859 this.classList.toggle("active"); 860 var panel = this.nextElementSibling; 861 if (panel.style.display === "block") { 862 panel.style.display = "none"; 863 } else { 864 panel.style.display = "block"; 865 } 866 }); 867 } 868 869 870 } 871) 872 873</script>