Cina - Diritto del lavoro: assunzioni, licenziamenti, distacco
CINA anno zero post Covid - Club dei 15 - II incontro Unindustria RE
An error occurred while processing the template.
The following has evaluated to null or missing:
==> cena  [in template "20097#20123#DETTAGLIO-APPUNTAMENTO" at line 37, column 24]

----
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 dinnerCheck = cena.getData()  [in template "20097#20123#DETTAGLIO-APPUNTAMENTO" at line 37, column 1]
----
1<#include "${templatesPath}/MACRO-DETAIL-PAGE" /> 
2 
3<#assign userLocalService = serviceLocator.findService('com.liferay.portal.kernel.service.UserLocalService') /> 
4 
5<#assign detailURL = aireWidgetTemplateTool.getDetailDisplayPageURL(assetEntry, serviceContext.getThemeDisplay().getDoAsUserId()) /> 
6<#assign downloadIcsURL = "/o/unindustria/ics/calendar?groupId=" + groupId + "&eventId=" + articleid + "&eventUrl=" + detailURL /> 
7<#assign customSvgPath = themeDisplay.getPathThemeImages() + "/assets/images/icons.svg" /> 
8 
9<#assign isLoggedIn = false /> 
10<#if serviceContext.getThemeDisplay().isSignedIn()> 
11	<#assign isLoggedIn = true /> 
12</#if> 
13 
14<#assign userId = serviceContext.getThemeDisplay().getUserId() /> 
15<#assign isSubscribed = aireWidgetTemplateTool.isSubscribedEvent(articleid, userId, themeDisplay) /> 
16<#assign idEventCreation = id.getData() /> 
17<#if viewForm??> 
18	<#assign viewForm = viewForm.getData() /> 
19<#else> 
20	<#assign viewForm = "false" /> 
21</#if> 
22<#if formNotes??> 
23	<#assign formNotes = formNotes.getData() /> 
24<#else> 
25	<#assign formNotes = "" /> 
26</#if> 
27<#if formCompany??> 
28	<#assign formCompany = formCompany.getData() /> 
29<#else> 
30	<#assign formCompany = "" /> 
31</#if> 
32<#assign user = userLocalService.fetchUser(userId) /> 
33<#assign userFirstName = user.getFirstName() /> 
34<#assign userSurname = user.getLastName() /> 
35<#assign userEmail = user.getEmailAddress() /> 
36 
37<#assign dinnerCheck = cena.getData() /> 
38<#assign publicPartCheck = parte_pubblica.getData() /> 
39<#assign privatePartCheck = parte_privata.getData() /> 
40<#assign streamingCheck = streaming.getData() /> 
41 
42<#assign selfCheckboxVisibility = ""/> 
43<#assign selfAutoFlagged = "false" /> 
44<#assign selfFormVisibility = "d-none"/> 
45 
46<#if !isLoggedIn> 
47	<#assign selfCheckboxVisibility = "d-none"/> 
48	<#assign selfAutoFlagged = "true" /> 
49	<#assign selfFormVisibility = ""/> 
50</#if> 
51 
52<div class="webcontent-detail pt-0"> 
53	<div class="webcontent-detail__calendar-info"> 
54		<div class="container"> 
55			<div class="row"> 
56				<div class="col-12"> 
57					<div class="d-flex flex-column flex-md-row justify-content-md-between align-items-md-center"> 
58						<div> 
59							<strong class="text-uppercase">${dateUtil.getDate(data.getData()?date("yyyy-MM-dd"), 'dd MMMM yyyy', locale)}</strong> 
60							- ${languageUtil.get(locale, "aire.hour.from")} ${ora_inizio.getData()} ${languageUtil.get(locale, "aire.hour.to")} ${ora_fine.getData()} 
61						</div> 
62						<div class="d-flex align-items-center justify-content-between"> 
63							<div> 
64								<button type="button" onclick="window.open('${downloadIcsURL}','_self')" target="_self" class="webcontent-detail__calendar d-flex align-items-center"> 
65									<svg class="ico-svg add"> 
66										<use xlink:href="${themeIconsPath}#calendar-alt-light"></use> 
67									</svg> 
68									<span class="add">${languageUtil.get(locale, "aire.mark.calendar")}</span> 
69								</button> 
70							</div> 
71							<#if partecipazione?? && partecipazione.getData()?has_content> 
72								<#if viewForm == "true"> 
73									<#if aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && !isLoggedIn> 
74										<div class="ml-md-4"> 
75											<button type="button" class="cta-link cta-link--icon" data-toggle="modal" data-target="#login"> 
76												<span class="d-none d-lg-inline-block"><@liferay.language key="aire.signing" /></span> 
77												<svg class="ico-svg"> 
78													<use xlink:href="${customSvgPath}#user-light"></use> 
79												</svg> 
80											</button> 
81										</div> 
82									<#elseif aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn && !isSubscribed> 
83										<div class="ml-md-4"> 
84											<a href="#subscribe-event" title="${languageUtil.get(locale, "aire.signing")}" class="cta-link"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
85										</div> 
86									<#elseif !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn && !isSubscribed> 
87										<div class="ml-md-4"> 
88											<a href="#subscribe-event" title="${languageUtil.get(locale, "aire.signing")}" class="btn-cta btn-cta--white"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
89										</div> 
90									<#elseif !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && !isLoggedIn> 
91										<div class="ml-md-4"> 
92											<a href="#subscribe-event" title="${languageUtil.get(locale, "aire.signing")}" class="btn-cta btn-cta--white"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
93										</div> 
94									</#if> 
95								<#elseif link_iscriviti.getData()?has_content> 
96									<#if aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && !isLoggedIn> 
97										<div class="ml-md-4"> 
98											<button type="button" class="cta-link cta-link--icon" data-toggle="modal" data-target="#login"> 
99												<span class="d-none d-lg-inline-block"><@liferay.language key="aire.signing" /></span> 
100												<svg class="ico-svg"> 
101													<use xlink:href="${customSvgPath}#user-light"></use> 
102												</svg> 
103											</button> 
104										</div> 
105									<#elseif aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn> 
106										<div class="ml-md-4"> 
107											<a href="${link_iscriviti.getData()}" target="_blank" title="${languageUtil.get(locale, "aire.signing")}" class="cta-link"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
108										</div> 
109									<#elseif !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData())> 
110										<div class="ml-md-4"> 
111											<a href="${link_iscriviti.getData()}" target="_blank" title="${languageUtil.get(locale, "aire.signing")}" class="cta-link"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
112										</div> 
113									</#if> 
114								</#if> 
115							</#if> 
116						</div> 
117					</div> 
118				</div> 
119			</div> 
120		</div> 
121	</div> 
122	<div class="container"> 
123		<div class="row"> 
124			<nav class="col-md-4"> 
125				<div class="webcontent-detail__nav"> 
126					<ul> 
127    					<#if programma_titolo.getSiblings()[0].getData() != ""> 
128    					    <li><a href="#section-1" title="${languageUtil.get(locale, "aire.program")}">${languageUtil.get(locale, "aire.program")}</a></li> 
129    					</#if> 
130    					<#if logo_sponsor.getSiblings()[0].getData() != ""> 
131	                        <li><a href="#section-2" title="${languageUtil.get(locale, "aire.partner")}">${languageUtil.get(locale, "aire.partner")}</a></li> 
132                        </#if> 
133                        <#if documenti_allegati.getSiblings()[0].getData() != "" && ((aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn) ||  !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()))> 
134                        	<li><a href="#section-3" title="${languageUtil.get(locale, "aire.section.documents")}">${languageUtil.get(locale, "aire.section.documents")}</a></li> 
135                        </#if> 
136					</ul> 
137					<div class="webcontent-detail__box"> 
138						<div class="webcontent-detail__box-title">${languageUtil.get(locale, "aire.information")}</div> 
139						<div class="webcontent-detail__info d-flex"> 
140							<svg class="ico-svg add"> 
141								<use xlink:href="${themeIconsPath}#calendar-alt-light"></use> 
142							</svg> 
143							<div> 
144								<div class="webcontent-detail__info-title">${languageUtil.get(locale, "aire.event.date")}</div> 
145								<div> 
146									<span class="text-uppercase">${dateUtil.getDate(data.getData()?date("yyyy-MM-dd"), 'dd MMMM yyyy', locale)}</span> 
147									<br> 
148									${languageUtil.get(locale, "aire.hour.from")} ${ora_inizio.getData()} ${languageUtil.get(locale, "aire.hour.to")} ${ora_fine.getData()} 
149								</div> 
150							</div> 
151						</div> 
152						<div class="webcontent-detail__info d-flex"> 
153							<svg class="ico-svg add"> 
154								<use xlink:href="${themeIconsPath}#map-marker-alt-light"></use> 
155							</svg> 
156							<div> 
157								<div class="webcontent-detail__info-title">${languageUtil.get(locale, "aire.location")}</div> 
158								<div>${luogo.getData()}</div> 
159							</div> 
160						</div> 
161						<#if categorieEvento?has_content> 
162    						<div class="webcontent-detail__info d-flex"> 
163    							<svg class="ico-svg add"> 
164    								<use xlink:href="${themeIconsPath}#info-light"></use> 
165    							</svg> 
166    							<div> 
167    								<div class="webcontent-detail__info-title">${languageUtil.get(locale, "aire.typology")}</div> 
168    								<#list categorieEvento as tipoEvento> 
169    								    <div>${tipoEvento.getName()}</div> 
170    								</#list> 
171    							</div> 
172    						</div> 
173						</#if> 
174					</div> 
175					<div class="webcontent-detail__box"> 
176						<div class="webcontent-detail__box-title">${languageUtil.get(locale, "aire.signing")}</div> 
177						<div> 
178							<button type="button" onclick="window.open('${downloadIcsURL}','_self')" target="_self" class="webcontent-detail__calendar d-flex align-items-center"> 
179								<svg class="ico-svg add"> 
180									<use xlink:href="${themeIconsPath}#calendar-alt-light"></use> 
181								</svg> 
182								<span class="add">${languageUtil.get(locale, "aire.mark.calendar")}</span> 
183							</button> 
184							<#if partecipazione?? && partecipazione.getData()?has_content> 
185								<#if viewForm == "true"> 
186									<#if aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && !isLoggedIn> 
187											<button type="button" class="cta-link cta-link--icon" data-toggle="modal" data-target="#login"> 
188												<span class="d-none d-lg-inline-block"><@liferay.language key="aire.signing" /></span> 
189												<svg class="ico-svg"> 
190													<use xlink:href="${customSvgPath}#user-light"></use> 
191												</svg> 
192											</button> 
193									<#elseif aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn && !isSubscribed> 
194											<a href="#subscribe-event" title="${languageUtil.get(locale, "aire.signing")}" class="cta-link"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
195									<#elseif !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn && !isSubscribed> 
196											<a href="#subscribe-event" title="${languageUtil.get(locale, "aire.signing")}" class="btn-cta btn-cta--white"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
197									<#elseif !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && !isLoggedIn> 
198											<a href="#subscribe-event" title="${languageUtil.get(locale, "aire.signing")}" class="btn-cta btn-cta--white"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
199									</#if> 
200								<#elseif link_iscriviti.getData()?has_content> 
201									<#if aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && !isLoggedIn> 
202										<button type="button" class="cta-link cta-link--icon" data-toggle="modal" data-target="#login"> 
203											<span class="d-none d-lg-inline-block"><@liferay.language key="aire.signing" /></span> 
204											<svg class="ico-svg"> 
205												<use xlink:href="${customSvgPath}#user-light"></use> 
206											</svg> 
207										</button> 
208									<#elseif aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn> 
209										<a href="${link_iscriviti.getData()}" target="_blank" title="${languageUtil.get(locale, "aire.signing")}" class="cta-link"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
210									<#elseif !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData())> 
211										<a href="${link_iscriviti.getData()}" target="_blank" title="${languageUtil.get(locale, "aire.signing")}" class="cta-link"><span>${languageUtil.get(locale, "aire.signing")}</span></a> 
212									</#if> 
213								</#if> 
214							</#if> 
215						</div> 
216					</div> 
217					<#if partecipazione.getData() != ""> 
218    					<div class="webcontent-detail__box"> 
219    						<div class="webcontent-detail__box-title">${languageUtil.get(locale, "aire.participation")}</div> 
220							<div> 
221								${partecipazione.getData()} 
222							</div> 
223    					</div> 
224    				</#if> 
225					<#if tags?has_content> 
226						<div class="webcontent-detail__box"> 
227							<div class="webcontent-detail__box-title">${languageUtil.get(locale, "aire.section.tag")}</div> 
228							<div> 
229								<#list tags as tag> 
230									<a href="/ricerca?tag=${tag.getTagId()}" title="${tag.getName()}" class="webcontent-detail__tag">#${tag.getName()}</a> 
231								</#list> 
232							</div> 
233						</div> 
234					</#if> 
235				</div> 
236			</nav> 
237			<div class="col-md-8"> 
238				<div class="webcontent-detail__main"> 
239					<div class="d-flex justify-content-between"> 
240						<div class="d-flex"> 
241							<div class="webcontent-detail__category"> 
242								<#list categorieTema as categoria> 
243									<span>${categoria.getName()?upper_case}</span> 
244								</#list> 
245							</div> 
246							<#if categorieGruppo?has_content> 
247								<div class="webcontent-detail__category_group"><#list categorieGruppo as categoriaG><span>${categoriaG.getName()?upper_case}</span></#list></div> 
248							</#if> 
249						</div> 
250						<div class="bookmark position-relative"> 
251							<@bookmarkCheck className=className classPK=classPK structureId=structureId /> 
252						</div> 
253					</div> 
254                    <#if video?? && video.getSiblings()[0].getData() != ""> 
255                        <section id="section-video" class="webcontent-detail__img"> 
256                            <#list video.getSiblings() as cur_video> 
257                                <#if cur_video.getData()?? && cur_video.getData() != ""> 
258                                    <div class="article-detail__video iframe-responsive"> 
259                                        <iframe src="${cur_video.getData()}" width="640" height="362" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="allowfullscreen" loading="lazy">..</iframe> 
260                                    </div> 
261                                </#if> 
262                            </#list> 
263                        </section> 
264                    <#elseif immagine.getData()?has_content> 
265                        <img src="${immagine.getData()}" alt="${titolo.getData()}" class="webcontent-detail__img" /> 
266                    </#if> 
267 
268					<#if descrizione.getData()?has_content> 
269						${descrizione.getData()} 
270					</#if> 
271					<#if programma_titolo.getSiblings()[0].getData() != ""> 
272						<section id="section-1" class="webcontent-detail__section"> 
273							<h2 class="webcontent-detail__section-title">${languageUtil.get(locale, "aire.program")}</h2> 
274								<#if programma_titolo.getSiblings()?has_content> 
275									<#list programma_titolo.getSiblings() as cur_programma_titolo> 
276										<p> 
277											<strong>${cur_programma_titolo.programma_ora.getData()} - ${cur_programma_titolo.getData()}</strong> 
278										</p> 
279										${cur_programma_titolo.programma_descrizione.getData()} 
280									</#list> 
281								</#if> 
282						</section> 
283					</#if> 
284					<#if logo_sponsor.getSiblings()[0].getData() != ""> 
285						<section id="section-2" class="webcontent-detail__section"> 
286							<h2 class="webcontent-detail__section-title">${languageUtil.get(locale, "aire.partner")}</h2> 
287						    <div class="row"> 
288    							<#list logo_sponsor.getSiblings() as logo> 
289    							    <div class="col-md-3 mb-2"> 
290    							        <img alt="${logo.getAttribute('alt')}" src="${logo.getData()}" /> 
291    							    </div> 
292    							</#list> 
293						    </div> 
294						</section> 
295					</#if> 
296					<#if documenti_allegati.getSiblings()[0].getData() != "" && ((aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && isLoggedIn) || !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()))> 
297						<section id="section-3" class="webcontent-detail__section"> 
298							<h2 class="webcontent-detail__section-title">${languageUtil.get(locale, "aire.section.documents")}</h2> 
299							<#list documenti_allegati.getSiblings() as allegato> 
300								<#if allegato.getData() != ""> 
301									<@mostraAllegato allegato /> 
302									<#if allegato.titolo_doc.getData() != ""> 
303										<#assign titoloAllegato = allegato.titolo_doc.getData()> 
304									<#else> 
305										<#assign titoloAllegato = allegatoTitle> 
306									</#if> 
307									<a href="${fileEntryDownloadURL}" title="${titoloAllegato}" class="webcontent-detail__attachment d-flex align-items-end w-100"> 
308										<svg class="ico-svg"> 
309											<use xlink:href="${themeIconsPath}#arrow-to-bottom-light"></use> 
310										</svg> 
311										<span>${titoloAllegato}</span> 
312									</a> 
313								</#if> 
314							</#list> 
315						</section> 
316					</#if> 
317				</div> 
318			</div> 
319		</div> 
320	</div> 
321</div> 
322 
323<#assign formVisible = "false" /> 
324<#if partecipazione?? && partecipazione.getData()?has_content && viewForm == "true"> 
325    <#if isLoggedIn && !isSubscribed> 
326        <#assign formVisible = "true" /> 
327    <#elseif !isLoggedIn && !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData())> 
328        <#assign formVisible = "true" /> 
329    </#if> 
330</#if> 
331 
332<#if formVisible == "true"> 
333	<div class="container"> 
334		<div class="row"> 
335			<div class="col-12"> 
336				<form action="javascript:void(0);" method="post" id="subscribe-event" class="form" aria-label="<@liferay.language key='aire.subscribe.event' />"> 
337					<div class="row"> 
338						<div class="col-12"> 
339							<h2 style="margin-bottom: 10px;"><@liferay.language key="aire.subscribe.event" /></h2> 
340						</div> 
341					</div> 
342					<#if isLoggedIn> 
343                        <div class="row" id="detail-appointment-text"> 
344                            <div class="col-12"> 
345                                <h5 style="margin-bottom: 20px;font-weight: 400;"><@liferay.language key="aire.text.detail.appointment" /></h5> 
346                            </div> 
347                        </div> 
348					</#if> 
349					<div class="row"> 
350						<div class="col-12"> 
351							<div class="d-flex flex-wrap"> 
352								<div class="mr-5" style="min-width: 150px; max-width: 500px;"> 
353									<fieldset> 
354 
355										<div class="row" id="form-event-subscribe-self"> 
356 
357											<div class="col-12 ${selfCheckboxVisibility}"> 
358												<div class="d-flex align-items-center"> 
359													<div class="d-flex py-2"> 
360														<label class="form__label m-0" for="subscribeSelf" style="width: 220px;"><@liferay.language key="aire.subscribe.self" /></label> 
361													</div> 
362													<div class="form__group d-flex flex-column align-content-center mr-5"> 
363														<input type="checkbox" name="subscribeSelf" id="subscribeSelf" class="form__input-text align-self-center checkbox-change" value="${selfAutoFlagged}"/> 
364													</div> 
365												</div> 
366											</div> 
367 
368											<div class="col-12"> 
369												<div class="form__group subscribe-self mt-3 ${selfFormVisibility}"> 
370													<label class="form__label" for="nameSelf" style="width: 200px;"> 
371														<@liferay.language key="aire.name" /> 
372														<span class="reference-mark text-warning" id="fehs____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-asterisk" focusable="false"><use href="https://aire-dev.ariadnedev.it/o/unindustria-theme/images/clay/icons.svg#asterisk"></use></svg></span> 
373													</label> 
374													<#if isLoggedIn> 
375														<input type="text" name="nameSelf" id="nameSelf" class="form__input-text w-100 required" readonly value="${userFirstName}" style="min-width: 100px; max-width: 500px;background-color: rgba(18,80,149,.1);border: 0px;"/> 
376													<#else> 
377														<input type="text" name="nameSelf" id="nameSelf" class="form__input-text w-100 required" style="min-width: 100px; max-width: 500px;"/> 
378													</#if> 
379												</div> 
380											</div> 
381											<div class="col-12"> 
382												<div class="form__group subscribe-self ${selfFormVisibility}"> 
383													<label class="form__label" for="surnameSelf" style="width: 200px;"> 
384														<@liferay.language key="aire.surname" /> 
385														<span class="reference-mark text-warning" id="fehs____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-asterisk" focusable="false"><use href="https://aire-dev.ariadnedev.it/o/unindustria-theme/images/clay/icons.svg#asterisk"></use></svg></span> 
386													</label> 
387													<#if isLoggedIn> 
388														<input type="text" name="surnameSelf" id="surnameSelf" class="form__input-text w-100 required" readonly value="${userSurname}" style="min-width: 100px; max-width: 500px;background-color: rgba(18,80,149,.1);border: 0px;"/> 
389													<#else> 
390														<input type="text" name="surnameSelf" id="surnameSelf" class="form__input-text w-100 required" style="min-width: 100px; max-width: 500px;"/> 
391													</#if> 
392												</div> 
393											</div> 
394											<div class="col-12"> 
395												<div class="form__group subscribe-self ${selfFormVisibility}"> 
396													<label class="form__label" for="emailSelf" style="width: 200px;"> 
397														<@liferay.language key="aire.email" /> 
398														<span class="reference-mark text-warning" id="fehs____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-asterisk" focusable="false"><use href="https://aire-dev.ariadnedev.it/o/unindustria-theme/images/clay/icons.svg#asterisk"></use></svg></span> 
399													</label> 
400													<#if isLoggedIn> 
401														<input type="text" name="emailSelf" id="emailSelf" class="form__input-text w-100 required" readonly value="${userEmail}" style="min-width: 100px; max-width: 500px;background-color: rgba(18,80,149,.1);border: 0px;"/> 
402													<#else> 
403														<input type="text" name="emailSelf" id="emailSelf" class="form__input-text w-100 required" style="min-width: 100px; max-width: 500px;"/> 
404													</#if> 
405												</div> 
406											</div> 
407											<#if formCompany == "true"> 
408												<div class="col-12"> 
409													<div class="form__group  ${selfFormVisibility} subscribe-self"> 
410														<label class="form__label" for="companySelf" style="width: 200px;"><@liferay.language key="aire.company" /></label> 
411														<textarea type="text" name="companySelf" id="companySelf" class="form__input-text w-100" style="min-width: 100px; max-width: 500px;"></textarea> 
412													</div> 
413												</div> 
414											</#if> 
415											<#if formNotes == "true"> 
416												<div class="col-12"> 
417													<div class="form__group ${selfFormVisibility} subscribe-self"> 
418														<label class="form__label" for="notesSelf" style="width: 200px;"><@liferay.language key="aire.notes" /></label> 
419														<textarea type="text" name="notesSelf" id="notesSelf" class="form__input-text w-100" style="min-width: 100px; max-width: 500px;"></textarea> 
420													</div> 
421												</div> 
422											</#if> 
423 
424											<#if dinnerCheck == "true"> 
425											<div class="col-12"> 
426												<div class="subscribe-self ${selfFormVisibility}"> 
427													<div class="d-flex align-items-center"> 
428														<div class="d-flex py-2"> 
429															<label class="form__label m-0" for="dinnerSelf" style="width: 220px;"><@liferay.language key="aire.dinner" /></label> 
430														</div> 
431														<div class="form__group d-flex flex-column align-content-center"> 
432															<input type="checkbox" name="dinnerSelf" id="dinnerSelf" class="form__input-text align-self-center checkbox-change" value="false"/> 
433														</div> 
434													</div> 
435												</div> 
436											</div> 
437											</#if> 
438 
439											<#if streamingCheck == "true"> 
440												<div class="col-12"> 
441													<div class="subscribe-self ${selfFormVisibility}"> 
442														<div class="d-flex align-items-center"> 
443															<div class="d-flex py-2"> 
444																<label class="form__label m-0" for="streamingSelf" style="width: 220px;"><@liferay.language key="aire.remote" /></label> 
445															</div> 
446															<div class="form__group d-flex flex-column align-content-center"> 
447																<input type="checkbox" name="streamingSelf" id="streamingSelf" class="form__input-text align-self-center checkbox-change" value="false"/> 
448															</div> 
449														</div> 
450													</div> 
451												</div> 
452											</#if> 
453 
454											<#if publicPartCheck == "true"> 
455												<div class="col-12"> 
456													<div class="subscribe-self ${selfFormVisibility}"> 
457														<div class="d-flex align-items-center"> 
458															<div class="d-flex py-2"> 
459																<label class="form__label m-0" for="publicPartSelf" style="width: 220px;"><@liferay.language key="aire.public.part" /></label> 
460															</div> 
461															<div class="form__group d-flex flex-column align-content-center mr-5"> 
462																<input type="checkbox" name="publicPartSelf" id="publicPartSelf" class="form__input-text align-self-center checkbox-change" value="false"/> 
463															</div> 
464														</div> 
465													</div> 
466												</div> 
467											</#if> 
468 
469											<#if privatePartCheck == "true"> 
470												<div class="col-12"> 
471													<div class="subscribe-self ${selfFormVisibility}"> 
472														<div class="d-flex align-items-center"> 
473															<div class="d-flex py-2"> 
474																<label class="form__label m-0" for="privatePartSelf" style="width: 220px;"><@liferay.language key="aire.private.part" /></label> 
475															</div> 
476															<div class="form__group d-flex flex-column align-content-center mr-5"> 
477																<input type="checkbox" name="privatePartSelf" id="privatePartSelf" class="form__input-text align-self-center checkbox-change" value="false"/> 
478															</div> 
479														</div> 
480													</div> 
481												</div> 
482											</#if> 
483											<#if !aireWidgetTemplateTool.isPrivateAppointment(partecipazione.getData()) && !isLoggedIn> 
484												<div class="col-12"> 
485													<@liferay_captcha["captcha"]/> 
486												</div> 
487											</#if> 
488										</div> 
489 
490									</fieldset> 
491								</div> 
492								<#if isLoggedIn> 
493									<div class="mr-5" style="min-width: 150px; max-width: 500px;"> 
494 
495										<fieldset> 
496											<div class="row" id="form-event-subscribe-other"> 
497 
498												<div class="col-12"> 
499													<div class="d-flex align-items-center"> 
500														<div class="d-flex py-2"> 
501															<label class="form__label m-0" for="subscribeOther" style="width: 220px;"><@liferay.language key="aire.subscribe.other" /></label> 
502														</div> 
503														<div class="form__group d-flex flex-column align-content-center mr-5"> 
504															<input type="checkbox" name="subscribeOther" id="subscribeOther" class="form__input-text align-self-center checkbox-change" value="false"/> 
505														</div> 
506													</div> 
507												</div> 
508												<div class="col-12"> 
509													<div class="form__group subscribe-other d-none mt-3"> 
510														<label class="form__label" for="nameOther" style="width: 200px;"> 
511															<@liferay.language key="aire.name" /> 
512															<span class="reference-mark text-warning" id="fehs____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-asterisk" focusable="false"><use href="https://aire-dev.ariadnedev.it/o/unindustria-theme/images/clay/icons.svg#asterisk"></use></svg></span> 
513														</label> 
514															<input type="text" name="nameOther" id="nameOther" class="form__input-text w-100 required" style="min-width: 100px; max-width: 500px;"/> 
515													</div> 
516												</div> 
517												<div class="col-12"> 
518													<div class="form__group subscribe-other d-none"> 
519														<label class="form__label" for="surnameOther" style="width: 200px;"> 
520															<@liferay.language key="aire.surname" /> 
521															<span class="reference-mark text-warning" id="fehs____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-asterisk" focusable="false"><use href="https://aire-dev.ariadnedev.it/o/unindustria-theme/images/clay/icons.svg#asterisk"></use></svg></span> 
522														</label> 
523														<input type="text" name="surnameOther" id="surnameOther" class="form__input-text w-100 required" style="min-width: 100px; max-width: 500px;"/> 
524													</div> 
525												</div> 
526												<div class="col-12"> 
527													<div class="form__group subscribe-other d-none"> 
528														<label class="form__label" for="emailOther" style="width: 200px;"> 
529															<@liferay.language key="aire.email" /> 
530															<span class="reference-mark text-warning" id="fehs____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-asterisk" focusable="false"><use href="https://aire-dev.ariadnedev.it/o/unindustria-theme/images/clay/icons.svg#asterisk"></use></svg></span> 
531														</label> 
532														<input type="text" name="emailOther" id="emailOther" class="form__input-text w-100 required" style="min-width: 100px; max-width: 500px;"/> 
533													</div> 
534												</div> 
535												<#if formCompany == "true"> 
536													<div class="col-12"> 
537														<div class="form__group subscribe-other d-none"> 
538															<label class="form__label" for="companyOther" style="width: 200px;"><@liferay.language key="aire.company" /></label> 
539															<textarea type="text" name="companyOther" id="companyOther" class="form__input-text w-100" style="min-width: 100px; max-width: 500px;"></textarea> 
540														</div> 
541													</div> 
542												</#if> 
543												<#if formNotes == "true"> 
544													<div class="col-12"> 
545														<div class="form__group subscribe-other d-none"> 
546															<label class="form__label" for="notesOther" style="width: 200px;"><@liferay.language key="aire.notes" /></label> 
547															<textarea type="text" name="notesOther" id="notesOther" class="form__input-text w-100" style="min-width: 100px; max-width: 500px;"></textarea> 
548														</div> 
549													</div> 
550												</#if> 
551 
552												<#if dinnerCheck == "true"> 
553													<div class="col-12"> 
554														<div class="subscribe-other d-none"> 
555															<div class="d-flex align-items-center"> 
556																<div class="d-flex py-2"> 
557																	<label class="form__label m-0" for="dinnerOther" style="width: 220px;"><@liferay.language key="aire.dinner" /></label> 
558																</div> 
559																<div class="form__group d-flex flex-column align-content-center"> 
560																	<input type="checkbox" name="dinnerOther" id="dinnerOther" class="form__input-text align-self-center checkbox-change" value="false"/> 
561																</div> 
562															</div> 
563														</div> 
564													</div> 
565												</#if> 
566 
567												<#if streamingCheck == "true"> 
568													<div class="col-12"> 
569														<div class="subscribe-other d-none align-items-center"> 
570															<div class="d-flex align-items-center"> 
571																<div class="d-flex py-2"> 
572																	<label class="form__label m-0" for="streamingOther" style="width: 220px;"><@liferay.language key="aire.remote" /></label> 
573																</div> 
574																<div class="form__group d-flex flex-column align-content-center"> 
575																	<input type="checkbox" name="streamingOther" id="streamingOther" class="form__input-text align-self-center checkbox-change" value="false"/> 
576																</div> 
577															</div> 
578														</div> 
579													</div> 
580												</#if> 
581 
582												<#if publicPartCheck == "true"> 
583													<div class="col-12"> 
584														<div class="subscribe-other d-none"> 
585															<div class="d-flex align-items-center"> 
586																<div class="d-flex py-2"> 
587																	<label class="form__label m-0" for="publicPartOther" style="width: 220px;"><@liferay.language key="aire.public.part" /></label> 
588																</div> 
589																<div class="form__group d-flex flex-column align-content-center mr-5"> 
590																	<input type="checkbox" name="publicPartOther" id="publicPartOther" class="form__input-text align-self-center checkbox-change" value="false"/> 
591																</div> 
592															</div> 
593														</div> 
594													</div> 
595												</#if> 
596 
597												<#if privatePartCheck == "true"> 
598													<div class="col-12"> 
599														<div class="subscribe-other d-none"> 
600															<div class="d-flex align-items-center"> 
601																<div class="d-flex py-2"> 
602																	<label class="form__label m-0" for="privatePartOther" style="width: 220px;"><@liferay.language key="aire.private.part" /></label> 
603																</div> 
604																<div class="form__group d-flex flex-column align-content-center mr-5"> 
605																	<input type="checkbox" name="privatePartOther" id="privatePartOther" class="form__input-text align-self-center checkbox-change" value="false"/> 
606																</div> 
607															</div> 
608														</div> 
609													</div> 
610												</#if> 
611											</div> 
612										</fieldset> 
613									</div> 
614								</#if> 
615								<div id="privacy-element" class="col-12 pl-0 ${selfFormVisibility}"> 
616									<div class=""> 
617										<div class="d-flex align-items-center"> 
618											<div class="form__group d-flex flex-column align-content-center mr-3"> 
619												<input type="checkbox" name="privacy" id="privacy" class="form__input-text align-self-center" value="false"/> 
620											</div> 
621											<div class="d-flex py-2"> 
622												<label class="form__label m-0" for="privacy"><i><@liferay.language key='aire.privacy.condition' /></i> 
623												    <span class="reference-mark text-warning" id="fehs____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-asterisk" focusable="false"><use href="https://aire-dev.ariadnedev.it/o/unindustria-theme/images/clay/icons.svg#asterisk"></use></svg></span> 
624												</label> 
625 
626											</div> 
627										</div> 
628									</div> 
629								</div> 
630							</div> 
631						</div> 
632					</div> 
633					<div class="row"> 
634						<div class="col-12"> 
635							<div class="form__group" id="submit-form-event"> 
636								<input id="submitInput" type="submit" value="<@liferay.language key='aire.signing' />" aria-label="<@liferay.language key='aire.signing'/>" title="<@liferay.language key='aire.signing' />" class="form__submit cta-link" style="margin-bottom: 20px;margin-top: 10px;padding: 0 10px"/> 
637							</div> 
638						</div> 
639					</div> 
640					<div class="row"> 
641						<div class="col-12"> 
642							<span class="d-none" id="subscription-required" style="color: red;"><@liferay.language key="aire.subscribe.event.required" /></span> 
643							<span class="d-none" id="subscription-successful"><@liferay.language key="aire.subscribe.event.success" /></span> 
644							<span class="d-none" id="subscription-error"><@liferay.language key="aire.subscribe.event.error" /></span> 
645						</div> 
646					</div> 
647				</form> 
648			</div> 
649		</div> 
650	</div> 
651</#if> 
652 
653<#if isSubscribed> 
654  <div class="container"> 
655    <div class="row"> 
656      <div class="col-12"> 
657          <div class="row"> 
658            <div class="col-12"> 
659            	<h4 style="margin-bottom: 10px;"><@liferay.language key="aire.appointment.already.subscribed" /></h4> 
660            </div> 
661          </div> 
662      </div> 
663    </div> 
664  </div> 
665</#if> 
666 
667<div> 
668	<#if id?? && id.getData()?has_content> 
669		<input type="hidden" id="field-id" value="${id.getData()}"> 
670	</#if> 
671	<#if partecipazione?? && partecipazione.getData()?has_content> 
672		<input type="hidden" id="field-hidden-partecipazione" value="${partecipazione.getData()}"> 
673	</#if> 
674	<#if cena?? && cena.getData()?has_content> 
675		<input type="hidden" id="field-hidden-cena" value="${cena.getData()}"> 
676	</#if> 
677	<#if presenza?? && presenza.getData()?has_content> 
678		<input type="hidden" id="field-hidden-presenza" value="${presenza.getData()}"> 
679	</#if> 
680	<#if streaming?? && streaming.getData()?has_content> 
681		<input type="hidden" id="field-hidden-streaming" value="${streaming.getData()}"> 
682	</#if> 
683	<#if parte_pubblica?? && parte_pubblica.getData()?has_content> 
684		<input type="hidden" id="field-hidden-parte-pubblica" value="${parte_pubblica.getData()}"> 
685	</#if> 
686	<#if parte_privata?? && parte_privata.getData()?has_content> 
687		<input type="hidden" id="field-hidden-parte-privata" value="${parte_privata.getData()}"> 
688	</#if> 
689</div> 
690 
691<#include "${templatesPath}/A-CHI-RIVOLGERSI" /> 
692 
693<#assign isLoggedIn = isLoggedIn?string('true', 'false') /> 
694 
695<script> 
696 
697	$(document).ready(function() { 
698		$("#subscribeOther").click(function() { 
699 
700			if ($(this).is(":checked") || $("#subscribeSelf").is(":checked")) { 
701				document.getElementById("privacy-element").classList.remove('d-none'); 
702				document.getElementById("privacy-element").classList.remove('d-block'); 
703				document.getElementById("privacy-element").classList.add('d-block'); 
704			} else { 
705				document.getElementById("privacy-element").classList.remove('d-none'); 
706				document.getElementById("privacy-element").classList.remove('d-block'); 
707				document.getElementById("privacy-element").classList.add('d-none'); 
708
709		}); 
710 
711		$("#subscribeSelf").click(function() { 
712			if ($(this).is(":checked") || $("#subscribeOther").is(":checked")) { 
713				document.getElementById("privacy-element").classList.remove('d-none'); 
714				document.getElementById("privacy-element").classList.remove('d-block'); 
715				document.getElementById("privacy-element").classList.add('d-block'); 
716			} else { 
717				document.getElementById("privacy-element").classList.remove('d-none'); 
718				document.getElementById("privacy-element").classList.remove('d-block'); 
719				document.getElementById("privacy-element").classList.add('d-none'); 
720
721		}); 
722	}); 
723 
724	$(".checkbox-change").on('change', function() { 
725		$(this).attr('value', $(this).is(':checked') ? 'true' : 'false'); 
726	}); 
727 
728	function setupSubscriptionHandler(checkboxId, containerClass) { 
729 
730		let subscribeCheckbox = document.getElementById(checkboxId); 
731		let dependentContainers = document.querySelectorAll("." + containerClass); 
732		let dependentFields = document.querySelectorAll("." + containerClass + " > input"); 
733 
734		if (!subscribeCheckbox) { 
735			return; 
736
737 
738		subscribeCheckbox.addEventListener('change', function () { 
739			let isChecked = subscribeCheckbox.checked; 
740 
741			dependentContainers.forEach(container => { 
742				if (isChecked) { 
743					container.classList.remove('d-none'); 
744					container.classList.add('d-block'); 
745				} else { 
746					container.classList.remove('d-block'); 
747					container.classList.add('d-none'); 
748
749			}); 
750 
751			dependentFields.forEach(field => { 
752				if (isChecked) { 
753					field.setAttribute('required', 'required'); 
754					field.classList.add('required'); 
755				} else { 
756					field.removeAttribute('required'); 
757					field.classList.remove('required'); 
758
759			}); 
760		}); 
761
762 
763	setupSubscriptionHandler('subscribeSelf', 'subscribe-self'); 
764	setupSubscriptionHandler('subscribeOther', 'subscribe-other'); 
765 
766	$(document).on("click", "#submitInput", function(e){ 
767		e.preventDefault(); 
768 
769		function gatherValues(fields, permission) { 
770			if (!permission) { 
771				return ""; 
772
773 
774			let values = {}; 
775			fields.forEach(function(id) { 
776				let element = $("#" + id); 
777				if (element.length) { 
778					values[id] = element.val(); 
779
780			}); 
781			return values; 
782
783 
784		function generateUrl(values, suffix) { 
785 
786			let captchaInput = ($("[id$='captchaText']").length)? $("[id$='captchaText']").val() : ""; 
787 
788			return "/o/unindustria/form/event/subscribe?eventId=" + "${articleid}" 
789				+ "&userId=" + ${userId} 
790				+ "&userName=" + values["name" + suffix] 
791				+ "&userSurname=" + values["surname" + suffix] 
792				+ "&userEmail=" + values["email" + suffix] 
793				+ "&dinner=" + values["dinner" + suffix] 
794				+ "&userNotes=" + values["notes" + suffix] 
795				+ "&company=" + values["company" + suffix] 
796				+ "&captchaInput=" + captchaInput 
797				+ "&eventIdCreation=" + "${idEventCreation}" 
798				+ "&publicPart=" + values["publicPart" + suffix] 
799				+ "&privatePart=" + values["privatePart" + suffix] 
800				+ "&streaming=" + values["streaming" + suffix] 
801				+ "&isLoggedIn=" + "${isLoggedIn}"; 
802
803 
804		let valuesSelf = gatherValues([ 
805			"notesSelf", "companySelf", "nameSelf", "surnameSelf", "emailSelf", 
806			"dinnerSelf", "streamingSelf", "publicPartSelf", "privatePartSelf" 
807		], $('#subscribeSelf').val()=='true'); 
808 
809		let valuesOther = gatherValues([ 
810			"notesOther", "companyOther", "nameOther", "surnameOther", "emailOther", 
811			"dinnerOther", "streamingOther", "publicPartOther", "privatePartOther" 
812		], $('#subscribeOther').val()=='true'); 
813 
814		let validateEmail = (email) => { 
815		  return String(email) 
816		    .toLowerCase() 
817			.trim() 
818		    .match( 
819				/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 
820		    ); 
821		}; 
822 
823		let isSelfInputValid = (valuesSelf.nameSelf?.trim().length > 0 && valuesSelf.surnameSelf?.trim().length > 0 && validateEmail(valuesSelf.emailSelf?.trim()) && $("#privacy").is(":checked")); 
824		let isOtherInputValid = (valuesOther.nameOther?.trim().length > 0 && valuesOther.surnameOther?.trim().length > 0 && validateEmail(valuesOther.emailOther?.trim()) && $("#privacy").is(":checked")); 
825 
826		if ((!isSelfInputValid && !isOtherInputValid) || (isSelfInputValid && !isOtherInputValid && $("#subscribeOther").is(":checked")) || (isOtherInputValid && !isSelfInputValid && $("#subscribeSelf").is(":checked"))) { 
827 
828			$("#subscription-required").removeClass("d-none"); 
829			$("#submitInput") 
830				.removeAttr("disabled") 
831				.css({ 
832					"background-color": "", 
833					"color": "", 
834					"opacity": "" 
835        	}); 
836			return; 
837
838 
839		$("#subscription-required").addClass("d-none"); 
840		$("#submitInput") 
841			.attr("disabled", true) 
842			.css({ 
843			"background-color": "dimgrey", 
844			"color": "linen", 
845			"opacity": "1" 
846			}); 
847 
848		function subscribe(urlSubscribe, callback) { 
849			$.ajax({ 
850				type: "GET", 
851				url: urlSubscribe, 
852				dataType: 'json', 
853				success: function (data) { 
854					if (data.results == "ok") { 
855						$("#subscription-successful").removeClass("d-none"); 
856						$("#subscription-error").addClass("d-none"); 
857 
858						$("#form-event-subscribe-self").hide(); 
859						$("#form-event-subscribe-other").hide(); 
860						$("#submit-form-event").hide(); 
861						$("#privacy-element").removeClass("d-block"); 
862						$("#privacy-element").addClass("d-none"); 
863						$("#detail-appointment-text").addClass("d-none"); 
864					} else { 
865						$("#subscription-error").removeClass("d-none"); 
866						$("#submitInput") 
867							.removeAttr("disabled") 
868							.css({ 
869							"background-color": "", 
870							"color": "", 
871							"opacity": "" 
872						}); 
873
874				}, 
875				error: function (xhr, ajaxOptions, thrownError) { 
876					console.log("error"); 
877				}, 
878				complete: function () { 
879					if (callback) { 
880						callback(); 
881
882
883			}); 
884
885 
886		if (isSelfInputValid) { 
887			// First subscribe call with callback to handle the second subscribe 
888			subscribe(generateUrl(valuesSelf, "Self"), function() { 
889				if (isOtherInputValid) { 
890					subscribe(generateUrl(valuesOther, "Other"), null); 
891
892			}); 
893		} else if (isOtherInputValid) { 
894			// Handle the case where only the second input is valid 
895			subscribe(generateUrl(valuesOther, "Other"), null); 
896
897	}); 
898 
899</script>