Kalender - LEO Potsdam
Kalender
Asset-Herausgeber
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>
Lions Cookie Disclaimer
Cookie-Einstellungen
Auf unserer Webseite setzen wir Cookies ein, um Informationen über Ihren Besuch zu speichern.
Cookies, darunter die von Drittanbietern, helfen uns, unsere Website zu verbessern, um Ihren Besuch auf unserer Webseite zum einen so komfortabel wie möglich zu gestalten, und zum anderen Ihnen auf Ihre Interessen zugeschnittene Angebote zu unterbreiten.
Detaillierte Informationen zu unserem Einsatz von Cookies erhalten Sie durch einen Klick auf „Details anzeigen“ oder in unserer Datenschutzerklärung – hier geben wir Ihnen auch Hinweise, wie Sie die Einstellungen gemäß Ihren Vorstellungen verwalten können. Unsere Kontaktdaten finden Sie im Impressum.
Notwendig
Diese Cookies sind für den Betrieb der Seite unbedingt notwendig.
Externe Inhalte
Diese Option ermöglicht es Ihnen, extern eingebundene Inhalte z.B. von Youtube unmittelbar abrufen zu können.