Event Duplicator : dupliquer des événements/sujets de calendrier dans une nouvelle période

:information_source: Résumé Permet aux utilisateurs autorisés de dupliquer des événements/sujets de calendrier (créés via Discourse Calendar and Events ) dans une nouvelle période. Fonctionne sur un seul sujet ou une série entière étiquetée (par ex. chaque sujet étiqueté `grand-prix`), avec une étape de révision pour modifier les dates proposées avant validation.
:hammer_and_wrench: Lien vers le dépôt GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub
:open_book: Guide d’installation Comment installer des plugins dans Discourse

Résumé

Ce plugin a été conçu pour une communauté de club de course dont le calendrier est largement composé des mêmes événements qui se produisent chaque année à des dates décalées. Recréer manuellement le sujet de chaque événement à chaque saison impliquait de dupliquer le bloc [event ...], de corriger le titre et de chercher lesquels avaient déjà été refaits. C’était fastidieux et sujet aux erreurs. Event Duplicator automatise cette tâche : choisissez un événement source, ou une série entière étiquetée, obtenez une nouvelle date proposée, révisez ou modifiez-la, puis confirmez.

Consultez docs/USAGE.md pour un guide complet à l’intention des utilisateurs : qui peut l’utiliser, duplication d’une série vs. un seul sujet, fonctionnement de l’étape de révision.

Fonctionnalités

  • Duplication de séries : choisissez une catégorie et une ou plusieurs étiquettes (par ex. grand-prix, signature-race ; les correspondances sont combinées par OU et dédoublonnées, donc un sujet avec plusieurs étiquettes correspondantes n’apparaît qu’une fois), éventuellement limité à une plage de dates source, puis révisez les dates de prochaine occurrence proposées avant de confirmer.
  • Duplication d’événement unique : le même flux de révision et de confirmation pour un sujet à la fois, depuis le menu administrateur de ce sujet (icône clé à molette).
  • Étape de révision modifiable : chaque ligne affiche la date de début originale à côté d’une nouvelle date proposée que vous pouvez modifier (granularité au jour près), ainsi qu’un titre modifiable. La date de fin est toujours dérivée automatiquement de la durée propre de l’événement source, donc elle ne peut pas se désynchroniser avec une date de début modifiée.
  • Deux stratégies de décalage de date extensibles, sélectionnables par exécution avec une valeur par défaut configurable :
    • Même date du calendrier : décale vers l’avant du nombre de mois configuré.
    • N-ième jour de la semaine du mois : conserve par ex. “3e samedi du mois” même lorsque le décalage tombe dans un mois différent.
  • Montant de décalage configurable : décale vers l’avant de n’importe quel nombre de mois (12, soit un an, par défaut), pas seulement annuellement. Utile pour des cadences mensuelles, trimestrielles ou autres récurrentes. Peut être remplacé par exécution, avec une valeur par défaut globale via un nouveau paramètre (ci-dessous).
  • Indicateur “Date à déterminer” : pour les événements dont la date réelle n’est pas encore fixée, marquez une ligne. Une annotation configurable (par défaut (date à déterminer)) est ajoutée à la fois au titre du sujet et au nom de l’événement.
  • Suivi des duplications : empêche de dupliquer deux fois le même événement (pertinent car un sujet peut porter plus d’une étiquette de série). Les sujets déjà dupliqués sont marqués et désélectionnés par défaut lors de la révision, avec une case à cocher explicite pour forcer l’opération quand même. La suppression d’un sujet dupliqué libère automatiquement sa source pour une nouvelle duplication, et la restauration la verrouille à nouveau.
  • Retour post-duplication : les lignes dupliquées avec succès se transforment en lien vers le nouveau sujet directement dans le tableau de révision. Les échecs réels sont signalés par ligne au lieu d’interrompre tout le lot.

Prérequis

  • discourse-calendar doit être installé et activé. Ce plugin duplique les événements en utilisant le balisage [event ...] propre à discourse-calendar et le modèle DiscoursePostEvent::Event, au lieu de créer un stockage de dates séparé.
  • Testé avec Discourse 2026.7.0. Non vérifié sur les versions antérieures.

Configuration

Tous les paramètres se trouvent sous Admin → Paramètres → Plugins, recherchez event_duplicator :

Paramètre Défaut Description
event_duplicator_enabled désactivé Active le plugin.
event_duplicator_allowed_groups staff Groupes (en plus des permissions normales de création de sujets par catégorie) autorisés à dupliquer des événements. Note : une liste vide signifie personne, pas tout le monde. Ajoutez le groupe “everyone” pour ouvrir complètement cette fonctionnalité.
event_duplicator_default_date_strategy Même date du calendrier Règle de décalage de date par défaut ; remplaçable par exécution.
event_duplicator_default_shift_months 12 Montant de décalage par défaut, en mois ; remplaçable par exécution.
event_duplicator_tbd_annotation (date à déterminer) Texte ajouté au titre/nom de l’événement d’un sujet dupliqué lorsqu’il est marqué comme à déterminer lors de la révision. Laissez vide pour désactiver complètement cette fonctionnalité d’annotation.

L’autorisation est une combinaison ET de trois vérifications : les permissions normales de catégorie Discourse, l’appartenance à event_duplicator_allowed_groups, et la permission propre à discourse-calendar de créer des posts [event].

Limitations connues

  • L’édition de date de l’étape de révision est uniquement à la granularité du jour (pas d’édition de l’heure). C’est une décision de portée délibérée : le cas d’utilisation cible concerne les dates récurrentes de courses/événements, pas les heures.

Source / problèmes

Mis à jour le 2026-08-01 : v1.1.0 ajoute un décalage mensuel configurable, voir ci-dessous

4 « J'aime »

Bien joué ! Et merci de le partager avec les autres. Il comble efficacement une lacune dans la fonctionnalité calendar-and-events.

Je me demande s’il ne vaudrait pas mieux l’appeler « Dupliqueur d’événements annuels », car il ne semble pas conçu pour des duplications mensuelles.

Seriez-vous ouvert à l’étendre pour couvrir un cas d’usage mensuel ?

Nous avons beaucoup d’événements mensuels, bimestriels et trimestriels (c’est-à-dire trimestriels), qui tombent le Xème lundi (etc.) du mois. Ils comportent une quantité importante de documentation / de fichiers joints, ce qui les rend inappropriés pour le mécanisme central des événements récurrents.

Pour l’instant, cela nécessite beaucoup de manipulations manuelles, et des erreurs se glissent malheureusement !!

En raison des délais plus serrés, pour que cela fonctionne, il faudrait probablement intégrer une sorte de notification (comme un MP à l’auteur du sujet +/- aux admins) une fois l’événement en cours terminé (s’il est tagué).

1 « J'aime »

Peut-être. Une possibilité serait de faire en sorte que la vue des événements dupliqués dispose d’un contrôle « décalage (mois) », dont la valeur par défaut serait un nouveau paramètre. Est-ce à peu près ce que vous recherchez ?

J’ai ajouté add n months shift support · Issue #19 · louking/discourse-event-duplicator · GitHub pour suivre cela. J’ai d’autres tâches en cours, donc je ne suis pas sûr de quelle sera la priorité. En surface, cependant, cela semble être une modification assez rapide.

Honnêtement, je suis moins intéressé par cette partie. Si les événements faisaient partie d’une série (c’est-à-dire étiquetés d’une certaine manière), le plugin devrait se souvenir de celui qui était le dernier dans les événements étiquetés, remarquer si un nouvel événement était étiqueté à la fin de la série, etc. Je m’attends à ce que les besoins pour cette notification soient divers et je ne pense pas pouvoir couvrir toutes les possibilités.

1 « J'aime »

Super – merci.

Compréhensible ! Cela pourrait être assez facilement réalisé par un simple signet de toute façon, maintenant que j’y réfléchis un peu plus.

@nathank Le décalage (en mois) a été intégré dans la version v1.1.0.

La page de revue dispose désormais d’un champ « Décalage (mois) » à côté du menu déroulant des règles de date. La valeur par défaut est 12, ce qui conserve le comportement précédent, mais vous pouvez la modifier pour chaque exécution. Il existe également un nouveau paramètre de site event_duplicator_default_shift_months si vous souhaitez définir une valeur par défaut différente au niveau du site.

Cela fonctionne avec les deux règles de date. Une série mensuelle ou trimestrielle qui nécessite un jour de semaine spécifique conserve le traitement « même jour de la semaine », mais à l’interval de mois que vous avez défini plutôt qu’à une année fixe.

Mettez à jour vers la version v1.1.0 pour en profiter (reconstruisez si votre fichier app.yml fixe une balise spécifique). L’issue #19 contient les détails de l’implémentation si cela vous intéresse.

Je pense qu’il est également logique de mettre à jour le message initial. Je m’en occupe probablement demain.