Agendax : simple calendrier ajax

Un petit calendrier « à la dotclear », généré sur base des articles, brèves ou autre via une boucle unique. Il est généré et géré via de l’ajax avec jquery

Introduction

Agendax est un calendrier Ajax. Ajax est une technologie javascript qui permet de charger le contenu d’une partie de page web sans pour autant avoir à recharger la page entière. On charge ainsi uniquement les éléments dont on a besoin. D’où une gain de temps, entre autre.

Dans notre cas, ce sont les données du mois demandé qui se chargeront quand le visiteur clique sur « mois suivant », « mois précédant ».

Pré requis

Pour utiliser Agendax vous avez besoin de la balise #INSERT_HEAD dans le <head> des squelettes.

Installation

Téléchargez le plugin sur la zone et mettez le dossier « agendax » dans le dossier plugins de votre SPIP. Ensuite activez le plugin dans l’espace privée. Et enfin, insérez le code suivant à l’emplacement ou le calendrier doit se mettre :

<div id="agendax"></div>

Paramétrage

La configuration est à faire dans les 3 fichiers principaux :
agendax.css, agendax.js.html et donnees_agendax.html :

-  agendax.css : C’est lui qui rassemble les styles qui vont permettre d’affiner l’apparence du calendrier sur votre site.

-  agendax.js.html : Au début de ce fichier se trouvent plusieurs variables :

  • style_rempli : le style css à utiliser quand le jour à un évènement,
  • style_pas_rempli : le style css à utiliser quand le jour n’a pas d’évènements,
  • fleche_suivant : l’image ou le caractère qui va être affiché pour aller au mois suivant,
  • fleche_precedent : l’image ou le caractère qui va être affiché pour aller au mois précédent,
  • sablier : balise image animée (ou pas) ou le caractère qui va remplacer le nom du mois pendant le chargement de l’ajax.

-  donnees_agendax.html : C’est dans ce fichier que va être faite la boucle. Vous pouvez le modifier comme vous voulez, en ajouter d’autres, etc...

Téléchargement

Agendax 0.1-2

Discussion

33 discussions

  • Tout d’abord félicitation à l’auteur pour ce plugin qui est simple et concis.
    Cependant juste un point ne me semble pas fonctionnel :
    Je me sers de la page agendax_view pour prévisualiser tous les évènements d’une date sélectionnée. Celle-ci est donc accompagnée, en div droite, du calendrier dans lequel on navigue de mois en mois.
    Quand on sélectionne une date, la liste des évènements correspondants apparaît bien mais le calendrier se recharge par rapport au mois de la date du jour (comme quand on charge la page pour la première fois) au lieu de rester sur le mois en cours sélectionné.
    Pas assez féru en js, ne serait-il pas possible de conserver les paramètres annee et mois passés à la fonction remplire_agenda() ?
    A moins que cela ne se situe ailleurs ?

    Répondre à ce message

  • bonjour,

    tout d’abord bravo pour ce beau plug-in.

    un petit souci. J’aimerais faire apparaitre dans l’agenda les articles ET les brèves associés à un mot clé.

    J’ai tenté de mettre une deuxième boucles pour sélectionner également les brèves mais ça ne marche pas.

    est possible ou est ce moi qui fait une fausse manoeuvre ?

    (j’ai reposté le message à cause du titre qui était incomplet...)

    Répondre à ce message

  • bonjour,

    tout d’abord bravo pour ce beau plug-in.

    un petit souci. J’aimerais faire apparaitre dans l’agenda les articles ET les brèves associés à un mot clé.

    J’ai tenté de mettre une deuxième boucles pour sélectionner également les brèves mais ça ne marche pas.

    est possible ou est ce moi qui fait une fausse manoeuvre ?

    Répondre à ce message

  • Après avoir essayé toutes les solutions proposées sur les commentaires pour n’afficher dans l’agenda que les événements signalés par le mot-clé Agenda, je suis obligée de déduire que les modifs proposées pour Agendax (qui affiche pourtant les articles par leur date de parution) ne vont pas avec spip 1.9.3.

    Dommage, il est bien ce pluging !

    Répondre à ce message

  • 14

    Bonjour, j’ai installé Agendax pour voir un peu. Le plugin est bien activé.
    J’ai choisi la page où l’agenda devrait apparaitre avec un mot-clé « agenda », et modifié le squelette de article.html en conséquence comme indiqué.
    Cependant, l’article qui devrait faire apparaitre l’agenda me donne une erreur :
    Erreur : $ is not defined
    Fichier source : http://ha32.org/spip/Test?page=agendax.js
    Ligne : 103

    Que faire ?

    • Seb D. (crowf00t)

      Tu est en spip 1.9.1 qui n’as pas jquery. Il faut alors que tu rajoute jquery à la main dans les head de tes pages.

      Un truc du genre :

      <script src="squelettes/javascript/jquery.pack.js" type="text/javascript"></script>

      Tu peut aller chercher jquery ici : http://jqueryjs.googlecode.com/files/jquery-1.1.3.1.pack.js
      Et tu le met dans un dossier javascript dans ton dossier squelette par exemple.

    • Merci pour ta réactivité.
      J’ai installé. Maintenant ma page devant faire apparaitre l’agenda commence ainsi :

      <head>
      <script src="squelettes/javascript/jquery.pack.js" type="text/javascript"></script>
      <link rel="stylesheet" href="plugins/agendax/agendax.css" type="text/css" />
      <script src="?page=agendax.js" type="text/javascript"></script>
      <meta http-equiv="Content-Type" content="text/html; charset=iso8859-15">
      etc...

      J’ai toujours la même erreur.

    • Bon, j’ai carrément installé le plugin jquery. Alors c’est mieux : plus d’erreur.
      Sur la page prévue pour l’agenda je vois apparaitre :

      < >
      Lu
      Ma
      Me
      Je
      Ve
      Sa
      Di

      C’est sympa en effet mais je n’ai pas les dates des jours et pas d’événement...

    • Seb D. (crowf00t)

      Houla ... dans ta page sommaire je vois déjà deux jquery. C’est pas bon. En plus le plug jquery est en 1.0.4 : C’est du périmé.

      Donc, je te propose déjà de désactiver le plug jquery et de mettre ton INSERT_HEAD et le lien vers jquery à la fin du head.

      Ca devrait être mieux.

    • En effet, tu avais bien raison :
      http://ha32.org/spip/L-agenda-du-Centre
      Merci donc. Je vais réfléchir aux moyens d’avoir une présentation un peu plus sympa...

      Là-dessus quand je clique sur le jour où il y a un événement (actuellement le 22 septembre) je tombe sur une page que je ne sais pas tellement bien utiliser !

    • lexyacc

      As-tu fais quelque chose pour que l’Agenda prenne en compte l’événement au 22 septembre ? La date de publication de l’article est-il créé au 22/09 ?

      Moi je n’arrive pas à voir mes événements de septembre et je n’ai vu mes événement d’août qu’à partir du moment où ils étaient antérieurs à la date courante.

    • lexyacc

      C’est possible de voir les modif que tu as apporté au fichier « agendax.js.html » ?

      Merci d’avance

    • Ça c’est pas trop dur : l’article a une date de publi antérieure (hier, c’est #DATE_REDAC) et une date de publi, #DATE, au 22 septembre. Cet article a un mot-clé « agenda ». La boucle qui appelle l’agenda est :

      <BOUCLE_agenda(ARTICLES){id_article}{id_mot=181}> <!-- mot-clé "agenda" -->
      <div id="agendax"></div><br />
      </BOUCLE_agenda>
    • Absolument aucune !

    • Seb D. (crowf00t)

      tu dois changer les critères de boucle dans le fichier donnees_agendax.html dans le dossier du plugin.
      Là tu dois mettre :

      <BOUCLE_LesZevenements(ARTICLES){agenda date, mois, (#DATE|annee), (#DATE|mois)}{","}{par date}{id_mot=181}>

      à la ligne 28 du fichier original
      Et tu ne dois rien mettre autour du div

    • Seb D. (crowf00t)

      tu dois changer les critères de boucle dans le fichier donnees_agendax.html dans le dossier du plugin.
      Là tu dois mettre :

      <BOUCLE_LesZevenements(ARTICLES){agenda date, mois, (#DATE|annee), (#DATE|mois)}{par date}{id_mot=181}>

      à la ligne 28 du fichier original
      Et tu ne dois rien mettre autour du div

    • Bonjour !
      J’arrive maintenant à une présentation acceptable (quoique, les touches de navigation... on verra + tard).
      Cependant, la mise à jour me fait un truc louche : mon événement du 22 septembre s’affiche maintenant au 22 août !! j’y comprends rien... et du coup quand je clique sur le 22 (août) la page agenda_view qui vient est vide.
      Mon essai d’agenda

    • Bonsoir
      C’est énervant de ne pas comprendre !
      Que signifie : « tu ne dois rien mettre autour du div » ?
      Faut-il supprimer les lignes 29 à 32 ?

    • « Ça c’est pas trop dur : l’article a une date de publi antérieure (hier, c’est #DATE_REDAC) et une date de publi, #DATE, au 22 septembre. Cet article a un mot-clé « agenda ». La boucle qui appelle l’agenda est : <BOUCLE_agenda(ARTICLES) » etc...

      Dans quel fichier et à quel endroit faut placer cette formule de bobca ?

    Répondre à ce message

  • 17
    ravivol

    Je débute un peu, je ne suis même pas sûr de poster au bon endroit pour ma question.
    Je suppose qu’il faut indiquer à l’agenda de quelle rubrique il va dépendre, et à ce que j’ai compris la boucle se trouve dans dadonnees_agendax.html. Mais ou exactement ? Quand je vous disais que je débutais...

    • Salut à toi,

      La boucle s’appelle « LesZevenements » et elle commence à la ligne 28 et se termine à la ligne 34. Tu peu voir le fichier ici
      Il suffit de rajouter {id_rubrique = 53} pour qu’elle récupère les données de la rubrique 53
      Ou d’ajouter {id_mot = 66} pour qu’elle récupère tous les articles qui ont le mot clé n°66
      Ou les deux à la fois.
      Ca peut donner quelque chose du genre :

      <BOUCLE_LesZevenements(ARTICLES){id_rubrique = 79}{id_mot=77}{agenda date, mois, (#DATE|annee), (#DATE|mois)}{","}{par date}>
    • ravivol

      ça marche nikel, merci beaucoup

    • lexyacc

      Bonjour,

      Voilà un plugin très attendu !
      Toutefois, est-il possible de lui faire prendre en compte la date antérieure de SPIP ?

      Merci d’avance pour la réponse

    • Seb D. (crowf00t)

      Qu’appel tu la date antérieure ?

    • souvent on met en place pour les articles un duo de dates : la date de publication et la date de publication antérieure. Cette dernière est en fait la date d’apparition de l’article tandis que la « date de publication » est la date de l’événement auquel l’article se réfère. C’est très pratique pour annoncer des événements futurs.

    • lexyacc

      L’explication de bobca est limpide.

      En fait, sur le site de l’association dont je m’occupe, je veux utiliser l’agenda pour annoncer les dates des prochaines réunions. J’ai créé une rubrique « Agenda » (pour trier les articles comme il est indiqué) mais je veux par exemple annoncer dans l’agenda les dates des réunions pour 12 et 18 septembre. Sachant que nous sommes au mois d’août, je n’ai rien qui s’affiche dans le mois de septembre. Comment faire ?

      Autre questions au passage, lorsqu’on clic sur un événement, la page qui s’affiche n’est pas très lissible, il y en a dans tous les sens. C’est également le cas dans la page d’exemple mentionné dans cette contrib. Etant débutant en SPIP, je ne vois pas très bien comment intégrer correctement la page dans l’environnement du site. Une suggestion ?

      Bonne journée

    • Tu peux annoncer de futurs évennements et tu peux aussi personnaliser la page d’arrivé. Preuve en est :http://www.lesmusesdutroquet.fr/
      Le site est en construction et les évennements bidons mais ça fonctionne déjà.
      Je débute également.

    • Ton squelette est très proche de ce que je cherche à faire, peux-tu me le laisser voir ?
      Merci d’avance !

    • lexyacc

      Ton site est bien la preuve que tout ça peut fonctionner.

      Ce que je me demande c’est bien comment faire pour obtenir ce résultat.
      Le fichier « agendax.js.html » contient la boucle suivante :

      /* On recherche les jours avec des évènements et on met à jour les cases correspondantes */
      for (k=1 ; k<=31 ; k++)
      if ($("#contenu"+k,event).length > 0)
      $("#jour"+k).addClass(style_rempli) ;
      $("#jour"+k).attr("alt",$("#info"+k,event).text()) ;
      $("#jour"+k+" a").attr("href",$("#lien"+k,event).text()) ;

      else
      $("#jour"+k).addClass(style_pas_rempli) ;
      $("#jour"+k).remove("a") ;

      Dans mon contexte, cette boucle ne donne pas de résultat (pas d’article trouvé) pour les événements positionnés par exemple au mois de septembre.

      Je pense que tu as modifié ce fichier de manière significative. Est-ce possible d’avoir une description de tes modifications ?

      Merci

    • J’ai fais deux modifs ultra simples

      1) je me suis débrouillé pour que l’id de l’article passe dans l’url. par défaut c’est la date et je ne savais pas comment l’exploiter. J’ai du changer la ligne 32 dans le fichier donnees_agendax.html , la boucle concernée est LesZevenements.

       ?page=agenda_jour&id_article=#ID_ARTICLE .

      Avec ce changement on obtient donc des url du type http://www.lesmusesdutroquet.fr/?page=agenda_jour&id_article=1

      2) Il faut ensuite créer dans son fichier squelette une page agenda_jour.html car en l’état, c’est la page par défaut du fichier dist qui est appelée. Dans cette page on veut récupérer l’id_article passée dans l’url.

      BOUCLE_jour(ARTICLES)id_article
      h1 #TITRE /h1
      p Le [(#DATE|affdate’d/m/Y’)]
      à partir de (#DATE(#DATE
      /p
      /BOUCLE_jour

      d’ailleur je suis sûr qu’il y a moyen d’écrire plus simplement l’heure et les minutes de l’evennement. C’est du fignolage mais je suis encore en phase d’apprentissage.

    • ravivol

      le copier coller des balises sur ce forum a altéré mon message, j’espère que ça reste claire. En tout cas je n’ai pas touché au js.

    • lexyacc

      OK merci de cette explication.

      Il y a tout de même une chose que je ne m’explique pas, c’est le fait que je vois les événements qui ont une date de création au mois d’aout et pas ceux de septembre.

      Une idée ?

    • Si tu as une url, je vais pouvoir aller voir ce qui se passe ...

    • lexyacc

      Jusque là j’étais en local.

      J’ai donc mis à jour mon site et là je ne vois plus aucun articles dans le calendrier !!

      url = http://fcpedescartesantony.free.fr/

      La rubrique 8 est une rubrique agenda.

      Merci de ton aide

    • Bon plusieurs choses :

      1. Tu n’as pas la dernière version d’agendax
      2. Il y as une requête ajax qui ne se fait pas :
        <script src="http://fcpedescartesantony.free.fr/themes/alternatives/js/base.js"  type="text/javascript"></script>

        Peut-être que c’est celle de ton squelette qui la courcircuite. Enlève la ligne

        <script src="http://fcpedescartesantony.free.fr/themes/alternatives/js/base.js"  type="text/javascript"></script>

        de ton header pour voir si c’est le cas.

        Voilà ce que je peux dire à première vue. Après il faudrait des codes ftp, une analyse plus profonde et tout et tout si les bugs persistent .

        Dis moi si ca fonctionne avec ca.

    • lexyacc

      La suppression de la ligne n’a pas d’effet notable (test en local où j’ai installé la version 0.1.2 d’agendax)

    • Ca peut donner quelque chose du genre :

      Bonjour,
      Je voudrais que n’apparaisse que les événements attachés au mot clé « Agenda ».
      J’ai inséré
      id_mot=Agenda après (ARTICLES)
      L’agenda est vide.
      J’ai introduit le chiffre correspondant au mot clé Agenda
      id_mot=5 après (ARTICLES)
      Même résultat.
      L’événement étant dans une brève, j’ai pensé qu’il fallait ajouter « Brèves » à « Articles » :
      ( ARTICLES)( BREVES) id_mot=5
      Là, les chiffres disparaissent de l’agenda !

      Comment faire pour qu’apparaisse (et que n’apparaisse) sur cet agenda que les articles (et brèves) désignés par le mot-clé Agenda ?

    Répondre à ce message

  • 1

    Merci pour la réponse à ma question précédente.
    Je n’ai pas pu mettre en oeuvre jQuery sur spip 1.9.1 (même problème que celui abordé ci-dessous, version trop ancienne de jQuery) mais cela fonctionne pour spip 1.9.3.

    Sauf que je ne vois pas l’intérêt de renvoyer à des dates de publication d’articles.

    Je voudrais seulement indiquer en une ou deux lignes maxi des événements futurs.
    J’ai suivi les conseils donnés ci-dessous (à l’envers) :

    2) Il faut ensuite créer dans son fichier squelette une page agenda_jour.html car en l’état, c’est la page par défaut du fichier dist qui est appelée. Dans cette page on veut récupérer l’id_article passée dans l’url.

    BOUCLE_jour(ARTICLES)id_article
    h1 #TITRE /h1
    p Le (#DATE
    à partir de (#DATE(#DATE
    /p
    /BOUCLE_jour

    puis j’ai supprimé #DATE|annee), (#DATE|mois)par date> et remplacé par ?page=agenda_jour&id_article=#ID_ARTICLE parce que cela correspond à la ligne 32 comme indiqué ci-dessous :

    1) je me suis débrouillé pour que l’id de l’article passe dans l’url. par défaut c’est la date et je ne savais pas comment l’exploiter. J’ai du changer la ligne 32 dans le fichier donnees_agendax.html , la boucle concernée est LesZevenements.

     ?page=agenda_jour&id_article=#ID_ARTICLE . Avec ce changement on obtient donc des url du type http://www.lesmusesdutroquet.fr/ ?page=agenda_jour&id_article=1

    Evidemment, cata. Plus de calendrier sinon la ligne lu ma mer jeu ven sam dim.

    Comme je ne suis absolument pas doué, ce serait sympa à ceux qui ont procédé aux modifs de copier l’intégralité des fichiers modifiés (et pas seulement la ligne que je risque de ne pas trouver, même avec le numéro !) et de m’indiquer comment procéder pour alimenter cet agenda (nouvel article ? rubrique agenda qui serait invisible sur page d’accueil).

    Merci à tous ceux et celles qui répondront à ces dernières questions.

    • Je complète ma question. Voici le fichier donnees_agendax.html

      Je serais infiniment reconnaissant si quelqu’un pouvait y introduire les modif de façon à pouvoir obtenir uniquement les dates des événements que l’on souhaite mettre en valeur en lieu et place des dates de publication des articles. (En outre, je viens d’essayer avec une brève daté du 20 septembre ... et cela n’établit pas de lien sur l’agenda. J’ai donné l’info en brève car je souhaite que les infos de l’agenda n’apparaissent pas sur la page d’accueil mais j’aimerais ne pas avoir à les publier obligatoirement en brève. Qu’ils puissent être invisibles si on ne clique pas sur l’agenda).

      A part ce petit problème, il est très très esthétique, cet agenda.

      #HTTP_HEADERContent-Type : text/html

      [(#CHEMIN’charger_agendax.js’)]
      (#ENVdate (#ENVdate
      <?php
              $nom_debut = '[(#DATE|affdate{'l'})]';
              switch ($nom_debut) {
                  case 'Monday' : $jour_debut = 0;
                  break;
                  case 'Tuesday' : $jour_debut = 1;
                  break;
                  case 'Wednesday' : $jour_debut = 2;
                  break;
                  case 'Thursday' : $jour_debut = 3;
                  break;
                  case 'Friday' : $jour_debut = 4;
                  break;
                  case 'Saturday' : $jour_debut = 5;
                  break;
                  case 'Sunday' : $jour_debut = 6;
                  break;
              }
              echo $jour_debut;
          ?>
      [(#DATE|affdate’t’)]
      (#DATE"> [
      (#DATE">(#DATE|affdate’d’)

      ]
      [

      (#DATE">(#TITRE)

      ]

      (#DATE"> ?page=agendax_view&date=#DATE

      p.s. bon, ça ne va pas, le fichier se convertit lors de la mise en ligne. Si quelqu’un veut me répondre à le.pic.vert at free.fr

    Répondre à ce message

  • 1

    Salut
    Je vais poser des questions qui vont vous faire hurler de rire :

    1) « Pour utiliser Agendax vous avez besoin de la balise #INSERT_HEAD dans le

    des squelettes. » Dans quel fichier faut-il insérer cette balise ? Et à quel niveau exactement (je travaille sur spip 1.9.3 et un autre site 1.9.1)

    2) « insérez le code suivant à l’emplacement ou le calendrier doit se mettre :
    < div id = "agendax">

     » Si on veut le placer sur la page d’accueil, on le place dans Sommaire, n’est-ce pas ?

    3) « http://jqueryjs.googlecode.com/files/jquery-1.1.3.1.pack.js Et tu le met dans un dossier javascript dans ton dossier squelette par exemple » Pour le site en 1.9.1, j’ai créé un répertoire "javascript" et inséré ce fichier. Est-ce cela qu’il fallait faire ?

    4) Enfin, est-il possible de voir un calendrier en grandeur nature correspondant au calendrier téléchargeable sur cette page ?

    Merci des vos réponses.

    • 1) tout dépend de ta logique de fonctionnement :
      -  si tu travaille à partir des squelettes de la dist tu n’as rien à changer , la balise est déjà présente dans le fichier inc-head.html
      -  si tu travailles à partir de squelette perso tu dois dois avoir la balise #INSERT_HEAD qui doit se trouver quelques part dans tes squelettes, entre les balise <head></head>

      2) tout se passe dans sommaire.html

      3) sous spip 1.9.2 et 1.9.3 pas de problème jquery est déjà installé donc pas de modif à faire ; pour spip 1.9.1 je pense qu’en installant le plugin jquery trouvable ici cela devrait résoudre ton problème

    Répondre à ce message

  • lexyacc

    Je viens de comprendre !

    Mes articles n’apparaissent pas dans l’agenda au delà de la date du jour !

    Après une longue recherche, je viens de me rendre compte que mon paramétrage de SPIP était positionné sur : «  Ne pas publier les articles avant la date de publication fixée.  »

    Il est donc indispensable de changer ce paramètre (icône Configuration de l’espace privé) pour que la référence à un article apparaisse dans l’agendax quelque soit sa date de publication.

    Un point de réglé !

    Il me reste maintenant à résoudre l’apparition du message :
    « Warning : Missing argument 1 for generer_url_public() in ....www\spip\ecrire\inc\utils.php on line 801 »

    Quelqu’un a-t-il une idée ?

    Répondre à ce message

  • 1

    A tous :
    J’ai mis à jour agendax.
    Celle-ci corrige un bug d’affichage : Aucun article le premier du mois. Vous pouvez maintenant créer des activités le 1er d’un mois.
    J’ai aussi mis un squelette de visualisation des résultats un peu plus clair que celui qu’ agenda_mois :)
    Tout se configure encore dans donnees_agendax.html

    Seb.

    • hypnose68

      Bonjour,

      merci pour ce plugin, il fonctionne parfaitement.

      Dans cette nouvelle version (avec le squelette de visualisation) je vais certainement l’intégrer dans un de mes sites.

      salutations

    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