Event-Duplikator: Kalenderereignisse/-themen in einen neuen Zeitraum duplizieren

:information_source: Zusammenfassung Ermöglicht autorisierten Nutzern, Kalenderereignisse/-Themen (erstellt über Discourse Calendar and Events ) in einen neuen Zeitraum zu duplizieren. Funktioniert für ein einzelnes Thema oder eine ganze getaggte Serie (z. B. jedes Thema mit dem Tag `grand-prix`), mit einem Überprüfungsschritt zur Bearbeitung der vorgeschlagenen Daten vor dem Speichern.
:hammer_and_wrench: Repository-Link GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub
:open_book: Installationsanleitung Plugins in Discourse installieren

Zusammenfassung

Dieses Plugin wurde für eine Laufgruppen-Community entwickelt, deren Kalender größtenteils aus denselben Ereignissen besteht, die jedes Jahr an verschobenen Terminen stattfinden. Das manuelle Neuerstellen jedes Ereignisthemas jede Saison bedeutete, den [event ...]-Block zu duplizieren, den Titel zu korrigieren und herauszufinden, welche bereits bearbeitet waren. Das war mühsam und fehleranfällig. Event Duplicator automatisiert dies: Wähle ein Quellereignis oder eine ganze getaggte Serie, erhalte ein vorgeschlagenes neues Datum, überprüfe oder bearbeite es und bestätige.

Siehe docs/USAGE.md für eine vollständige, nutzerorientierte Anleitung: Wer es verwenden kann, Duplizierung einer Serie vs. eines einzelnen Themas, wie der Überprüfungsschritt funktioniert.

Funktionen

  • Serien-Duplizierung: Wähle eine Kategorie und ein oder mehrere Tags (z. B. grand-prix, signature-race; Treffer werden ODER-verknüpft und dedupliziert, sodass ein Thema mit mehreren passenden Tags nur einmal erscheint), optional eingeschränkt auf einen Quell-Datumsbereich, überprüfe dann die vorgeschlagenen Daten des nächsten Auftretens vor der Bestätigung.
  • Duplizierung einzelner Ereignisse: Derselbe Überprüfungs- und Bestätigungsablauf für ein Thema nach dem anderen, über das Admin-Menü des Themas (Schlüssel-Symbol).
  • Bearbeitbarer Überprüfungsschritt: Jede Zeile zeigt das ursprüngliche Startdatum neben einem vorgeschlagenen neuen Datum, das du bearbeiten kannst (Tagesgranularität), plus einen bearbeitbaren Titel. Das Enddatum wird immer automatisch aus der Dauer des Quellereignisses abgeleitet, sodass es nicht aus dem Takt mit einem bearbeiteten Startdatum geraten kann.
  • Zwei austauschbare Datumsverschiebungsstrategien, pro Ausführung wählbar mit einem konfigurierbaren Standard:
    • Selbstes Kalenderdatum: Verschiebung um die konfigurierte Anzahl von Monaten nach vorne.
    • N-ter Wochentag des Monats: Bewahrt z. B. „3. Samstag des Monats“ auf, auch wenn die Verschiebung in einen anderen Monat fällt.
  • Konfigurierbarer Verschiebungsbetrag: Verschiebung um eine beliebige Anzahl von Monaten (standardmäßig 12, also ein Jahr) nach vorne, nicht nur jährlich. Nützlich für monatliche, vierteljährliche oder andere wiederkehrende Rhythmen. Pro Ausführung überschreibbar, mit einem site-weiten Standard über eine neue Einstellung (unten).
  • „Datum TBD“-Kennzeichnung: Für Ereignisse, deren reales Datum noch nicht feststeht, markiere eine Zeile. Eine konfigurierbare Anmerkung (standardmäßig (date TBD)) wird sowohl zum Titel des Themas als auch zum Ereignisnamen angehängt.
  • Duplizierungsverfolgung: Verhindert die doppelte Duplizierung desselben Ereignisses (relevant, da ein Thema mehr als einen Serien-Tag tragen kann). Bereits duplizierte Themen werden standardmäßig in der Überprüfung markiert und abgewählt, mit einer expliziten Wiederholung der Auswahl, um es dennoch zu erzwingen. Das Löschen eines duplizierten Themas gibt dessen Quelle automatisch für eine erneute Duplizierung frei, und das Wiederherstellen sperrt es erneut.
  • Feedback nach der Duplizierung: Erfolgreich duplizierte Zeilen verwandeln sich in einen Link zum neuen Thema direkt in der Überprüfungstabelle. Echte Fehler werden pro Zeile gemeldet, anstatt den gesamten Batch abzubrechen.

Anforderungen

  • discourse-calendar muss installiert und aktiviert sein. Dieses Plugin dupliziert Ereignisse, indem es das eigene [event ...]-Post-Markup und das DiscoursePostEvent::Event-Modell von discourse-calendar verwendet, anstatt separate Datumspeicher zu erfinden.
  • Getestet mit Discourse 2026.7.0. Nicht für frühere Versionen verifiziert.

Konfiguration

Alle Einstellungen finden sich unter Admin → Einstellungen → Plugins, suche nach event_duplicator:

Einstellung Standard Beschreibung
event_duplicator_enabled aus Aktiviert das Plugin.
event_duplicator_allowed_groups staff Gruppen (zusätzlich zu den normalen Berechtigungen für die Themen-Erstellung pro Kategorie), die Ereignisse duplizieren dürfen. Hinweis: Eine leere Liste bedeutet niemand, nicht alle. Füge die Gruppe „alle“ hinzu, um dies vollständig zu öffnen.
event_duplicator_default_date_strategy Selbes Kalenderdatum Standard-Regel für die Datumsverschiebung; pro Ausführung überschreibbar.
event_duplicator_default_shift_months 12 Standard-Verschiebungsbetrag in Monaten; pro Ausführung überschreibbar.
event_duplicator_tbd_annotation (date TBD) Text, der zum Titel/Ereignisnamen eines duplizierten Themas hinzugefügt wird, wenn es in der Überprüfung als TBD markiert ist. Leer lassen, um die Anmerkungsfunktion vollständig zu deaktivieren.

Die Autorisierung ist ein UND aus drei Prüfungen: Normale Discourse-Kategorieberechtigungen, Mitgliedschaft in event_duplicator_allowed_groups und die eigene Berechtigung von discourse-calendar, [event]-Posts zu erstellen.

Bekannte Einschränkungen

  • Die Datumsbearbeitung im Überprüfungsschritt ist nur tagesgenau (keine Uhrzeitbearbeitung). Das ist eine bewusste Entscheidung: Das Zielanwendungsfall sind wiederkehrende Renn-/Ereignisdaten, nicht -zeiten.

Quelle / Probleme

Aktualisiert am 2026-08-01: v1.1.0 fügt konfigurierbare monatsbasierte Verschiebungen hinzu, siehe unten

4 „Gefällt mir“

Gute Arbeit! Und danke, dass du es mit anderen teilst. Es schließt effektiv eine Lücke in der #calendar-and-events-Funktionalität.

Ich frage mich jedoch, ob es vielleicht besser „Jährlicher Ereignisduplikator“ heißen sollte, da es nicht für monatliche Duplizierungen ausgelegt zu sein scheint.

Wärst du bereit, es um einen monatlichen Anwendungsfall zu erweitern?

Wir haben viele monatliche, zweiwöchentliche und dreimonatige (d. h. vierteljährliche) Ereignisse, die auf den X. Montag (usw.) des Monats fallen. Sie enthalten eine erhebliche Menge an Dokumentation/Uploads, was sie für den Kernmechanismus wiederkehrender Ereignisse ungeeignet macht.

Derzeit erfordert dies recht viel manuelle Bearbeitung, und es passieren tatsächlich Fehler!!

Aufgrund der kürzeren Zeiträume müsste es dafür wahrscheinlich eine Art Aufforderung geben (z. B. eine PN an den Themenverantwortlichen +/- Admins), sobald das aktuelle Ereignis abgeschlossen ist (falls es getaggt ist).

1 „Gefällt mir“

Vielleicht. Eine Möglichkeit wäre, der Ansicht für doppelte Ereignisse eine Steuerung „Verschiebung (Monate)“ hinzuzufügen, deren Standardwert eine neue Einstellung wäre. Ist das ungefähr das, wonach du suchst?

Ich habe add n months shift support · Issue #19 · louking/discourse-event-duplicator · GitHub hinzugefügt, um dies zu verfolgen. Ich habe einige andere Aufgaben auf meinem Tisch, also bin ich mir nicht sicher, welche Priorität dies haben wird. Auf den ersten Blick scheint es jedoch eine ziemlich schnelle Änderung zu sein.

Dieser Teil interessiert mich ehrlich gesagt weniger. Wenn die Ereignisse in einer Serie wären (d. h. auf bestimmte Weise getaggt), müsste das Plugin sich merken, welches das letzte in den getaggten Ereignissen war, feststellen, ob ein neues Ereignis am Ende der Serie getaggt wurde, usw. Ich gehe davon aus, dass die Anforderungen für diese Benachrichtigung vielfältig sein würden, und ich glaube nicht, dass ich alle Möglichkeiten abdecken könnte.

1 „Gefällt mir“

Super – danke.

Voll verständlich! Jetzt, wo ich etwas mehr darüber nachdenke, ließe sich das ohnehin ganz leicht mit einem einfachen Lesezeichen lösen.

@nathank Die Verschiebung (Monate) wurde in v1.1.0 veröffentlicht.

Auf der Review-Seite gibt es jetzt ein Feld „Verschiebung (Monate)“ neben dem Dropdown-Menü für die Datumsregel. Der Standardwert ist 12, was dem bisherigen Verhalten entspricht, aber du kannst ihn für jeden einzelnen Durchlauf überschreiben. Es gibt auch eine neue Site-Einstellung event_duplicator_default_shift_months, falls du einen anderen sitesweiten Standardwert möchtest.

Es funktioniert mit beiden Datumsregeln. Eine monatliche oder vierteljährliche Reihe, die einen bestimmten Wochentag benötigt, erhält weiterhin die Behandlung „gleicher Wochentag des Monats“, nur mit dem von dir eingestellten Monatsintervall statt einem festen Jahr.

Aktualisiere auf v1.1.0, um die Funktion zu nutzen (baue neu, falls deine app.yml ein bestimmtes Tag festlegt). Issue #19 enthält die Implementierungsdetails, falls du neugierig bist.

Ich denke, es macht auch Sinn, den ursprünglichen Beitrag (OP) zu aktualisieren. Das werde ich wahrscheinlich bis morgen erledigen.