The following has evaluated to null or missing:
==> themeDisplay.getThemeSetting("news-vocabulary-id") [in template "51632#51678#43587" at line 22, column 20]
----
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: vocabularyId = themeDisplay.getThemeS... [in template "51632#51678#43587" at line 22, column 5]
----
1<#--sella social macro -->
2<#include "${templatesPath}/SOCIAL-SHARE-MACRO" />
3
4<#assign originalLocale = locale>
5<#setting locale = 'en_US'>
6<#assign date = .vars['reserved-article-display-date'].data/>
7<#assign date = date?datetime("EEE, d MMM yyyy HH:mm:ss Z") />
8<#setting locale = originalLocale>
9<#assign dateTimeFormat = languageUtil.get(locale, "HH:mm, dd MMM yyyy")>
10
11
12<#assign
13 articleId = .vars['reserved-article-id'].data
14 journalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
15 assetEntryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
16 ja = journalService.fetchLatestArticle(themeDisplay.getScopeGroupId(), articleId, 0)
17 ae = assetEntryService.fetchEntry("com.liferay.journal.model.JournalArticle", ja.getResourcePrimKey())
18 title = .vars['reserved-article-title'].data
19 jaAbstract = .vars['reserved-article-description'].data
20 absoluteURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()
21 altBigDetailImage = ""
22 vocabularyId = themeDisplay.getThemeSetting("news-vocabulary-id")?number
23 category = sella_tool.getCategoryFromVocabularyId(ae.getCategories(), vocabularyId, locale)
24/>
25
26<#if !vocabularyIdLive?? && !themeDisplay.getThemeSetting("news-vocabulary-id-live")?? >
27 <#assign vocabularyIdLive = 52307 />
28<#else>
29 <#assign vocabularyIdLive = themeDisplay.getThemeSetting("news-vocabulary-id-live")?number />
30</#if>
31
32<#if category=="">
33 <#assign category = sella_tool.getCategoryFromVocabularyId(ae.getCategories(), vocabularyIdLive , locale) />
34</#if>
35
36<#-- ja title -->
37<#if titleShown?? && titleShown.getData()?has_content>
38 <#assign title = titleShown.getData() />
39</#if>
40
41<#if HeroImage.getAttribute("fileEntryId")?? >
42 <#assign socialImg = themeDisplay.getPortalURL() + sella_tool.getAdaptiveMediaSrc("800-x-533-px",HeroImage.getAttribute("fileEntryId")?number,HeroImage.name) />
43<#else>
44 <#assign socialImg = "">
45</#if>
46
47<@shareContent title="${title}" summary="${jaAbstract}" detailURL="${absoluteURL}" imageURL="${socialImg}"/>
48
49
50
51<article class="article-detail article-detail--has-img">
52 <#-- Info + Social -->
53 <div class="container">
54 <div class="row">
55 <div class="col-md-10 offset-md-1">
56 <div class="article-detail__intro">
57 <div class="row">
58 <div class="col-lg-8">
59 <#-- Categoria e data -->
60 <div class="d-flex">
61 <#if category?? && category?has_content>
62 <div class="article-detail__category">${category}</div>
63 </#if>
64 <div class="article-detail__date">${date?string(dateTimeFormat)}</div>
65 </div>
66 <#-- Titolo -->
67 <h1 class="article-detail__title">${title}</h1>
68 <#-- Sottotitolo -->
69 <#if jaAbstract?has_content>
70 <h2 class="article-detail__subject">${jaAbstract}</h2>
71 </#if>
72
73 </div>
74 </div>
75 <div class="row">
76 <div class="col-12">
77 <div class="article-detail__button d-flex">
78 <#-- Share button -->
79 <div class="sella-share clearfix">
80 <div class="sella-share__icon sella-share__icon--share">
81 <svg class="ico-svg">
82 <use xlink:href="${themeDisplay.getPathThemeImages()}/assets/images/icons.svg#share-alt"></use>
83 </svg>
84 </div>
85 <div class="sella-share__text">Condividi</div>
86 <ul>
87 <li>
88 <a href="http://www.facebook.com/sharer.php?u=${absoluteURL}" title="Facebook" class="sella-share__icon sella-share__icon--fb">
89 <svg class="ico-svg">
90 <use xlink:href="${themeDisplay.getPathThemeImages()}/assets/images/icons.svg#facebook-f"></use>
91 </svg>
92 </a>
93 </li>
94 <li>
95 <a href="https://twitter.com/home?status=${absoluteURL}" title="Twitter" class="sella-share__icon sella-share__icon--twitter">
96 <svg class="ico-svg">
97 <use xlink:href="${themeDisplay.getPathThemeImages()}/assets/images/icons.svg#twitter"></use>
98 </svg>
99 </a>
100 </li>
101 <li>
102 <#assign escapedTitle = htmlUtil.escape(htmlParserUtil.extractText(title)) />
103 <#assign escapedAbstract = htmlUtil.escape(htmlParserUtil.extractText(jaAbstract)) />
104
105 <a href="http://www.linkedin.com/shareArticle?mini=true&url=${absoluteURL}&title=${escapedTitle}&summary=${escapedAbstract}&source=" title="LinkedIn" class="sella-share__icon sella-share__icon--linkedin">
106 <svg class="ico-svg">
107 <use xlink:href="${themeDisplay.getPathThemeImages()}/assets/images/icons.svg#linkedin-in"></use>
108 </svg>
109 </a>
110 </li>
111 <li>
112 <a href="https://api.whatsapp.com/send?text=${urlCodec.encodeURL(absoluteURL)}" title="WahtsApp" class="sella-share__icon sella-share__icon--whatsapp">
113 <svg class="ico-svg">
114 <use xlink:href="${themeDisplay.getPathThemeImages()}/assets/images/icons.svg#whatsapp"></use>
115 </svg>
116 </a>
117 </li>
118 </ul>
119 </div>
120 </div>
121 </div>
122 </div>
123 </div>
124 </div>
125 </div>
126 </div>
127
128
129<#if HeroImage?? && HeroImage.getData() != "">
130 <#assign altBigDetailImage = HeroImage.getAttribute("alt") />
131 <#assign urlBigDetailImage = HeroImage.getData() />
132</#if>
133<#if urlBigDetailImage?? && urlBigDetailImage?has_content>
134 <div class="sella-container sella-container--only-img">
135 <div class="container-fluid">
136
137 <#-- VIDEO -->
138 <div class="row">
139 <div class="col-lg-10 offset-lg-1">
140 <#if Video?? && Video?has_content >
141 <#if Video.getData()?? && Video.getData() != "">
142 <#if Video.getData()?contains("vimeo")>
143 <#if HeroImage.getAttribute("fileEntryId")?? >
144 <#assign HeroImage800x533 = sella_tool.getAdaptiveMediaSrc("800-x-533-px",HeroImage.getAttribute("fileEntryId")?number,HeroImage.name) />
145 <#else>
146 <#assign HeroImage800x533 = "">
147 </#if>
148 <video width="100%" controls="" poster="${HeroImage800x533}">
149 <source src ="${Video.getData()}" type="video/mp4">
150 </video>
151 <#else>
152 <iframe width="100%" height="350px" src="${Video.getData()}?controls=0" ></iframe>
153 </#if>
154 <#else>
155 <#if HeroImage?? && HeroImage?has_content >
156 <#if HeroImage.getData()?? && HeroImage.getData() != "">
157 <#if HeroImage.getAttribute("fileEntryId")?? >
158 <#assign HeroImage800x533 = sella_tool.getAdaptiveMediaSrc("800-x-533-px",HeroImage.getAttribute("fileEntryId")?number,HeroImage.name) />
159 <figure class="article-detail__fig">
160 <img class="article-detail__img w-100" src="${HeroImage800x533}" alt="${HeroImage.getAttribute("alt")}">
161 <#if ImageOwner.getData()?? && ImageOwner.getData()!="" && HeroImage.getAttribute("alt") != "" >
162 <figcaption class="article-detail__figcaption">${HeroImage.getAttribute("alt")} - <strong>${ImageOwner.getData()}</strong></figcaption>
163 <#else>
164 <figcaption class="article-detail__figcaption">${HeroImage.getAttribute("alt")} - <strong>${ImageOwner.getData()}</strong></figcaption>
165 </#if>
166 </figure>
167 </#if>
168 </#if>
169 </#if>
170 </#if>
171 </#if>
172 </div>
173 </div>
174 </div>
175 </div>
176</#if>
177
178<#-- testo -->
179<#if Body?? && Body.getData()?has_content>
180 <div class="container">
181 <div class="row">
182 <div class="col-md-8 offset-md-2 col-xl-6 offset-xl-3">
183 <div class="article-detail__text">
184 ${Body.getData()}
185 </div>
186 </div>
187 </div>
188 </div>
189</#if>
190
191<div class="article-detail__slider">
192 <div class="container">
193 <div class="row">
194 <div class="col-12">
195 <div class="slider slider-detail">
196 <#if GalleryImage?has_content && GalleryImage??>
197 <#if GalleryImage.getData()?? && GalleryImage.getData() != "" >
198 <#list GalleryImage.getSiblings() as curImage>
199 <#if curImage.getAttribute("fileEntryId")?? >
200 <#assign curGalleryImage800x533 = sella_tool.getAdaptiveMediaSrc("800-x-533-px",curImage.getAttribute("fileEntryId")?number,curImage.name) />
201 <div>
202 <div class="article-detail__gallery">
203 <a href="${curGalleryImage800x533}" title="${curImage.getAttribute("alt")}">
204 <img src="${curGalleryImage800x533}" alt="${curImage.getAttribute("alt")}" class="w-100">
205 </a>
206 <#if curImage.GalleryImageOwner.getData()?? && curImage.GalleryImageOwner.getData()!="" && curImage.getAttribute("alt") != "" >
207 <div class="article-detail__gallery-caption">${curImage.getAttribute("alt")} - <strong>${curImage.GalleryImageOwner.getData()}</strong></div>
208 </#if>
209 </div>
210 </div>
211 </#if>
212 </#list>
213 </#if>
214 </#if>
215 </div>
216 </div>
217 </div>
218 </div>
219</div>
No compatible overloaded variation was found; wrong number of arguments.
The FTL type of the argument values were: extended_hash+string (com.liferay.portal.model.impl.LayoutSetImpl wrapped into f.e.b.StringModel), extended_hash+string (com.liferay.portal.kernel.theme.ThemeDisplay wrapped into f.e.b.StringModel).
The matching overload was searched among these members:
com.liferay.portal.util.PortalImpl.getGroupFriendlyURL(com.liferay.portal.kernel.model.LayoutSet, com.liferay.portal.kernel.theme.ThemeDisplay, boolean, boolean),
com.liferay.portal.util.PortalImpl.getGroupFriendlyURL(com.liferay.portal.kernel.model.LayoutSet, com.liferay.portal.kernel.theme.ThemeDisplay, Locale)
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign groupPrependURL = portalUtil... [in template "51632#51678#66308" at line 12, column 1]
----
1<#assign articleId = .vars['reserved-article-id'].data />
2<#assign articleGroupId = .vars['articleGroupId'] />
3
4<#assign journalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
5<#assign groupService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
6<#assign layoutSetService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutSetLocalService") />
7
8<#assign journalArticle = journalService.getLatestArticle(articleGroupId?number,articleId?string,0) />
9<#assign urlTitle = journalArticle.getUrlTitle() />
10<#assign group = groupService.getGroup(groupId?number) />
11<#assign groupFriendlyURL = group.getFriendlyURL() />
12<#assign groupPrependURL = portalUtil.getGroupFriendlyURL(layoutSetService.getLayoutSet(groupId?number, false), themeDisplay) />
13
14<#assign maxSize = 4 />
15<#assign radiocorIndex = radiocor_news_tool.getNewsIndex(-1) />
16<#assign dateTimeFormat = languageUtil.get(locale, "dd/MM/yyyy HH:mm:ss")>
17
18<section class="radiocor-ultime-wrapper">
19 <#--
20 <h2 class="sella-underlined-title ml-0 mr-0">
21 <span>Ultim'ora</span>
22 </h2>
23 -->
24 <div class="radiocor-ultime-content">
25 <#--As of avoiding index-out-of-bounds error, in FreeMarker 2.3.21 you can issue listVar[0..*4],
26 which will slice out 4 items, or less if there's less available. -->
27
28 <#list radiocorIndex[0..*maxSize] as r>
29 <div class="lx-latest-news-item">
30 <div class="lx-latest-news-item-text">
31 <h3><a href="${groupPrependURL}/radiocor/notizia/?nid=${r.id}">${r.headLine}</a></h3>
32 <span>${r.date?string(dateTimeFormat)!""}</span>
33 </div>
34 <div class="lx-clear-fix"></div>
35 </div>
36 </#list>
37 </div>
38
39 <p>
40 <a href="${groupPrependURL}/radiocor/" class="radiocor-read-more font-weight-bold">${languageUtil.get(locale,"radiocor-read-more")}</a>
41 </p>
42
43</section>
The following has evaluated to null or missing:
==> httpUtil.getParameter [in template "51632#51678#52245" at line 6, column 38]
----
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: #assign debug = validator.isNotNull(h... [in template "51632#51678#52245" at line 6, column 1]
----
1<#--Inclusione delle MACRO -->
2<#include "${templatesPath}/SELLA-MACRO" />
3<#include "${templatesPath}/ADAPTIVE-IMAGE-MACRO" />
4
5<#-- ##################################### DEBUG ################################### -->
6<#assign debug = validator.isNotNull(httpUtil.getParameter(current_url,"sellaDebug",false)) />
7<#if debug >
8 <div class="debug-content right">
9 TPL: REVIEW ADT
10 </div>
11</#if>
12
13<section class="review-adt-wrapper">
14 <div class="container">
15 <div class="review-adt-container">
16
17 <#if entries?has_content>
18
19 <div class="review-adt-container-content">
20
21 <#list entries as curEntry>
22
23 <#assign assetRenderer = curEntry.getAssetRenderer() />
24 <#assign classPK = curEntry.getClassPK() />
25 <#assign review = adt_tool.getFreemarkerMap(classPK, locale) />
26 <#assign journalArticle = curEntry.getAssetRenderer().getAssetObject() />
27
28 <#assign customTitle = ""/>
29 <#if review.CustomTitle??>
30 <#assign customTitle = review.CustomTitle.value />
31 </#if>
32
33 <@getEditIcon />
34
35 <#if review.Cover??>
36 <#assign cover = review.Cover.value />
37 </#if>
38 <#assign reviewTitle = curEntry.getTitle(locale) />
39 <#assign abstract = curEntry.getSummary(locale) />
40
41 <div class="row">
42 <div class="review-adt-img col-sm-5 pr-md-0">
43 <a data-senna-off="true" href="${getDisplayPageURL(classPK, groupId)}">
44 <div class="mb-2">
45 <img class="w-100" src="${cover.url}" >
46 </div>
47 </a>
48 </div>
49 <div class="review-adt-text col-sm-7">
50 <h3>
51 <a data-senna-off="true" href="${getDisplayPageURL(classPK,groupId)}">
52 <#if customTitle?? && customTitle?has_content>
53 ${customTitle}
54 <#else>
55 ${reviewTitle}
56 </#if>
57 </a>
58 </h3>
59 <div class="review-adt-abstract">${abstract}</div>
60 </div>
61 </div>
62
63 </#list>
64
65 </div>
66 </#if>
67
68 </div>
69 </div>
70</section>
71
72
73<#macro getEditIcon>
74 <#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())>
75 <#assign redirectURL = renderResponse.createRenderURL() />
76
77 ${redirectURL.setParameter("mvcPath", "/add_asset_redirect.jsp")}
78 ${redirectURL.setWindowState("pop_up")}
79
80 <#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" />
81
82 <#if validator.isNotNull(editPortletURL)>
83 <#assign title = languageUtil.format(locale, "edit-x", entryTitle, false) />
84
85 <@liferay_ui["icon"]
86 cssClass="icon-monospaced visible-interaction"
87 icon="pencil"
88 markupView="lexicon"
89 message=title
90 url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "editAsset', title: '" + title + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});"
91 />
92 </#if>
93 </#if>
94</#macro>
Durante le feste, il significato del dono assume un valore ancora più profondo: non è solo ciò che si riceve, ma soprattutto ciò che si sceglie di offrire agli altri. È il tempo condiviso, l’attenzione verso chi è in difficoltà, la volontà di esserci. In questo spirito, anche quest’anno il Gruppo Sella ha rinnovato l’iniziativa “Dona il tuo Voto”, trasformando un gesto semplice in un regalo concreto per la comunità e valorizzando l’impegno solidale delle colleghe e dei colleghi che ogni giorno si dedicano al volontariato.
Ancora una volta, a decidere a chi destinare i fondi messi a disposizione dal Gruppo sono state proprio le persone di Sella, chiamate a esprimere la propria preferenza tra i progetti candidati. Un gesto semplice, ma dal valore enorme, che ha permesso di trasformare il voto in un aiuto concreto per chi ne ha più bisogno.
I progetti vincitori
I progetti candidati sono stati 23 e ben 886 colleghi hanno preso parte alla votazione. Tra tutte le iniziative presentate, tre hanno ottenuto il maggior numero di consensi e potranno beneficiare dei fondi messi a disposizione dal Gruppo.
Il primo progetto vincitore è Gattopoli, promosso da Lucia Castaldi, un’iniziativa che dà voce a chi non può chiederla. L’associazione si occupa del recupero di gatte e gattini abbandonati o in difficoltà, garantendo cure, sicurezza e percorsi di adozione responsabile. Il contributo ricevuto sarà utilizzato per l’acquisto di pappe di qualità, farmaci e per sostenere le cure veterinarie necessarie, come microchip, sterilizzazioni e vaccinazioni. Un aiuto concreto che permette di trasformare la solidarietà in vite salvate: dall’inizio dell’anno sono già oltre tremila i gatti a cui è stato restituito un futuro.
Il secondo progetto è Una barella d’emergenza per l’Hospice “L’Orsa Maggiore” di LILT Biella, promosso da Laura Nobile. L’Hospice rappresenta un presidio fondamentale per il territorio, un luogo in cui ogni giorno la dignità della vita viene tutelata attraverso le cure palliative, il sostegno psicologico e l’accompagnamento dei pazienti e delle loro famiglie nei momenti più delicati. La donazione contribuirà all’acquisto di una barella di emergenza, uno strumento essenziale per proteggere da malori improvvisi non solo i pazienti, ma anche i familiari che restano accanto ai propri cari.
Il terzo progetto vincitore è Un passaggio salvavita, promosso da Simona Andreoli per l’Associazione Talassemici Piemonte. L’iniziativa nasce per offrire un servizio di mobilità verso i centri di cura ai pazienti talassemici che devono sottoporsi regolarmente a terapie trasfusionali salvavita. Il contributo permetterà di garantire il trasporto a chi non è in grado di spostarsi autonomamente, ad esempio per l’aggravarsi delle condizioni di salute o per la mancanza di accompagnatori, assicurando continuità alle cure e maggiore serenità ai pazienti.
Abbiamo approfondito con le tre colleghe le motivazioni che le hanno spinte a partecipare a “Dona il tuo Voto” e il significato che il volontariato ha per loro. Ne emergono storie diverse, ma accomunate da un forte senso di responsabilità e dalla volontà di trasformare i propri valori e passioni in un aiuto concreto per gli altri.
Un impegno che nasce dall’esperienza personale
Dietro ogni progetto c’è una storia vissuta in prima persona.
Simona racconta come il suo coinvolgimento nasca dalla propria esperienza: convivendo con la talassemia, conosce bene le difficoltà legate alle terapie continue. L’idea del progetto l’ha colpita profondamente perché risponde a un bisogno reale, che lei stessa o persone a lei vicine hanno vissuto: nessuno dovrebbe affrontare da solo un momento così delicato.
Per Lucia, l’impegno in Gattopoli è una scelta di responsabilità verso i più fragili. Salvare animali abbandonati, curarli e accompagnarli verso una nuova famiglia significa “prestare la propria voce a chi non ce l’ha”, restituendo dignità e fiducia a creature spesso dimenticate.
Laura, volontaria LILT da oltre 15 anni, ha scelto di sostenere un progetto che mette al centro la dignità della vita umana. L’Hospice rappresenta un presidio fondamentale per il territorio, un luogo in cui il malato e la sua famiglia vengono accolti, accompagnati e sostenuti con professionalità e umanità.
Il motore del volontariato: valori e responsabilità
Aiuto concreto, vicinanza, dignità, empatia: sono questi i valori che guidano i tre progetti.
Nel caso di Simona, la donazione avrà un impatto immediato sull’avvio del servizio di trasporto, ma anche un valore importante in termini di sensibilizzazione sulla talassemia e sull’importanza delle donazioni di sangue.
Per Lucia, il contributo permetterà di affrontare cure veterinarie complesse e urgenti per alcuni animali in gravi condizioni, trasformando la solidarietà in vite salvate.
Per Laura, la donazione si traduce in uno strumento essenziale per garantire sicurezza e tutela all’interno dell’Hospice, rafforzando un modello di assistenza che mette la persona e i suoi affetti al centro.
Il valore del sostegno dei colleghi
Tutte e tre le colleghe raccontano l’emozione provata nel ricevere il supporto dei colleghi del Gruppo.
Simona parla di un legame che va oltre il lavoro quotidiano, fatto di attenzione e partecipazione autentica. Lucia descrive la gioia e la commozione nel sentirsi sostenuta, soprattutto per una causa che talvolta viene sottovalutata visto il periodo storico in cui ci troviamo. Laura sottolinea come il voto rappresenti una vera e propria fiducia nel lavoro svolto sul territorio da LILT e dai suoi volontari.
Un messaggio per chi vuole iniziare
A chi sta pensando di avvicinarsi al volontariato, il messaggio che arriva da queste storie è chiaro: è un impegno che richiede tempo ed energia, ma che restituisce moltissimo a livello umano. Perché anche un piccolo gesto, se condiviso, può diventare un dono capace di fare la differenza.
“Dona il tuo Voto” si conferma così non solo un’iniziativa solidale, ma un percorso collettivo che rafforza il senso di appartenenza e dimostra che, insieme, possiamo trasformare il valore del dono in un cambiamento reale, un passo alla volta.