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
Die ausführlichen Einstellungen der Anbieter sind in der Dokumentation des Kalender Kontos beschrieben.
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 | 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-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.
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.
In beschreibbaren Google-Kalendern unterstützt OpenCalendar Serientermine vollständig im gemeinsamen Dialog-Workflow der Kachelvisualisierung und IPSView.
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.
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.
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.
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:
[OC:TODO] kennzeichnet eine offene Aufgabe.[OC:DONE] kennzeichnet eine erledigte Aufgabe.[OC:TODO:FOLLOW] beziehungsweise [OC:DONE:FOLLOW] kennzeichnet eine Aufgabenserie, deren geplante
Folgetermine beim täglichen Nachziehen ebenfalls verschoben werden sollen.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.
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.
Kalender Konto (Dokumentation)
Verbindet die unterstützten Anbieter und stellt deren Kalender bereit.
Kalender Konfigurator (Dokumentation)
Findet die Kalender des aktuell verbundenen Kontos und legt vollständig konfigurierte Kalender-Instanzen an.
Kalender (Dokumentation)
Repräsentiert einen einzelnen Online-Kalender und synchronisiert dessen Termine.
Kalender Ansicht (Dokumentation)
Führt mehrere Kalender in einer responsiven Kachel- oder IPSView-Ansicht zusammen und stellt die ausgewählten Kalender zusätzlich providerübergreifend über PHP-Funktionen für Tages- und Datumsbereichsabfragen sowie für Jahresereignisse bereit. Neben der vollständigen Ausgabe stehen kompakte Varianten für einfache Skripte zur Verfügung.