Calendrier séquentiel

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Un calendrier séquentiel ou les évènements futurs seront affichés et classés dans l’ordre de leur date de début et disparaitront une fois leur date de fin dépassée.

Description

  • Le calendrier permet la publication d’événements qui s’étendent sur plusieurs jours
  • On utilise la date de publication en ligne comme date de départ et la date de publication antérieure comme date de fin.
  • Les évènements disparaitront une fois leur date de fin dépassée.

-  ATTENTION : L’utilisation de l’agenda nécessite l’activation de la publication des articles post-datés.

Exemples

Deux exemples en ligne de cet agenda :

Télécharger

Version actuelle : version 2.0, sept 2003 à télécharger ici.

Adresse de publication originale :
http://support.cassiopea.org/spip/spip-tech.shtml#agenda

Pour ceux qui veulent en savoir plus :

Règles d’écriture de l’agenda :

  • La Date de publication en ligne = la date de DEBUT de l’événement (événement durant 1 ou plusieurs jours). Obligatoire.
  • La Date de publication antérieure = la date de FIN de l’événement (événement durant 1 ou plusieurs jours). Obligatoire.
  • Le Surtitre = le nom de l’organisateur.
  • Le Sous-titre = le lieu de l’événement.

Démarche pour les dates de l’agenda :

  1. Ecrire l’événement normalement
  2. Fixer la date de fin (DATE DE PUBLICATION ANTÉRIEURE)
  3. Publier l’événement en ligne
  4. Fixer la date de début (DATE DE PUBLICATION EN LIGNE)
    Note : Vous devez publier en ligne l’événement avant de pouvoir fixer sa date de publication en ligne (début), car cette dernière n’est modifiable qu’après cette action.

Les codes de cette contribution

  1. le code + la boucle à copier / coller dans la page rubrique du calendrier.
  2. le code + la boucle à copier / coller dans la page article du calendrier.
  3. le fichier agenda-sequentiel.inc à télécharger dans le répertoire racine de votre site spip (là où il y a les squelettes .php3). [1]

1) Le code + la boucle à copier / coller dans la page rubrique

<B_articles>
	<b>Evénements</b><br><br>
	<ul>
	<BOUCLE_articles(ARTICLES){id_rubrique}{par date}{age_redac<=0}>

<?php 
// Récupération et formatage des dates de l'événement
$datep= '#DATE'; 
$dater = '#DATE_REDAC'; 
include "agenda-sequentiel.inc";
?>

	<li><b><?php echo $dateaffiche; ?></b>[<b> à (#SOUSTITRE|supprimer_tags).</b>]
	[<br><i>Organisé par (#SURTITRE|supprimer_tags)</i>]
	[<br><A HREF="#URL_ARTICLE">(#TITRE)</a>]
	[<br>(#DESCRIPTIF)] 
	<hr class="spip">

	</BOUCLE_articles>
	</ul>
</B_articles>
	<br>Il n'y a pas d'événements au calendrier.
<//B_articles>

2) le code + la boucle à copier / coller dans la page article

<BOUCLE_evenement(ARTICLES){id_article}>

	<h1>[(#TITRE|supprimer_numero)]</h1>

<?php 
// Récupération et formatage des dates de l'événement
$datep= '#DATE'; 
$dater = '#DATE_REDAC'; 
include "agenda-sequentiel.inc";
?>

	<b><?php echo $dateaffiche; ?>[ à (#SOUSTITRE|supprimer_tags)]</b>
	[<br><i>Organisé par (#SURTITRE|supprimer_tags)</i>]<br><br>

	[(#CHAPO|justifier)<br><br>]

	[(#TEXTE|justifier)<br><br>]

	[<P><i>(#PS|justifier)</i>]

	[<HR class="spip" width="25%" align="left">(#NOTES)]
			
</BOUCLE_evenement>

3) Le code contenu dans « agenda-sequentiel.inc »

<?php

/************************************************/
// Fonction pour formater la date de l'agenda
// ATTENTION: La publication des articles post-datés doit être activée (Administration du site)
// La date de publication = date de départ, la date de publication antérieur = date de fin
// Les articles dans les boucles sont classés par date de publication
// Le code ci-dessous doit se trouver dans les boucles articles des squeletes rubrique et article adéquat
/*****
<?php 
$datep= '#DATE'; 
$dater = '#DATE_REDAC'; 
include "agenda-sequentiel.inc";
?>
<?php echo $dateaffiche; ?>
*****/
// Auteur: robert.sebille(at)cassiopea.org - sept 2003 
// Sous licence GNU/GPL http://www.gnu.org/copyleft/gpl.html 
/************************************************/

$mois["January"] = "janvier";
$mois["Febrary"] = "février";
$mois["March"] = "mars";
$mois["April"] = "avril";
$mois["May"] = "mai";
$mois["June"] = "juin";
$mois["July"] = "juillet";
$mois["August"] = "août";
$mois["September"] = "septembre";
$mois["October"] = "octobre";
$mois["November"] = "novembre";
$mois["December"] = "décembre";

$jour=array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"); 

$datep=strtotime($datep);
$msp = date("F", $datep);	
$jrp=date("w", $datep); // jour de la semaine 
$datepub=date("l j F Y",$datep);
$datepub=str_replace(date("F", $datep), $mois[$msp], $datepub);
$datepub=str_replace(date("l", $datep), $jour[$jrp], $datepub); 

$dater=strtotime($dater);
$msr = date("F", $dater);
$jrr=date("w", $dater); // jour de la semaine 
$dateredac=date("l j F Y",$dater);
$dateredac=str_replace(date("F", $dater), $mois[$msr], $dateredac);
$dateredac=str_replace(date("l", $dater), $jour[$jrr], $dateredac); 

if ($datep == $dater) {$dateaffiche = "Le ".$datepub;} else {$dateaffiche = "Du ".$datepub." au ".$dateredac;}


?>

Remarque de mise à jour :

Pour ceux qui avaient implémenté la version 1.0 et qui souhaitent passer à la version 2.0 :

Le passage de la 1.0 à la 2.0 prend 2 minutes, voici ce qu’il y a à faire :

1) Uploader le fichier « agenda-sequentiel.inc » dans le répertoire racine de votre site spip (là où il y a les squelettes .php3).

2) Dans le code des squelettes .html rubrique ET article de l’agenda, remplacer

les anciennes lignes :

// getDateAgenda est dans mes_fonctions.php3
$datep= '#DATE'; 
$dater = '#DATE_REDAC'; 
$dateaffiche = getDateAgenda($datep, $dater);

par ces nouvelles :

// Récupération et formatage des dates de l'événement
$datep= '#DATE'; 
$dater = '#DATE_REDAC'; 
include "agenda-sequentiel.inc";

3) Supprimer le code de la fonction « getDateAgenda(.. » de votre fichier mes_fonctions.php3. (ce dernier point n’est pas obligatoire, mais inutile de charger du code devenu inutile).

Notes

[1Remarque : Changements dans la version 2.0 par rapport à la version 1.0 : l’appel de fonction qui provoquait la Fatal error : Call to undefined function : getDateAgenda() sur certains sites a été supprimé et remplacé par un fichier inclus (agenda-sequentiel.inc) qui contient le code (qui n’est donc plus dans mes_fonctions.php3)

Discussion

11 discussions

  • serrurier pas cher paris

    Avez-vous une version plus récente de cet article ? Patricia pour serrurerie

    Répondre à ce message

  • Bonjour, pardonnez mon ignorance, mais je ne comprends vraiment pas comment utiliser ce calendrier. J’ai du faire un impasse sur le fonctionnement général de spip, que j’arrivais néamoins à utiliser selon mes besoins auparavant. J’aimerais tout simplement installer un agenda sur une page de mon site. Ce que je ne comprends pas, c’est dans quelle pages article et rubrique je dois copier/coller ces codes... En effet, je n’ai jamais utilisé de page rubrique sur mes sites...

    Je pense donc qu’une explication plus détaillée de l’installation serait nécessaire, ne serait-ce que pour permettre au gens qui ne maitrisent pas bien le fonctionnement de spip de le comprendre un petit peu mieux...

    Merci.

    Répondre à ce message

  • 1

    Moi j’ai un problème avec ce script.

    Lorsque je poste un article, il me met toujours « le jeudi 1 janvier 1970 » au lieu de ce qui est prévu soit du jour mois année au jour moi année.

    Quelqu’un peut il m aider ?
    ps : j ai la dernière version de spip et du script, et pas de mes_fonctions.php3

    • pierre maillet

      J’ai repéré le problème au niveau de la ligne suivante :

      $datep=strtotime($datep) ;
      dans « agenda-sequentiel.inc »

      Avant la ligne la variable $datep est correcte,après la ligne elle prend la valeur de -1.

      Très bizarre puisque cela fonctionne très bien en local avec easyphp 1-7

    Répondre à ce message

  • Stéven

    Salut
    Merci pour cette contrib, ces quelques boucles sont très bien adaptées à un agenda de type « manifestations ».
    Pas de problème pour la mise en place sous SPIP 1.7...

    Répondre à ce message

  • J’ai regardé la syntaxe de l’agenda séquentiel
    A la page sommaire j’ai mon lien vers la rubrique agenda id=4
    Je colle le code dans la page rubrique-ag.html (différent autres rubriques)
    Je colle le code dans la page article-ag.html après je suis un peu pommé. Pourrais-til y avoir une explication plus détaillée.

    Répondre à ce message

  • 4
    asso.bachant

    POURQUOI ?

    Evénements

    Parse error : parse error, unexpected $ in /home/users/b/bachant/www/agenda-sequentiel.inc on line 41

    essazicalendar

    LIGNE 41
    $datepub=str_replace(date(« l », $datep), $jour[$jrp], $datepub) ;

    • bon ça fonctionne presque, a part le petit bug de la ligne 41

      une petite question, je souhaite crer dans mon agenda des sous rubriques et pouvoir les afficher.

      rubrique agenda

      evenements quelconque

      sous-rubrique foot -> les matchs

      sous-rubrique judo -> les competitions

      or la ne s’affiche que evnement quelconque, ou faire la modif pour afficher les matchs et les compet.

      suis je assez clair !

    • pb de la ligne 41 résolue

    • asso.bachant

      c’est d’enfer ça fonctionne.

      agenda couplé aux annonces séquentiel !

    • asso.bachant

      j’ai crié victoire trop vite

      a priori les news s’affiche en permanence

      date de pub en ligne : date de début de l’evenement
      date de pub antérieur : fin de l’evenement

      ors quel que soit la date de pub en ligne, l’evenement s’affiche.

      j’ai modifié cet ligne
      <BOUCLE_articles(ARTICLES)id_rubriquepar dateage_redac<=0>
      par
      <BOUCLE_articles(ARTICLES)id_rubrique !==^(20)$par dateage_redac<=0>

      afin d’afficher les sous rubriques de la rubrique agenda.

      serait ce cette modif qui pertube ?

    Répondre à ce message

  • Christophe

    Bravo pour cette boucle, malheureusement elle ne fait que pallier à un gros défaut de SPIP (le seul heureusement) : il faut valider l’article avant de pouvoir modifier la date => être administrateur.
    Il manque à SPIP un vrai gestionnaire d’agenda séquentiel...
    Avec ça il serait parfait, déjà que...

    Répondre à ce message

  • Bonjour,
    Je teste en local le calendrier, sans succès.
    J’obtiens toujours « il n’y a pas d’événement » lorsque je demande à voir la rubrique abritant le calendrier.

    -  J’ai créé à la racine du site une rubrique « agendas » (n°18) ; puis j’ai créé une sous-rubrique « vacances » (n°19).
    -  J’ai fait un article pour la rubrique « agenda » (date de public. = ce jour / date de fin = demain)
    -  J’ai bien déclaré dans l’interface privé l’affichage des dates de public. antérieure.
    -  J’ai créé un squel. article-18.html + un squel. rubrique-18.html + article-18.php3 + rubrique-18.php3
    -  le fichier « agenda-séquentiel.inc » est bien à la racine avec les autres squelettes.
    Le squel. article fonctionne lorsque j’arrive directement sur cet article. Rien à faire pour le squelette rubrique-18.

    Une idée ?

    Répondre à ce message

  • 1

    merci pour ce travail ! si j’en juge par les deux urls-exemple ;) parce que chez moi, en local, ça ne marche pas :

    pourtant

    1. la date de publication antérieure est autorisée
    2. les boucles sont copiées respectivement dans un rubrique-33.html (ma sous-rub calendrier) et dans un article-33.html (squel particulier et dépendant de la rubrique 33 c’est bien ça ?)
    3. le cache de spip et celui du navigateur sont vidés
    4. un article a été *publié* dans la rubrique 33

    mais

    la page rubrique m’affiche toujours « Il n’y a pas d’événements au calendrier. »

    mmmh :-/

    jc

    Répondre à ce message

  • Bonjour,
    Merci pour tout ce que vous faites.
    J’ai récupérer la version 2.0 d’« agenda séquentiel ».
    Je suis en train de faire des tests en local et j’ai un bug au niveau de l’affichage du mois de février :
    j’ai mis un événement du 25 février 2003 au 10 octobre 20003 et le résultat affiche :

    « Du mardi 25 2003 au vendredi 10 octobre 2003 à Le grand palais. »

    Apparemment (je n’ai pas fait tous les mois) cela ne concerne que « février ».

    Où est le bug (qui se retrouve dans la page article). Je n’ai rien vu de bizarre dans « agenda-sequentiel.inc ».

    Autre chose, mais là , ce n’est pas un bug, lorsque mon lieu commence par « Le » quelque chose on se retrouve avec « à Le » ce qui peut passer pour un nom propre(quoique à Le Grand Palais" c’est bof bof, mais lorque on veut mettre le restaurant Machin ....que faut-il modifier et où.

    merci encore

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom