Skip to content

Calendrier

Le module Calendrier est le registre central de GCM de quand les choses se passent. Il couvre les événements uniques (un concert de Noël, une retraite de leaders), les services hebdomadaires récurrents, les anniversaires des membres tirés du répertoire et les modèles de réunion qui alimentent chaque liste de présence.

Vue mensuelle du calendrier

Événements vs réunions

Ces deux concepts sont souvent confondus parce que les deux apparaissent sur la grille du calendrier. Ils sont stockés séparément et remplissent des fonctions différentes :

ÉvénementRéunion
Où il vitTable eventsTable meetings
ObjectifUne occurrence spécifique (date + heure + lieu)Un modèle récurrent qui alimente la présence (ex. « Service du dimanche »)
Configuré dansCalendrier → Ajouter un événementParamètres → Réunions
RécurrenceRRULE sur l'événement lui-mêmeImplicite — chaque fois que vous notez la présence, vous choisissez une réunion
PortéeFiltre d'unité org facultatifscope_level requis (org / branche / centre / cellule)

Une règle utile : s'il y a un flyer publié, c'est un événement. Si c'est « ce qu'on fait chaque dimanche à 10h », c'est une réunion.

Voir Réunions et niveaux de portée pour le modèle de réunion, Créer un événement pour les événements uniques.

Ce que montre le calendrier

La grille du mois superpose trois couches :

  • Événements — points colorés, avec carte de prévisualisation au survol.
  • Anniversaires — une icône de gâteau, tirée en direct du répertoire des membres.
  • Expansions récurrentes — un seul événement hebdomadaire s'affiche comme 4 ou 5 points dans un mois, calculé dans le navigateur à partir de la chaîne RRULE.

Le panneau du jour à droite liste tout ce qui se passe à la date sélectionnée. L'onglet À venir bascule vers une liste chronologique des vingt prochains événements à partir d'aujourd'hui.

Voir Vues du calendrier et détail du jour pour les modèles de navigation.

Comment fonctionne la récurrence

GCM stocke la récurrence en utilisant le standard iCalendar RRULE (RFC 5545). Lorsque vous choisissez « Hebdomadaire les lun, mer, ven jusqu'au 31 déc » dans le formulaire d'événement, cela est sauvegardé comme :

FREQ=WEEKLY;BYDAY=MO,WE,FR;UNTIL=20261231T235959Z

Deux champs supplémentaires couvrent les lacunes :

  • exception_dates — un tableau de chaînes de dates à sauter (ex. annuler un dimanche spécifique).
  • recurrence_end_date — une colonne de date-fin redondante pour un filtrage SQL rapide.

Pour la rétrocompatibilité il y a aussi une colonne de texte héritée recurrence_rule acceptant weekly / monthly / yearly. Les nouveaux événements écrivent toujours les deux — la RRULE fait autorité.

Voir Modèles récurrents et RRULE pour la spécification complète du sélecteur.

Exceptions

Le tableau exception_dates gère le cas simple (« juste sauter cette date »). Pour des surcharges plus riches — changer le titre pour une occurrence, déplacer l'heure de début d'une heure, annuler seulement cette date — il y a une table event_exceptions :

sql
event_exceptions(
  event_id, exception_date,
  is_cancelled, override_title,
  override_start_time, override_end_time,
  override_location
)

Cela vous permet de transformer un Service du dimanche régulier en « Service de la veille de Noël » sans bifurquer tout l'événement récurrent. Voir Exceptions d'événement.

Rappels

Chaque org a une ligne event_reminder_config qui contrôle quand et comment les rappels partent. Les décalages sont stockés en heures-avant, donc [24, 1] signifie « 24 heures avant et une heure avant. » Les canaux sont choisis par slug — email, sms, whatsapp, push — et suivis par-occurrence dans event_reminders_sent pour empêcher le double envoi des événements récurrents.

Voir Rappels d'événement.

Portée et branches

Les événements peuvent être filtrés vers une seule unité org (branche, centre, cellule) via org_unit_id. Une valeur null signifie toutes les branches le voient — utile pour les annonces à l'échelle de l'org comme Noël.

Le filtre de branche dans la barre d'outils du calendrier applique un OR org_unit_id IS NULL SQL pour que les événements globaux restent visibles tandis que ceux spécifiques à une branche sont limités. Les utilisateurs dont le rôle ne couvre pas toutes les branches voient seulement les options du menu déroulant auxquelles ils sont assignés.

Permissions

ActionAdminPasteurBergerMembre
Voir le calendrierouiouiouioui
Créer un événementouiouiouinon
Modifier un événementouiouisa propre unité orgnon
Supprimer un événementouiouisa propre unité orgnon
Configurer les réunionsouiouinonnon
Configurer les rappelsouinonnonnon

Les clés de permission sont events.view, events.create, events.edit, events.delete. Les membres peuvent toujours voir le calendrier mais ne peuvent pas y ajouter sauf si on leur accorde explicitement events.create.

Étapes suivantes

  1. Créer un événement — votre première date unique.
  2. Réunions et niveaux de portée — configurez le Service du dimanche.
  3. Modèles récurrents et RRULE — au-delà du simple hebdomadaire.
  4. Exceptions d'événement — quand une occurrence diffère.
  5. Rappels d'événement — coups de pouce automatisés par email / SMS / WhatsApp.
  6. Vues du calendrier et détail du jour — grille mensuelle vs liste à venir.
  7. Lier les événements à la présence — comment le calendrier alimente la station de check-in.