Delft-FEWS NL Gebruikersdag 2021 - deel 2
Contentverzamelaar
Er trad een fout op tijdens de verwerking van de sjabloon.
Java method "nl.deltares.portal.utils.impl.DsdParserUtilsImpl.getRegistration(long, String)" threw an exception when invoked on nl.deltares.portal.utils.impl.DsdParserUtilsImpl object "nl.deltares.portal.utils.impl.DsdParserUtilsImpl@7fa6da27"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign registration = dsdParserUtils... [in template "3948845#3948893#SESSION-1.0.1" at line 31, column 1] ----
1<style xmlns="http://www.w3.org/1999/html">
2 .videoThumbnail {
3 width: 250px;
4 border: 1px solid grey;
5 }
6
7 .icon-film {
8 line-height: 72px;
9 padding: 21px;
10 border: 1px solid grey;
11 }
12
13 .presentation {
14 margin-bottom: 24px;
15 }
16
17 .presentation_title {
18 display: inline-block;
19 min-width: 50%;
20 vertical-align: middle;
21 max-width: calc(100% - 300px);
22 }
23
24</style>
25
26<#assign dsdParserUtils = serviceLocator.findService("nl.deltares.portal.utils.DsdParserUtils") />
27<#assign dsdSessionUtils = serviceLocator.findService("nl.deltares.portal.utils.DsdSessionUtils") />
28<#assign dsdJournalArticleUtils = serviceLocator.findService("nl.deltares.portal.utils.DsdJournalArticleUtils") />
29<#assign articleId = .vars['reserved-article-id'].getData() />
30<#assign urltitle=.vars['reserved-article-url-title'].data />
31<#assign registration = dsdParserUtils.getRegistration(groupId,articleId) />
32<#assign displayContext = dsdParserUtils.getDisplayContextInstance(articleId, themeDisplay) />
33<#assign timeZoneId = registration.getTimeZoneId() />
34<#assign timeZone = timeZoneUtil.getTimeZone(timeZoneId) />
35<#assign room = registration.getRoom() />
36<#if registration.isEventInPast() >
37 <#assign isEventPast = "past-event"/>
38<#else>
39 <#assign isEventPast = "upcoming-event"/>
40</#if>
41<#assign typeMap = dsdJournalArticleUtils.getStructureFieldOptions(groupId,"SESSION","registrationType", registration.getLocale()) />
42<#if typeMap?? >
43 <#assign typeDisplayName = typeMap[registration.getType()] />
44<#else>
45 <#assign typeDisplayName = registration.getType() />
46</#if>
47<#assign calDescription = "">
48
49<#assign price = registration.getPrice() />
50<#assign vat = registration.getVAT() />
51<#assign registrations = dsdSessionUtils.getRegistrationCount(registration) />
52<#assign available = registration.getCapacity() - registrations />
53
54<div class="c-sessions page">
55 <div class="c-sessions__item ${isEventPast}">
56 <div class="clearfix">
57
58 <div class="data-section">
59 <div class="c-sessions__item__date">
60 <span>${dateUtil.getDate(registration.getStartTime(), "dd", locale, timeZone)}</span>
61 ${dateUtil.getDate(registration.getStartTime(), "MMM", locale, timeZone)}
62 </div>
63 <h3 class="c-sessions__item__title h1">${registration.getTitle()}</h3>
64
65 <div class="media-section">
66 <img class="c-sessions__item__image" src="${displayContext.getSmallImageURL()}" alt="${registration.getTitle()}" style="max-width:400px;max-height:400px;"/>
67 </div>
68 <#assign calDescription += (registration.getTitle() + "<br/>") />
69 <#if !registration.isOpen() || registration.isEventInPast() >
70 <b>${languageUtil.get(locale, "dsd.theme.session.closed")}</b>
71 </#if>
72 <p class="c-sessions__item__time-date-place">
73 <#if registration.isMultiDayEvent() >
74 <#if registration.isDaily() >
75 <#assign dateString = dateUtil.getDate(registration.getStartTime(), "dd MMM yyyy", locale, timeZone)
76 + " - " + dateUtil.getDate(registration.getEndTime(), "dd MMM yyyy", locale, timeZone) />
77 <#assign timeString = displayContext.getStartTime() + " - " + displayContext.getEndTime() + " (" + timeZoneId + ")" />
78 <span class="c-sessions__item__time-date-place__date">
79 ${dateString}
80 </span>
81 <span class="c-sessions__item__time-date-place__time">
82 ${timeString}
83 </span>
84 <#else>
85 <#assign periods = registration.getStartAndEndTimesPerDay() />
86 <#list periods as period >
87 <#assign dateString = dateUtil.getDate(period.getStartDate(), "dd MMM yyyy", locale, timeZone) />
88 <#assign timeString = dateUtil.getDate(registration.getStartTime(), "HH:mm", locale, timeZone)
89 + " - " + dateUtil.getDate(registration.getEndTime(), "HH:mm", locale, timeZone)
90 + " (" + timeZoneId + ")" />
91 <span class="c-sessions__item__time-date-place__date">
92 ${dateString}
93 </span>
94 <span class="c-sessions__item__time-date-place__time">
95 ${timeString}
96 </span>
97 </#list>
98 </#if>
99 <#else>
100 <#assign dateString = dateUtil.getDate(registration.getStartTime(), "dd MMM yyyy", locale, timeZone) />
101 <#assign timeString = displayContext.getStartTime() + " - " + displayContext.getEndTime() + " (" + timeZone.getID() + ")" />
102 <span class="c-sessions__item__time-date-place__date">
103 ${dateString}
104 </span>
105 <span class="c-sessions__item__time-date-place__time">
106 ${timeString}
107 </span>
108 </#if>
109 <br/>
110 <span class="c-sessions__item__time-date-place__place">
111 <img src="${themeDisplay.getPathThemeImages()}/dsd/${registration.getType()?lower_case}.png"
112 alt=""> ${typeDisplayName} </img>
113 <#assign calDescription += typeDisplayName + "<br/>"/>
114 <br/>
115 <#if registration.isOpen() && !registration.isEventInPast() >
116 <br/>
117 ${registration.getCurrency()}
118 <#assign calDescription += registration.getCurrency()/>
119 <#if price == 0 >
120 ${languageUtil.get(locale, "dsd.theme.session.free")}
121 <#assign calDescription += (languageUtil.get(locale, "dsd.theme.session.free") + "<br/>") />
122 <#else>
123 <#assign vatText = languageUtil.get(locale, "dsd.theme.session.vat")?replace("%d", vat) />
124 ${registration.getPrice()} (${vatText})
125 <#assign calDescription += (registration.getPrice() + " " + vatText + "<br/>") />
126 </#if>
127 <br/>
128
129 <#if registration.getEventId() gt 0 >
130 <#assign event = dsdParserUtils.getEvent(groupId, registration.getEventId()?string) />
131 </#if>
132
133 ${languageUtil.get(locale, "dsd.theme.session.room")} :
134 <#if room??>
135
136 ${room.getTitle()}
137 <#if event?? && event.findBuilding(room)?? >
138 <#assign building = event.findBuilding(room) />
139 - ${languageUtil.get(locale, "dsd.theme.session.building")} : ${building.getTitle()}
140 </#if>
141 </#if>
142 <br/>
143 ${languageUtil.get(locale, "dsd.theme.session.available")} : ${available}
144 </#if>
145
146 </span>
147 <br/>
148
149 <#list registration.getPresenters() as presenter >
150 <#assign expert = presenter />
151 <#assign expertImageUrl = expert.getSmallImageURL(themeDisplay) />
152 <span>
153 <#if expertImageUrl?? && expertImageUrl != "">
154 <img class="expert-data__image" src="${expertImageUrl}"/>
155 </#if>
156 <a href="mailto:${expert.getEmail()}">${expert.getName()}</a>
157 </span>
158 </#list>
159 <#assign isRegistered = dsdSessionUtils.isUserRegisteredFor(user, registration) />
160 <span class="d-block">
161 <#if registration.canUserRegister(user.getUserId()) && themeDisplay.isSignedIn()>
162 <#if isRegistered >
163 <a href="${displayContext.getUnregisterURL(renderRequest)}" class="btn-lg btn-primary"
164 role="button" aria-pressed="true">
165 ${languageUtil.get(locale, "registrationform.unregister")}
166 </a>
167
168 <a href="${displayContext.getUpdateURL(renderRequest)}" class="btn-lg btn-primary"
169 role="button" aria-pressed="true">
170 ${languageUtil.get(locale, "registrationform.update")}
171 </a>
172
173 <#elseif available gt 0 >
174 <a href="#" data-article-id="${articleId}" class="btn-lg btn-primary add-to-cart"
175 role="button" aria-pressed="true">
176 ${languageUtil.get(locale, "shopping.cart.add")}
177 </a>
178 </#if>
179 </#if>
180 <#assign joinLink = dsdSessionUtils.getUserJoinLink(user, registration) />
181 <#if joinLink?? && joinLink != "">
182 <a href="${joinLink}" target="-_blank" class="btn-lg btn-primary" role="button"
183 aria-pressed="true">
184 ${languageUtil.get(locale, "registrationform.join")}
185 </a>
186 <#assign calDescription += (languageUtil.get(locale, "registrationform.join") + ": " + joinLink )/>
187 </#if>
188 <div class="add-to-calendar c-session__item__calendar"></div>
189 </span>
190 </div>
191 </div>
192 </div>
193 <div class="c-sessions__item__description">
194 ${description.getData()}
195 </div>
196
197 <#if schedules?? && schedules.getSiblings()?has_content && validator.isNotNull(schedules.getSiblings()?first.getData())>
198
199 <#list schedules.getSiblings() as cur_Schedule>
200 <#if cur_Schedule.scheduleDate?has_content >
201 <h3 class="c-sessions__item__title h1">
202 <#assign schedules_date_Data = getterUtil.getString(cur_Schedule.scheduleDate.getData())>
203 <#if validator.isNotNull(schedules_date_Data)>
204 <#assign schedules_date_DateObj = dateUtil.parseDate("yyyy-MM-dd", schedules_date_Data, locale)>
205 ${languageUtil.get(locale, "dsd.theme.session.schedule")} -
206 ${dateUtil.getDate(schedules_date_DateObj, "dd MMM yyyy", locale, timeZone)}
207 </#if>
208 </h3>
209 </#if>
210 <div class="c-sessions__item__description">
211 ${cur_Schedule.getData()}
212 </div>
213 </#list>
214
215 </#if>
216 <#if (registration.getPresentations()?size > 0) >
217 <div class="c-events__item__uploads">
218 <p class="bold">${languageUtil.get(locale, "dsd.theme.session.presentations")}</p>
219 <#list registration.getPresentations() as presentation>
220
221 <#if presentation.isDownloadLink() >
222 <#assign iconClass = "icon-download-alt" />
223 <#else >
224 <#assign iconClass = "icon-film" />
225 </#if>
226
227 <#if presentation.getThumbnailLink()?? >
228 <#assign thumbnail = presentation.getThumbnailLink() />
229 <#else>
230 <#assign thumbnail = "" />
231 </#if>
232
233 <#assign viewURL = displayContext.getViewURL(presentation) />
234
235 <div class="presentation">
236 <a href="${viewURL}">
237 <#if thumbnail?? && thumbnail != "">
238 <img class="videoThumbnail" src="${thumbnail}" alt="${presentation.getTitle()}"/>
239 <#else>
240 <i class=${iconClass}></i>
241 </#if>
242 <div class="presentation_title">
243 <strong>${presentation.getTitle()}</strong>
244 </div>
245 </a>
246 <#if presentation.getPresenter() != "" >
247 <div>
248 >
249 <span>${presentation.getPresenter()}</span>
250 <span>(${presentation.getOrganization()})</span>
251 </div>
252 </#if>
253 </div>
254 </div>
255 </#list>
256</div>
257</#if>
258</div>
259<script>
260 var myCalendar = createCalendar({
261 options: {
262 class: '',
263 id: '${articleId}' // You need to pass an ID. If you don't, one will be generated for you.
264 },
265 data: {
266 title: '${registration.getTitle()}', // Event title
267 start: new Date(${registration.getStartTime()?long}),
268 end: new Date(${registration.getEndTime()?long}),
269 // If an end time is set, this will take precedence over duration
270 address: '${registration.getRoom().getTitle()}',
271
272 description: '${calDescription}'
273 }
274 });
275
276 document.querySelector('.add-to-calendar').appendChild(myCalendar);
277
278</script>
Registratie DSD-NL
REGISTRATIE
- Log in (rechtsboven) met uw MyDeltares-account of registreer u eerst als u nog geen account heeft.
Let op: als u al een DSD- of OSS-account heeft, maar nog geen MyDeltares-account, klik dan op Wachtwoord vergeten? om uw MyDeltares-account in te stellen. Nadat u het proces voor het opnieuw instellen van uw wachtwoord hebt voltooid, kunt u inloggen.
- Klik op de knop <IN WINKELWAGEN> voor de gewenste sessie.
- Ga naar uw “Winkelwagen” (rechterbovenhoek) om uw registratie af te ronden.
Mocht u problemen ondervinden bij de registratie, neem dan contact op met ons team via mydeltares@deltares.nl.