Cycle2

La seconde version de la librairie Javascript « jQuery Cycle », qui permet de produire des diaporamas, se nomme « Cycle2 » : http://jquery.malsup.com/cycle2/.

Voici cette nouvelle librairie mise en plugin pour SPIP.

Si vous utilisez déjà « jQuery Cycle », vous pouvez le garder tel qu’il est. Cette version est à considérer comme un nouveau diaporama.

Bien que les modèles et certains paramètres aient été conservés pour tenter de préserver une certaine compatibilité, le rendu n’est pas assuré entre la version 2 et cette version 3.

Le principal avantage de cette nouvelle version : l’affichage est adapté aux différentes largeurs d’écrans (responsive design) selon l’interface du site.

Il est nécessaire d’utiliser un squelette qui respecte la norme HTML5.

Pour une utilisation courante, le diaporama (slider pour les anglophones) s’insère dans les textes par le modèle <articleN|cycle> où « N » est le numéro de l’article dont on veut afficher les images.

Pour la compatibilité avec le plugin « jQuery Cycle » le modèle <sjcycleN> est tout à fait fonctionnel. La différence est que ce dernier n’affiche les images de l’article « N » que lorsqu’il est inclus dans l’article « N » lui-même.

Paramétrage général

Si un paramètre de la librairie a été implémenté, il l’a été fidèlement, pour rester dans une logique simple par rapport à Cycle2. On retrouve toute la documentation de référence ici : http://jquery.malsup.com/cycle2/api/.

Par exemple : data-cycle-random=true est un paramétrage du plugin d’origine qui fait tourner les images dans un ordre aléatoire. Ce paramètre est transposé dans le plugin SPIP, et on lui donne une valeur à l’insertion du modèle comme ceci : <articleN|cycle|random=true>.

Si le paramétrage général du plugin prévoit déjà l’ordre aléatoire, toutes les insertions de <articleN|cycle> joueront le diaporama dans un ordre aléatoire. Mais dans ce cas, il est aussi possible d’insérer un diaporama sans ce paramètre avec l’écriture <articleN|cycle|random=false>-

La page de configuration (dans l’administration de SPIP, une fois le plugin installé comme les autres, se rendre dans « Squelettes > Cycle2 », accès limité aux webmestres du site) offre un certains nombre d’options qui s’appliqueront à toutes les inclusions du modèle <articleN|cycle> :

  • Largeur maximum (par défaut 640) : toutes les images seront retaillées en largeur à cette valeur, en pixels. Les diaporamas étant en taille proportionnelle, ils s’adapteront à la largeur définie par l’interface du site, mais dans la limite définie ici.
    • |largeurmax=350
  • Hauteur maximum : en laissant le champ vide, les images seront toujours à la largeur maximum possible. Sinon toutes les images seront retaillées en hauteur à cette valeur, en pixels. Si la largeur de l’image n’est pas suffisante, la couleur de fond configurée sera visible. La valeur de couleur de fond « transparent » rendra par contre un fond blanc.
    • |hauteurmax=240
  • Hauteur automatique : Choisissez ici la façon dont est déterminée la hauteur du diaporama. Par défaut (le champ vide), la hauteur de la première image sert de valeur, « calc » utilisera la hauteur de la plus haute image, et « container » ajustera la hauteur du diaporama à la hauteur de l’image courante. Il est possible de forcer le ratio hauteur/largeur avec une double valeur, par exemple « 600:400 ». La valeur « false » empêchera le script de gérer la hauteur automatiquement.
    • |autoheight=600:400 ou |autoheight=container
  • Temps d’affichage pour chaque image (en millisecondes) : choisir « 0 » pour faire un diaporama manuel (cf les boutons « précédent » et « suivant » pour activer le défilement manuel).
    • |timeout=4000
  • Temps de transition entre chaque image (en millisecondes)
    • |speed=1000
  • Temps d’attente : Temps d’attente avant le départ du diaporama (en millisecondes).
    • |delay=6000
  • Effet de transition : voir les exemples en ligne - fade - fadeout - scrollHorz - scrollVert - flipHorz - flipVert - shuffle - tileSlide - tileBlind - carousel - none
    • exemple : |fx=scrollHorz
    • pour |fx=tileSlide et |fx=tileBlind, option supplémentaire pour jouer l’animation verticalement
    • pour |fx=carousel, options supplémentaires pour :
      • choisir le nombre de diapositives affichées simultanément (carousel-visible) : |carouselvisible=3
      • le décalage (en pixels) de la première diapositive (carousel-offset) : |carouseloffset=30
      • définir la dimension des vignettes. Largeur (carousel horizontal) ou hauteur (carousel vertical) d’une diapositive (carousel-slide-dimension) : |carouselslidedimension=130
      • jouer le déplacement verticalement (carousel-vertical) : |carouselvertical=true ou |carouselvertical=false
      • adapter le carousel à la mise en page, seulement si horizontal (carousel-fluid) : |carouselfluid=true ou |carouselfluid=false
  • À l’envers : Joue le diaporama à rebours :
    • |reverse=true ou |reverse=false
  • Synchronisation des animations, l’arrivée d’une image est simultanée avec le départ de la précédente :
    • |sync=true ou |sync=false
  • Pause au survol : |pauseonhover=true ou |pauseonhover=false
  • Message lors de la pause au survol, laisser vide pour ne rien afficher :
    • |pauseonhovercontent=en pause
  • Ordre aléatoire :
    • |random=true ou |random=false
  • Bouton « suivant » : cibler un bloc html par sa classe ou son identifiant. Par défaut « .cycle-next » place une flèche à droite au survol de l’image. [1] :
    • |next=.cycle-next
  • Bouton « précédent » : cibler un bloc html par sa classe ou son identifiant. Par défaut « .cycle-prev » place une flèche à gauche au survol de l’image. [1] :
    • |prev=.cycle-prev
  • En boucle, à propos des boutons « précédent » et « suivant » : à la fin du diaporama, ne pas revenir au début, ou bien au début, ne pas suivre à la fin (n’empêche pas le diaporama automatique de tourner en continu) :
    • |allowwrap=true ou |allowwrap=false
  • Départ arrêté :
    • |paused=true ou |paused=false
  • Pagination : cibler un bloc html qui contiendra la pagination en nommant sa classe ou son identifiant css. Par défaut « .cycle-pager » place les boutons par-dessus l’image. [1] :
    • |pager=.cycle-pager
  • Afficher une légende pour chaque image [1]. Par défaut « .cycle-caption » :
    • |caption=.cycle-caption. Il est possible de choisir le contenu de cette légende (cf la documentation) :
    • Afficher le décompte/le total : par défaut
    • Afficher le titre du document : |captiontemplate="{{alt}}"
    • Sur-mesure : |captiontemplate="images {{slideNum}} sur {{slideCount}}"
    • Sur-mesure : |captiontemplate=image {{slideNum}} : {{cycleTitle}} {{cycleDesc}}
  • Afficher une seconde légende en surimpression [1], un calque noir/transparent sur le bas de l’image pour afficher une légende avec Titre et Description de l’image :
    • |overlay=.cycle-overlay
  • Format de la légende en surimpression, par défaut le titre et la description de l’image, vous pouvez personnaliser le contenu suivant les exemples :
    • |overlaytemplate="<span class=left>&nbsp;<br>{{slideNum}} / {{slideCount}}</span>{{date}} - {{title}}<br>{{desc}}"
  • Choisir une couleur de fond, une valeur de couleur hexadécimale avec le « # », ex « #C5E41C ». La valeur « transparent » rétabli la transparence. :
    • |backgroundcolor=#b5b5b5
    • en installant le plugin Palette vous pourrez piquer la couleur sur une palette.

Paramètres tooltip et mediabox

  • Info au survol avec Tooltip : peut être surchargé lors de l’inclusion avec |tooltip=oui ou |tooltip=non
  • Afficher les caractéristiques techniques de l’image : peut être surchargé lors de l’inclusion avec |tooltip_carac=oui ou |tooltip_carac=non
  • Mediabox : ouvre l’image d’origine suivant vos paramétrages de la mediabox (dans l’administration : Squelettes > Boîte multimédia. Peut être surchargé lors de l’inclusion avec |mediabox=oui ou |mediabox=non

Inclure le modèle <articleN|cycle>

On l’a déjà vu plus haut, pour une utilisation courante, le diaporama s’insère dans les textes par le modèle <articleN|cycle> où « N » est le numéro de l’article dont on veut afficher les images. On peut insérer ce modèle dans n’importe quel autre article que l’article N lui-même.

Chaque paramètre de la configuration générale est actif et en même temps corrigeable lors de l’inclusion. (cf. plus haut pour chacun d’eux)
En dehors de ces paramètres généraux, voici quelques paramètres optionnels pour ce modèle :

Alignement dans le texte

Comme un autre document, on peut aligner le diaporama : |left, |right ou |center comme ceci <articleN|cycle|left>
S’il n’est pas précisé, l’alignement est « centré ». L’effet rendu dépendra de la valeur saisie pour le paramètre « Largeur maximum » et de l’interface du site. L’alignement flottant est intéressant si le diaporama est significativement moins large que le texte lui-même.


Choisir les images
<articleN|cycle|docs=1,5> fait tourner les images 1 et 5 de l’article « N » en diaporama, dans l’ordre du titre des images.
« N » n’est pas obligatoire. On peut maintenant écrire <article|cycle|docs=1,2,3,6,9> pour demander les images 1,2,3,6,9 même si elles sont liées à des articles différents, voir des rubriques ou d’autres objets.

Attention : dans le cas d’une utilisation dans un squelette, l’écriture diffère :
[(#MODELE{article_cycle,id_article=N,docs=21|22|24})]
ou
[(#MODELE{article_cycle,docs=21|22|24})]

Plusieurs diaporamas par page
On peut inclure plusieurs diaporamas par page de la même façon :
<articleX|cycle>
<articleY|cycle>
<articleZ|cycle>

Dans ce cas, si les boutons « suivant/précédent » sont activés dans la configuration générale, ils actionneront tous les diaporamas en même temps. Pour corriger cet effet, il est préférable de personnaliser chaque diaporama comme ceci :

<articleN|cycle|prev=.pre1|next=.suiv1>
<a href="#" class="pre1">précédent</a>
<a href="#" class="suiv1">suivant</a>
<articleN|cycle|prev=.pre2|next=.suiv2>
<a href="#" class="pre2">précédent</a>
<a href="#" class="suiv2">suivant</a>
<articleN|cycle|prev=.pre3|next=.suiv3>
<a href="#" class="pre3">précédent</a>
<a href="#" class="suiv3">suivant</a>

Encore faut-il ensuite styler ces balises HTML aux couleurs de votre site...

Paramètre « lien_parent »
|lien_parent=oui
Crée un lien sur chaque image vers l’objet auquel elle est liée, que ce soit les images d’un seul article, ou bien sélectionnées individuellement |docs=1,2,3,6,9. Si une image est liée à plusieurs objets, ce sera le dernier en date qui sera utilisé.

Paramètres « lien_article » et « forcer_lien_reference »

<articleN|cycle|lien_article=XXX|forcer_lien_reference=oui>


Permet de poser un lien sur le diaporama vers un article, celui qui contient les images ou un autre. Dans le cas d’un site multilingue, fournir l’id de l’article de référence, le modèle se charge de trouver l’id de l’article correspondant à la langue du visiteur. Cette option désactive l’ouverture vers une box. Si l’article n’existe pas dans la langue courante on met ou pas un lien vers l’article de référence suivant que le paramètre forcer_lien_reference soit défini ou pas.

Exemple dans le cas d’une insertion dans un squelette sur une page sommaire :
-  [(#MODELE{article_cycle,id_article=16,lien_article=171})] : diaporama sur toutes les images de l’article 16 avec un lien vers l’article 171 (ou sa traduction)
-  

[(#MODELE{article_cycle,id_article=16,lien_article=171|forcer_lien_reference=oui})]

 : c’est pareil sauf que le lien ne se fera pas sur la traduction même si elle existe.


Paramètres « liens_individuels »
<articleN|cycle|liens_individuels=article>
Permet de poser un lien sur chaque image du diaporama vers un article, une rubrique ou un site externe suivant la valeur du paramètre (article, rubrique, externe). Si la valeur vaut article ou rubrique, l’identifiant de l’objet est pris dans le champ descriptif de chaque image. Si la valeur vaut externe, le champ descriptif de chaque image doit contenir un lien http. Cette option désactive l’ouverture vers une box.

Exemple :
-  <article16|cycle|center|liens_individuels=article> : diaporama sur toutes les images de l’article 16 avec sur chaque image un lien vers l’article dont l’identifiant est contenu dans le descriptif de l’image.

Paramètre « limite » :
<articleN|cycle|limite=3>
Sortira les trois premières images de l’article « N » dans le diaporama.

Diaporama des images d’une rubrique

Le modèle rubrique_cycle.html est fait pour ça.
<rubriqueN|cycle> où « N » est l’identifiant de la rubrique concernée.
Pour compatibilité, le modèle sjcycle_rubrique.html est conservé et permet d’inclure <sjcycle6|rubrique>

Diaporama des sites

Le modèle sjcycle_sites.html est conservé et transposé pour cette version du plugin.

Diaporama des albums

Le plugins Albums permet de regrouper des documents.
L’inclusion de <albumN|cycle> affiche un diaporama des images de l’album N.

Notes

[1Peut aussi prendre la valeur de la classe ou de l’identifiant (id) de n’importe quelle balise HTML... astuce : <articleN|cycle|next=.suivante><a href="#" class="suivante">avance rapide</a> dans un texte placera le bouton d’avance rapide sous l’image.

Discussion

49 discussions

  • 2
    AlainF

    Bonjour,
    je recherche ce genre de diaporama et je pense qu’il est très bien,
    mais je suis sous Spip 3.0.22 et dans ma page d’accueil, avec le premier code :

    - [(#MODELE{article_cycle,id_article=25})]
    - [(#MODELE{article_cycle,docs=36|37|38|39})]

    rien n’est visible, alors que la deuxième ligne affiche bien les docs !

    Mon article 25 permet de mettre et d’enlever, en document, des photos en fonction des saisons et ce ne sont jamais les mêmes identifiants ... ai-je fais une erreur ?
    Cordialement, Alain

    • Bonjour,
      difficile de dire comme ça... l’article est bien publié ? Les docs 36, 37, 38, 39 sont ceux de l’article 25 ? Est-ce qu’il sort quelque chose en mettant dans le texte le diaporama avec <article25|cycle> ?
      ...

    • AlainF

      Merci de la réponse rapide.

      Que les docs soient de l’article ou pas, il les affiche bien mais l’appel à l’id ne passe pas, même dans “l’article” :
      <article25|cycle> ne donne rien.
      étant en production, je ne peut mettre de lien.

    Répondre à ce message

  • 1

    Bonjour à tous,

    Je trouve ce plugin super, cependant je souhaiterais mettre des liens sur chaque image pour un article différent. (j’utilise le diaporama en page d’accueil pour présenter mon site)

    J’ai utilisé <articleN|cycle|center|liens_individuels=valeur> (j’ai mis rubrique pour valeur) mais cela ne fonctionne pas.

    J’aimerais savoir où dois-je mettre le numéro de la rubrique pour chaque image ? (descriptif de l’image ? c’est quoi et j’écris quoi exactement ?)

    Veuillez excuser mon ignorance, je débute sur SPIP.

    J’espère que vous avez compris ma requête.

    Merci d’avance

    Marie

    • Bonjour,
      c’est une astuce propre au plugin cycle : mettre le numéro identifiant d’un article ou d’une rubrique dans le descriptif de l’image, et si on met la valeur « rubrique » le lien se fera sur la rubrique ayant cet identifiant, si on met la valeur article, le lien se fera sur l’article ayant cet identifiant...
      Le descriptif de l’image se renseigne en faisant « modifier » lorsqu’on survole un document joint à un article, depuis l’espace privé.
      Il faut donc vérifier si le système fonctionne efficacement... http://zone.spip.org/trac/spip-zone/browser/_plugins_/sjcycle/trunk/modeles/article_cycle.html#L156 le laisse supposer...

    Répondre à ce message

  • 9

    Bonjour,
    Merci pour ce plugin !
    J’ai trouvé un petit soucis. Quand j’affiche deux diaporamas, l’affichage décompte/total dans les légendes n’est pas correct. Elle change de l’une à l’autre dans les deux légendes.
    Cordialement,
    Hanjo

    Répondre à ce message

  • 2

    Super ce carrousel !

    Vraiment simple, mais combien de photos (320 de large) sans trop ralentir l’accès à la page ?

    Belle réussite.

    • Bonjour,
       ;o)
      pour la rapidité tout dépend du poids des images et de la connexion de l’utilisateur.
      Mais le diaporama devrait se mettre en route avant que tout soit charger...

    • Je vais les redimensionner avant en 320 px de large
      ce qui fera l’image à près de 30 Ko environ en jpg…

      Une quinzaine devrait suffire sans trop alourdir le chargement de la page.

      Merci et encore très bien pour ce Carrousel.

    Répondre à ce message

  • 1

    Bonjour,
    je suis tombé sur un problème, encore dans le overlay...

    Quand le titre de l’image contiens des guillemets il n’est pas affiché à partir du premier guillemet.

    Est-ce que cela peut être surmonté ou est-ce qu’un titre avec guillemets est tout simplement un big nono ?

    Pour la description de l’image c’est pareil...

    d’avance merci

    Répondre à ce message

  • Renée Picard

    Le plugin fonctionne en espace privé uniquement si je mets les # de documents et il ne fonctionne pas en espace public
    <article22|cycle|docs=15,16,17>
    http://www.ctss-genetique.com/spip.php?page=article&id_article=22

    Répondre à ce message

  • Renée Picard

    Résolu ! il y a une incompatibilité avec le couteau suisse. En désactivant ce dernier, tout entre dans l’ordre !

    Répondre à ce message

  • 10

    Bonjour,
    encore moi, avec une autre question :

    je n’ai pas compris l’utilisation du overlay. Je veux l’utiliser dans un #MODELE, donc j’ai ajouté ,overlay=.cycle-overlay à la fin de mes options, mais ça m’affiche cycle-overlay et non le titre et description de l’image.
    Est-ce qu’il faut faire autrement avec les modeles ? Ou qu’est-ce que est le problème ?
    Merci encore pour vos conseils
    Joz

    • bonjour,
      en fait c’est bien [(#MODELE{article_cycle,id_article,overlay=.cycle-overlay})] dans un squelette d’article qui fonctionne tout seul...
      Il faut aussi renseigner les titres et/ou description de chaque image.

    • Hmm, est-ce que le problème pourrait être que je ne travaille pas avec id_article mais avec docs=1|2|3 ?

    • non non, ça fonctionne aussi
      [(#MODELE{article_cycle,docs=36|37|38|39,overlay=.cycle-overlay})]
      c’est autre chose...

    • Ahlala, j’ai compris au moins pourquoi ça affichait cycle-overlay : dans la page config j’avais copié ça dans Format de la légende en surimpression.
      Je n’avais pas compris à quoi ça sert..

      Et en faite je n’ai toujours pas compris, titre et description de l’image ne sont quand même pas affichés, malgré la case Format de la légende en surimpression vidée.
      Dans la source html de ma page je ne vois que

      <div class="cycle-overlay">
        <div></div>
        <div></div>
      </div>

      Entre temps, pour tester j’ai installé un nouveau spip tout fraiche avec uniquement ce plugin, mais là c’est pareil, les deux divs du overlay sont vides.. (j’ai bien remplie titres et descriptifs de mes images.)

      Une autre idée par où tester ?

    • alors ce n’est pas normal, ça fonctionne bien pour moi... le modèle article_cycle.html comporte la ligne http://zone.spip.org/trac/spip-zone/browser/_plugins_/sjcycle/trunk/modeles/article_cycle.html#L186 qui se rempli correctement si le titre et la description sont renseignés...

      À mon avis c’est le bon modèle, les 2 div pour titre et description sont présentes, mais comment sont rédigés les champs ? C’est étrange...

    • Est-ce que sur la page config ?exec=configurer_sjcycle je dois remplir le champ Légende en surimpression ?
      Actuellement il est vide chez moi, j’avais compris que titre et descriptions sont les valeurs par défaut. c’est correcte ?
      ++
      joz

      ps : entre temps j’ai aussi testé sur une installation vide de spip 3.1beta, mais j’obtiens la même chose, les deux divs sont vides...

    • Bonsoir,
      je ne sais pas où se trouve le problème, je ne peux pas reproduire, pour moi sur une installation neuve de SPIP3.1.0-beta les champs sont bien affichés là où on les attend.
      La configuration du plugin peut être laissée par défaut, sans rien changer après l’installation, puisque là on force le paramètre à l’insertion du modèle...

    • Bonsoir chankalan,
      j’ai fais une installation test avec un spip-3.0.20 sur un hébergement ovh : http://chantier.entraide.be/spip-3.0.20/
      même chose que sur mon autre hébergement et en local.
      Si tu veux je peux t’envoyer le login pour l’espace privé...

      Je veux bien aussi installer un 3.1beta si ça peut servir...
      ++

    • Bonsoir,
      j’ai trouvé le bug avec le paramètre lien_parent, normalement corrigé avec http://zone.spip.org/trac/spip-zone/changeset/91725
      La version 3.4.9 prend ces changements en compte...

    • youppieee tout fonctionne !
      grand grand MERCI
       :)

    Répondre à ce message

  • 4

    Bonjour,
    chez moi le diaporama fonctionne bien dans iron/chrome, mais pas dans firefox. une idée qu’est-ce qui pourrait coincer ?
    merci pour vos lumières
    joz

    • Bonsoir,
      plutôt difficile de savoir... le javascript est bien activé ?

    • Bonsoir,
      Je présume je js est activé comme il faut, puisque dans iron/chrome ça fonctionne.
      Mais il y a pleinplein d’erreurs de js dans FF.
      Entre temps j’ai fais quelques tests. Est-ce qu’il serai possible qu’il y ai un problème entre zcore et cycle-slideshow ?
      j

    • Non, il n’y a pas de raison. S’il y a d’autres erreurs il faudrait voir en simplifiant, en testant sur un squelette par défaut de SPIP par exemple, sans autres plugins activés, pour trouver la panne...

      (Je parlais de la barre d’outils de Firebug qui permet de couper le javascript pour Firefox uniquement...)

    • ha voila, j’ai trouvé :
      j’avais surchargé jquery avec une nouvelle version. ça ne passe pas semblet-il...
      dommage.
      mais au moins les slides tournent maintenant
      merci pour le plugin en tout cas !
      joz

    Répondre à ce message

  • 1

    Bonjour
    J’essaye d’utiliser le plugin dans un squelette, je ne suis pas expert.
    J’utilise la syntaxe :
    [(#MODELEarticle_cycle,id_article=232)]

    mais article_cycle n’est pas un squelette dans un dossier /modèles

    Quelle syntaxe utiliser ?

    Merci

    • Bonsoir,
      la syntaxe semble bonne et il y a bien un modèle nommé article_cycle.html dans http://zone.spip.org/trac/spip-zone/browser/_plugins_/sjcycle/trunk/modeles
      Est-ce que le plugin est bien installé et téléchargé correctement ?
      Il faut aussi peut-être vérifier le paramétrage par défaut, sur la page de configuration : « Squelettes > Cycle2 » et bien renseigner une largeur maximum, le premier paramètre.
      Merci de faire un retour si ça va toujours pas...

    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