Search by

hiddencms / calendar

BloberSh

Calendrier et evenements recurrents pour HiddenCMS

Package info

github.com/HiddenCMS/Calendar

Type:hiddencms-addon

pkg:composer/hiddencms/calendar

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-09-12 15:37 UTC

This package is auto-updated.

Last update: 2026-09-12 15:38:43 UTC


README

Module Composer pour HiddenCMS >= 0.7.3, PHP >= 8.1.

Fonctionnalites

  • Categories colorees, CRUD des evenements et champs personnalises.
  • Calendrier mois, semaine, jour et liste. Details en modale uniquement.
  • Evenements ponctuels ou recurrents : jour, semaine, mois et annee, avec intervalle et derniere date facultative.
  • Champs texte, texte long, select, radio, interrupteur et checkbox ; champs obligatoires facultatifs.
  • Duplication avec ouverture du formulaire pre-rempli en brouillon.
  • Recherche et filtre par categorie dans l'administration et le calendrier public.
  • Export iCalendar de tous les evenements publies, d'une categorie ou d'une serie.
  • Ajout d'une occurrence a Google Calendar par lien direct.
  • Vues et assets personnalisables par le systeme d'overrides HiddenCMS.

Installation

Le depot doit etre publie avant installation sur un autre site. Ajouter un repository Composer VCS pour https://github.com/HiddenCMS/Calendar si le paquet n'est pas encore reference sur Packagist, puis :

composer require hiddencms/calendar:^0.1
php tools/addons.php sync

Activer Calendrier dans Themes & Addons. Les migrations creent les tables et une categorie General ; aucun evenement fictif n'est installe. Les droits evenements, categories et champs se gerent dans la modale de permissions.

Front : /calendar ; administration : /admin/calendar (avec prefixe de langue selon le site).

Dates et recurrence

Les dates sont saisies dans le fuseau IANA de l'evenement (Europe/Paris par defaut). L'heure locale est conservee au changement d'heure. Le calendrier s'affiche dans le fuseau du navigateur du visiteur.

La fin est exclusive. Pour une journee entiere, saisir debut a minuit et fin a minuit le lendemain. La derniere date de recurrence est inclusive.

Chaque semaine signifie le meme jour de semaine ; chaque mois et chaque annee signifient la meme date. Les dates inexistantes sont sautees selon RFC 5545 (le 31 ne revient pas dans un mois sans 31). La modification et la suppression portent sur toute la serie, sans exceptions individuelles dans cette premiere version.

Dates d'evenement entre 1970 et 2100. Duree maximale d'une occurrence recurrente : 366 jours. Intervalle de 1 a 365. Le flux charge au maximum 93 jours et 10 000 occurrences a la fois.

La recurrence propose aussi chaque premier, deuxieme, troisieme, quatrieme, cinquieme ou dernier jour de semaine du mois (par exemple premier vendredi ou troisieme jeudi). La date de debut doit correspondre au choix. L'intervalle est alors exprime en mois. Les mois sans cinquieme jour correspondant sont sautes. Ces regles sont conservees dans l'export iCalendar, sans nouvelle migration SQL.

Export

/calendar/export telecharge un .ics compatible avec Google Calendar, Outlook, Apple Calendar et les clients iCalendar. ?category=ID filtre une categorie ; ?event=ID exporte une serie. Les brouillons ne sont jamais exportes. Les champs personnalises figurent dans la description.

L'export contient les regles de recurrence et definitions de fuseaux avec leurs transitions jusqu'a cent ans apres le dernier debut d'evenement. Il n'y a pas de synchronisation OAuth bidirectionnelle. Le lien Google ajoute uniquement l'occurrence cliquee ; importer le .ics pour toute la serie. On peut egalement utiliser l'URL d'export comme abonnement lorsque le client le permet ; la periodicite de rafraichissement depend du client.

Les champs sont des informations publiques de l'evenement, pas un stockage de donnees privees. Supprimer un champ retire sa definition et son affichage ; ses anciennes valeurs restent dans les donnees des evenements jusqu'a leur prochain enregistrement.

Developpement et tests

php tests/events.php /chemin/du/site/vendor/autoload.php
php tests/database.php /chemin/du/site

Le test SQL utilise une transaction et annule ses changements. Les assets FullCalendar et ses traductions sont embarques. Pour les regenerer, installer les dependances npm puis copier les bundles fullcalendar/index.global.min.js et @fullcalendar/core/locales-all.global.min.js vers modules/calendar/js/fullcalendar.js et fullcalendar-locales.js.

Bibliotheques : FullCalendar 6.1.19, licence MIT ; php-rrule 2.6, licence MIT. Le module est sous GPL-3.0-only.