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