An error occurred while processing the template.
The following has evaluated to null or missing:
==> operaMmg.getDescrizione() [in template "20096#20121#59095" at line 141, column 30]
----
Tip: If the failing expression is known to 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: ${operaMmg.getDescrizione()} [in template "20096#20121#59095" at line 141, column 28]
----
1<#assign structureService = serviceLocator.findService("it.inera.structure.service.StructureService")>
2
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
4<#assign jac = serviceLocator.findService("it.inera.journalarticleconverter.service.JournalArticleConverter")>
5<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
6<#assign journalArticleId = .vars['reserved-article-id'].data>
7<#assign ja = journalArticleLocalService.getArticle(groupId, journalArticleId)>
8
9<#assign operaMmg = jac.getOperaMmgMUSEO(ja, locale) />
10<#assign jaopereRelated = operaMmg.getDirectRelatedAssets() />
11<#assign jaopere = operaMmg.getDirectRelatedAssets() />
12
13<#assign printsection = false>
14<#assign printpercorsi = false>
15<#assign printcollezioni = false>
16
17<#assign modifieddate = operaMmg.getModifiedDate()?string["dd/MM/yyyy, HH:mm"]>
18
19<#assign siteBasePath = "" >
20<#attempt>
21 <#assign utilityService = serviceLocator.findService("it.inera.utility.service.UtilityService")>
22 <#recover>
23</#attempt>
24<#if utilityService?? && utilityService?has_content>
25 <#assign serviceSiteBasePath = utilityService.getSiteBasePath(themeDisplay) >
26 <#if (serviceSiteBasePath)?? && (serviceSiteBasePath)?has_content>
27 <#assign siteBasePath = serviceSiteBasePath >
28 </#if>
29</#if>
30
31<div class="main-section">
32 <div class="container">
33 <nav class="breadcrumb-container" aria-label="breadcrumb">
34 <ol class="breadcrumb mb-4">
35 <li class="breadcrumb-item"><a class="back-link" href="${siteBasePath}/"><@liferay.language key="breadcrumbs.home" /></a><span class="separator">/</span></li>
36 <li class="breadcrumb-item"><a class="back-link" href="${siteBasePath}/esplora-i-musei"><@liferay.language key="breadcrumbs.esploramusei" /></a><span class="separator">/</span></li>
37 <li class="breadcrumb-item"><a class="back-link" href="${siteBasePath}/esplora-i-musei/opere"><@liferay.language key="breadcrumbs.opere" /></a><span class="separator">/</span></li>
38 <li class="breadcrumb-item active" aria-current="page">${operaMmg.getTitolo()}
39 </li>
40 </ol>
41 </nav>
42 </div>
43</div>
44
45<section class="section-background">
46 <div class="container p-5rem artwork">
47 <#list jaopereRelated as jaoperaRelated>
48 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructureCollezioneMmgMUSEOId()>
49 <#assign collezioneMmg = jac.getCollezioneMmgMUSEO(jaoperaRelated, locale)>
50 <#assign jacollezioneRelated = collezioneMmg.getDirectRelatedAssets() />
51 <#assign printsection = true>
52 <#assign printcollezioni = true>
53 </#if>
54 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructureSpazioEspositivoMmgMUSEOId()>
55 <#assign spazioEspositivoMmg = jac.getSpazioEspositivoMmgMUSEO(jaoperaRelated, locale)>
56 <#if spazioEspositivoMmg??>
57 <#assign jaspaziespositiviReleted = spazioEspositivoMmg.getDirectRelatedAssets()>
58 <#list jaspaziespositiviReleted as jaspazioespositivoReleted>
59 <#if jaspazioespositivoReleted.getDDMStructureId() == structureService.getStructurePianoMmgMUSEOId()>
60 <#assign pianoMmg = jac.getPianoMmgMUSEO(jaspazioespositivoReleted, locale)>
61 <#assign jaluoghiReleted = pianoMmg.getDirectRelatedAssets()>
62 <#list jaluoghiReleted as jaluogoReleted>
63 <#if jaluogoReleted.getDDMStructureId() == structureService.getStructureLuogoMmgMUSEOId()>
64 <#assign luogoMmg = jac.getLuogoMmgMUSEO(jaluogoReleted, locale)>
65 </#if>
66 </#list>
67 </#if>
68 </#list>
69 </#if>
70 </#if>
71 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructureAutoreMmgMUSEOId()>
72 <#if autoriMmg??>
73 <#assign autoriMmg = autoriMmg + [jac.getAutoreMmgMUSEO(jaoperaRelated, locale)]>
74 <#else>
75 <#assign autoriMmg = [jac.getAutoreMmgMUSEO(jaoperaRelated, locale)]>
76 </#if>
77 </#if>
78 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructurePercorsoMmgMUSEOId()>
79 <#assign printsection = true>
80 <#assign printpercorsi = true>
81 </#if>
82 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructureLuogoMUSEOId()>
83 <#assign luogoMuseo = jac.getLuogoMUSEO(jaoperaRelated, locale)>
84 </#if>
85
86 </#list>
87 <h1 class="mb-4">${operaMmg.titolo}</h1>
88 <div class="row data-infos mb-4">
89 <#if autoriMmg??>
90 <#list autoriMmg as autoreMmg >
91 <a href="${siteBasePath}/w/${autoreMmg.urlTitle}">${autoreMmg.nome}</a>
92 </#list>
93 </#if>
94 <#if (operaMmg.getDatazione())??>
95 <p>${operaMmg.getDatazione()}</p>
96 </#if>
97 </div>
98 <div class="container col-md-5"><img src="${operaMmg.immagineprincipale.immagine.url}" alt="${operaMmg.titolo}">
99 <div class="action-opera mt-4">
100 <div class="dropdown d-inline">
101 <button class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0" id="shareActions" aria-label="condividi sui social" type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
102 <div class="share-button">
103 <svg class="icon">
104 <use href="${themeDisplay.getPathThemeImages()}/sprites.svg#it-share"></use>
105 </svg><@liferay.language key="museo.social.condividi" />
106 </div>
107 </button>
108 <div class="dropdown-menu shadow-lg" aria-labelledby="shareActions">
109 <div class="link-list-wrapper">
110 <ul class="link-list share-btn" role="menu">
111 <li role="none"><a class="list-item" data-id="fb" href="#" role="menuitem">
112 <svg class="me-2 icon icon-sm" aria-hidden="true">
113 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprites.svg#it-facebook"></use>
114 </svg><span><@liferay.language key="museo.social.facebook" /></span></a></li>
115 <li role="none"><a class="list-item" data-id="tw" href="#" role="menuitem">
116 <svg class="me-2 icon icon-sm" aria-hidden="true">
117 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprites.svg#it-twitter"></use>
118 </svg><span><@liferay.language key="museo.social.twitter" /></span></a></li>
119 <li role="none"><a class="list-item" data-id="wa" href="#" role="menuitem">
120 <svg class="me-2 icon icon-sm" aria-hidden="true">
121 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprites.svg#it-whatsapp"></use>
122 </svg><span><@liferay.language key="museo.social.whatsapp" /></span></a></li>
123 </ul>
124 </div>
125 </div>
126
127 </div>
128 <a class="btn p-0" href="${operaMmg.immagineprincipale.immagine.url}" data-lightbox="gallery" data-title="${operaMmg.titolo}">
129 <svg class="icon">
130 <use href="${themeDisplay.getPathThemeImages()}/sprites.svg#it-zoom-in"></use>
131 </svg>
132 </a>
133 </div>
134 </div>
135 </div>
136</section>
137
138<section class="artwork-info">
139 <div class="container col-md-9 p-6 p-sm-1rem">
140 <div class="description mb-5rem p-3">
141 <p>${operaMmg.getDescrizione()}</p>
142 </div>
143 <h2 class="h4 p-3"><@liferay.language key="museo.opera.informazionitecniche" /></h2>
144 <div class="table-responsive mt-2 p-3">
145 <table class="table">
146 <tbody>
147 <tr>
148 <th scope="row"><@liferay.language key="museo.opera.titolooriginale" /></th>
149 <td>${operaMmg.getTitolo()}</td>
150 </tr>
151 <#if operaMmg.getTipologia()?? && operaMmg.getTipologia()?has_content>
152 <tr>
153 <th scope="row"><@liferay.language key="museo.opera.tipologia" /></th>
154 <td>${operaMmg.getTipologia()}</td>
155 </tr>
156 </#if>
157 <#if collezioneMmg?has_content>
158 <tr>
159 <th scope="row"><@liferay.language key="museo.opera.collezione" /></th>
160 <td>${collezioneMmg.nome}</td>
161 </tr>
162 </#if>
163 <#if operaMmg.getAmbito()?has_content>
164 <tr>
165 <th scope="row"><@liferay.language key="museo.opera.ambito" /></th>
166 <td>${operaMmg.ambito}</td>
167 </tr>
168 </#if>
169 <#if operaMmg.getMateriale()?has_content>
170 <tr>
171 <th scope="row"><@liferay.language key="museo.opera.tecnica" /></th>
172 <td>${operaMmg.materiale}</td>
173 </tr>
174 </#if>
175 <#if operaMmg.getMisure()?has_content>
176 <tr>
177 <th scope="row"><@liferay.language key="museo.opera.dimensioni" /></th>
178 <td>${operaMmg.misure}</td>
179 </tr>
180 </#if>
181 <#if restauri.getData()?has_content>
182 <tr>
183 <th scope="row"><@liferay.language key="museo.opera.restauri" /></th>
184 <td>${restauri.getData()}</td>
185 </tr>
186 </#if>
187 <tr>
188 <th scope="row"><@liferay.language key="museo.opera.collocazione" /></th>
189 <td>
190 <#if luogoMuseo?has_content>
191 <#assign pagelink = "" />
192 <#if luogoMuseo.getPlidDisplay()?? && luogoMuseo.getPlidDisplay()?has_content>
193 <#assign layoutDisplay = layoutLocalService.getLayout(luogoMuseo.getPlidDisplay()) >
194 <#if layoutDisplay?? && layoutDisplay?has_content>
195 <#assign pagelink = layoutDisplay.getFriendlyURL(themeDisplay.getLocale()) />
196 </#if>
197 </#if>
198 <#if pagelink?has_content>
199 <a href="${siteBasePath}${pagelink}" title="${pianoMmg.nome}" >${luogoMuseo.nome}</a>
200 <#else>
201 ${luogoMuseo.nome}
202 </#if>
203 <#else>
204 ${luogoMmg.nome}<br/>
205 <@liferay.language key="museo.ricerca.piano" />: <a href="${siteBasePath}/w/${pianoMmg.getUrlTitle()}" title="${pianoMmg.nome}" >${pianoMmg.nome}</a><br/>
206 <@liferay.language key="museo.ricerca.spazioespositivo" />: <a href="${siteBasePath}/w/${spazioEspositivoMmg.getUrlTitle()}" title="${spazioEspositivoMmg.nome}" >${spazioEspositivoMmg.nome}</a></td>
207 </#if>
208 </tr>
209 </tbody>
210 </table>
211 </div>
212 </div>
213
214</section>
215
216<#if printsection>
217 <section class="section mb-3">
218 <h2><@liferay.language key="museo.opera.operanelmuseo" /></h2>
219 <#if printpercorsi>
220 <div class="mt-4">
221 <h3><@liferay.language key="museo.opera.percorsi" /></h3>
222 <div class="row mt-3 row-cols-1 row-cols-md-3">
223 <#list jaopereRelated as jaoperaRelated>
224 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructurePercorsoMmgMUSEOId()>
225 <#assign percorsoMmg = jac.getPercorsoMmgMUSEO(jaoperaRelated, locale)>
226 <#assign jacpercorsoRelated = percorsoMmg.getDirectRelatedAssets() />
227
228 <div class="col mb-5"><a class="card card-5 border border-light rounded shadow h-100" href="${siteBasePath}/w/${percorsoMmg.getUrlTitle()}">
229 <div class="ratio ratio-16x9"><img class="card-img-top" src="${percorsoMmg.immagineprincipale.immagine.url}" alt="${percorsoMmg.immagineprincipale.titolo}"></div>
230 <div class="card-body">
231 <h3 class="mb-3 card-title">${percorsoMmg.getTitolo()}</h3>
232 <p class="card-text font-serif">${percorsoMmg.getDescrizione()}</p>
233 <p class="footer-card font-serif"><strong><@liferay.language key="museo.opera.durata" />: </strong>${percorsoMmg.getDurata()}</p>
234 </div>
235 </a>
236 </div>
237 </#if>
238 </#list>
239 </div>
240 </div>
241 </#if>
242 <#if printcollezioni>
243 <div class="mt-6">
244 <h3><@liferay.language key="museo.opera.collezioni" /></h3>
245 <div class="row mt-3 row-cols-1 row-cols-md-2">
246 <#list jaopereRelated as jaoperaRelated>
247 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructureCollezioneMmgMUSEOId()>
248 <#assign collezioneMmg = jac.getCollezioneMmgMUSEO(jaoperaRelated, locale)>
249 <#assign jacollezioneRelated = collezioneMmg.getDirectRelatedAssets() />
250
251 <div class="col">
252 <a class="card card-4 h-100" href="${siteBasePath}/w/${collezioneMmg.getUrlTitle()}">
253 <div class="ratio ratio-21x9"><img class="card-img-top" src="${collezioneMmg.immagineprincipale.immagine.url}" alt="${collezioneMmg.immagineprincipale.titolo}"></div>
254 <div class="card-body">
255 <h3 class="h4 card-title">${collezioneMmg.getNome()}</h3>
256 <p class="font-sans-serif">${collezioneMmg.getDescrizione()}</p>
257 </div>
258 </a>
259 </div>
260 </#if>
261 </#list>
262 </div>
263 </div>
264 </#if>
265 </section>
266</#if>
267
268
269<#assign printsectionopere = false>
270<#list jaopereRelated as jaoperaRelated>
271 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructureCollezioneMmgMUSEOId()>
272 <#assign collezioneMmg = jac.getCollezioneMmgMUSEO(jaoperaRelated, locale)>
273 <#assign jacollezioneRelated = collezioneMmg.getDirectRelatedAssets() />
274
275 <#list jacollezioneRelated as jacollezioneRelated>
276 <#if jacollezioneRelated.getDDMStructureId() == structureService.getStructureOperaMmgMUSEOId()>
277 <#assign operacorrelataMmg = jac.getOperaMmgMUSEO(jacollezioneRelated, locale)>
278 <#assign jarelopereRelated = operacorrelataMmg.getDirectRelatedAssets() />
279
280 <#assign printsectionopere = true>
281 </#if>
282 </#list>
283 </#if>
284</#list>
285
286<#if printsectionopere>
287 <section class="section section-background pb-7">
288 <h2 class="mb-4"><@liferay.language key="museo.opera.operecorrelate" /></h2>
289 <div class="row row-cols-1 row-cols-md-3">
290
291 <#list jaopereRelated as jaoperaRelated>
292 <#if jaoperaRelated.getDDMStructureId() == structureService.getStructureCollezioneMmgMUSEOId()>
293 <#assign collezioneMmg = jac.getCollezioneMmgMUSEO(jaoperaRelated, locale)>
294 <#assign jacollezioneRelated = collezioneMmg.getDirectRelatedAssets() />
295
296 <#list jacollezioneRelated as jacollezioneRelated>
297 <#if jacollezioneRelated.getDDMStructureId() == structureService.getStructureOperaMmgMUSEOId()>
298 <#assign operacorrelataMmg = jac.getOperaMmgMUSEO(jacollezioneRelated, locale)>
299 <#assign jarelopereRelated = operacorrelataMmg.getDirectRelatedAssets() />
300
301 <#assign autoristr = "" />
302 <#assign isFirst = true>
303
304 <#list jarelopereRelated as jareloperaRelated>
305 <#if jareloperaRelated.getDDMStructureId() == structureService.getStructureAutoreMmgMUSEOId()>
306 <#assign autoreMmg = jac.getAutoreMmgMUSEO(jareloperaRelated, locale)>
307 <#if isFirst>
308 <#assign autoristr = autoreMmg.getNome() />
309 <#assign isFirst = false>
310 <#else>
311 <#assign autoristr = autoristr + ", "+ autoreMmg.getNome() />
312 </#if>
313 </#if>
314 </#list>
315 <div class="col"><a class="card card-4 h-100" href="${siteBasePath}/w/${operacorrelataMmg.getUrlTitle()}">
316 <div class="ratio ratio-1x1"><img class="card-img-top" src="${operacorrelataMmg.immagineprincipale.immagine.url}" alt="${operacorrelataMmg.immagineprincipale.immagine.alt}"></div>
317 <div class="card-body">
318 <h3 class="h4 card-title">${operacorrelataMmg.getTitolo()}</h3>
319 <#if autoristr??>
320 <h4 class="h6 author">${autoristr}</h4>
321 </#if>
322 <#if operacorrelataMmg.getDatazione()?? && operacorrelataMmg.getDatazione()?has_content>
323 <p class="font-monospace card-text">${operacorrelataMmg.getDatazione()}</p>
324 </#if>
325 </div>
326 </a>
327 </div>
328 </#if>
329 </#list>
330 </#if>
331 </#list>
332 </div>
333
334 <div class="row">
335 <div class="col-12 d-flex justify-content-end">
336 <a class="read-more" href="#" data-focus-mouse="false" aria-label="tutte le opere"><span class="text"><@liferay.language key="museo.opera.tutteleopere" /></span>
337 <svg class="icon">
338 <use href="${themeDisplay.getPathThemeImages()}/sprites.svg#it-arrow-right"></use>
339 </svg>
340 </a>
341 </div>
342 </div>
343 </section>
344
345 <#if operaMmg.getImmaginisecondarie()?has_content && operaMmg.getImmaginisecondarie()[0]?? && operaMmg.getImmaginisecondarie()[0]?has_content && operaMmg.getImmaginisecondarie()[0].getImmagine().getUrl()?? && operaMmg.getImmaginisecondarie()[0].getImmagine().getUrl()?has_content>
346 <section class="section section-background-dark pb-7">
347 <div class="container">
348 <div class="row">
349 <div class="col-12">
350 <h2><@liferay.language key="museo.opera.immaginicorrelate" /></h2>
351 </div>
352 </div>
353 <div class="row">
354 <div class="carousel-2 it-carousel-wrapper it-carousel-landscape-abstract-three-cols it-full-carousel it-standard-image splide" data-bs-carousel-splide="">
355 <div class="splide__track">
356 <ul class="splide__list">
357 <#list operaMmg.getImmaginisecondarie() as image>
358 <#if image?has_content && image.getImmagine().getUrl()?? && image.getImmagine().getUrl()?has_content>
359 <li class="splide__slide">
360 <div class="it-single-slide-wrapper">
361 <div class="card-wrapper">
362 <div class="card card-img no-after">
363 <div class="img-responsive-wrapper">
364 <div class="img-responsive">
365 <div class="img-wrapper">
366 <img class="modalImage" href="${image.getImmagine().getUrl()}" alt="${image.getImmagine().getAlt()}" data-fileentryid="${image.getImmagine().getFileEntryId()}" src="${image.getImmagine().getUrl()}" data-bs-toggle="modal" data-bs-target="#modalCarouselImage">
367 </div>
368 </div>
369 </div>
370 </div>
371 </div>
372 </div>
373 </li>
374 </#if>
375 </#list>
376 </ul>
377 </div>
378 </div>
379 </div>
380 </div>
381 </section>
382 </#if>
383 <section class="section pt-0">
384 <div class="row">
385 <div class="description mb-5">
386 <div class="d-flex justify-content-between footer-text mt-5">
387 <div class="text-update"><strong><@liferay.language key="museo.opera.ultimoaggiornamento" />: </strong>${modifieddate}</div>
388 </div>
389 </div>
390 </div>
391 </section>
392</#if>