Nextcloud-Kalender in Moodle per URL importieren

Wir pflegen unseren Schulkalender in Nextcloud (mit einem extra dafür eingereichteten Nutzer, damit beim Teilen nicht immer der Name des Kalenderpflegers erscheint).
Dieser Kalender ist für die Schulleitung schreibend, für das Kollegium lesend freigegeben.

Wir wollten ihn auch auf Moodle und unserer Homepage - da geht aber tatsächlich nur ein ICS-Abonnement (CalDAV ist eins der wenigen Dinge, die ich bei Moodle vermisse - ich kann es technisch allerdings nachvollziehen, da im Moodle-Kalender eben auch die Kurstermine liegen, trotzdem wäre das genial).

Da unser Kalender öffentlich ist, bedienen wir uns eines kleines, feinen Tools, mit dem ein Skript eine ICS-Datei aus dem Kalender macht:

#!/bin/bash
# https://github.com/BernieO/calcardbackup/blob/v0.8.7/README.md
# lang lebe freie Software! :-)

cal="corvi-Termine_(aktuell)"

# zu tmp wechseln (sonst rechteprobleme für www-data)
cd /tmp

# leeren evtl. alter terminplan-backups
rm -rf /tmp/ccb

# backup der kalender mit calcardbackup
sudo -u www-data /opt/calcardbackup/calcardbackup /opt/nextcloud -na -b -o /tmp/ccb -x -u /opt/calcardbackup/users.txt > /dev/null

# auswählen des richtigen Kalenders
find /tmp/ccb -name $cal.ics -exec mv -t /tmp/ccb {} + > /dev/null

# hänge leere zeilen an (sonst wird die letzte gelöscht)
sed -i -e '$a\\n' /tmp/ccb/$cal.ics

# entferne "CANCELLED"-Blöcke (yeah, SED!)
sed -e '/BEGIN:VEVENT/i\ ' -e '/END:VEVENT/a\ ' /tmp/ccb/$cal.ics | sed '/BEGIN:VEVENT/,/END:VEVENT/{H;d;};x;/STATUS:CANCELLED/d' | sed '/^ $/d'  > /var/www/html/termine.ics

# räume auf
rm -rf /tmp/ccb

Damit ist die ICS-Datei öffentlich lesbar und kann bei Moodle und auf unserer Homepage gepostet werden.

Wir haben auch noch ein kleines Flask-Programm geschrieben (war damals eine Fingerübung), um den Kalender auszulesen und in eine Listenform (zum Drucken, für Bildschirme, etc.) zu bringen - einsehbar unter https://termine.corvi.schule - bei Interesse stelle ich das auch mal zur Verfügung.

Viele Grüße
Thomas

3 „Gefällt mir“