-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Un petit projet permettant d'afficher un calendrier de disponibilités (occupé/libre) utilisant un fichier ics. Ne nécessite que php et un serveur webdav optionnel pour publier le fichier ics.
Le traitement du fichier ics est effectué en utilisant la bibliothèque iCalcreator L'affichage est basé sur le projet de Thanh Nguyen Un système de cache est utilisé, pour ne pas avoir a reparcourir le fichier ics si il n'a pas été modifié. Système basé sur simplecache
- php, avec un accès en écriture (pour le cache)
- un fichier ics indiquant les disponibilités de la ressource
- optionel : un serveur webdav
-
Récupérez les sources Le répertoire include contient les bibliothèques, le répertoire css la feuille de style associée au calendrier (cal.css)
-
Mettez en place le fichier ics Il faut utiliser un fichier par ressource dont on veut afficher la disponibilité. L'affichage utilise la notion de disponibilité liée a un événement pour déterminer si la ressource est disponible ou non. Il faut donc, pour réserver la ressource, créé un événement pour la plage voulue en spécifiant "occupé" dans le status.
Optionnel : si ce fichier est dans un répertoire accessible avec webdav, il est alors possible de s'y abonner via ical ou thunderbird/lightning
Un fichier ics avec le contenu suivant permet de réserver la ressource du 11 avril 2012 15:00 au 19 avril 2012 10:00. La granularité de la réservation est actuellement d'une journée (cf issue #1 ). Le 19 avril apparaîtra donc comme réservé.
BEGIN:VCALENDAR PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN VERSION:2.0 X-WR-CALNAME:Exemple X-WR-TIMEZONE:Europe/Paris BEGIN:VEVENT CREATED:20120110T143503Z LAST-MODIFIED:20120110T143851Z DTSTAMP:20120110T143851Z UID:31ca60c8-1b50-4869-9184-88ec4544e9dd SUMMARY:Exemple de reservation STATUS:CONFIRMED ORGANIZER;RSVP=TRUE;CN=Moi;PARTSTAT=ACCEPTED;ROLE=CHAIR:mail to:moi@bestlibre DTSTART;VALUE=DATE-TIME:20120411T150000Z DTEND;VALUE=DATE-TIME:20120419T100000Z TRANSP:OPAQUE SEQUENCE:1 X-MOZ-GENERATION:1 END:VEVENT END:VCALENDAR
-
Mettez en place le calendrier Le fichier dispo.php présente un exemple documenté d'utilisation du calendrier.Il affiche l'année courante et les deux suivantes. Les points importants sont :
- la lecture du fichier ics et la construction de l'objet associé avec :
$vcal=new vcalendar(); $vcal->setConfig( 'directory', 'calendar' ); // set directory $vcal->setConfig( 'filename', $ics_file ); // set file name $vcal->parse(); $vcal->sort();
- la construction, mois par mois, du calendrier :
$mois=Array("01","02","03","04","05","06","07","08","09","10","11","12"); foreach($mois as $periode){ $content .= showCalendar($annee."-".$periode,$vcal); }
Ce projet est distribué sous license LGPL
- Documenter l'exemple sur le wiki
- affichage proprement dit
- lien avec un serveur webdav
- lien avec google agenda (?)
- Ajouter la possibilité de dispo par demi-journées: #1
- Traduire la doc en anglais