SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 28 visiteurs en ce moment

Accueil du site > Dates, calendriers et agendas > Calendriers > Archives Calendriers > Calendrier séquentiel 3.0 (multilingue)

Calendrier séquentiel 3.0 (multilingue)

25 mars 2005 – par Robert Sebille – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

Toutes les versions de cet article : [français] [français]

1 vote

Un calendrier séquentiel multilingue où 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

Pour Spip >= 1.7 Calendrier séquentiel 3.0 est l’adaptation de la version 2.0 au multilinguisme de Spip, c-a-d :
-  Un calendrier séquentiel ou les événements futurs seront affichés et classés dans l’ordre de la date de publication en ligne (leur date de début) et disparaitront une fois la date de publication antérieure (leur date de fin) dépassée..
-  Le calendrier permet la publication d’événements qui s’étendent sur plusieurs jours
-  Il obéit aux directives de langue de spip et utilise les fichiers de langues ecrire/lang/local_xx.php3
-  On utilise la date de publication en ligne comme date de départ et la date de publication antérieure comme date de fin
-  ATTENTION : L’utilisation de l’agenda nécessite l’activation de la publication des articles post-datés (Administration du site > Configuration du site > Publication des articles post-datés > Cocher : « Publier les articles, quelle que soit leur date de publication »)

Exemples

La version 3.0 est parfaitement compatible avec les anciennes versions
Deux exemples en ligne de cet agenda :
-  Cette page utilise la version 2.0 : http://www.solsoc.be/rubrique.php3?id_rubrique=48
-  Celle-ci utilise la version 3.0, configurée en français pour reproduire le même affichage que la précédente : http://robert.sebille.openbaz.be/spip/-AGENDA-Agenda-.html. La différence est que si on change la langue du site dans cette version, le calendrier s’adaptera à la langue choisie (en fonction de l’existence des fichiers local_xx.php3)

Télécharger

Version actuelle 3.0, oct 2004 à télécharger ici.
Version 2.0 : Article, sep 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 :
OBLIGATOIRES

  • 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.

Les 2 règles ci-dessous sont un choix fait dans le squelette proposé avec la distribution, vous pouvez les modifier comme vous le désirez sans compromettre le fonctionnement de l’agenda :

  • 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.

CHANGEMENTS dans 3.0 par rapport à la version 2.0 :
-  La modification du code et le fichier .inc
-  L’ajout des fichiers de langue ecrire/lang/local_xx.php3

INSTALLATION (codes ci-dessous ou dans la distrib) :

  1. Copier (ou adapter les vôtres) les fichiers local_fr.php3 et local_en.php3 dans ecrire/lang/
  2. Copier le fichier agenda-sequentiel-3.inc dans le répertoire racine de votre site spip
  3. Copier / coller les codes ci-dessous dans les squelettes html rubrique et article du calendrier

CONFIGURATION :
1) Les fichiers de langues ecrire/lang/local_xx.php3 : Ce sont eux qui déterminent maintenant les « particules » de l’affichage de l’agenda (contrairement au précédentes versions où elles étaient codées en « dur »).

A propos des fichiers local_xx.php3, soit vous n’en n’avez pas créé, et vous pouvez uploader ceux de la distribution, sinon attention à modifier plutôt (que d’écraser ;-) les vôtres ! La doc spip sur ces fichiers local_xx.php3 est particulièrement claire et se trouve ici : http://www.spip.net/fr_article2128.html sous l’intertitre « 1. Méthode des fichiers de langue ». (A lire absolument pour les débutants ou les non familiers de php).

Pour la configuration des langues, vous devez respecter les règles de spip à ce propos, et notamment régler la gestion des langues dans l’admin de spip (au moins activer le multilinguisme), et ne pas oublier de configurer ainsi les balises html et body de vos squelettes :

<html lang="#LANG">
<body dir="#LANG_DIR">
...
</body>
</html>

L’essentiel de la doc sur la gestion des langues de spip se trouve dans cet article http://www.spip.net/fr_article2124.html et dans l’article cité au point précédent, http://www.spip.net/fr_article2128.html.

A propos du code <:variable :> Lors de l’affichage d’un article ou d’une rubrique, ce code sera remplacé par sa traduction dans la langue de l’article ou de la rubrique ou du site (suivant config).

Dans les fichiers de cette distribution, on utilise 3 <:variable :> :
-  la particule <:le :> est fixée à ’Le ’ dans local_fr.php3 et à ’ ’ dans local_en.php3
-  la particule <:du :> est fixée à ’Du ’ dans local_fr.php3 et à ’From ’ dans local_en.php3
-  la particule <:au :> est fixée à ’ au ’ dans local_fr.php3 et à ’ till ’ dans local_en.php3

Avec « $affiche_jour = 1 ; » (v. ci-dessous), cela ecrira :
-  pour les événements d’une durée de 1 jour « Le jeudi 1 janvier 1970 » pour le français et « Thursday January 1st, 2004 » pour l’anglais,
-  et pour les événements durant plusieurs jours, « Du jeudi 1 janvier 1970 au vendredi 2 janvier 1970 » pour le français et « From Thursday January 1st, 1970 till Fruday January 2nd, 1970 » pour l’anglais.

Note : Cela vous permet, en configurant adéquatement vos fichiers de langues, de créer des formules comme « Ce 1 janvier 1970 », ou « Depuis le 1 janvier 1970 jusqu’au 2 janvier 1970 », ou encore « 1 janvier 1970 => janvier 1970 », suivant votre imagination. Enfin, notez que pour ne pas afficher une particule, il suffit de la laisser vide ou la réduire à un espace (’ ’) dans le fichier ecrire/lang/local_ ??.php3 - ca dépend de l’affichage voulu.

2) L’affichage : 3 options de configurations d’affichage sont disponibles dans cette version 3.0, à partir de la variable contenue dans les codes à placer dans les squelettes rubrique et article, $affiche_jour = 0, 1 ou 2
-  $affiche_jour = 0 affiche <:le :>date ou <:du :>date1<:au :>date2. = Ne pas afficher le jour de la semaine, exemple : Le 1 janvier 1970.
-  $affiche_jour = 1 affiche <:le :>jour date ou <:du :>jour date1<:au :>jour date2. = Afficher le jour devant la date et après <:le :>, <:du :> ou <:au :> exemple : « From Thursday January 1st, 1970 till Friday January 2nd, 1970 » ou « le jeudi 1 janvier 1970 ».
-  $affiche_jour = 2 affiche <:le :>date [jour] ou <:du :>date1 [jour]<:au :>date2 [jour]. = Afficher le jour après la date, exemple : « Du 1 janvier 1970 [jeudi] au 2 janvier 1970 [vendredi] ». Les [ ] sont ajoutés.


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 code de 2 fichiers de langues local_fr.php3 et local_en.php3
  4. le fichier agenda-sequentiel-3.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

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

3) 2 fichiers local_fr.php3 et local_en.php3
Attention : a créer dans ecrire/lang/ si vous n’avez pas encore ces fichiers, sinon modifier les vôtres.

local_fr.php3

local_en.php3

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

Remarque de mise à jour :

Pour ceux qui avait implémenté la version 1.0 ou 2.0 et qui souhaite passer à la 3.0 (ATTENTION : votre version de spip doit être >= 1.7 !), voici ce qu’il y a à faire :

  1. Par précaution, faites un backup de vos squelettes rubrique et article de l’agenda.
  2. Activez le multilinguisme dans l’administration de spip
  3. Configurez ainsi les balises html et body de vos squelettes (au moins de l’agenda) :
    <html lang="#LANG">
    <body dir="#LANG_DIR">
    ...
    </body>
    </html>
  1. Procédez à une installation normale
    1. Copier (ou adapter les votres) les fichiers local_fr.php3 et local_en.php3 dans ecrire/lang/
    2. Copier le fichier agenda-sequentiel-3.inc dans le répertoire racine de votre site spip
    3. Copier / coller les codes ci-dessous dans les squelettes html rubrique et article du calendrier
  2. Testez si ca fonctionne, vous convient..
    1. Si oui : vous pouvez supprimer vos backup des squelettes agenda et le fichier agenda-sequentiel.inc (attention, pas agenda-sequentiel-3.inc)
    2. Si non, et si vous souhaitez revenir à la version 2.0 (ou 1.0) : écrasez les squelettes agenda 3.0 avec ceux de votre backup des squelettes agenda de la 2.0 (ou 1.0). Supprimez le fichier agenda-sequentiel-3.inc (attention, pas agenda-sequentiel.inc).

Notes

[1 Remarque technique : Le code contenu dans « agenda-sequentiel-3.inc » est beaucoup plus court que celui de la version 2.0 (agenda-sequentiel.inc), car le formatage des dates est cette fois réalisé par spip à travers les filtres |affdate et |nom_jour

Retour en haut de la page

Vos commentaires

  • Le 25 avril 2006 à 21:40, par franzzz En réponse à : Calendrier séquentiel 3.0 (multilingue)

    Bonjour,

    Malgré tout mes essais répétés, le squelette 3.0 ne tient pas compte du multilingue. Il n’affiche pas du et au alors que je les utilise ailleurs dans le site, et qu’ils s’affichent sans aucun problème. Bien sur, le dir#lang etc sont bien remplis, je crois n’avoir rien oublié. Je suis en version SPIP 1.8.3.

    Quelqu’un aurait il une idée pour m’indiquer comment faire ?

    Répondre à ce message

  • Le 27 septembre 2005 à 01:27, par catherine En réponse à : Calendrier séquentiel 3.0 (multilingue)

    merci cela marche très bien.

    J’utilise WAneswletter avec le « plugin » spip et malheureusement le code php

    <?php
    $date_pub=  
    ...
    include "agenda-sequentiel-3.inc";
    ?>

    n’est pas pris en compte dans l’envoi des nouveautés (ni au format html ni au format texte). Donc la date affichée est toujours la date du jour.

    Ce qui n’est peut être pas étonnant mais un peu dérangeant pour l’annonce d’événements.
    catherine

    • Le 27 septembre 2005 à 17:11, par Robert Sebille En réponse à : Calendrier séquentiel 3.0 (multilingue)

      Effectivement, nouveautes.html est un squelette un peu particulier, mais un squelette, et il faut y implémenter également le code de l’agenda pour que ça fonctionne. Attention que ce squelette est particulier, car il est en php, ce qui le rend délicat à manier, quand on ne connaît pas.

      Voici un squelette nouveautes.html qui envoie des articles de l’agenda séparés des autres articles (il faut remplacer 2 fois XX dans le code par le n° (id) de la rubrique agenda, dans id_rubrique != XX et dans id_rubrique = XX


      <?php

      /**********************************************************/
      /* Ce squelette tres specifique est utilise pour creer    */
      /* l'envoi de l'annonce des nouveautes. Attention, il     */
      /* fonctionne entierement en php...                       */
      /**********************************************************/

      unset($mail_nouveautes);

      $sujet_nouveautes = '[[(#NOM_SITE_SPIP|textebrut|texte_script)]] Les nouveaut&eacute;s';


      //
      // Articles
      //
      <B_nv1>
      $mail_nouveautes = '

               -----------------
               NOUVEAUX ARTICLES
               -----------------

      ';
      // Rempacer XX par le n° (id) de la rubrique agenda
      // Si on veut une récursivité de rubrique à partir de la racine, on peut remplacer
      // {id_rubrique != XX} par {id_secteur != XX}
      <BOUCLE_nv1(ARTICLES){age_relatif<=0}{par date}{inverse}{tout}{id_rubrique != XX}>
             
              $mail_nouveautes .= '[** (#TITRE|textebrut|texte_script) **]';
              $mail_nouveautes .= "\n";
              $mail_nouveautes .= '[par (#LESAUTEURS|textebrut|texte_script)] ';
              $mail_nouveautes .= '[le (#DATE|affdate|texte_script)]'."\n\n";
              $mail_nouveautes .= '[(#INTRODUCTION|textebrut|texte_script)]'."\n\n";
              $mail_nouveautes .= '-> #URL_SITE_SPIP/#URL_ARTICLE'."\n\n";
             
      </BOUCLE_nv1>

      //
      // Breves
      //
      <B_nv2>
      $mail_nouveautes .= '

               ----------------
               NOUVELLES BR&Egrave;VES
               ----------------

      ';
      <BOUCLE_nv2(BREVES){age_relatif<=0}{par date}{inverse}{tout}>
              $mail_nouveautes .= '[* (#TITRE|textebrut|texte_script) *]';
              $mail_nouveautes .= '[ - (#DATE|affdate|texte_script)]'."\n\n";
              $mail_nouveautes .= '[(#INTRODUCTION|textebrut|texte_script)]'."\n\n";
              $mail_nouveautes .= '-> #URL_SITE_SPIP/#URL_BREVE'."\n\n";
      </BOUCLE_nv2>

      //
      // Agenda
      //
      $mail_nouveautes .= '

               -----------------
               NOUVEAUX EVENEMENTS
               -----------------

      ';
      // Rempacer XX par le n° (id) de la rubrique agenda
      // Si on veut une récursivité de rubrique à partir de la racine, on peut remplacer
      // {id_rubrique = XX} par {id_secteur = XX}
      <BOUCLE_nvev1(ARTICLES){age_relatif<=0}{par date}{inverse}{tout}{id_rubrique = XX}>

      $date_pub= '[(#DATE|affdate)]';
      $date_redac= '[(#DATE_REDAC|affdate)]';
      $jour_pub= '[(#DATE|nom_jour)]';
      $jour_redac= '[(#DATE_REDAC|nom_jour)]';

      // Ces particules sont à définir dans les fichiers ecrire/lang/local_??.php3.
      $langue_le='<:le:>'; // date unique, exemple: LE 1 janvier 1970
      $langue_du='<:du:>'; // dates multiples, exemple: DU 1 janvier 1970 AU 2 janvier 1970
      $langue_au='<:au:>';

      // Configuration de l'affichage du jour de la semaine:
      // 0: <:le:>date ou <:du:>date1<:au:>date2.
      // 1: <:le:>jour date ou <:du:>jour date1<:au:>jour date2.
      // 2:  <:le:>date [jour] ou <:du:>date1 [jour]<:au:>date2 [jour].
      $affiche_jour = 1;

      include "agenda-sequentiel-3.inc";

              $mail_nouveautes .= $dateaffiche."\n";
              $mail_nouveautes .= '[à (#SOUSTITRE|supprimer_tags|attribut_html)]';
              $mail_nouveautes .= '[, organisé par (#SURTITRE|supprimer_tags|attribut_html)]'."\n";
              $mail_nouveautes .= '[** (#TITRE|textebrut|texte_script) **]';
              $mail_nouveautes .= "\n\n";
              $mail_nouveautes .= '[(#INTRODUCTION|textebrut|texte_script)]'."\n\n";
              $mail_nouveautes .= '-> #URL_SITE_SPIP/#URL_ARTICLE'."\n\n";
             
      </BOUCLE_nvev1>



      //
      //        Ajouter l'entete
      //
      if ($mail_nouveautes) {
                      $mail_nouveautes = 'Bonjour,

      voici la lettre d\'information du site "[(#NOM_SITE_SPIP|textebrut|texte_script)]" (#URL_SITE_SPIP),
      qui recense les articles et les br&egrave;ves publi&eacute;s depuis '.$jours_neuf.' jours.

      ' . $mail_nouveautes;
              }

      ?>

      Cordialement,
      Robert.

    • Le 11 octobre 2005 à 21:38, par ? En réponse à : Merci Robert

      catherine


    Répondre à ce message

  • Le 12 août 2005 à 17:43, par Sa. Cha. En réponse à : > Calendrier séquentiel 3.0 (multilingue)

    Lorsque l’annonce de l’événement comporte une heure, on voudrait bien qu’elle s’indique aussi. Pour cela, la v. 1.8.2 permet d’ajouter l’heure à la date ainsi qu’à la date de rédaction antérieure.

    Seulement, si l’événement n’en comporte pas, il ne faut pas afficher « à 00 h 00 ». Voici la solution qui fonctionne à http://www.protestanet.be/sp/rubrique1.html

    Dans le squelette agenda (chez moi, il s’appelle rubrique-1.html), après la ligne

    $jour_redac= '[(#DATE_REDAC|nom_jour)]';

    ajouter ces quelques lignes

    $heure_pub= '[(#DATE|heures)]'.' h '.'[(#DATE|minutes)]';
    $heure_redac= '[(#DATE_REDAC|heures)]'.' h '.'[(#DATE_REDAC|minutes)]';

    if ('[(#DATE|heures)]' == '00' and '[(#DATE|minutes)]' == '00') {$heure_pub = '';}
    else
     {$heure_pub= ' à [(#DATE|heures)]'.' h '.'[(#DATE|minutes)]';}

    if ('[(#DATE_REDAC|heures)]' == '00' and '[(#DATE_REDAC|minutes)]' == '00') {$heure_redac = '';}
    else
     {$heure_redac= ' à [(#DATE_REDAC|heures)]'.' h '.'[(#DATE_REDAC|minutes)]';}

    Dans le fichier agenda-sequentiel-3.inc, remplacer le « case 1 » par

      case 1:
          if ($date_pub == $date_redac)
            {$dateaffiche = $langue_le.$jour_pub." ".$date_pub.$heure_pub;}
          else
            {$dateaffiche = $langue_du.$jour_pub." ".$date_pub.$heure_pub.$langue_au.$jour_redac." ".$date_redac.$heure_redac;}
          break;

    Merci à Robert pour le coup de pouce.

    Répondre à ce message

  • Le 28 mars 2005 à 16:35, par Paul Sanches En réponse à : > Calendrier séquentiel 3.0 (multilingue)

    Testé et approuvé, merci.

    • Le 12 juin 2005 à 20:34, par ? En réponse à : > Calendrier séquentiel 3.0 (multilingue)

      Pour fonctionner tout à fait pleinement, donc n’indiquer que la date de l’évenement et non la période...
      Dans agenda-sequentiel-3.inc, modifier le test par

      switch ($affiche_jour)
      case 0 :
      if (strcmp ($date_pub , $date_redac)) $dateaffiche = $langue_le.$date_pub ;
      else $dateaffiche = ’0’.$langue_du.$date_pub.$langue_au.$date_redac ;
      break ;
      case 1 :
      if (strcmp ($date_pub , $date_redac)) $dateaffiche = $langue_le.$jour_pub." « .$date_pub ;
      else $dateaffiche = ’1’.$langue_du.$jour_pub. » ".$date_pub.$langue_au.$jour_redac." « .$date_redac ;
      break ;
      case 2 :
      if (strcmp ($date_pub , $date_redac)) $dateaffiche = $langue_le.$date_pub. » [".$jour_pub."]" ;
      else $dateaffiche = ’2’.$langue_du.$date_pub." [".$jour_pub."]".$langue_au.$date_redac." [".$jour_redac."]" ;
      break ;

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Transaction : créer des formulaires avec paiement en ligne

    13 mars 2011 – 32 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Transaction est une extension du plugin de création de formulaires Formidable pour concevoir des formulaires de paiement en ligne et les connecter aux principales API bancaires françaises. Présentation Transaction introduit 3 nouveaux types de (...)

  • Formulaire de contact avancé

    23 mars 2009 – 1041 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un formulaire de contact configurable, avec de multiples options.

  • Squelette Multi-Saisons

    19 février 2009 – 226 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un squelette qui change de couleurs suivant les saisons, un graphisme tout en rondeurs et de très nombreuses options.

  • JQuery Masonry

    15 août 2011 – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin est un portage pour Spip du plugin jQuery Masonry de David DeSandro : http://masonry.desandro.com/ Principe Ce plugin réorganise les blocs de votre page page d’après une grille (de manière verticale et horizontale) pour réduire au maximum (...)

  • Thélia

    26 juin 2007 – 835 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Une approche basée sur l’utilisation conjointe des deux logiciels SPIP et Thélia pour la réalisation de sites de publication et de vente en ligne