Sommaire

Description

Calendrier simple en PHP

<< mai 2006 >>
lun mar mer jeu ven sam dim
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4

Version : v2.2
Auteur : Sylvain Baudoin
Licence : GPL (GNU General Public License)
Veuillez remonter toute erreur à [email protected]

Installation et utilisation

Installation

  1. Copiez les fichiers calendar.php, calendar_js.php et calendar_locales.php dans un même répertoire de votre site.
  2. Copiez également le fichier calendar.css sur votre site, mais pas nécessairement dans le même répertoire que les précédents fichiers. Par exemple, copiez-le là où vous mettez toutes les feuilles de style de votre site.

Si nécessaire, vous pouvez renommez les fichiers :

Utilisation des scripts

Pour un exemple complet, vous pouvez consulter la page de démonstration demo_fr.php. Le détail complet des paramètres de configuration du calendrier est donné dans un paragraphe dédié.

Intégration PHP

Il suffit de procéder de la façon suivante dans la page PHP où vous voulez afficher le calendrier :

<html>
<head>
...
<link rel="stylesheet" href="calendar.css" type="text/css" />
...
</head>

<body>
...
<?php
...
// Appel au script du calendrier
require_once("calendar.php");
// Parametrage
$params = array(...);
// Affichage
Calendar($params);
...
?>
<body>
<html>

Les chemins vers la feuille de style et le script calendar.php doivent bien entendu être corrigés par rapport à l'endroit où vous avez mis ces fichiers.

Le paramétrage du calendrier se fait grâce à un tableau associatif. Par exemple :

$params = array(
              "LANGUAGE_CODE" => "en",
              "FIRST_WEEK_DAY" => 1,
              "USE_SESSION" => true
          );
Calendar($params);

ATTENTION !!! si vous activez l'utilisation des sessions (USE_SESSION = true), vous devez créer vous-même la session au tout début de votre page car le script du calendrier ne le fera pas.

Pour mettre plusieurs calendrier sur une même page, inutile de réincorporer le script calendar.php : il suffit de définir les nouveaux paramètres de chaque calendrier et d'appeler la fonction Calendar() avec ces paramètres :

...
<?php
require_once("calendar.php");

// Premier calendrier
$params1 = array(...);
Calendar($params1);
...
?>
...
<?php
// Second calendrier
$params2 = array(...);
Calendar($params2);
?>
...

Depuis la version 2.1, il est possible de récupérer le code HTML du calendrier dans votre code PHP en précisant la valeur "return" au paramètre OUTPUT_MODE. Exemple :

...
<?php
require_once("calendar.php");

$params1 = array(..., "OUTPUT_MODE" => "return", ...);
$html_calendar = Calendar($params1);
...
// Affichage du calendrier
echo $html_calendar;
...
?>
...

Intégration JavaScript

ATTENTION !!! pour l'intégration JavaScript, il reste nécessaire d'avoir un serveur Web PHP pour exécuter les scripts calendar.php et calendar_js.php. Le but de cet intégration JavaScript est de permettre d'afficher le calendrier dans les pages Web dans lesquelles il n'est pas possible d'écrire du PHP.

Pour cette intégration, il suffit de procéder de la façon suivante :

<html>
<head>
...
<link rel="stylesheet" href="calendar.css" type="text/css" />
...
</head>

<body>
...
<!-- Affichage du calendrier -->
<script type="text/javascript" src="calendar_js.php?..."></script>
...
<body>
<html>

Le paramétrage du calendrier se fait en passant les paramètres du calendrier et leur valeur en tant que variables d'URL. Ainsi, pour définir les paramètres CSS_PREFIX à "foo_" et USE_SESSION à true, il faut faire :

<script type="text/javascript"
  src="calendar_js.php?CSS_PREFIX=foo_&USE_SESSION=true">
</script>

Pensez bien à ajouter la feuille de style du calendrier dans votre page (voir plus bas, paragraphe "Style du calendrier").

Paramétrage et personnalisation

Paramètres du calendrier

Le paramétrage du calendrier se fait en définissant des paramètres. Pour chaque paramètre non défini, des valeurs par défaut sont utilisées :

Paramètre Description Valeur par défaut
PREFIX préfixe des paramètres d'URL et de session du calendrier. Définissez une valeur différente pour chaque calendrier à afficher sur la même page. Ne pas commencer le préfixe par un chiffre. "calendar_"
CSS_PREFIX préfixe des classes CSS utilisées pour le style du calendrier. A utiliser pour afficher des calendriers dans différents styles. "calendar_"
DATE_URL si défini, indique une URL à utiliser pour rendre les jours du calendrier cliquables. Cette URL est complétée par le paramètre d'URL indique par le paramètre URL_PARAMETER du calendrier. ""
URL_PARAMETER si le paramètre précédent (DATE_URL) est défini, indique le nom du paramètre d'URL à utiliser pour compléter l'URL DATE_URL avec la date cliquée. La date est passée au format indiqué par le paramètre URL_DAY_DATE_FORMAT pour les jours et URL_MONTH_DATE_FORMAT pour le mois et l'année (lien du titre du calendrier). "date"
USE_SESSION mettre à true pour stocker les données d'affichage du calendrier en session. Cela permet de mémoriser l'affichage lorsqu'on navigue entre plusieurs pages.
ATTENTION !!! si vous utilisez les sessions, n'oubliez pas de créer la session au tout début de votre script, ce script ne le fera pas.
false
PRESERVE_URL indique, au moment de constuire les URL des liens "mois précédent" et "mois suivant", s'il faut conserver (true) l'URL actuelle de la page et ajouter la date (?xx=yyy&...&date=...) ou s'il faut supprimer la query string et ne mettre que le paramètre de date (?date=...). true
JS indique si le calendrier est intégré en JavaScript (true) ou non. false
JS_URL si l'intégration JavaScript est utilisée, doit indiquer l'URL de la page intégrant le calendrier. ""
FIRST_WEEK_DAY premier jour de la semaine : 1 pour lundi, 2 pour mardi, etc..., 7 ou 0 pour dimanche. 1 (lundi)
LANGUAGE_CODE code ISO à 2 lettres de la langue d'affichage du calendrier. "fr" (francais)
CLICKABLE_TITLE lorsque DATE_URL est défini, dit si le titre du calendrier (i.e. le mois + année en haut du calendrier) est cliquable. Dans ce cas, la date passée dans le paramètre d'URL est au format indiqué par le paramètre URL_MONTH_DATE_FORMAT. true
OUTPUT_MODE si défini à "return", le code HTML du calendrier sera renvoyé en tant que valeur de retour de la fonction Calendar. Si défini à "echo", le code HTML du calendrier sera directement renvoyé dans la réponse au navigateur. Utilisez "return" si vous voulez récupérer le code HTML du calendrier dans une variable PHP et éventuellement faire des traitements dessus. "echo"
URL_DAY_DATE_FORMAT lorsque DATE_URL est défini, indique le format de la date des jours du calendrier passée dans l'URL. Ce format doit être donné selon le format supporté par la fonction PHP date. Sans effet si DATE_URL n'est pas défini. "dmY" (jjmmaaaa)
URL_MONTH_DATE_FORMAT lorsque DATE_URL est défini, indique le format de la date du mois passée dans l'URL (lien du titre du calendrier). Ce format doit être donné selon le format supporté par la fonction PHP date. Sans effet si DATE_URL n'est pas défini. "mY" (mmaaaa)

Gestion des liens (jours du calendrier cliquables)

Vous pouvez rendre les jours du calendrier cliquables. Pour cela, définissez le paramètre DATE_URL. Dans ce cas, toutes les dates du calendrier seront cliquables. Les URL des dates sont alors construites de la façon suivante :

<valeur du paramètre DATE_URL><?|&><valeur du paramètre URL_PARAMETER>=<date du jour au format URL_DAY_DATE_FORMAT>

Par exemple, si vous définissez DATE_URL à "/rep1/rep2/script.php?foo=bar", URL_PARAMETER à "event_date" et URL_DAY_DATE_FORMAT à "Ymd", alors les URL des jours du calendrier seront les suivantes :

/rep1/rep2/script.php?foo=bar&event_date=20060813
/rep1/rep2/script.php?foo=bar&event_date=20060814
...

L'URL du titre du calendrier (i.e. l'URL du mois) est construite de la même façon mais en utilisant URL_MONTH_DATE_FORMAT à la place de URL_DAY_DATE_FORMAT.

Dans cette version du calendrier (de même que les versions précédentes), il n'est pas possible de rendre seulement quelques cliquables par simple paramétrage. Si vous souhaitez ne rendre que quelques dates cliquables, vous devez modifier le code du fichier calendar.php par exemple pour aller chercher ces dates dans une base de données.

Style du calendrier

Le style du calendrier est entièrement défini par CSS. Vous devez déclarer vous-même la feuille de style du calendrier dans le code HTML de vos pages. Par exemple, ajoutez la ligne suivante dans les en-têtes de vos pages Web si vous avez placé la feuille de style par défaut du calendrier à la racine de votre site :

<link rel="stylesheet" href="/calendar.css" type="text/css" />

Reportez-vous également aux démos fournis avec ce script.

Vous pouvez utiliser la feuille par défaut (le fichier calendar.css) ou vos propres styles. Pour le détail des classes utilisées, veuillez consulter le fichier calendar.css. Le nom des classes est calculé en utilisant le préfixe défini par le paramètre CSS_PREFIX. Ceci permet de définir deux styles différents pour deux calendriers affichés dans la même page. Par exemple, si vous définissez le paramètre CSS_PREFIX à foo_ pour un calendrier, les classes CSS qui seront appliqués seront foo_title pour le titre du calendrier (année + mois), foo_weekend pour les jours du week-end, etc.

Pour masquer le lien situé sous le calendrier et ramenant au mois en cours, définissez la propriété CSS display à none.

Internationalisation

Depuis la version 2.0, ce logiciel supporte plusieurs langues d'affichage. La langue d'affichage par défaut est le français. La version 2.0 possède les traductions pour le français, l'anglais, l'allemand, l'espagnol et l'italien. La version 2.1 a apporté une traduction chinoise.

Rappel : pour modifier la langue d'affichage, utilisez le paramètre LANGUAGE_CODE du calendrier (voir le paramétrage) pour indiquer le code ISO 639 de la langue. Vous trouverez la liste de ces codes ISO 639 des langues sur le site http://www.loc.gov/standards/iso639-2/langcodes.html. Exemple :

<?php
...
// On affiche en allemand (code ISO 639 = de)
$params = array(..., "LANGUAGE_CODE" => "de", ...);
Calendar($params);
...
?>

Pour ajouter une langue au calendrier, procédez de la façon suivante :

  1. Trouvez le code ISO 639 de la nouvelle langue.
  2. Editez le fichier calendar_locales.php et complétez les trois variables suivantes :
  3. Indiquez le code de la langue avec le paramètre LANGUAGE_CODE du calendrier.

Historique des évolutions

Version Description
2.2
  • Le paramètre DATE_URL peut désormais contenir une URL absolue ("http://..."), ce qui n'était pas supporté dans les versions précédentes.
  • Ajout de l'utilisation du paramètre DATE_URL dans les démos.
2.1
  • Ajout des paramètres CLICKABLE_TITLE, OUTPUT_MODE, URL_DAY_DATE_FORMAT et URL_MONTH_DATE_FORMAT
  • Ajout du lien de retour à au mois courant
  • Correction de bugs et non conformités XHTML
  • Documentation :
    • Paragraphe "Style du calendrier" complété
    • Ajout du paragraphe "Gestion des liens"
    • Documentation des nouveaux paramètres
  • Ajout des traductions et démo en chinois
2.0
  • Refonte de la gestion des paramètres du calendrier
  • Internationalisation du calendrier
  • Documentation en français et anglais
1.1
  • Correction d'un bug causant un double affichage de certains jours
1.0
  • Version initiale

Crédits, licence et garantie

Copyright (c) 2005-2007 - Sylvain BAUDOIN ([email protected])

Ce programme PHP est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier au titre des clauses de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation ; soit la version 2 de la Licence, ou (à votre discrétion) une version ultérieure quelconque.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. Voir la Licence Publique Generale GNU pour plus de détails.

Vous devriez avoir reçu un exemplaire de la Licence Publique Generale GNU avec ce programme (fichier gpl.txt) ; si ce n'est pas le cas, écrivez à la Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.