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