SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [vi] [zh] Espace de traduction

Télécharger

Le calendrier de [SPIP 1.8.2]

Août 2005 — mis à jour le : Décembre 2007

Toutes les versions de cet article :


SPIP 1.8.2 permet de visualiser dans l’espace public des calendriers avec le même affichage que celui de l’espace privé, et plus généralement de construire des agendas quelconques bénéficiant des outils de mises en pages de ces calendriers. Cette possibilité est fournie par un nouveau critère de boucle et trois nouveaux filtres.

Le critère agenda possède un nombre variable d’arguments et peut donc s’écrire de deux façons :
-  {agenda datetime, type, AAAA, MM, JJ}
-  {agenda datetime, periode, AAAA, MM, JJ, AAAA2, MM2, JJ2}

Les deux premiers arguments sont :

  1. un nom de champ SQL de type datetime (par exemple date ou date_redac pour la table Articles et date_time pour les Breves) ; cet argument est obligatoire.
  2. un type de calendrier (jour, semaine, mois ou periode) ; la valeur par défaut est mois.

Ces deux arguments doivent être littéraux (autrement dit ils ne peuvent être calculés dynamiquement par #ENV ou toute autre balise).

Les trois prochains arguments sont optionnels et peuvent être indiqués par des balises (avec et sans filtre) :

  1. YYYY une chaîne d’exactement 4 chiffres indiquant une année ;
  2. MM une chaîne d’exactement 2 chiffres indiquant un mois ;
  3. JJ une chaîne d’exactement 2 chiffres indiquant un jour.

Si ces valeurs sont omises ou nulles, elles sont remplacées par celle de la date courante. Ces paramètres représentent la date d’un jour dans la période choisie :
-  si le type est jour, on affichera les éléments dont la date correspond au jour spécifié,
-  si le type est semaine, on affichera les éléments dont la date est dans la semaine qui contient le jour spécifié,
-  si le type est mois, on affichera les éléments dont la date est dans le mois qui contient le mois spécifié (dans ce cas, le paramètre de jour JJ est facultatif).

Par exemple :

affiche une liste des articles publiés dans la semaine actuelle.

affiche une liste des articles publiés le même mois que l’article actuel.

Dans le cas où l’argument type (le deuxième argument) vaut periode, trois autres arguments peuvent être spécifiés à la fin du critère. Alors :
-  YYYY, MM, JJ correspondront à la date de début de la période,
-  YYYY2, MM2, JJ2 correspondront à la date de fin de la période.

Si le deuxième trio spécifiant la date de fin est omis, la date courante sera prise comme date de fin, et si le premier trio est également absent, la période de sélection couvrira toute la vie du site (pour les sites avec beaucoup d’articles, le temps d’exécution risque d’être excessif si d’autres critères n’en limitent pas le nombre).

Par exemple :

liste les articles qui ont été publiés après l’article actuel.


Pour mettre en page les éléments sélectionnés par une boucle (en particulier une boucle avec un critère agenda) sous forme de calendrier, SPIP fournit trois filtres. Ces filtres fournissent un affichage similaire au calendrier de l’espace privé avec le même système de navigation.

-  Le filtre agenda_memo s’applique sur une balise de date (par exemple #DATE ou #DATE_MODIF) et prend quatre paramètres :

  1. un descriptif
  2. un titre
  3. une URL représentant l’élément ayant ce titre et ce descriptif (par exemple #URL_ARTICLE)
  4. un nom de classe CSS

Si la balise sur laquelle agenda_memo s’applique n’est pas nulle, il se contente de mémoriser la date et les trois premiers arguments dans un tableau indexé par le dernier argument (le nom de classe CSS) et ne retourne rien (aucun affichage).

L’utilisation du dernier argument comme index pour l’élément à mémoriser permet d’avoir plusieurs calendriers par page. De plus, la classe spécifiée ici sera attribuée à cet élément dans l’affichage en calendrier fourni par agenda_affiche. Ainsi, on peut donner des styles différents aux éléments. La feuille calendrier.css fournit 28 styles différents qui donnent un exemple de différents styles de calendrier.

-  Le filtre agenda_affiche s’applique sur une balise retournant le nombre d’éléments à afficher (en général #TOTAL_BOUCLE) et prend trois paramètres :

  1. un texte qui sera affiché si la balise filtrée ne retourne rien (0 élément à afficher) ;
  2. un type de calendrier (jour, semaine, mois ou periode) ;
  3. des noms de classes CSS utilisées dans l’appel du filtre précédent qui permettent de filtrer les éléments à afficher.

Si la balise filtrée est nulle, ce filtre retourne son premier argument. Sinon il retourne les éléments mémorisés par le filtre agenda_memo mis en page dans un calendrier du type demandé.

Seul les éléments indexés par agenda_memo avec une des classes CSS indiquées dans le dernier argument seront affichés (ou alors tous les éléments si ce paramètre est omis). Ainsi on peut filtrer les éléments pour les répartir dans plusieurs calendriers sur la même page.

Le type periode restreindra l’affichage à la période comprise entre le plus vieil élément et le plus récent effectivement trouvés, ce qui permet de donner dans le critère une période très large sans récupérer un affichage trop long.

Exemple :

affiche les articles publiés dans la semaine actuelle sous forme de calendrier.

-  Enfin, le filtre agenda_connu teste si son argument est l’un des quatre types de calendriers connus (jour, semaine, mois ou periode).

Ce critère et ces filtres sont utilisés par les nouveaux squelettes agenda_jour.html, agenda_semaine.html, agenda_mois.html et agenda_periode.html, appelés à partir du squelette agenda.html qui indique dans son en-tête les feuilles de style et fonctions javascript nécessaires (mais remplaçables à volonté). Ces squelettes fournissent donc un exemple représentatif d’utilisation.


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé