Kalender - LEO Potsdam
Kalender
Kalender von LEO Potsdam
Asset-Herausgeber
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing: ==> datum [in template "10154#10194#28933906" at line 109, column 30] ---- 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 datumEnde = datum [in template "10154#10194#28933906" at line 109, column 9] ----
1<#-- LR7.2 Version 18.05.2021 Armin J. Gaul -->
2
3<#assign defaultTeilnehmerliste = "Teilnehmer Clubveranstaltungen" />
4
5<#assign datumUeberschrift = "">
6<#assign datumUeberschriftNeu = "">
7
8<style>
9 .attendance-submit-button {
10 width: 2.5em;
11 height: 2.5em;
12 line-height: 2.5em;
13 font-size: 2em;
14 margin: 2px;
15 text-align: center;
16 vertical-align: middle;
17 }
18 .attendance-submit-button.disabled {
19 background-color: lightgrey !important;
20 color: grey;
21 }
22 .attendance-submit-button.green {
23 background-color: lightgreen;
24 }
25 .attendance-submit-button.yellow {
26 background-color: yellow;
27 }
28 .attendance-submit-button.red {
29 background-color: red;
30 }
31</style>
32
33<div class="assets asset-theme-1 lions-events lions-events-list-c-my-agenda">
34
35
36
37 <#-- Anfang: nur für angemeldete User können Ihren persönlichen Kalender sehen -->
38 <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
39 <#assign themeDisplay = serviceContext.getThemeDisplay() />
40 <#assign is_signed_in = themeDisplay.isSignedIn() />
41
42 <#if !is_signed_in>
43 <div class="portlet-msg-alert"><b>Bitte loggen Sie sich im System lions.de ein, um Ihren persönlichen Terminplan anzuzeigen! </b><br />
44 Der EINLOGGEN Button befindet sich oben rechts!</div>
45 </#if>
46
47 <#-- ENDE: nur für angemeldete User können Ihren persönlichen Kalender sehen -->
48
49
50
51
52
53
54
55 <#if entries?has_content>
56 <#list entries as entry>
57 <#assign
58 entry = entry
59
60 assetRenderer = entry.getAssetRenderer()
61
62 entryTitle = htmlUtil.escape(assetRenderer.getTitle(locale))
63
64 viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, entry, !stringUtil.equals(assetLinkBehavior, "showFullContent"))
65 />
66 <!-- entry -->
67 <#if entry.getClassNameId() == 10109>
68
69 <#if entry.getAssetRenderer()?? && assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry)?? && saxReaderUtil.read(entry.getAssetRenderer().getArticle().getContent())?? >
70 <#assign assetRenderer = entry.getAssetRenderer()?? />
71 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) />
72 <#assign docXml = saxReaderUtil.read(entry.getAssetRenderer().getArticle().getContent()) />
73
74
75
76
77 <#assign untertitel = docXml.valueOf("//dynamic-element[@name='Untertitel']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
78
79
80
81 <#assign teaser_text = docXml.valueOf("//dynamic-element[@name='Teaser_Text']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
82
83
84
85 <#assign zeitZone = docXml.valueOf("//dynamic-element[@name='ZeitzoneVeranstaltung']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
86
87
88
89
90 <#assign Datumawhc_Data = docXml.valueOf("//dynamic-element[@name='Datumawhc']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
91 <#if validator.isNotNull(Datumawhc_Data)>
92 <#assign Datumawhc_DateObj = dateUtil.parseDate("yyyy-MM-dd", Datumawhc_Data, locale)>
93
94 <#assign datum = dateUtil.getDate(Datumawhc_DateObj, "d. MMM yyyy", locale)>
95 <#assign datumGueltigB = dateUtil.getDate(Datumawhc_DateObj, "yyyy-MM-dd", locale)>
96
97 <#assign datumUeberschriftNeu = dateUtil.getDate(Datumawhc_DateObj, "d. MMM yyyy", locale)>
98 </#if>
99
100
101 <#assign DatumawhcDatumEnde_Data = docXml.valueOf("//dynamic-element[@name='DatumEnde']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
102 <#if validator.isNotNull(DatumawhcDatumEnde_Data)>
103 <#assign DatumawhcDatumEnde_DateObj = dateUtil.parseDate("yyyy-MM-dd", DatumawhcDatumEnde_Data, locale)>
104
105 <#assign datumEnde = dateUtil.getDate(DatumawhcDatumEnde_DateObj, "d. MMM yyyy", locale)>
106 <#assign datumGueltigE = dateUtil.getDate(DatumawhcDatumEnde_DateObj, "yyyy-MM-dd", locale)>
107
108 <#else>
109 <#assign datumEnde = datum>
110 <#assign datumGueltigE = datumGueltigB>
111 </#if>
112
113
114
115
116 <#assign uhrzeit = docXml.valueOf("//dynamic-element[@name='Uhrzeit']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
117 <#if uhrzeit?length == 1><#assign uhrzeit = "000" + uhrzeit ></#if>
118 <#if uhrzeit?length == 2><#assign uhrzeit = "00" + uhrzeit ></#if>
119 <#if uhrzeit?length == 3><#assign uhrzeit = "0" + uhrzeit ></#if>
120
121
122 <#assign einlass = docXml.valueOf("//dynamic-element[@name='Einlass']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
123 <#if einlass?length == 1><#assign einlass = "000" + einlass ></#if>
124 <#if einlass?length == 2><#assign einlass = "00" + einlass ></#if>
125 <#if einlass?length == 3><#assign einlass = "0" + einlass ></#if>
126
127
128 <#assign ende = docXml.valueOf("//dynamic-element[@name='EndeZeit']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
129 <#if ende?length == 1><#assign ende = "000" + ende ></#if>
130 <#if ende?length == 2><#assign ende = "00" + ende ></#if>
131 <#if ende?length == 3><#assign ende = "0" + ende ></#if>
132
133
134
135
136 <#assign artikel_text = docXml.valueOf("//dynamic-element[@name='Page'][1]/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
137 <#assign bild = docXml.valueOf("//dynamic-element[@name='Page'][1]/dynamic-element[@name='Bild']/dynamic-content[@language-id='${locale}']/text()") />
138 <#assign alternativtext_bild = docXml.valueOf("//dynamic-element[@name='Page'][1]/dynamic-element[@name='Alternativtext_Bild']/dynamic-content[@language-id='${locale}']/text()") />
139 <#assign bildtext = docXml.valueOf("//dynamic-element[@name='Page'][1]/dynamic-element[@name='Bildtext']/dynamic-content[@language-id='${locale}']/text()") />
140 <#assign bildausrichtung = docXml.valueOf("//dynamic-element[@name='Page'][1]/dynamic-element[@name='Bildausrichtung']/dynamic-content[@language-id='${locale}']/text()") />
141 <#assign lightbox_anzeigen = docXml.valueOf("//dynamic-element[@name='Page'][1]/dynamic-element[@name='lightbox_anzeigen']/dynamic-content[@language-id='${locale}']/text()") />
142
143
144
145 <#if validator.isNotNull(ende)>
146 <#assign gueltigBis = datumGueltigE + " " + ende>
147 <#else>
148 <#assign gueltigBis = datumGueltigE + " 2359">
149 </#if>
150
151
152 <#assign gueltigBis_DateObj = dateUtil.parseDate("yyyy-MM-dd HHmm", gueltigBis, locale)>
153 <#assign gueltigBis_Date = dateUtil.getDate(gueltigBis_DateObj, "yyyy-MM-dd HH:mm:ss", locale)>
154
155 <#setting time_zone = zeitZone >
156 <#setting datetime_format='yyyy-MM-dd HH:mm:ss'>
157 <#assign gueltigBis_Date = gueltigBis_Date?datetime?iso_utc>
158 <#assign vergleichsZeit = .now?datetime?iso_utc>
159
160 <#if vergleichsZeit?date("yyyy-MM-dd'T'HH:mm:ss") <= gueltigBis_Date?date("yyyy-MM-dd'T'HH:mm:ss")>
161 <#assign anzeigen = "ja">
162 <#else>
163 <#assign anzeigen = "nein">
164 </#if>
165
166
167 <#-- nur meine Termine anzeigen -->
168
169
170 <#-- Hier erfolgt die Prüfung der Teilnahme -->
171
172 <#-- Record Set auswählen -->
173 <#assign recordSetId = 0 >
174
175 <#-- nur für angemeldete User nach der Teinehmerliste sehen -->
176 <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
177 <#assign themeDisplay = serviceContext.getThemeDisplay() />
178 <#assign is_signed_in = themeDisplay.isSignedIn() />
179 <#if is_signed_in>
180
181 <#assign nrTeilnehmerliste = docXml.valueOf("//dynamic-element[@name='nrTeilnehmerliste']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
182
183 <#-- ${nrTeilnehmerliste} -->
184
185 <#if nrTeilnehmerliste?? && nrTeilnehmerliste !="" >
186 <#assign recordSetId = nrTeilnehmerliste?number>
187 </#if>
188
189 </#if>
190
191 <#-- ${recordSetId} -->
192
193 <#if recordSetId != 0>
194
195 <#assign DDLRecordLocalService = serviceLocator.findService("com.liferay.dynamic.data.lists.service.DDLRecordLocalService")>
196 <#assign records = DDLRecordLocalService.getRecords(recordSetId)>
197
198
199 <#-- Eigene Rückmeldung prüfen -->
200
201 <#-- noch ist kein eigener Record gefunden, d.h. ID auf 0 setzen -->
202 <#assign myRecord = 0 >
203
204 <#-- ${entry}
205 ${entryTitle}
206 ${viewURL} -->
207 <#assign articleId = (entry.getAssetRenderer().getArticle().getArticleId()) >
208 <#-- Debug Info
209 ${entry.getAssetRenderer().getArticle().getArticleId()}
210 ${articleId}
211 -->
212
213
214 <#-- prüfen, ob es eine Rückmeldung des angemeldeten Users gibt -->
215 <#if records?has_content>
216
217 <#assign auswahlGetroffen = false >
218 <#list records as cur_record>
219 <#if (cur_record.getDDMFormFieldValues("Veranstaltung")?? && cur_record.getDDMFormFieldValues("Veranstaltung")?first.getValue().getString(locale) == articleId) && (cur_record.userId == user.userId) >
220 <#assign entscheidung = cur_record.getDDMFormFieldValues("Teilnahme")?first.getValue().getString(locale)>
221
222 <#-- ${entscheidung} -->
223
224
225
226 <#-- neu -->
227 <#assign partnerGastName = "" >
228 <#if cur_record.getDDMFormFieldValues("Name")?? >
229 <#assign partnerGastName = cur_record.getDDMFormFieldValues("Name")?first.getValue().getString(locale)>
230
231 <#-- ${partnerGastName}-->
232 </#if>
233
234 <#-- ${entscheidung} -->
235
236 <#if partnerGastName == "" >
237
238
239 <#if entscheidung == "ja" >
240 <#assign auswahlGetroffen = true >
241 <#elseif entscheidung == "vielleicht" >
242 <#assign auswahlGetroffen = true >
243 <#elseif entscheidung == "nein" >
244 <#assign auswahlGetroffen = true >
245 <#assign anzeigen = "nein">
246 </#if>
247
248 </#if> <#-- neu -->
249
250
251
252
253 </#if>
254 </#list>
255
256 <#if auswahlGetroffen == false >
257 <#assign anzeigen = "nein">
258 </#if>
259
260 </#if>
261 </#if>
262
263
264
265 <#-- Ende nur meine Termine anzeigen -->
266
267
268 <#if anzeigen == "ja">
269
270 <#-- Hier beginnt die Ausgabe des Termininhaltes -->
271
272
273
274 <#if datumUeberschrift != datumUeberschriftNeu>
275 <div class="asset asset_news">
276
277 <div class="asset_text">
278 <#assign datumUeberschrift = datumUeberschriftNeu>
279 <h4 class="asset_headline">${datumUeberschrift}</h4>
280
281 <div class="clear"></div>
282
283 </div>
284 </div>
285
286 </#if>
287
288
289
290
291
292
293
294 <div class="asset asset_news">
295
296
297 <table width = 100%>
298 <tr>
299 <td width = 90%>
300
301
302
303
304 <div class="asset_text">
305
306 <#assign terminZeit = datum>
307 <#if validator.isNotNull(uhrzeit) >
308 <#assign terminZeit = terminZeit + ": " + uhrzeit?substring(0,2) +":"+uhrzeit?substring(2)>
309 </#if>
310 <#if datum != datumEnde || validator.isNotNull(uhrzeit)>
311 <#assign terminZeit = terminZeit + " - ">
312 </#if>
313
314 <#if datum != datumEnde >
315 <#assign terminZeit = terminZeit + datumEnde>
316 </#if>
317
318 <#if datum != datumEnde && validator.isNotNull(ende)>
319 <#assign terminZeit = terminZeit + ": ">
320 </#if>
321
322 <#if validator.isNotNull(ende)>
323 <#assign terminZeit = terminZeit + ende?substring(0,2) +":"+ende?substring(2)>
324 </#if>
325
326
327
328 <h5 class="asset_headline"><b>${terminZeit}</b></h5>
329
330
331 <div class="text"><b>${entry.getTitle(locale)}</b></div>
332
333 <#assign teaser_text_length = teaser_text?length>
334 <#assign artikel_text_length = artikel_text?length>
335 <#assign maxLength = 300>
336
337 <#if teaser_text?has_content>
338 <#if teaser_text_length < maxLength>
339 <p><div class="text">${teaser_text}</div></p>
340 <#else>
341 <div class="text">${teaser_text?substring(0,maxLength-1)}...</div>
342 </#if>
343 <#else>
344 <#if artikel_text_length < maxLength>
345 <div class="text">${artikel_text}</div>
346 <#else>
347 <div class="text">${artikel_text?substring(0,maxLength-1)}...</div>
348 </#if>
349 </#if>
350
351 <#assign viewInContext = false>
352
353 <#if assetLinkBehavior??>
354 <#if assetLinkBehavior == "viewInPortlet">
355 <#assign viewInContext = true>
356 </#if>
357 </#if>
358 ${request.setAttribute("view.jsp-showIconLabel", false)}
359
360 <a class="anc_more" href="${viewURL}"><@liferay.language key="read-more" /></a>
361
362
363
364 </div>
365 <div class="clear"></div>
366 </div>
367
368
369 </td>
370 <td width = 10%>
371 <#-- Hier erfolgt die Prüfung der Teilnahme -->
372
373 <#-- Record Set auswählen -->
374 <#assign recordSetId = 0 >
375
376 <#-- nur für angemeldete User nach der Teinehmerliste sehen -->
377 <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
378 <#assign themeDisplay = serviceContext.getThemeDisplay() />
379 <#assign is_signed_in = themeDisplay.isSignedIn() />
380 <#if is_signed_in>
381
382 <#assign nrTeilnehmerliste = docXml.valueOf("//dynamic-element[@name='nrTeilnehmerliste']/dynamic-content[@language-id='${locale}']/text()")?replace("</?[^>]+(>|$)", "", "r") />
383
384 <#-- ${nrTeilnehmerliste} -->
385
386 <#if nrTeilnehmerliste?? && nrTeilnehmerliste !="" >
387 <#assign recordSetId = nrTeilnehmerliste?number>
388
389
390 <#-- Start TEST auf gültige Teilnehmerliste -->
391 <#assign gueltigeRecordSetId = false>
392 <#if recordSetId gt 0>
393 <#assign DDLRecordSetLocalService = serviceLocator.findService("com.liferay.dynamic.data.lists.service.DDLRecordSetLocalService")>
394 <#assign recordSets = DDLRecordSetLocalService.getRecordSets(groupId)>
395 <#list recordSets as cur_recordSet>
396 <#if cur_recordSet.recordSetId == recordSetId>
397 <#assign gueltigeRecordSetId = true>
398 </#if>
399 </#list>
400 <#else>
401 <#assign DDLRecordSetLocalService = serviceLocator.findService("com.liferay.dynamic.data.lists.service.DDLRecordSetLocalService")>
402 <#assign recordSets = DDLRecordSetLocalService.getRecordSets(groupId)>
403 <#list recordSets as cur_recordSet>
404 <#if cur_recordSet.name?trim?last_index_of(defaultTeilnehmerliste) gt 0 >
405 <#assign recordSetId = cur_recordSet.recordSetId >
406 <#assign gueltigeRecordSetId = true>
407 <#-- ${recordSetId} -->
408 </#if>
409 </#list>
410 </#if>
411
412 <#if !gueltigeRecordSetId >
413 <div class="portlet-msg-alert"><h3><b>Konfigurationsfehler!</b></h3><b>
414 Bitte geben Sie eine korrekte Nummer der Teilnehmerliste ein!</b><br>
415 <u>Mögliche Werte sind:</u><br>
416 <#list recordSets as cur_recordSet>
417 ${cur_recordSet.recordSetId}: ${cur_recordSet.name}<br>
418 </#list>
419 sowie<br>
420 0: automatische Auswahl der Liste mit dem Namen "${defaultTeilnehmerliste}"
421 </div>
422 </#if>
423
424
425 <#-- Ende TEST auf gültige Teilnehmerliste -->
426
427
428
429 </#if>
430
431 </#if>
432
433 <#-- ${recordSetId} -->
434
435 <#if recordSetId != 0>
436
437 <#assign DDLRecordLocalService = serviceLocator.findService("com.liferay.dynamic.data.lists.service.DDLRecordLocalService")>
438 <#assign records = DDLRecordLocalService.getRecords(recordSetId)>
439
440
441 <#-- Eigene Rückmeldung prüfen -->
442
443 <#-- noch ist kein eigener Record gefunden, d.h. ID auf 0 setzen -->
444 <#assign myRecord = 0 >
445
446 <#-- ${entry}
447 ${entryTitle}
448 ${viewURL} -->
449 <#assign articleId = (entry.getAssetRenderer().getArticle().getArticleId()) >
450 <#-- Debug Info
451 ${entry.getAssetRenderer().getArticle().getArticleId()}
452 ${articleId}
453 -->
454
455
456 <#-- prüfen, ob es eine Rückmeldung des angemeldeten Users gibt -->
457 <#if records?has_content>
458
459 <#assign auswahlGetroffen = false >
460 <#list records as cur_record>
461 <#if (cur_record.getDDMFormFieldValues("Veranstaltung")?? && cur_record.getDDMFormFieldValues("Veranstaltung")?first.getValue().getString(locale) == articleId) && (cur_record.userId == user.userId) >
462 <#assign entscheidung = cur_record.getDDMFormFieldValues("Teilnahme")?first.getValue().getString(locale)>
463
464 <#-- ${entscheidung} -->
465
466
467 <#assign partnerGastName = "" >
468 <#if cur_record.getDDMFormFieldValues("Name")?? >
469 <#assign partnerGastName = cur_record.getDDMFormFieldValues("Name")?first.getValue().getString(locale)>
470
471 <#-- ${partnerGastName}-->
472 </#if>
473
474 <#if partnerGastName == "" >
475
476 <a href="${viewURL}#rueckmeldung">
477
478
479 <#if entscheidung == "ja" >
480 <div class="attendance-submit-button green"> <i class="icon-ok"></i></div>
481 <#assign auswahlGetroffen = true >
482 <#elseif entscheidung == "vielleicht" >
483 <div class="attendance-submit-button yellow"> <i class="icon-circle-blank"></i></div>
484 <#assign auswahlGetroffen = true >
485 <#elseif entscheidung == "nein" >
486 <div class="attendance-submit-button red" > <i class="icon-remove"></i></div>
487 <#assign auswahlGetroffen = true >
488 </#if>
489
490 </a>
491
492 </#if>
493
494 </#if>
495 </#list>
496
497
498 <#if auswahlGetroffen == false >
499 <a href="${viewURL}#rueckmeldung">
500 <div class="attendance-submit-button green disabled"><<b>?</b>/div>
501 </a>
502 </#if>
503
504
505 </#if>
506
507 </#if>
508
509
510
511 </td>
512 </tr>
513 </table>
514
515
516 <div class="clear"></div>
517</div>
518
519
520 <#-- Hier endet die Ausgabe des Termininhaltes -->
521
522
523
524
525 </#if>
526
527<#else>
528 <p>This Content produces a bug!!! Please contact the Administrator!</p>
529 </#if>
530<#else>
531 <#assign assetRenderer = entry.getAssetRenderer() />
532 <#assign entryTitle = htmlUtil.escape(assetRenderer.getTitle(locale)) />
533 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) />
534
535 <#if assetLinkBehavior??>
536 <#if assetLinkBehavior != "showFullContent">
537 <#assign viewURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) />
538 </#if>
539 </#if>
540 <div class="asset-abstract">
541
542 <h3 class="asset-title">
543 <a href="${viewURL}"><img alt="" src="${assetRenderer.getIconPath(renderRequest)}" />${entryTitle}</a>
544 </h3>
545
546 <div class="asset-content">
547
548 <div class="asset-summary">
549 ${htmlUtil.escape(assetRenderer.getSummary(locale))}
550
551 <a href="${viewURL}"><@liferay.language key="read-more" /><span class="hide-accessible"><@liferay.language key="about" />${entryTitle}</span> »</a>
552 </div>
553 </div>
554 </div>
555
556 </#if>
557
558
559
560
561
562
563
564 </#list>
565<#else>
566 <p>Sorry, there are no entries to display!</p>
567</#if>
568</div>