OpenCalendar

Symcon Modul Version Symcon Version
License Check Style Run Tests exec-2745150d-8d12-4fbc-acab-0d2c7ff68cf3

OpenCalendar ist eine Anwendung für Symcon, mit der Nutzer ihre Online-Kalender verbinden, synchronisieren, anzeigen und bearbeiten können. Unterstützt werden Apple iCloud, Google Calendar, Microsoft 365/Outlook.com, generische CalDAV-Server sowie schreibgeschützte ICS-/Webcal-Abonnements. Die gefundenen Kalender können einzeln synchronisiert, in einer gemeinsamen Kachel angezeigt und optional als interaktive HTML-Seite in IPSView verwendet werden.

Umfangreiche Terminlisten werden intern seitenweise zwischen Konto, Kalender und Kalenderansicht übertragen. Online-ICS-/Webcal-Feeds und lokal importierte ICS-Dateien dürfen jeweils höchstens 16 MiB groß sein. Innerhalb dieser Grenze müssen umfangreiche Kalenderdateien nicht manuell aufgeteilt werden.

Datenschutz: Datenschutzhinweise Nutzungsbedingungen: Nutzungsbedingungen

Voraussetzungen

Schnellstart

  1. OpenCalendar über den Symcon Module Store installieren.
  2. Über Instanz hinzufügen eine Instanz Kalender Konto anlegen.
  3. Den gewünschten Anbieter auswählen und die angezeigten Zugangsdaten beziehungsweise den OAuth-Login einrichten.
  4. Verbindung testen ausführen. Erst bei erfolgreichem Test die Kontokonfiguration übernehmen.
  5. Jetzt synchronisieren ausführen, damit die verfügbaren Kalender gefunden werden.
  6. Über Instanz hinzufügen einen Kalender Konfigurator anlegen. Im Dialog das zuvor eingerichtete Kalender Konto als übergeordnete Instanz wählen. Ist bereits ein Konfigurator vorhanden, lässt sich die Verbindung über das Zahnrad und Gateway ändern kontrollieren oder anpassen.
  7. Den Konfigurator öffnen und Kalender aktualisieren verwenden. In der Liste die gewünschten Kalender über Erstellen beziehungsweise Alle erstellen anlegen.
  8. Optional eine Instanz Kalender Ansicht erstellen, die gewünschten Kalenderinstanzen auswählen und die Ansicht in der Kachelvisualisierung oder in IPSView platzieren.

Die ausführlichen Einstellungen der Anbieter sind in der Dokumentation des Kalender Kontos beschrieben.

IPSView-Stile

image

Die Kalender Ansicht verwendet für die optionale IPSView-Ausgabe das zentrale IPSView-Stilsystem aus Symcon_ModuleHelper. Die Stilquelle wird direkt in der Instanzkonfiguration gewählt. Zur Verfügung stehen ein vollständig benutzerdefinierter Stil, ein IPSView-Medienobjekt, ein Stilprofil (Style Profile V1) sowie die festen Vorgaben Helle Vorgabe, Dunkle Vorgabe, Hell, Dunkel, Warm, Kühl, Erdig, Wasser und Sonnig.

Bei einer Vorgabe zeigt die Konfiguration die tatsächlich wirksamen Farben, Deckkräfte, Schriftwerte, Rahmen- und Schattenparameter an. Diese Werte sind schreibgeschützt, damit die zuvor gespeicherten benutzerdefinierten Einstellungen nicht durch bloßes Ausprobieren eines Stils überschrieben werden. Mit In benutzerdefinierten Stil übernehmen kann die aktuelle Vorgabe vollständig als Ausgangspunkt kopiert und anschließend individuell verändert werden.

Zusätzlich bildet der gemeinsame IPSViewStyleConfigurationHelper die 109 nativen IPSView-Farbfelder in 15 Gruppen ab: Basis, Assoziationen, Tabs, Switch, Slider, Fortschrittsanzeige, Kreis, Flow, Gauge, Schatten/Raster, Dialog, Chart, Schedule, Event und Kalender. Die nativen Felder erben standardmäßig aus den semantischen Designrollen. Im benutzerdefinierten Stil kann jedes Feld einzeln mit Abweichend überschrieben werden. Eine manuelle Farbänderung aktiviert die Abweichung automatisch; beim Deaktivieren wird der Override entfernt und das Feld folgt wieder seinem geerbten Wert. Bei allen anderen Stilquellen werden die aufgelösten nativen Farben schreibgeschützt angezeigt.

ColorView und ColorPage bleiben dabei bewusst getrennt: ColorView steuert den Hintergrund der gesamten View, ColorPage den Seitenhintergrund. Fehlt in einem importierten .ipsView-Dokument ColorView, verwendet OpenCalendar dafür den nativen IPSView-Standard #404040; ColorPage wird nicht als Ersatz verwendet. Style Profile V1 kann neben den semantischen Designwerten auch native Overrides transportieren.

Die gemeinsame Typografie unterstützt die IPSView-Schriften Roboto, Roboto Mono, Open Sans, PT Sans, Dancing Script, Bebas Neue, Indie Flower und Segment7. Verfügbare Schriftschnitte werden abhängig von der jeweiligen Schrift angeboten und in der IPSView-Ausgabe einschließlich Normal/Fett und Kursiv korrekt angewendet.

OpenCalendar dient als Referenz-Consumer für Style Profile V1 aus dem IPSViewAssistant. Die Tests verwenden ein vom Assistant exportiertes vollständiges Referenzprofil und prüfen Farben samt unabhängigen Deckkräften, Typografie mit Schriftfamilie, Schriftschnitt, Größe und Skalierung, Rahmen und Linien sowie Schatten und Effekte. Das Profil bleibt dabei im zentralen kanonischen Format verlustfrei validier- und erneut serialisierbar.

Kalender- und Terminfarben bleiben fachliche Inhaltsfarben von OpenCalendar und werden nicht durch die globale IPSView-Stilquelle ersetzt. Die ausführliche Einrichtung befindet sich in der Dokumentation der Kalender Ansicht.

Anbieter im Überblick

Anbieter Benötigte Angaben Zugriff
Apple iCloud Apple-ID und anwendungsspezifisches Passwort Lesen und Schreiben entsprechend den Kalenderrechten
Google Calendar Öffentlich freigegebene und von Google verifizierte OpenCalendar-OAuth-Anwendung über Symcon Lesen und Schreiben entsprechend den Google-Kalenderrechten
Microsoft 365/Outlook.com Zentrale OpenCalendar-OAuth-Anwendung über Symcon Lesen und Schreiben entsprechend den Microsoft-Kalenderrechten
CalDAV Server-URL, Benutzername und Passwort Lesen und Schreiben entsprechend den Serverrechten
ICS/Webcal Eine oder mehrere Feed-URLs (öffentlich, Zugriffsschlüssel oder Benutzername/Passwort) oder lokale ICS-Dateien vom Arbeitsrechner Schreibgeschützt

Kalender immer über den Konfigurator anlegen

Kalender-Instanzen sollen ausschließlich aus der Liste des Kalender Konfigurators erstellt werden.

Der Konfigurator übernimmt automatisch den Kalendernamen, die interne Kalender-ID, die Anbieter-ID, die Farbe, die Schreibrechte und die Verbindung zum aktuell gewählten Kalender Konto. Manuell angelegte oder kopierte Kalender-Instanzen besitzen diese vollständige Identität nicht. Sie dürfen daher nicht lediglich über Gateway ändern mit einem Konto verbunden werden.

Nach der Erstellung dürfen Kalender-Instanzen im Objektbaum beliebig verschoben oder umbenannt werden. Ihre technische Zuordnung bleibt dabei erhalten.

Mehrere Kalenderkonten

Für mehrere Konten gibt es zwei unterstützte Arbeitsweisen:

Der Konfigurator zeigt immer nur Kalender und bestehende Kalender-Instanzen des aktuell verbundenen Kontos. Bereits erzeugte Kalender-Instanzen bleiben beim Wechsel mit ihrem ursprünglichen Konto verbunden und erscheinen wieder, sobald der Konfigurator erneut mit diesem Konto verbunden wird.

Diese Wiederverwendung entspricht dem von Symcon vorgesehenen Austausch einer übergeordneten Instanz. Die Kalender-Instanzen selbst werden weiterhin nur aus der aktuellen Konfiguratorliste erstellt. Weitere Hintergründe enthält die Dokumentation des Kalender Konfigurators.

Google-Serientermine

In beschreibbaren Google-Kalendern unterstützt OpenCalendar Serientermine vollständig im gemeinsamen Dialog-Workflow der Kachelvisualisierung und IPSView.

Microsoft-Serientermine

In beschreibbaren Microsoft-365-/Outlook.com-Kalendern können neue Terminserien mit demselben gemeinsamen Serieneditor wie bei Google angelegt werden. Unterstützt werden tägliche, wöchentliche, monatliche und jährliche Wiederholungen, Intervalle, mehrere Wochentage sowie die Endarten Nie, Nach Anzahl und Am Datum. Für zeitgebundene Serien wird die vom Client beziehungsweise über die PHP-API übergebene Zeitzone verwendet, damit Microsoft Graph die lokale Uhrzeit der Serie erhält. Einzelne Vorkommnisse bestehender Microsoft-Serien können gezielt bearbeitet oder gelöscht werden, ohne die übrigen Vorkommnisse der Serie zu ändern. Auch die gesamte Microsoft-Serie kann bearbeitet oder gelöscht werden. Beim Bearbeiten wird der Serien-Master geladen; Wiederholungsmuster, die dem gemeinsamen OpenCalendar-Serieneditor entsprechen, können dabei ebenfalls geändert werden. Diesen und alle folgenden Termine wird wie bei Google durch ein sicheres Teilen der Serie umgesetzt: Der bisherige Serienteil endet unmittelbar vor dem gewählten Vorkommnis und beim Bearbeiten wird ab dort eine neue Serie angelegt. Bei nummerierten Serien wird die verbleibende Anzahl übernommen. Beim Löschen wird nur der vordere Serienteil behalten. Bereits vorhandene Ausnahmen ab dem Trennpunkt werden beim Bearbeiten nicht in den neuen Serienteil übernommen. Komplexere Microsoft-Muster bleiben erhalten, werden aber nicht verlustbehaftet im Serieneditor vereinfacht.

Apple/iCloud- und CalDAV-Serientermine

Beschreibbare Apple-iCloud- und generische CalDAV-Kalender können neue Terminserien mit demselben gemeinsamen Serieneditor wie Google und Microsoft anlegen. Unterstützt werden tägliche, wöchentliche, monatliche und jährliche Wiederholungen, Intervalle, mehrere Wochentage sowie die Endarten Nie, Nach Anzahl und Am Datum.

OpenCalendar speichert die Serie als RFC-5545-RRULE im CalDAV-Kalenderobjekt. Zeitgebundene Serien werden mit der lokalen Zeitzone und einem passenden VTIMEZONE-Block geschrieben, damit die lokale Uhrzeit auch über Sommer-/Winterzeitwechsel erhalten bleibt. Apple iCloud verwendet denselben CalDAV-Pfad wie andere Server.

Zusätzlich können einzelne Vorkommnisse bestehender Apple-iCloud- und CalDAV-Serien bearbeitet und gelöscht werden. Beim Bearbeiten schreibt OpenCalendar eine RECURRENCE-ID-Ausnahme in das bestehende Kalenderobjekt; beim Löschen wird das ausgewählte Vorkommnis über EXDATE ausgeschlossen. Auch die vollständige Serie kann bearbeitet oder gelöscht werden. OpenCalendar lädt den Serien-Master dabei direkt über die bereits bekannte CalDAV-Ressource. Einfache RRULEs können im gemeinsamen Serieneditor geändert werden; komplexere Regeln bleiben erhalten und werden nicht verlustbehaftet vereinfacht.

Auch Diesen und alle folgenden Termine wird für unterstützte RRULEs verarbeitet. Beim Bearbeiten legt OpenCalendar ab dem gewählten Vorkommnis zuerst eine neue CalDAV-Serie an und kürzt anschließend die ursprüngliche Serie unmittelbar davor. Bei nummerierten Serien übernimmt der neue Teil nur die verbleibende Anzahl; vorhandene Ausnahmen ab dem Trennpunkt werden bewusst zurückgesetzt. Beim Löschen wird nur die ursprüngliche Serie vor dem gewählten Vorkommnis beendet. Beginnt die Auswahl mit dem ersten Vorkommnis, wird die bestehende Serie direkt geändert bzw. gelöscht, ohne einen zweiten Serienteil anzulegen.

Jahresereignisse

OpenCalendar kann jährlich wiederkehrende persönliche Ereignisse als Geburtstag, Jahrestag, Hochzeitstag oder Todestag verwalten. Der Typ und das ursprüngliche Ausgangsdatum werden als lokale OpenCalendar-Metadaten gespeichert; der Terminname beim Kalenderanbieter bleibt unverändert. In der Kachelvisualisierung und in IPSView wird die Zahl der vergangenen Jahre dynamisch ergänzt, beispielsweise Max Mustermann (33J).

Für Skripte stehen providerneutrale PHP-Funktionen zur Verfügung. Auf Ebene einer einzelnen Kalenderinstanz können Jahresereignisse mit IPSKAL_GetAnniversaryList() gelesen und mit IPSKAL_SetAnniversary() markiert oder geändert werden. IPSKAL_GetBirthdayList() bleibt als kompatibler Geburtstags-Spezialfall erhalten. Über die Kalender Ansicht liefert IPSKALVIEW_GetAnniversaryList() wahlweise alle ausgewählten Kalender oder eine bestimmte Kalenderinstanz und unterstützt sowohl einen frei wählbaren Zeitraum in Tagen als auch einen Filter nach Ereignistyp. Die vollständige Befehlsreferenz befindet sich in der Dokumentation der Module Kalender und Kalender Ansicht.

Aufgabentermine

OpenCalendar kann einen gewöhnlichen ganztägigen Termin als Aufgabentermin behandeln. Dafür wird keine Aufgaben-API des Anbieters und keine zusätzliche OAuth-Berechtigung benötigt. Der Eintrag bleibt technisch ein normaler Kalendertermin und verwendet ausschließlich die bereits vorhandenen Schreibrechte des gewählten Kalenders.

Beim Erstellen oder Bearbeiten wird im Termindialog Aufgabentermin aktiviert. Aufgabentermine sind bewusst ganztägig und dauern genau einen Tag. Sie dürfen auch wiederkehrend sein. OpenCalendar speichert den Status direkt und providerunabhängig am Anfang des Termintitels:

In der Kalenderansicht öffnet ein Klick auf den Eintrag die Termindetails. Dort kann die Aufgabe mit Als erledigt markieren abgeschlossen und mit Aufgabe wieder öffnen erneut aktiviert werden. Der eigentliche Titel wird im Editor ohne technischen Marker angezeigt. In Google Calendar, Outlook, Apple Calendar oder anderen Clients bleibt der ASCII-Marker dagegen sichtbar, sodass der Status auch außerhalb von OpenCalendar erkennbar ist. Wird der Marker dort manuell entfernt oder geändert, übernimmt OpenCalendar diese Änderung bei der nächsten Synchronisation. Die früher verwendeten grafischen Kästchen (☐, ☑) werden weiterhin erkannt und bei der nächsten Aufgabenänderung automatisch ersetzt.

Eine offene Aufgabe, deren Datum vor dem aktuellen lokalen Tag liegt, wird beim lokalen Tageswechsel und zusätzlich bei jeder Kalendersynchronisation auf den aktuellen Tag verschoben. Dadurch bleibt eine nicht erledigte Aufgabe täglich sichtbar. Erledigte Aufgaben werden nicht mehr verschoben und verbleiben an ihrem zuletzt erreichten Datum. Das Verschieben ändert den echten Termin beim Kalenderanbieter; es ist keine rein lokale Anzeige.

Bei einer Aufgabenserie entscheidet die Option Geplante Folgetermine mitverschieben: Ohne sie bleibt der reguläre Serienplan erhalten und nur das älteste überfällige Vorkommnis wird auf heute gezogen. Mit ihr verschiebt OpenCalendar den ab diesem Vorkommnis verbleibenden Serienteil gemeinsam. Diese Option wird nur bei Kalendern angeboten, die „diesen und alle folgenden Termine“ sicher bearbeiten können.

Die Option gilt auch beim manuellen Ändern des Datums einer Serienaufgabe: Mit Häkchen werden der ausgewählte und alle folgenden Termine gemeinsam verschoben. Beim ersten Vorkommnis betrifft das die gesamte Serie. Reines Erledigen oder Umbenennen ohne Datumsänderung betrifft weiterhin nur den ausgewählten Termin. Beim Verschieben des Serienteils werden bestehende Ausnahmen innerhalb dieses Teils zurückgesetzt.

Liegt zwischen dem überfälligen und dem heutigen Datum bereits ein weiterer geplanter Serientermin, führt OpenCalendar den nachgezogenen Termin ohne Mitverschieben als einzelnen Aufgabentermin weiter. Dadurch bleibt der ursprüngliche Serienplan unverändert und Microsoft 365 muss kein Vorkommnis über ein anderes Serienelement hinweg verschieben – eine von Microsoft technisch abgelehnte Operation.

Aufgabentermine stehen deshalb nur in beschreibbaren Kalendern zur Verfügung. ICS-/Webcal-Abonnements und lokale ICS-Dateien bleiben schreibgeschützt. Die Funktion ist bewusst keine Anbindung an Google Tasks: Es werden weder Google-Aufgabenlisten importiert noch bestehende Einträge aus „Meine Aufgaben“ synchronisiert.

Bekannte Einschränkungen

Datenschutz und externe Dienste

OpenCalendar verarbeitet Konto-, Kalender- und Termindaten grundsätzlich auf der eigenen Symcon-Installation. Das Modul enthält keine eigene Telemetrie und übermittelt Kalenderinhalte nicht an einen Backenddienst des Modulautors. Bei OAuth-Anbindungen werden die jeweils notwendigen Dienste von Google, Microsoft und Symcon verwendet. Die Google-OAuth-Anwendung von OpenCalendar ist öffentlich freigegeben und von Google verifiziert. Anwender benötigen weder ein eigenes Google-Cloud-Projekt noch eine eigene Client-ID oder einen Clientschlüssel. Für Google und Microsoft werden die für Anmeldung und Token-Aktualisierung erforderlichen OAuth-Daten über den zentralen Symcon-OAuth-Dienst verarbeitet; Kalender- und Termininhalte werden direkt zwischen der lokalen Symcon-Installation und dem jeweiligen Kalenderanbieter übertragen.

Vor dem Verbinden eines externen Kontos sollten die Datenschutzhinweise gelesen werden. Ergänzend gelten die Nutzungsbedingungen sowie die Bedingungen der jeweils verwendeten Drittanbieter.

Enthaltene Module