Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy988.getLatestArticle(long)" threw an exception when invoked on com.sun.proxy.$Proxy988 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@731eb5e"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign contattoJA = journalArticleLo... [in template "20096#20121#75098" at line 557, column 73] ----
1<#assign structureService = serviceLocator.findService("it.inera.structure.service.StructureService")>
2<#assign argomentiVocabularyId = structureService.getVocabularyArgomentiId()>
3<#assign vocabularyTipieventoId = structureService.getVocabularyTipieventoId()>
4
5<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
6<#assign jac = serviceLocator.findService("it.inera.journalarticleconverter.service.JournalArticleConverter")>
7<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
8<#assign journalArticleId = .vars['reserved-article-id'].data>
9<#assign ja = journalArticleLocalService.getArticle(groupId, journalArticleId)>
10<#assign evento = jac.getEvento(ja) />
11<#assign vocabularies = evento.getCategories() />
12
13<#assign displaydate = evento.getDisplayDate()?string["dd/MM/yyyy"]>
14<#assign modifieddate = evento.getModifiedDate()?string["dd/MM/yyyy"]>
15
16<div class="container" id="main-container">
17
18 <div class="row">
19 <div class="col px-lg-4">
20 <div class="cmp-breadcrumbs" role="navigation">
21 <nav class="breadcrumb-container" aria-label="breadcrumb">
22 <ol class="breadcrumb p-0" data-element="breadcrumb">
23 <li class="breadcrumb-item"><a href="/" class="" data-focus-mouse="false"><@liferay.language key="breadcrumbs.home" /></a><span class="separator">/</span></li>
24 <li class="breadcrumb-item"><a href="/vivere-il-comune"><@liferay.language key="breadcrumbs.viverecomune" /></a><span class="separator">/</span></li>
25 <li class="breadcrumb-item"><a href="/eventi"><@liferay.language key="breadcrumbs.eventi" /></a><span class="separator">/</span></li>
26 <li class="breadcrumb-item active" aria-current="page">${titolo.getData()}</li>
27 </ol>
28 </nav>
29 </div>
30 </div>
31 </div>
32
33 <div class="row">
34 <div class="col-lg-8 px-lg-4 py-lg-2">
35 <h1 data-audio>${titolo.getData()}</h1>
36 <#assign datada = evento.getDataorainizio()?string("dd/MM/yyyy HH:mm") />
37 <#assign dataa = evento.getDataorafine()?string("dd/MM/yyyy HH:mm")/>
38 <h2 class="h4 py-2" data-audio>
39 <#if (sottotitolo.getData())??>
40 ${sottotitolo.getData()}
41 </#if>
42 <#if datada == dataa >
43 <br/> ${datada}
44 <#else>
45 <br/> dal ${datada} al ${dataa}
46 </#if>
47 </h2>
48
49 <#-- #if (descrizionebreve.getData())??>
50 <p data-audio>
51 ${descrizionebreve.getData()}
52 </p>
53 </#if -->
54 </div>
55 <div class="col-lg-3 offset-lg-1">
56 <div class="dropdown d-inline">
57 <button aria-label="<@liferay.language key="social.condivididesc" />" class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0" type="button" id="shareActions" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
58 <svg class="icon" aria-hidden="true">
59 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-share"></use>
60 </svg>
61 <small><@liferay.language key="social.condividi" /></small>
62 </button>
63 <div class="dropdown-menu shadow-lg" aria-labelledby="shareActions">
64 <div class="link-list-wrapper">
65 <ul class="link-list share-btn" role="menu">
66 <li role="none">
67 <a data-id="fb" class="list-item" href="#" role="menuitem">
68 <svg class="icon" aria-hidden="true">
69 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-facebook"></use>
70 </svg>
71 <span><@liferay.language key="social.facebook" /></span>
72 </a>
73 </li>
74 <li role="none">
75 <a data-id="tw" class="list-item" href="#" role="menuitem">
76 <svg class="icon" aria-hidden="true">
77 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-twitter"></use>
78 </svg>
79 <span><@liferay.language key="social.twitter" /></span>
80 </a>
81 </li>
82 <li role="none">
83 <a data-id="in" class="list-item" href="#" role="menuitem">
84 <svg class="icon" aria-hidden="true">
85 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-linkedin"></use>
86 </svg>
87 <span><@liferay.language key="social.linkedin" /></span>
88 </a>
89 </li>
90 <li role="none">
91 <a data-id="wa" class="list-item" href="#" role="menuitem">
92 <svg class="icon" aria-hidden="true">
93 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-whatsapp"></use>
94 </svg>
95 <span><@liferay.language key="social.whatsapp" /></span>
96 </a>
97 </li>
98 </ul>
99 </div>
100 </div>
101 </div>
102 <div class="dropdown d-inline">
103 <button aria-label="<@liferay.language key="azioni.vedidesc" />" class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0" type="button" id="viewActions" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
104 <svg class="icon" aria-hidden="true">
105 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-more-items"></use>
106 </svg>
107 <small><@liferay.language key="azioni.vedi" /></small>
108 </button>
109 <div class="dropdown-menu shadow-lg" aria-labelledby="viewActions">
110 <div class="link-list-wrapper">
111 <ul class="link-list share-btn" role="menu">
112 <li role="none">
113 <a data-id="print" class="list-item" href="#" role="menuitem">
114 <svg class="icon" aria-hidden="true">
115 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-print"></use>
116 </svg>
117 <span><@liferay.language key="azioni.stampa" /></span>
118 </a>
119 </li>
120 <li role="none">
121 <a class="list-item" role="menuitem" onclick="listenElements(this, '[data-audio]')">
122 <svg class="icon" aria-hidden="true">
123 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-hearing"></use>
124 </svg>
125 <span><@liferay.language key="azioni.ascolta" /></span>
126 </a>
127 </li>
128 <li role="none">
129 <a data-id="mail" class="list-item" href="#" role="menuitem">
130 <svg class="icon" aria-hidden="true">
131 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-mail"></use>
132 </svg>
133 <span><@liferay.language key="azioni.invia" /></span>
134 </a>
135 </li>
136 </ul>
137 </div>
138 </div>
139 </div>
140
141 <#if vocabularies?? && vocabularies?has_content >
142 <#list vocabularies as vocabularyId, categories>
143 <#if categories?? && categories?has_content && vocabularyId == argomentiVocabularyId >
144 <div class="mt-4 mb-4">
145 <div class="row">
146 <span class="mb-2 small"><@liferay.language key="detail.argomenti" /></span>
147 </div>
148 <ul class="d-flex flex-wrap gap-1">
149 <#list categories as category>
150 <#assign categoryLink = "" >
151 <#if category.getDescription()?? && category.getDescription()?has_content >
152 <#assign plid = category.getDescription()?replace('<[^>]+>','','r')?replace('<[^>]+>','','r') >
153 <#if plid?? && plid?has_content >
154 <#assign layoutDisplay = layoutLocalService.getLayout(plid?number) >
155 <#if layoutDisplay?? && layoutDisplay?has_content>
156 <#assign categoryLink = layoutDisplay.getFriendlyURL(themeDisplay.getLocale()) />
157 </#if>
158 </#if>
159 </#if>
160 <li>
161 <#if categoryLink?? && categoryLink?has_content >
162 <a class="chip chip-simple" href="${categoryLink}">
163 <span class="chip-label">${category.getTitle(locale)}</span>
164 </a>
165 <#else>
166 <div class="chip chip-simple text-button">
167 <span class="chip-label">${category.getTitle(locale)}</span>
168 </div>
169 </#if>
170 </li>
171 </#list>
172 </ul>
173 </div>
174 </#if>
175 </#list>
176 </#if>
177
178 </div>
179 </div>
180</div>
181<#if (immagineprincipale.immagine.getData())?? && immagineprincipale.immagine.getData()?has_content >
182 <div class="container-fluid my-3">
183 <div class="row">
184 <figure class="figure px-0 img-full">
185 <img src="${immagineprincipale.immagine.getData()}" class="figure-img img-fluid" alt="${immagineprincipale.immagine.getAttribute("alt")}">
186 <#if (immagineprincipale.immagine_titolo.getData())??>
187 <figcaption class="figure-caption text-center pt-3">${immagineprincipale.immagine_titolo.getData()}</figcaption>
188 </#if>
189 </figure>
190 </div>
191 </div>
192</#if>
193
194<div class="container">
195 <div class="row border-top border-light row-column-border row-column-menu-left">
196 <aside class="col-lg-3">
197 <div class="cmp-navscroll sticky-top" aria-labelledby="accordion-title-one">
198 <nav class="navbar it-navscroll-wrapper navbar-expand-lg" aria-label="<@liferay.language key="notizia.indice" />" data-bs-navscroll>
199 <div class="navbar-custom" id="navbarNavProgress">
200 <div class="menu-wrapper">
201 <div class="link-list-wrapper">
202 <div class="accordion">
203 <div class="accordion-item">
204 <span class="accordion-header" id="accordion-title-one">
205 <button class="accordion-button pb-10 px-3" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-one" aria-expanded="true" aria-controls="collapse-one">
206 <@liferay.language key="notizia.indice" />
207 <svg class="icon icon-xs right">
208 <use href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-expand"></use>
209 </svg>
210 </button>
211 </span>
212 <div class="progress">
213 <div class="progress-bar it-navscroll-progressbar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
214 </div>
215 <div id="collapse-one" class="accordion-collapse collapse show" role="region" aria-labelledby="accordion-title-one">
216 <div class="accordion-body">
217 <ul class="link-list" data-element="page-index">
218 <li class="nav-item">
219 <a class="nav-link" href="#cos-e">
220 <span class="title-medium"><@liferay.language key="evento.cose" /></span>
221 </a>
222 </li>
223 <li class="nav-item">
224 <a class="nav-link" href="#destinatari">
225 <span class="title-medium"><@liferay.language key="evento.chi.rivolto" /></span>
226 </a>
227 </li>
228 <#if evento.getLuogo()?? && evento.getLuogo()?has_content && evento.getLuogo().getClassPKLong()??>
229 <li class="nav-item">
230 <a class="nav-link" href="#luogo">
231 <span class="title-medium"><@liferay.language key="evento.luogo" /></span>
232 </a>
233 </li>
234 </#if>
235 <li class="nav-item">
236 <a class="nav-link" href="#costi">
237 <span class="title-medium"><@liferay.language key="evento.costi" /></span>
238 </a>
239 </li>
240 <#if evento.getAllegatos()?? && evento.getAllegatos()?has_content && evento.getAllegatos()[0]?has_content && evento.getAllegatos()[0].getAllegato().getUrl()??>
241 <li class="nav-item">
242 <a class="nav-link" href="#allegati">
243 <span class="title-medium"><@liferay.language key="evento.allegati" /></span>
244 </a>
245 </li>
246 </#if>
247 <#if evento.getAppuntamenti()?? && evento.getAppuntamenti()?has_content && evento.getAppuntamenti()[0]?has_content && evento.getAppuntamenti()[0].getClassPKLong()??>
248 <li class="nav-item">
249 <a class="nav-link" href="#appuntamenti">
250 <span class="title-medium"><@liferay.language key="evento.appuntamenti" /></span>
251 </a>
252 </li>
253 </#if>
254 <li class="nav-item">
255 <a class="nav-link" href="#contatti">
256 <span class="title-medium"><@liferay.language key="evento.contatti" /></span>
257 </a>
258 </li>
259 <#if (patrocinio.getData())?? && (patrocinio.getData())?has_content>
260 <li class="nav-item">
261 <a class="nav-link" href="#patrocinio">
262 <span class="title-medium"><@liferay.language key="evento.patrocinio" /></span>
263 </a>
264 </li>
265 </#if>
266 <#if (organizzatoda.getData())?? && (organizzatoda.getData())?has_content>
267 <li class="nav-item">
268 <a class="nav-link" href="#organizzato">
269 <span class="title-medium"><@liferay.language key="Organizzatori" /></span>
270 </a>
271 </li>
272 </#if>
273 <#if (sponsor.getData())?? && (sponsor.getData())?has_content>
274 <li class="nav-item">
275 <a class="nav-link" href="#sponsor">
276 <span class="title-medium"><@liferay.language key="evento.sponsor" /></span>
277 </a>
278 </li>
279 </#if>
280 <#if (informazioni.getData())?? && (informazioni.getData())?has_content>
281 <li class="nav-item">
282 <a class="nav-link" href="#informazioni">
283 <span class="title-medium"><@liferay.language key="evento.informazioni" /></span>
284 </a>
285 </li>
286 </#if>
287 </ul>
288 </div>
289 </div>
290 </div>
291 </div>
292 </div>
293 </div>
294 </div>
295 </nav>
296 </div>
297 </aside>
298 <section class="col-lg-9 it-page-sections-container border-light position-static">
299 <article id="cos-e" class="it-page-section anchor-offset richtext-wrapper" data-audio>
300 <h2 class="mb-3">Cos'è?</h2>
301 ${descrizione.getData()}
302 <#if evento.getParteciperanno()?? && evento.getParteciperanno()?has_content && evento.getParteciperanno()[0]?has_content && evento.getParteciperanno()[0].getClassPKLong()??>
303 <div class="pt-3 mb-4">
304 <h3 class="h4"><@liferay.language key="evento.parteciperanno" /></h3>
305 <ul class="d-flex flex-wrap gap-1 mt-2">
306
307 <#assign partecipanti = evento.getParteciperanno() />
308 <#list partecipanti as partecipante>
309
310 <#if partecipante?? && partecipante?has_content && partecipante.getClassPKLong()?? >
311
312 <#assign partecipanteId = partecipante.getClassPKLong() />
313
314 <#if partecipanteId?? && partecipanteId?has_content >
315
316 <#assign partecipanteJA = journalArticleLocalService.getLatestArticle(partecipanteId)>
317
318 <#if partecipanteJA.getDDMStructureKey() = structureService.getStructurePersonaPubblicaKey()>
319 <#assign partecipanteObj = jac.getPersonaPubblica(partecipanteJA) />
320
321 <li>
322 <a class="chip chip-simple" href="/-/${partecipanteObj.getUrlTitle()}">
323 <span class="chip-label">${partecipanteObj.getNome()} ${partecipanteObj.getCognome()}</span>
324 </a>
325 </li>
326 </#if>
327
328 </#if>
329 </#if>
330 </#list>
331 </ul>
332 </div>
333 </#if>
334
335 <#if immaginesecondaria.getSiblings()?has_content && (immaginesecondaria.getSiblings()[0].getData())?? && (immaginesecondaria.getSiblings()[0].getData())?has_content>
336 <div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols splide" data-bs-carousel-splide>
337 <div class="it-header-block">
338 <div class="it-header-block-title">
339 <h3 class="h4"><@liferay.language key="evento.galleria.immagini" /></h3>
340 </div>
341 </div>
342 <div class="splide__track">
343 <ul class="splide__list it-carousel-all">
344 <#list immaginesecondaria.getSiblings() as cur_immaginesecondaria>
345 <#if (cur_immaginesecondaria.immaginesec.getData())?? && cur_immaginesecondaria.immaginesec.getData()?has_content >
346 <li class="splide__slide">
347 <div class="it-single-slide-wrapper">
348 <figure>
349 <img src="${cur_immaginesecondaria.immaginesec.getData()}" class="figure-img img-fluid" alt="${cur_immaginesecondaria.immaginesec.getAttribute("alt")}">
350 <#if (cur_immaginesecondaria.immaginesec_titolo.getData())??>
351 <figcaption class="figure-caption text-center pt-3">${cur_immaginesecondaria.immaginesec_titolo.getData()}</figcaption>
352 </#if>
353 </figure>
354 </div>
355 </li>
356 </#if>
357 </#list>
358 </ul>
359 </div>
360 </div>
361 </#if>
362 <#if evento.getVideos()?? && evento.getVideos()?has_content && evento.getVideos()[0].getVideo()?has_content && evento.getVideos()[0].getVideo().getUrl()?has_content >
363 <div class="section-content">
364 <div class="container-set-carousel">
365 <div class="it-header-block">
366 <div class="it-header-block-title">
367 <h3 class="h4"><@liferay.language key="evento.video" /></h3>
368 </div>
369 </div>
370 <div class="it-carousel-wrapper splide it-carousel-landscape-abstract-three-cols-arrow-visible" data-splide='{"width": "100%"}'>
371 <div class="splide__track">
372 <ul class="splide__list">
373 <#list evento.getVideos() as video>
374 <li class="splide__slide">
375 <div class="it-single-slide-wrapper" id="v-${video?index}">
376 <div class="row">
377 <video data-bs-video="data-bs-video" data-setup='{ "controls": true,"autoplay": false, "preload": "auto"}'>
378 <source src="${video.getVideo().getUrl()}" type="video/mp4">
379 <source src="${video.getVideo().getUrl()}" type="video/webm">
380 </video>
381 </div>
382 </div>
383 </li>
384 </#list>
385
386 </ul>
387 </div>
388 </div>
389 </div>
390 </div>
391 </#if>
392 </article>
393
394
395 <article id="destinatari" class="it-page-section mb-5">
396 <h2 class="mb-3"><@liferay.language key="evento.chi.rivolto" /></h2>
397 <p class="richtext-wrapper">${evento.getRivolto()}</p>
398 </article>
399
400 <#if evento.getLuogo()?? && evento.getLuogo()?has_content && evento.getLuogo().getClassPKLong()??>
401 <article id="luogo" class="it-page-section mb-5">
402 <h2 class="mb-3"><@liferay.language key="evento.luogo" /></h2>
403 <div class="row">
404
405 <#assign luogo = evento.getLuogo() />
406 <#if luogo?? && luogo?has_content && luogo.getClassPKLong()?? >
407
408 <#assign luogoId = luogo.getClassPKLong() />
409
410 <#if luogoId?? && luogoId?has_content >
411
412 <#assign luogoJA = journalArticleLocalService.getLatestArticle(luogoId)>
413
414 <#if luogoJA.getDDMStructureKey() = structureService.getStructureLuogoKey()>
415 <#assign luogoObj = jac.getLuogo(luogoJA) />
416
417 <div class="col-12 col-sm-8 col-xl-6">
418 <div class="card-wrapper rounded shadow-sm h-auto">
419 <div class="card card-teaser card-teaser-info rounded shadow-sm p-4">
420 <div class="card-body pe-3">
421 <h5 class="card-title">
422 <a class="text-decoration-none" href="/-/${luogoObj.getUrlTitle()}">
423 ${luogoObj.getNome()}
424 </a>
425 </h5>
426 <div class="card-text">
427 ${luogoObj.getIndirizzo()}
428 </div>
429 </div>
430 <#if (luogoObj.getImmagineprincipale().immagine.getData())?? && luogoObj.getImmagineprincipale().immagine.getData()?has_content >
431 <div class="avatar size-xl">
432 <img src="${luogoObj.getImmagineprincipale().immagine.getData()}" class="figure-img img-fluid" alt="${luogoObj.getImmagineprincipale().immagine.getAttribute("alt")}">
433 </div>
434 </#if>
435 </div>
436 </div>
437 </div>
438
439 </#if>
440
441 </#if>
442 </#if>
443 </div>
444 </article>
445 </#if>
446
447 <#if (costo.getData())??>
448 <article id="costi" class="it-page-section mb-5">
449 <h2 class="mb-3"><@liferay.language key="evento.costi" /></h2>
450 <div class="card no-after border-start">
451 <div class="card-body richtext-wrapper">
452 ${costo.getData()}
453 </div>
454 </div>
455 </article>
456 </#if>
457
458 <#if evento.getAllegatos()?? && evento.getAllegatos()?has_content && evento.getAllegatos()[0]?has_content && evento.getAllegatos()[0].getAllegato().getUrl()??>
459 <article id="allegati" class="it-page-section mb-5">
460 <h2 class="mb-3"><@liferay.language key="evento.allegati" /></h2>
461 <#assign allegati = evento.getAllegatos() />
462 <#list allegati as allegato>
463
464 <#if allegato?? && allegato?has_content && allegato.getAllegato().getUrl()?? >
465
466 <div class="card card-teaser shadow rounded mb-2">
467 <div class="card-body">
468 <h3 class="card-title h5 m-0">
469 <svg class="icon" aria-hidden="true">
470 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-clip"></use>
471 </svg>
472 <#assign titoloallegato = allegato.getAllegato().getTitle() />
473 <#if allegato.getTitolo()?? && allegato.getTitolo()?has_content >
474 <#assign titoloallegato = allegato.getTitolo() />
475 </#if>
476 <a href="${allegato.getAllegato().getUrl()}" class="text-decoration-none" title="${allegato.getAllegato().getTitle()}" aria-label="${allegato.getAllegato().getTitle()}">${titoloallegato}</a>
477 </h3>
478 </div>
479 </div>
480 </#if>
481 </#list>
482 </article>
483 </#if>
484
485
486 <#if evento.getAppuntamenti()?? && evento.getAppuntamenti()?has_content && evento.getAppuntamenti()[0]?has_content && evento.getAppuntamenti()[0].getClassPKLong()??>
487 <article id="appuntamenti" class="it-page-section mb-5">
488 <h2 class="mb-3"><@liferay.language key="evento.appuntamenti" /></h2>
489 <div class="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal">
490 <#assign appuntamenti = evento.getAppuntamenti() />
491
492 <#list appuntamenti as appuntamento>
493 <#if appuntamento?? && appuntamento?has_content && appuntamento.getClassPKLong()?? >
494
495 <#assign appuntamentoId = appuntamento.getClassPKLong() />
496
497 <#if appuntamentoId?? && appuntamentoId?has_content >
498
499 <#assign appuntamentoJA = journalArticleLocalService.getLatestArticle(appuntamentoId)>
500
501 <#if appuntamentoJA.getDDMStructureKey() = structureService.getStructureEventoKey()>
502 <#assign appuntamentoObj = jac.getEvento(appuntamentoJA) />
503
504
505 <div class="card-wrapper card-teaser">
506 <div class="card card-img no-after">
507 <div class="img-responsive-wrapper">
508 <div class="img-responsive">
509 <#if appuntamentoObj.getImmagineprincipale()?? && appuntamentoObj.getImmagineprincipale().getImmagine()?? && appuntamentoObj.getImmagineprincipale().getImmagine().getUrl()??>
510 <figure class="img-wrapper">
511 <img src="${appuntamentoObj.getImmagineprincipale().getImmagine().getUrl()}" title="${appuntamentoObj.getImmagineprincipale().getTitolo()}" alt="${appuntamentoObj.getImmagineprincipale().getTitolo()}">
512 </figure>
513 </#if>
514 <div class="card-calendar d-flex flex-column justify-content-center">
515 <span class="card-date">${appuntamentoObj.getOraInizioDay(themeDisplay.getLocale())}</span>
516 <span class="card-day">${appuntamentoObj.getOraInizioMonth(themeDisplay.getLocale())}</span>
517 </div>
518 </div>
519 </div>
520 <div class="card-body">
521 <h5 class="card-title">
522 <a href="${appuntamentoObj.getUrlTitle()}" class="text-decoration-none">
523 ${appuntamentoObj.getTitolo()}
524 </a>
525 </h5>
526 <${appuntamentoObj.getDescrizionebreve()}
527 <a class="read-more" href="${appuntamentoObj.getUrlTitle()}" aria-label="<@liferay.language key="evento.read.more" /> - ${appuntamentoObj.getTitolo()}">
528 <span class="text"><@liferay.language key="evento.read.more" /></span>
529 <span class="visually-hidden">${appuntamentoObj.getDescrizionebreve()}</span>
530 <svg class="icon">
531 <use href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-arrow-right"></use>
532 </svg>
533 </a>
534 </div>
535 </div>
536 </div>
537 </#if>
538 </#if>
539 </#if>
540 </#list>
541 </div>
542 </article>
543 </#if>
544
545 <article id="contatti" class="it-page-section mb-5">
546 <#if evento.getContatti()?? && evento.getContatti()?has_content && evento.getContatti()[0]?has_content && evento.getContatti()[0].getClassPKLong()??>
547 <h2 class="mb-3"><@liferay.language key="evento.contatti" /></h2>
548 <#assign contattiList = evento.getContatti() />
549 <div class="mb-4">
550 <#list contattiList as contatto>
551 <#if contatto?? && contatto?has_content && contatto.getClassPKLong()?? >
552
553 <#assign contattoId = contatto.getClassPKLong() />
554
555 <#if contattoId?? && contattoId?has_content >
556
557 <#assign contattoJA = journalArticleLocalService.getLatestArticle(contattoId)>
558
559 <#if contattoJA.getDDMStructureKey() = structureService.getStructurePuntoDiContattoKey()>
560 <#assign contattoObj = jac.getPuntoDiContatto(contattoJA) />
561
562 <div class="card card-teaser shadow rounded mb-2">
563 <svg class="icon" aria-hidden="true">
564 <use xlink:href="${themeDisplay.getPathThemeImages()}/bootstrap-italia/svg/sprites.svg#it-pin"></use>
565 </svg>
566 <div class="card-body">
567 <#if contattoObj.getPersonaPubblica()?? && contattoObj.getPersonaPubblica()?has_content && contattoObj.getPersonaPubblica().getClassPKLong()?? >
568 <#assign personaPubblicaId = contattoObj.getPersonaPubblica().getClassPKLong() />
569 <#if personaPubblicaId?? && personaPubblicaId?has_content >
570
571 <#assign personaPubblicaJA = journalArticleLocalService.getLatestArticle(personaPubblicaId)>
572
573 <#if personaPubblicaJA.getDDMStructureKey() = structureService.getStructurePersonaPubblicaKey()>
574 <#assign personaPubblicaObj = jac.getPersonaPubblica(personaPubblicaJA) />
575 <h3 class="card-title h5">
576 <a href="/-/${personaPubblicaObj.getUrlTitle()}" class="text-decoration-none">
577 ${personaPubblicaObj.getNome()} ${personaPubblicaObj.getCognome()}
578 </a>
579 </h3>
580 </#if>
581 </#if>
582 </#if>
583
584 <#assign contattolink = "" >
585 <#if (contattoObj.getTipo())?? && (contattoObj.getTipo())?has_content>
586 <#assign tipoObj = contattoObj.getTipo()[0] >
587 <#list tipoObj.getValues() as tipo>
588 <#if (tipo)?? && (tipo)?has_content>
589 <#if tipo == "Telefono">
590 <#assign contattolink = "tel:" + contattoObj.getValore() >
591 </#if>
592 <#if tipo == "Email">
593 <#assign contattolink = "mailto:" + contattoObj.getValore() >
594 </#if>
595 </#if>
596 </#list>
597 </#if>
598
599 <div class="card-text">
600 <p class="fw-semibold">${contattoObj.getTipo()[0].getValues()[0]}:</p>
601 <#if (contattolink)?? && (contattolink)?has_content>
602 <a href="${contattolink}">${contattoObj.getTitololink()}</a>
603 <#else>
604 ${contattoObj.getTitololink()}
605 </#if>
606 </div>
607
608 </div>
609 </div>
610
611
612 </#if>
613 </#if>
614 </#if>
615 </#list>
616 </div>
617 </#if>
618
619 </article>
620
621 <#if (organizzatoda.getData())?? && (organizzatoda.getData())?has_content>
622 <article id="organizzato" class="it-page-section mb-5">
623 <h2 class="mb-3"><@liferay.language key="Organizzato da" /></h2>
624 <div class="link-list-wrapper mb-3 richtext-wrapper">
625 ${organizzatoda.getData()}
626 </div>
627 </article>
628 </#if>
629
630 <#if (patrocinio.getData())?? && (patrocinio.getData())?has_content>
631 <article id="patrocinio" class="it-page-section mb-5">
632 <h2 class="mb-3"><@liferay.language key="evento.patrocinio" /></h2>
633 <div class="link-list-wrapper mb-3 richtext-wrapper">
634 ${patrocinio.getData()}
635 </div>
636 </article>
637 </#if>
638
639 <#if (sponsor.getData())?? && (sponsor.getData())?has_content>
640 <article id="sponsor" class="it-page-section mb-5">
641 <h2 class="mb-3"><@liferay.language key="evento.sponsor" /></h2>
642 <div class="link-list-wrapper richtext-wrapper">
643 ${sponsor.getData()}
644 </div>
645 </article>
646 </#if>
647
648 <#if (informazioni.getData())?? && (informazioni.getData())?has_content>
649 <article id="informazioni" class="it-page-section mb-5">
650 <h2 class="mb-3"><@liferay.language key="evento.informazioni" /></h2>
651 <div class="link-list-wrapper richtext-wrapper">
652 ${informazioni.getData()}
653 </div>
654 </article>
655 </#if>
656
657 <article id="ultimo-aggiornamento" class="anchor-offset mt-5">
658 <h4 class="h6"><@liferay.language key="detail.aggiornamento" />: <span class="h6 fw-normal">${modifieddate}</span></h4>
659 </article>
660 </section>
661 </div>
662</div>