Plugin Jour J

PluginDernière version : v0.8 du 16 juin 2005

Un plugin qui sert à compter un nombre de jours depuis ou jusqu'à une date donnée (comme pour un anniversaire, un décompte avant une sortie, ...). Je l'utilise dans la partie À venir dans la partie gauche de mon blog.

Attention : ce plugin fonctionne avec les versions 1.2 et suivantes de DotClear !

Voir l'analyse du plugin dans ce billet.

Installation

Attention

Les paramètres de la fonction d'affichage ont été ré-organisés, lisez attentivement la documentation ci-dessous si vous utilisez des paramètres personnalisés.

Utilisation

Une fois installé, la partie administration du plugin permet de créer, de modifier et de supprimer un ou plusieurs jours J. Un jour J peut faire référence à une date passée, dans ce cas on compte le nombre de jours écoulés depuis cette date, ou alors à une date future et ici on décompte le nombre de jours restants.

On peut par exemple afficher le nombre de jours restants avant une naissance ou bien le nombre de jours écoulés depuis le début d'un projet, etc. Les utilisations sont diverses et variées. Le compte ou le décompte est précisé via l'interface d'administration.

Un jour J peut être répété à intervalle régulier et dans ce cas, le nombre de jours restants jusqu'à la prochaine échéance sera affiché.

Note

Les dates valides vont du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT. Sur les systèmes Windows, cette intervalle va du 01-01-1970 au 19-01-2038. Donc pour ceux qui souhaiteraient afficher le nombre de jours restants avant leur retraite bien méritée sont priés d'être né avant le 20 janvier 1978 ;-)

Usage de la fonction pour l'affichage

Pour afficher la liste des jours J, insérez le code suivant dans votre fichier template :

<?php dcDday::showList(); ?>

La forme complète de la fonction est la suivante :

showList(
 [arry_dday],
 [arry_filter],
 ["<ul class="dday">%s</ul>"],
 ["<li>%s</li>"],
 ["%1\$s il y a <span class="dday_days">%2\$d</span> jours"],
 ["%1\$s <span class="dday_text">hier</span>"],
 ["%1\$s <span class="dday_text">aujourd\'hui</span>"],
 ["%1\$s <span class="dday_text">aujourd\'hui</span>
  dans <span class="dday_hours">%3\$d</span>
  h<span class="dday_minutes">%4\$02d</span>"],
 ["%1\$s <span class="dday_text">demain</span>"],
 ["%1\$s dans <span class="dday_days">%2\$d</span> jours"])

Avec arry_dday étant soit le numéro du jour J soit un tableau de numéro de jour J, dans ce cas, l'affichage sera limité à ce ou ces jours. Mettre null pour obtenir la liste complète. arry_filter étant un tableau représentant la liste des échéances à lister. Ce tableau doit contenir 6 valeurs égales à 0 pour masquer ces échéances ou égales à 1 pour les afficher. Dans l'ordre les valeurs s'appliquent au jours J dont l'échéance est :

  • passée depuis plus d'un jour,
  • passée la veille,
  • passée ce même jour,
  • à venir ce même jour,
  • à venir le lendemain,
  • à venir le sur-lendemain ou plus tard

Les autres paramètres (3ème au 10ème) permettent respectivement de formatter :

  • l'ensemble de la liste
  • chaque élément de la liste
  • le nombre de jours :
    • passés (sur-lendemain du jour J et suivants)
    • passés (lendemain du jour J)
    • quand il est égal à 0 (on est au jour J)
    • quand il est égal à 0 (on est au jour J) avec affichage du temps restant (en heures et minutes)
    • restants (veille du jour J)
    • restants (avant-veille du jour J et précédents)

Exemple :

  • Pour obtenir l'affichage des jours J numéros 1, 4, 5 et 12. Les numéros sont indiqués entre crochets sur la page d'administration des jours J :
showList(array(1,4,5,12));
  • Pour obtenir l'affichage de tous les jours J dont l'échéance est à venir :
showList(null, array(0, 0, 0, 1, 1, 1),
"<ul class="dday">%s</ul>",
"<li>%s</li>",
"%1\$s il y a <span class="dday_days">%2\$d</span> jours",
"%1\$s <span class="dday_text">hier</span>",
"%1\$s <span class="dday_text">aujourd\'hui</span>",
"%1\$s <span class="dday_text">aujourd\'hui</span>
  dans <span class="dday_hours">%3\$d</span>
  h<span class="dday_minutes">%4\$02d</span>",
"%1\$s <span class="dday_text">demain</span>",
"%1\$s dans <span class="dday_days">%2\$d</span> jours"
);

Codes sources

Evolutions probables ou possibles

v0.9 et suivantes

  • Fonctions informatives sur un ou plusieurs jours J : date de la prochaine échéance, URL, ...
  • Possibilité de trier les jours J en fonction de leur délais avant/après échéance,
  • Possibilité de limiter le nombre de jours J affichés,
  • Vos suggestions...

Changements

v0.8 (16 juin 2005 - voir l'annonce)

  • Implémentation du drag'n drop pour ordonner les jours J

v0.7.1 (14 juin 2005)

  • Correction de la gestion de l'ordre des jours J
  • Contrôle renforcé des retours de requêtes SQL

v0.7 (7 juin 2005 - voir l'annonce)

  • Possibilité de définir une période d'affichage d'un jour J autour de l'échéance. Prenons le jour de la Marmotte par exemple (qui a lieu le 2 février comme chacun sait ;)) : vous n'avez pas forcément envie de l'afficher l'année durant. Le décompte pourrait apparaître 45 jours avant et disparaitre 15 jours après par exemple. (suggestion de Jub)
  • Formattage spécifique pour chaque jour J (suggestion de toenail)
  • Complément d'aide en ligne sur l'utilisation des fonctions (suggestion de Julien)

v0.6.1 (2 juin 2005)

  • Correction de la requête d'ajout d'un jour J

v0.6 (1er juin 2005 - voir l'annonce)

  • Activation ou désactivation d'un billet une fois l'échéance atteinte. (ajouté le 6 avril 2005)

v0.5 (26 mai 2005 - voir l'annonce)

  • Mise au propre (et à la norme) de la documentation des codes sources
  • Ajout de la gestion d'une liste de numéros de jours J à traiter
  • Ajout de la gestion de filtre en fonction des échéances des jours J traités

v0.4 (4 mai 2005 - voir l'annonce)

  • Ajout par défaut d'un <span class="dday_xxx">...</span> autour de la partie dynamique de l'affichage, avec xxx = days pour les nombres de jours, xxx = text pour les textes (hier, aujourd'hui, demain), xxx = hours pour les nombres d'heures et xxx = minutes pour les nombres de minutes. D'autre part, le bloc encadrant <ul>%s</ul> sera complété d'une classe dday : <ul class="dday">%s</ul>. Celà devrait permettre d'appliquer les styles voulus en fonction du contexte.
  • Ajout de la documentation en anglais (ISO-1 et UTF-8)
  • Rajout de l'initialisation des variables locales côté administration (pratique pour ceux qui ont un affichage complet des erreurs PHP à E_ALL);

v0.3 (3 mai 2005 - voir l'annonce)

  • Correction du traitement des échéances (l'heure du jour J est maintenant correctement prise en compte)
  • Ajout de l'affichage du temps restant (en heures et minutes) lorsque l'échéance est ce jour mais pas encore passée dans la journée
  • Ajout d'un lien vers la licence applicable à ce plugin dans la partie administrative
  • Ajout de l'aide au format UTF-8

v0.2 (23 mars 2005 - voir l'annonce)

  • Affichage des identificateurs des jours J dans l'interface d'administration
  • Mise en ligne/hors ligne simplifiée (à l'image des billets)
  • Correction des bugs de la v0.1 :
    • Fonction de suppression de jour J inopérante
    • Non sauvegarde de la langue associée au lien d'un jour J

v0.1 (22 mars 2005)

  • Version initiale.

Haut de page