Kalender-Abonnement-URLs für externe Kalender-Apps

Wir haben den neuen Reiter Kalender in den Benutzereinstellungen hinzugefügt, mit dem Sie Discourse-Feeds in externen Kalenderanwendungen wie Google Kalender, Apple Kalender und Microsoft Outlook abonnieren können.

:down_arrow:

Wie es funktioniert

Navigieren Sie zu Ihrem Reiter Einstellungen → Kalender und klicken Sie auf Abonnement-URLs generieren. Sie erhalten Ein-Klick-Abonnement-Schaltflächen für:

  • Google Kalender — öffnet Google Kalender mit dem vorausgefüllten Feed
  • Microsoft Outlook — öffnet den Dialog für Web-Abonnements von Outlook
  • Apple Kalender — löst die native Kalender-App über webcal:// aus
  • URL kopieren — für jede andere Kalenderanwendung, die ICS-Feeds unterstützt

Verfügbare Feeds

Immer verfügbar:

  • Lesezeichen-Erinnerungen — Ihre Lesezeichen mit Erinnerungsdaten

Wenn das Plugin discourse-calendar aktiviert ist:

  • Alle Veranstaltungen — alle Forenveranstaltungen
  • Meine Veranstaltungen — Veranstaltungen, an denen Sie teilnehmen oder an denen Sie interessiert sind

Für Plugin-Entwickler

Plugins können zusätzliche ICS-Feeds über die neue API register_calendar_subscription_feed registrieren. Auf diese Weise registrierte Feeds erscheinen automatisch im Reiter Kalender-Einstellungen, wenn das Plugin aktiviert ist.

Sicherheit

Abonnement-URLs verwenden eingeschränkte Benutzer-API-Schlüssel, die auf Lesezugriff im ICS-Format beschränkt sind. Schlüssel sind ratenbegrenzt, und URLs werden nur einmal bei der Generierung angezeigt – Benutzer können sie jederzeit neu generieren, was die alten URLs widerruft.

25 „Gefällt mir“

Vielen Dank @Falco, aber wie entfernt man die Unternehmensoptionen? Ich finde es beleidigend für meine Community, Werbung für proprietäre Dienste sehen zu müssen.

1 „Gefällt mir“

Sie können es mit CSS ausblenden.

2 „Gefällt mir“

Vielen Dank für diese Implementierung – das wird die Nutzbarkeit des Kalender-/Ereignis-Plugins für viele Communities erhöhen!

Ich habe das gleiche Bedenken wie @hellekin: Innerhalb von Discourse befinden wir uns in einer Open-Source-Umgebung. In unserer Community nutzt niemand Google Kalender oder Microsoft. Wenn Benutzer einen Link für diese proprietären Dienste benötigen, sollten sie selbst entscheiden, nicht die Anwendung. Daher würde ich es vorziehen, die Art des externen Kalenderdienstes bei der Erstellung der Abonnement-URLs auszuwählen (z. B. mit einigen Kontrollkästchen) und nicht später.

1 „Gefällt mir“

„Filter“-Erweiterung

Wir haben mehrere Communities auf unserer Discourse-Instanz. Sie sind durch Gruppenberechtigungen getrennt, und einige Benutzer sind Mitglied von mehr als einer Community. Es wäre praktisch, die URL „Discourse Calendar - All Events“ so zu filtern, dass nur die Kalendereinträge einer bestimmten Community angezeigt werden. Beispiel-URL

https://discourse.example.com/discourse-post-event/events.ics?user_api_key=c2aa22d800dd473b62d199d796742382&group=[groupname]

Mit dieser Erweiterung wäre es möglich, die Discourse-Ereignisse einer bestimmten (!) Community auf deren eigener Website zu teilen, z. B. mit dem WordPress-Plugin „ICS calendar“.

2 „Gefällt mir“

Ein weiterer kleiner Verbesserungsvorschlag: Wenn Sie die Discourse-Ereignisse bei zwei verschiedenen Clients abonnieren möchten (z. B. Thunderbird auf zwei Geräten), müssen Sie die URL zweimal kopieren. Die URL wird jedoch derzeit nur einmal angezeigt. Wenn Sie einen zweiten Client hinzufügen, müssen Sie die URLs neu generieren und verlieren dabei die ersten.

2 „Gefällt mir“

Funktioniert ein Feed, der von einem Benutzer in einer dieser Gruppen generiert wird, nicht bereits auf diese Weise? Haben Sie es getestet?

Sie müssen nur einmal kopieren und dann in die beiden benötigten Clients einfügen.

Und wenn Sie einen Client vergessen, können Sie ihn mit einem Klick neu generieren.

2 „Gefällt mir“

Das ist ziemlich cool. Eine Idee für einen Feed könnte auch das Plugin Gespeicherte Suchen sein.

[quote=“Falco, post:7, topic:398902”]Du musst nur einmal kopieren und dann in die beiden gewünschten Clients einfügen.

Und falls du einen Client vergisst, kannst du ihn mit einem Klick neu generieren.

[/quote]

Ich verstehe, aber mein Punkt ist die notwendige Neuerstellung, nachdem die URLs zuerst angezeigt werden.

Wenn ich den Kalender-Link auf zwei verschiedenen Geräten verwende, sind diese wahrscheinlich nicht gleichzeitig für die Konfiguration verfügbar. Ich würde von dem ersten Gerät auf mein Discourse-Profil zugreifen und später erneut von dem zweiten Gerät. Es wäre besser, die alte URL erneut anzuzeigen und sie nur auf explizite Anfrage zu invalidieren.

Wenn ich Mitglied von zwei verschiedenen Communities (und deren Berechtigungsgruppen) bin, zeigt „https://discourse.example.com/discourse-post-event/events.ics“ die Ereignisse beider Communities an. Das ist soweit korrekt. Aber beide Communities haben möglicherweise ihre eigene Website. Wenn ich die Ereignisse von Discourse auf deren Websites teilen möchte, möchte ich nur die Ereignisse von „Community A“, aber nicht von „Community B“, sehen. Und umgekehrt.

1 „Gefällt mir“

Ich verwende dies mit Google Calendar – und es ist wirklich großartig!

Änderungen an Ereignissen scheinen jedoch nicht darauf zu übertragen zu werden – weder bei Bearbeitungen noch bei Löschungen.

Hier ist die Google Calendar-Einbettung:

Hier ist der Kalender auf meiner Website, wo Sie sehen können, dass ich Test event number 5 gelöscht und A fourth test event verschoben habe:

https://spokes.nz/upcoming-events/month/2026/3/1

Haben Sie eine Idee, warum diese nicht mit Google synchronisiert zu werden scheinen?

1 „Gefällt mir“

Google Calendar holt sich durchschnittlich zweimal täglich Updates, sodass Änderungen einige Stunden dauern, bis sie sichtbar werden.

2 „Gefällt mir“

Ah ja, sie sind jetzt synchronisiert.

Das ist sehr gut zu wissen. Erwarte aber nicht, dass Änderungen in letzter Minute automatisch veröffentlicht oder kommuniziert werden!

Gilt das auch für andere Dienste?

1 „Gefällt mir“

Wenn du von den Kalenderservices anderer Anbieter sprichst, gilt dasselbe Prinzip: 1 bis 2 Mal pro Tag. Damals habe ich keine Lösung gefunden, um die Anzahl der Synchronisierungen zu erhöhen. Später habe ich mir gedacht, dass das angesichts der weltweiten Menge an zu synchronisierenden Kalendern eigentlich völlig normal ist :rofl: Ich denke, er limitiert das, um ihre Server nicht zu überlasten!

Vielleicht liege ich aber auch falsch.

2 „Gefällt mir“

Feedback nach einigen echten Tests:

Hintergrund: Unsere Discourse-Instanz wird von mehreren Benutzergruppen/Communities genutzt, die jeweils eigene Berechtigungsgruppen haben. Für jede dieser Gruppen gibt es eine Hauptkategorie. Diese Kategorie ist öffentlich sichtbar, und der Inhalt wird in das Fediverse (Discourse ActivityPub) federiert. Zudem wird ein öffentlicher Kalender angezeigt. Beispiel (https://forum.netzwissen.de/c/meshcore-str/84):

Pasted image 20260401075142.png

Der Kalender zeigt Veranstaltungen aus Beiträgen in der Hauptkategorie sowie aus Unterkategorien an. Veranstaltungsbeiträge in den Unterkategorien (die nur für „angemeldete“ Nutzer mit der Berechtigungsgruppe der Community sichtbar sind) werden im Hauptkalender für anonyme Nutzer (nicht angemeldet) nicht angezeigt. Perfekt – das ist das erwartete Verhalten!

Ich sehe zwei Anforderungen, die den ICS-Kalenderlink „funktionsfertig“ machen würden. Wir nutzen den neuen ICS-Kalenderlink, um in Discourse erstellte Veranstaltungen auf den öffentlichen Websites der Communities (CMS: WordPress) zu teilen.

  1. Im ICS-Datei angezeigte Veranstaltungen sollten nach Community/Berechtigungsgruppe „filterbar“ sein. Vorgeschlagene Syntax:
[ics_calendar url="https://discourse.example.com/discourse-post-event/events.ics?user_api_key=[xxxx];group=[discourse_group_id]"]
  1. Die ICS-Datei sollte nur Veranstaltungen mit dem Status „public“ anzeigen. Der Status „private“ oder „standalone“ sollte im ICS-Datei im Allgemeinen nicht veröffentlicht werden. Hinweis: Ich habe noch nicht getestet, ob dies bereits implementiert ist …
1 „Gefällt mir“

Das ist eine großartige Ergänzung! :clap:

Leider wird beim Generieren der URLs für meinen Benutzer nur das Lesezeichen-Abonnement erstellt, obwohl das Kalender-Plugin aktiviert ist (und wir es regelmäßig nutzen). Hat jemand eine Idee, warum das so sein könnte?

Ich stimme auch @Thomas_Rother zu, dass Abonnement-URLs bis zu ihrer Widerrufung oder Neugenerierung angezeigt werden sollten. Geräte und Apps ändern sich im Laufe der Zeit, und alle Geräte neu abonnieren zu müssen, nur weil man eines hinzufügen möchte, ist mühsam und scheint unnötig. Vielleicht könnte dies eine Plugin-Konfigurationsoption sein, je nach Sensibilität der Ereignisdaten.

2 „Gefällt mir“

Damit dies angezeigt wird, müssen Sie die Einstellung „Discourse-Post-Event aktivieren" aktivieren.

1 „Gefällt mir“

Wir nutzen Post-Events seit Jahren:

Könnte das ein Problem bei Installationen sein, die zuvor das separate Plugin verwendet haben? Ich habe auch versucht, das Plugin zu deaktivieren und erneut zu aktivieren, aber das hat das Problem nicht behoben.

1 „Gefällt mir“

Ich bin hierher gekommen, weil ich genau nach dieser Funktion gesucht habe, und ich freue mich sehr, dass sie umgesetzt wurde!

Ich teile das Feedback von @hellekin und @Thomas_Rother bezüglich der Unternehmenslinks. Wenn diese optional gemacht werden könnten, wäre das großartig. Viele Menschen nutzen Discourse, weil sie an digitale Souveränität glauben, sodass das Erscheinen dieser Logos nicht angemessen ist.

Noch wichtiger ist die Auffindbarkeit der Funktion. Sie ist in den Benutzerpräferenzen versteckt, wäre aber direkt in der Kalender-UI-Navigation sehr willkommen. Auf „Anstehende Veranstaltungen

2 „Gefällt mir“

Die Lösung findest du hier:

1 „Gefällt mir“