De jolis coins

Une fonctionnalité du Couteau Suisse permettant de modifier facilement l’aspect des coins de vos cadres colorés en partie publique de votre site.
Cet article traite également un cas d’école : jouer avec les <div> de SPIP.

Introduction

« Jolis Coins » est un outil permettant de modifier facilement l’aspect des coins de vos cadres colorés en partie publique de votre site.

Tout est possible, ou presque ! Voyez le résultat sur cette page : http://www.malsup.com/jquery/corner/.

Cet outil est basé sur un plugin jQuery nommé « Round Corners » et développé par Dave Methvin. Par conséquent, pour des remarques trop techniques ou des dysfonctionnement liés à la programmation en JS, il vaut mieux vous adresser directement à l’auteur. Le projet est hébergé ici : http://github.com/malsup/corner/tre.... Pour les différentes corrections effectuées : http://github.com/malsup/corner/com....

Installation

Cet outil est une fonctionnalité du plugin « Le Couteau Suisse » que vous pouvez trouver ici : Le Couteau Suisse.

Pour avoir accès aux Jolis Coins, il vous faut donc avoir installé ce plugin en suivant la procédure normale d’installation des plugins SPIP.

Ensuite, veuillez activer l’outil « Affichage public / Jolis Coins » en vous rendant sur la page d’administration du plugin en espace privé (Bouton Configuration, et onglet "Le Couteau Suisse").

Dépendances

Les indispensables scripts JS du plugin sont insérés grâce à la balise #INSERT_HEAD qui doit absolumet être présente (en un seul exemplaire) dans le header de vos squelettes (entre les balises <head> et </head> des fichiers HTML). Si vous ne trouvez pas cette balise dans vos codes et que les coins n’ont pas l’apparence voulue, alors l’outil "Balise #INSERT_HEAD" du Couteau Suisse permet d’insérer automatiquement cette balise sans manipulation de votre part.

Puisque l’ajout des coins ronds s’opère en JavaScript, sur la machine du visiteur, cela simplifie considérablement votre travail de concepteur de squelettes. Au départ, prévoyez un simple cadre coloré en CSS, puis jquery fera le travail à votre place. Notez donc, que si le visiteur a désactivé le JavaScript sur son navigateur, aucun joli coin n’apparaitra.

Configuration

Le Couteau Suisse vous permet en direct d’agir sur les cadres <div> de vos squelettes grâce aux sélecteurs CSS qu’il suffit de configurer sur la page d’administration du Couteau Suisse.

Dans le cadre « Améliorer les coins des sélecteurs suivantes », listez les objets de votre squelette à arrondir en utilisant la syntaxe CSS (.class, #id, etc. ). Veuillez respecter les points suivants :
-  Utilisez le signe « = » pour spécifier la commande jQuery à utiliser.
-  Utilisez le double slash « // » pour les commentaires éventuels.
-  En absence du signe égal, des coins ronds seront appliqués par défaut.
Par exemple, .ma_classe est équivalent à : .ma_classe = corner().
-  Dès que le sélecteur avant le signe égal contient des virgules (listes d’objets différents), utilisez les guillemets doubles « " ».
Par exemple : ".ma_classe1, .ma_classe2" = corner('round 10px')

Prenons un cas d’école : arrondir les coins des cadres de SPIP.

L’exemple suivant est très simple, il permet d’appliquer des coins ronds aux menus de navigations sous SPIP 1.92, puisqu’ils sont colorés nativement :

// coins ronds pour les menus de navigation
.rubriques, .breves, .syndic, .forums, .divers

Ceci est possible car SPIP colore ses cadres (exemple CSS : background-color:#FFEAEA; ), et les définit, par exemple pour les rubriques, comme ceci :

<div id="navigation" style="width:12em;">
  <div class="rubriques">
    <h2 class="menu-titrefont-size:1.2em;
">Rubriques</h2>
    <ul> <li>
      <a class="on" href="./?-test-v1-9-2-">test v1.9.2</a>
    </li></ul>
  </div>
</div>

Soit :

Voici ce que donne l’ajout des coins ronds :

Comme vous pouvez le remarquer, les titres <h2> nous empêchent de voir les coins ronds supérieurs : ils sont placés trop haut. A ce stade alors, on peut leur ajouter une petite marge haute pour les déplacer vers le bas :

// marge haute pour les titres
".rubriques>h2, .breves>h2, .syndic>h2, .forums>h2, .divers>h2" = css('margin-top', '6px')

// coins ronds pour les menus de navigation
.rubriques, .breves, .syndic, .forums, .divers

Soit, toujours pour les rubriques :

Notez que la syntaxe est similaire à celle de jQuery : ne vous trompez pas dans votre code ! Après chargement total de la page, le plugin compile pour vous la commande ci-dessus et provoque l’ajout d’une marge haute sur les titres puis l’application des coins ronds grâce au code JS suivant :

// marge haute pour les titres
jQuery(".rubriques>h2, .breves>h2, .syndic>h2, .forums>h2, .divers>h2", this).not(".jc_done").addClass("jc_done").css('margin-top', '6px');

// coins ronds pour les menus de navigation
jQuery(".rubriques, .breves, .syndic, .forums, .divers", this).not('.jc_done').addClass('jc_done').corner();

Comme vous pouvez le constater, une sentinelle « jc_done » est appliquée lors du traitement des sélecteurs concernés. Ceci évite de multiples passages intempestifs, mais vous prive aussi de l’utilisation répétée du même sélecteur. Choisissez donc l’enchaînement de type jQuery car si vous faites plusieurs utilisations du même sélecteur, seule la première sera exécutée.

Syntaxe de type jQuery correcte (si chaque fonction renvoie bien le sélecteur de départ) :
.ma_classe = .fonction1().fonction2()

Syntaxe répétée incorecte pour le plugin :

.ma_classe = .fonction1()
.ma_classe = .fonction2()

Notez : cet outil du Couteau Suisse est compatible AJAX. Si un fragment de page est modifié, les jolis coins vont s’appliquer dès le chargement du fragment terminé.

Colorer vos divs

Le squelette distribué par SPIP 2.0 n’est plus coloré. Reprenons donc notre cas d’école : arrondir les divs de SPIP !

Par exemple, voici la liste de nos rubriques en page d’accueil :

Un peu triste, non ? Le problème est que, pour avoir des coins ronds, il faut absolument un cadre coloré. L’idée est ici d’ajouter un parent coloré au cadre initial de SPIP dont la classe est « .menu ».

Le Couteau Suisse vous offre une fonction jQuery simple pour ajouter un cadre parent : .jc_ajouter_parent(background_color, padding, margin). Notez le point précédant le nom de la fonction, nécessaire pour jQuery. Cette fonction permet l’enchainement jQuery car elle renvoie, non pas le nouveau parent créé, mais bien le sélecteur de départ. On peut donc sans problème enchainer la fonction corner() après jc_ajouter_parent(). Pour avoir accès au parent d’un sélecteur, alors il faut utiliser la fonction jQuery parent().

Voici donc le code facile pour ajouter un parent coloré au cadre original de SPIP, puis arrondir ses coins :

.menu = jc_ajouter_parent('lightBlue').parent().corner()

Cela donne :

Ah... Déception : La bordure est plus large en bas ! Ceci est simplement dû à la marge basse du cadre de départ qui est définie à 2em. Sacré SPIP ! Il faut donc transférer cette marge au parent, pour éviter que les cadres ne se collent entre eux. Voici le nouveau paramétrage :

.menu = .css('margin-bottom','0em').jc_ajouter_parent('lightBlue').parent().corner().css('margin-bottom','1em')

Et le tour est joué :

Ceci est un cas d’école bien sûr. Stylez les <div> de votre squelette de façon à ce que la fonction .corner() puisse agir directement. Prévoyez notamment les cadres colorés à l’avance, il sera facile ensuite d’agir sur leurs coins. Cela permettra également aux visiteurs qui n’ont pas JavaScript sur leur machine de visualiser correctement votre site... mais avec des coins carrés.

Des bordures, non des coins !

Reprenons l’exemple du menu vert clair de SPIP 1.92. L’idée maintenant est d’ajouter une bordure, ce n’est pas très difficile : il faut créer un nouveau cadre, autour du premier, mais un peu plus grand, et lui aussi arrondi. C’est mathématique : deux cadres arrondis concentriques de taille différente créent ... une bordure dont on peut décider facilement l’épaisseur.

Utilisons la fonction .jc_ajouter_parent(background_color, padding, margin) décrite dans la paragraphe précédent. Notre configuration devient alors :

// marge haute pour les titres
".rubriques>h2, .breves>h2, .syndic>h2, .forums>h2, .divers>h2" = css('margin-top', '6px')

// Un parent pour la bordure, et coins pour tout le monde
".rubriques, .breves, .syndic, .forums, .divers" = .jc_ajouter_parent('#c82', '4px', '15px').corner("round 8px").parent().corner("round 10px")

Notez que les coins du parent doivent être de plus grand rayon que ceux du cadre enfant. L’aspect visuel pour une bordure serait un peu étrange si tous les coins sont de même dimension.

Voici le résultat du paramétrage ci-dessus :

Quelle déception : La bordure est plus large en bas ! Ceci est simplement dû à la marge basse du cadre de départ qui est définie à 1em. Il faut donc transférer cette marge au parent, pour éviter que les cadres ne se collent entre eux. Voici le nouveau paramétrage :

// marge haute pour les titres
".rubriques>h2, .breves>h2, .syndic>h2, .forums>h2, .divers>h2" = css('margin-top', '6px')

// Un parent pour la bordure, et coins pour tout le monde
".rubriques, .breves, .syndic, .forums, .divers" = .css('margin-bottom','0em').jc_ajouter_parent('#c82', '8px', '15px').corner("round 8px").parent().css('padding','4px').corner("round 10px").css('margin-bottom','1em')

Soit, enfin :

A ce stade, c’est gagné !


Attention, cette outil passe en version distante dès la version 1.8.18.00 du Couteau Suisse. Il convient donc de vérifier que le fichier distant indispensable est bien rapatrié dans le dossier du plugin : couteau_suisse/lib/jcorner/distant_jquery.corner.js.

Donc :

-  Pour SPIP >= 2.1 : la version 2.12 de ce fichier est compatible avec jQuery > 1.3.2
-  Pour SPIP <= 2.0 : la version 2.03 de ce fichier n’est désormais plus maintenue par ses auteurs.

Si les paramètres de votre serveur le permettent, le Couteau Suisse rapatrie automatiquement le fichier distant suivant (version 2.13 [19-FEB-2013] pour SPIP 3) :
-  http://raw.github.com/malsup/corner...
le renomme et le place comme ceci :
-  votre_dossier_des_plugins/couteau_suisse/lib/jcorner/distant_jquery.corner.js

Si vous mettez à jour SPIP (ou éventuellement le Couteau Suisse), n’oubliez pas d’« [actualiser] » la description des « Fichiers distants » que vous trouverez sur la page de configuration de l’outil « Jolis coins ». Vous serez alors sûr d’avoir la meilleure version compatible du fichier téléchargé.

En cas de problème avec l’accès distant, par exemple si votre serveur n’a pas l’accès au Hub distant, ou si la page de configuration du plugin vous signale une erreur, procédez à une installation par téléchargement manuel :
-  renommez à la main le fichier téléchargé jquery.corner.js en : distant_jquery.corner.js
-  placez-le dans votre dossier ./squelettes/ à la racine de votre site suivant l’arborescence : ./squelettes/lib/corner/distant_jquery.corner.js.

N.B. : la mise à jour de cette installation manuelle (en cas de correction de bugs ou d’évolution de jcorner...) restera à votre charge.

Discussion

16 discussions

  • salut
    je tiens à dire que la lame du couteau suisse ’joli coins’ est incompatible avec le plugin ’galleria’ sous spip.
    les appels javascript se mélangent les pinceaux entre eux, je ne suis pas développeur, mais je crois qu’il y a un problème à résoudre

    message d’erreur :
    « Fatal error : Could not extract a stage height from the CSS. Traced height : 0px. » à l’appel d’une galerie qu n’apparaît souvent pas du tout.
    la seule façon d’utiliser les galleries, c’est de désctiver ’jolis coins’
    sous spip 3.0.16, plugins mis à jour .
    salut, amicalement
    momo

    Répondre à ce message

  • 7
    OneMore

    Bonjour,

    Voici je m’essaie aux Jolis Coins,
    mais sans succés :
    ma classe dans mon fichier css est la suivante :
    .p_rgba
    display : block ;
    margin : 15px ;
    padding : 10px ;
    background-color : rgba(0, 0, 0, 0.4) ;

    Et dans l’espace privé, dans la fenêtre du couteau suisse,
    j’ai juste indiqué :
    .p_rgba = corner(’round 10px’)

    Mais non, mes coins sont tjs aussi anguleux !
    Est-ce incompatible avec le background semi-transparent ?

    Merci pour votre aide.

    • Bonjour, tu as quelle version de SPIP, et quel est ton code HTML de départ ?

    • OneMore

      Bonjour Patrice,

      Je suis sous SPIP 3.0 et
      mon code le voici :
      [

      (#TEXTE|image_reduire500,0)

      ]

      Merci

    • Merci d’utiliser les balises <code>...</code> car c’est difficile de comprendre tes exemples.

      Les jolis coins agissent sur des div : il faudrait déjà la structure HTML utilisée autour de #TEXTE, pour savoir ensuite quoi mettre dans la config des Jolis coins...

    • OneMore

      Claro que si pour le code, donc here is my code :

      [<div class="p_rgba">(#TEXTE|image_reduire{500,0})</div>]

    • Je viens de faire un test sur un SPIP 3 tout neuf et ta proposition fonctionne parfaitement...
      Tu as peut-être un lien public avec ce réglage ?

      A tout hasard :
      -  La balise #INSERT_HEAD est-elle bien présente dans le

      de ta page ?
      -  Les consoles de Chrome ou FireFox+Firebug ne montrent-ils pas des erreur Javascript qui perturbent le bon déroulement du chargement de la page ?

    • OneMore

      En fait la console m’indiqué

      TypeError: $ is not a function
      [Stopper sur une erreur] 	
      
      $("#mainContainer").dblclick(function(){

      appelée depuis la page
      spip.php?page=chess.jsavec l’annotation dans la frame de droite de la console « Nouvelle expression espion... »

      Ce plug-in Echecs, que je n’ai pas installé moi-même, je l’ai désactivé et
      ça marche.

      Pourquoi ce plugin Echecs ? « Nouvelle espression espion » ?
      Vous pouvez m’éclairer ?

      Sachant que je bosse sur la base du theme Incredible.

      Merci beaucoup Patrice.

    • N’aurais-tu pas installé des scripts JS qui perturberaient jQuery ?

      Essaie peut-être, dans le fichier « chess.js.html », de commenter la ligne 21 :

      // if(!window.$)window.$ = function(e) .....

       

      Puis de remplacer lignes 58 et 59 « $ » par « jQuery » :

      jQuery(document).ready(function(){
          jQuery("#mainContainer").dblclick(function(){
          	return false;
          });
      });

      Ne pas oublier enfin de vider le cache SPIP.

    Répondre à ce message

  • 2

    Bonjour

    Je relance un post mais dans le bon article cette fois.
    Sous spip 3.0.3[19675] et couteau suisse 1.8.78 [Révision : 63427] jolis coins fonctionne http://svtbelrose.info

    Cependant je n’arrive pas du tout à modifier les paramètres (la feuille de style proposée). Quand je tape ma modification, puis quand je clique sur modifier les paramètres, la page ne s’actualise pas...les modifications ne sont donc pas possibles (je voulais changer les couleurs de fond).
    Je voulais à la place de

    background-color:lightBlue

    mettre par exemple

    background-color:lightGreen

    Une idée ?
    A défaut, quel fichier devrais-je modifier pour y arriver ?

    D’avance merci,
    Odile

    • Bonjour, est-ce toujours d’actualité ? Il y a peut-être une erreur JS ou PHP bloquant quelque part.

      Est-ce le cas pour toutes les autres lames configurables ?
      Aurais-tu fais quelques essai en désactivant certains plugins pouvant entrer en conflit ?

      Une lame pourrait peut-être te donner quelques infos sur les erreurs PHP : « Débogueur de développement ».

      A titre d’info, je vois que certains raccourcis ne sont pas pris en compte : http://svtbelrose.info/spip.php?art...

    • Bonjour

      Tout d’abord merci Patrice pour ta réponse, et j’ai corrigé les raccourcis indiqués. En fait le site tournait depuis sa création sous SPIP 2 avec sarkaspip. A la migration je n’ai pas réactivé tous les plugins et j’ai du changer de squelette (sarkaspip n’était pas en juin dispo pour spip 3)

      J’ai activé le débogueur et voici le premier message :

      Strict Standards : _T() [function.-t.php] : It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ’Europe/Berlin’ for ’CEST/2.0/DST’ instead in /home/svtbelro/public_html/ecrire/inc/utils.php on line 494

      J’ai toujours la petite roue qui tourne sans fin et ne peut pas modifier la lame jolis coins (alors que c’est possible avec une autre lame comme lutte anti spam).

      Je ne m’y connais pas trop en Php, mais apparemment c’est un problème de fuseau horaire ???

      Odile

    Répondre à ce message

  • 2

    Comment faire pour ne faire les coins que sur les coins du bas et pas du haut d’une div ? Merci

    • Tu es allé voir la page de démo citée plus haut ?

      A priori : corner("bottom");

    • suis-je bête, désolé merci. En effet cest .maclasse = corner(« bottom ») ;

    Répondre à ce message

  • Renée Picard

    Comment rendre compatible joli coin et décoration du couteau suisse ?

    Répondre à ce message

  • 5

    Bonjour,

    Je viens d’installer le couteau suisse et activé les jolis coins, j’ai un problème avec les logos de l’article, ils sont recouvert par l’article, le logo n’est vu qu’à moitié

    Quelle solution afin que le logo s’intègre dans l’article,

    Merci

    • Tu as peut-être un lien public à montrer ? Firefox+Firebug t’en diront plus sur les CSS...

    • Désolé c’est en local, mais voila une copie avec l’apparence de l’article et la photo entière telle qu’elle devrait être, je pense que ça donne une idée.

    • oups, j’ai commis une erreur, voilà une copie écran

    • Et l’autre copie

    • C’est impossible de répondre sans avoir le bouzin entre les mains : une page publique exhibant fièrement le problème...

      Je viens de mettre à jour le plugin jquery.jcorner.js dans le Couteau Suisse. Il te faut donc :

      1. Mettre à jour le plugin pour avoir la dernière version à ce jour : 1.8.18.00
      2. Bien vérfier dans la description des « Jolis coins » que le fichier distant est correctement rapatrié sur ton serveur.

      Peut-être que cela résoudra ton problème, s’il s’agit d’un vrai bug de jcorner. Sinon, tes réglages seront sans doute à changer.

    Répondre à ce message

  • je rencontre une incompatibilité avec le plugin Crayons : je n’ai plus l’image du crayon pour éditer le texte, si je désactive jolis coins, ça remarche... vous confirmez ? (spip 2.08 + dernière version du couteau suisse)

    Répondre à ce message

  • 1

    Bonjour à nouveau

    j’ai un léger décalage sous IE.
    J’ai fais un box contenant 2 box : le premier sert à l’entête le second au corps du message. Avec des arrondis différent pour le haut et le bas suivant le box.
    Sous IE, j’aperçois un léger arrondis en haut alors que je n’en ai pas en bas.
    Sous Firefox, pas de problème.
    (pièce jointe avec l’exemple.)

    Répondre à ce message

  • 5

    Bonjour,
    serait-il possible de faire une petite amélioration à « jolis coins », soucis d’avertissement tydi pour le XHTML 1.0 Strict. le bout de code JQuery introduit par la balise #INSERT_HEAD génère un avertissement suivant :

    Aide de tidy - Tidy [32] : Les caractères < + / suivis d'une lettre ne sont pas autorisés ici.
    Cause :
    Les caractères < + / suivis d'une lettre ne sont pas autorisés ici. Dans la plupart des cas, ceci est dû a une erreur de Javascript.
    Exemple :
    Error 	document.write('</h1>');
    Good 	document.write('<\/h1>');
    Solution :
    Ajoutez une barre oblique ('anti-slash') dans le code javascript. 

    le code est le suivant :

    <script type="text/javascript"><!--
    var cs_prive=window.location.pathname.match(/\/ecrire\/$/)!=null;
    if(window.jQuery)jQuery.fn.jc_ajouter_parent=function(color,padding,margin){
    color=((typeof color=='undefined')||(color==''))?'':(' background-color:'+color+';');
    if((typeof padding=='undefined')||(padding==''))padding='4px';
    if((typeof margin=='undefined')||(margin==''))margin='4px 0';
    return this.wrap('<div class="jc_parent" style="padding:'+padding+';'+color+' margin:'+margin+';"></div>')};

    c’est la dernière div fermante qui pose problème.

    j’ai vu ceci dans /plugins/couteau_suisse/outils/jcorner.js.html qui ressemble bien à ligne de code incriminée .

    if (window.jQuery) jQuery.fn.jc_ajouter_parent = function(color, padding, margin) {
    	color = ((typeof color=='undefined') || (color==''))?'':(' background-color:'+color+';');
    	if ((typeof padding=='undefined') || (padding=='')) padding = '4px';
    	if ((typeof margin=='undefined') || (margin=='')) margin = '4px 0';
    	return this.wrap('<div class="jc_parent" style="padding:'+padding+';'+color+' margin:'+margin+';"></div>');
    };

    j’ai essayé <\/div> ou <\/div> rien y fait, même en vidant les caches spip, navigateur, en rechargeant la page, l’avertissement persiste.

    • Désolé pour le bruit, mais en modifiant cette div fermante de :

      </div>  en  <\/div>

      puis en supprimant tout le contenu du répertoire /tmp/ (vider le cache depuis l’espace privé ne suffit pas), l’avertissement disparait et jolis coins fonctionne toujours (pour l’instant).
      Cordialement.

    • Salut, merci pour toutes ces précisions. As-tu la possilité de committer directement ces changements dans le plugin ? Autant le faire directement, non ?

      A propos de la prise en compte des choses, il faut parfois recompiler le CS en réaffichant sa page de config...

    • Bonsoir,
      moi m’excuser, moi pas comprendre vocabulaire franglais développeur ! LOL

      commiter ? d’accueil ? restreint ?

    •  ;-) Google est un ami certain !

      Les plugins de SPIP sont développés sur un espace SVN (logiciel serveur collaboratif nommé Subversion) auquel tout le monde peut accéder après avoir demandé un mot de passe sur la liste de diffusion spip-zone.

      Tu pourras alors grâce à ce système committer (ou poster) tes corrections/modifications/créations de code.

      Ensuite, deux fois par jour, le zip du plugin disponible sur la zone est automatiquement reconstruit.

      Tu as qq explications ici : http://zone.spip.org/trac/spip-zone/

      Sinon, je confirme qu’il faut recompiler le CS (réafficher sa page de config) pour que tes modifs sur /plugins/couteau_suisse/outils/jcorner.js.html soient prises en compte.

    • Correction effectuée ce jour, disponible ce soir en zip.

    Répondre à ce message

  • Bon, en fait, je n’insérai tout simplement pas le code au bon endroit... :/

    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