Mise à jour automatique des plugins

Une nouvelle lame du Couteau Suisse permet de visualiser les plugins nécessitant une mise à jour, tout comme SPIP lui-même !

Présentation

Rendons à César ce qui est à César, voici un extrait de la présentation du Couteau Suisse pour sa lame «Mise à jour automatique» :

«Garde un oeil sur tous vos plugins. Cet outil vous permet de gérer facilement leurs mises à jour, récupérant notamment le numéro de révision contenu dans le fichier svn.revision et le comparant avec celui trouvé sur zone.spip.org. La liste proposée offre la possibilité de lancer le processus de mise à jour automatique de SPIP sur chacun des plugins préalablement installés dans le dossier plugins/auto/.»

Cette lame a été ajoutée au Couteau Suisse à partir de la révision 31378 (version 1.8.09.05) de ce dernier. Si vous n’avez pas cette lame dans votre Couteau Suisse, cela veut dire que votre version n’est pas à jour.

A partir de la version 1.8.32.00 du plugin et si vous avez le statut de webmestre, la version de SPIP lui-même est vérifiée. Comme il est toujours préférable de mettre à jour un code qui peut s’avérer défectueux ou présenter de graves failles de sécurité (par exemple : SPIP 2.1.8 corrige une importante faille de sécurité), n’hésitez pas ! Voici un exemple du message proposé :

Incompatibilité

Le Couteau-Suisse peut parfois (pour le moment) être incompatible avec certains plugins. Au mieux, certaines lames ne sont pas compatibles avec d’autres plugins. La lame “mise à jour automatique” n’est pas compatible avec le (ou les) plugins suivants (liste non exhaustive) :
-  SoyezCréateurs.

Précautions

Cet outil vous permet de gérer facilement la mise à jour de vos différents plugins, récupérant notamment le numéro de révision contenu dans le fichier svn.revision et le comparant avec celui trouvé sur zone.spip.org.

La liste offre la possibilité de lancer le processus de mise à jour automatique de SPIP sur chacun des plugins préalablement installés dans le dossier plugins/auto/. Les autres plugins se trouvant dans le dossier plugins/ sont simplement listés à titre d’information, aucun bouton radio n’apparaîtra de ce fait. Si la révision distante n’a pas pu être trouvée, alors tentez de procéder manuellement à la mise à jour du plugin.

Note : les paquets .zip n’étant pas reconstruits instantanément, il se peut que vous soyez obligé d’attendre un certain délai avant de pouvoir effectuer la totale mise à jour d’un plugin tout récemment modifié.

Activation

Pour activer cette lame, allez dans la page de configuration du Couteau Suisse en ayant cliquer sur “Configuration” de votre bandeau.

Cliquez sur “Administration” dans votre bloc “Outils inactifs” (En rouge) pour voir apparaître la liste des lames de cette catégorie où se trouve “Mise à jour automatique”:

Cliquez sur “Mise à jour automatique” pour voir son descriptif en bas de la page...

... et pouvoir l’activer :

Une fois cela fait, vous verrez apparaître la liste de vos plugins actifs (installés grâce au panneau de “Gestion des plugins”) dans un 1er tableau et un 2e tableau pour les plugins inactifs :

Explications

Cette liste se présente sous forme de tableau contenant 3 colonnes :

  1. un bouton radio pour sélectionner un plugin à mettre éventuellement à jour
  2. le nom du plugin, son numéro de version, et en gras soit “Ce plugin semble à jour.” soit “La révision XXXX est disponible” (XXXX est le numéro de révision du plugin)
  3. Le numéro de révision de votre plugin actif sur votre site et la date de cette révision

Vous remarquerez que le bouton radio sélectionné correspond au premier plugin de votre liste ayant une mise à jour disponible. Dans l’exemple présent, nous voyons le plugin “Notifications” sélectionné

Revenons sur la colonne principale de ce tableau.
Lorsque votre plugin est à jour, vous voyez la phrase “Ce plugin semble à jour”. Dans cette simple phrase, vous avez 2 liens:

  1. le premier sur “plugin” qui pointe vers l’archive (zip) de votre plugin ;
  2. le deuxième sur “à jour”, pointant vers le “changelog” de votre plugin vous permettant de voir les différentes révisions liées à ce plugin

Lorsque votre version de plugin n’est pas la plus récente, vous verrez une phrase du type “La révision XXXX est disponible”. Ici aussi, vous avez 2 liens :

  1. Le numéro de révision pointe vers le “changelog” du plugin vous permettant de consulter la liste des révisions avant de mettre à jour (ou pas) votre plugin ;
  2. “disponible” pointe vers l’archive zippée du plugin.

Mise à jour d’un plugin

Venons au plus intéressant. Repérez un de vos plugins ayant une révision disponible. Cliquez sur le bouton à gauche du nom du plugin (s’il est le premier plugin de la liste, il sera déjà sélectionné).
En bas du tableau, vous verrez le bouton “Mettre à jour le plugin sélectionné”. Cliquez-le.

Vous verrez une page similaire à celle-ci apparaître :

Cliquez sur “Suivant” en bas de page (hé oui, SPIP nous oblige ici à faire de la roulette de souris...). Puis une autre page vous invitant à “Continuez pour l’activer” en cliquant sur “Suivant” encore une fois. Faites-le.

Ces étapes terminées, vous êtes redirigé vers la page de la lame “Mise à jour automatique” du Couteau Suisse pour procéder à d’éventuelles nouvelles mises à jour.

Attention : la mise à jour d’un plugin est une opération délicate qui ne saurait être automatisée. L’œil du Webmestre est toujours requis en cas de besoin. Si une erreur survient, n’oubliez pas les bases de SPIP :

-  Vider le cache de SPIP
-  Supprimer les fichiers /tmp/charger_*.php
-  Supprimer le dossier /tmp/couteau-suisse

Informations techniques

Merci à Patrice Vanneufville pour les informations suivantes :

-  Le cache de la consultation des logs est créé pour 24h afin de ne pas surcharger le serveur de trac. Par exemple, pour trouver la version actuelle de CFG, le Couteau Suisse va consulter la page http://zone.spip.org/trac/spip-zone/log/_plugins_/cfg?format=changelog et repérer le premier chiffre de révision, puis le comparer à ce qu’il peut trouver dans le fichier svn.revision. La page de trac est ensuite mise en cache : tant que le fichier svn.revision n’a pas été modifié, tout ré-affichage de l’admin du Couteau Suisse ne provoquera pas d’accès distant pendant 24h, (ce qui accélère considérablement la rapidité d’affichage par rapport à la première fois).

-  pour court-circuiter le cache et refaire toutes les consultations sur trac, il suffit d’ajouter var_mode=calcul dans l’url. Par exemple : /ecrire/?exec=admin_couteau_suisse&cmd=descrip&outil=maj_auto&var_mode=calcul

-  le fait qu’un commit [1] (donc nouvelle version disponible immédiatement) n’est pas pris en compte tout de suite dans le paquet .zip est que le paquet doit être refait sur trac (il est refait, en temps normal, toutes les heures). Sans cela donc, la mise à jour du plugin ne pourra pas se faire.

Footnotes

[1Correction apportée au code d’un plugin sur le serveur SVN

updated on 2 October 2019

Discussion

37 discussions

  • 3
    Gérard

    Bonjour,

    Depuis que j’ai fais la mise à jour du couteau Suisse (vers CS 1.8.40.04) dans ma version de développement (sous EasyPHP) la lame “mise à jour automatique” ne fonctionne plus !
    Que cette lame soit active ou inactive si je clic dessus, je constate qu’en bas de page une petite roulette tourne durant quelques minutes puis rien rien ne s’affiche...

    Dans ma version en ligne (vers.CS 1.8.33.05) tout fonctionne parfaitement et donc j’hésite à faire la mise à niveau du CS étant donné le problème décrit ci-dessus.

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

    Bonne semaine

    Gérard

    • Tout fonctionne en ligne, même quand tu cliques sur “forcer l’actualisation distante” ? Quelle version de SPIP as-tu ?

      Un lien de test (seulement pour tester l’affichage !) peut ressembler à :
      -  ecrire/?exec=charger_description_outil&outil=maj_auto

      Voire à :
      -  ecrire/?exec=charger_description_outil&outil=maj_auto&cs=reportall

    • Gérard

      -  Je sais pas trop à quoi sert le lien “forcer l’actualisation distante” j’ai cliqué dessus (dans la version en ligne) après quelques secondes la page s’est rafraichie sans changement apparent.
      -  Si tu m’as bien suvit, ce lien n’est pas visible dans ma version de développement.
      -  Version SPIP 2.1.10 pour les deux versions
      -  Le premier lien que tu propose donne une page totalement blanche après un bon moment d’attente.
      -  Le deuxième lien donne le texte ci-joint. Celà peut-il nous aider.

      Merci pour ton aide

      Gérard

    • Gérard

      Bon Oui il faut des fameuses lunettes pour lire le texte ci-dessus. Le voici en claire :

      COUTEAU-SUISSE. [#5957]. --------------------------------------------------------------------------------
      COUTEAU-SUISSE. [#5957]. INIT : cout_options, /ecrire/?exec=charger_description_outil&outil=maj_auto&cs=reportall
      COUTEAU-SUISSE. [#5957]. inclusion des fonctions de cout_lancement.php pour initialisation
      COUTEAU-SUISSE. [#5957]. #### 1er PASSAGE [#3c44] ################################# - $forcer = 0 [#3c44] PHP v5.2.10 - MYSQL v5.0.51a - base SPIP v15828 - code SPIP v15375
      COUTEAU-SUISSE. [#5957]. [#3c44] cs_initialisation() : Passage #1
      COUTEAU-SUISSE. [#5957]. [#3c44] -- cs_metas_pipelines = header_css_prive, header_css, header_js_prive, header_js, pre_description_outil, pre_boucle, boite_infos, fichier_distant, affiche_milieu, affiche_droite, affiche_gauche, pre_typo, bt_toolbox, porte_plume_barre_pre_charger, porte_plume_lien_classe_vers_icone, nettoyer_raccourcis_typo, insert_head, arbo_creer_chaine_url, propres_creer_chaine_url
      COUTEAU-SUISSE. [#5957]. [#3c44] -- 10 outil(s) actif(s) = soft_scroller, cs_comportement, couleurs, decoration, previsualisation, ecran_securite, maj_auto, SPIP_liens, type_urls, boites_privees
      COUTEAU-SUISSE. [#5957]. [#3c44] cs_initialisation() : Sortie car les metas sont presents
      COUTEAU-SUISSE. [#5957]. PUIS : cout_options, initialisation terminee
      COUTEAU-SUISSE. [#5957]. -- fichier '../tmp/couteau-suisse/mes_spip_options.php' deja inclu par config/mes_options.php
      COUTEAU-SUISSE. [#5957]. -- inclusion de '../tmp/couteau-suisse/mes_options.php'
      COUTEAU-SUISSE. [#5957]. FIN : cout_options, cs_spip_options = 1, cs_options = 1, cs_fonctions_essai = 0
      Notice: Undefined index: spip_lang in D:\_HOME\#IMP\Aset\Site-en-Local\ecrire\inc\lang.php on line 269
      
      COUTEAU-SUISSE. [#5957]. INIT : exec_charger_description_outil_dist() - Preparation du retour par Ajax sur div#cs_infos
      COUTEAU-SUISSE. [#5957]. chargement de cout_utils.php
      COUTEAU-SUISSE. [#5957]. inclusion de config_outils.php
      Notice: Undefined index: nom in D:\_HOME\#IMP\Aset\Site-en-Local\plugins\auto\couteau_suisse\cout_utils.php on line 71
      
      Notice: Undefined offset: 1 in D:\_HOME\#IMP\Aset\Site-en-Local\ecrire\inc\filtres_mini.php on line 27
      
      COUTEAU-SUISSE. [#5957]. -- description_outil2(maj_auto) - Appel de config_outils.php : nb_outils = 69
      COUTEAU-SUISSE. [#5957]. -- appel de charger_fonction('description_outil', 'inc') et de description_outil(maj_auto) :
      COUTEAU-SUISSE. [#5957]. inclusion de cout_pipelines.php
      COUTEAU-SUISSE. [#5957]. INCL : ../tmp/couteau-suisse/mes_fonctions.php

    Reply to this message

  • 7
    Retenodus

    Bonjour,

    J’ai spip 2.1.8 et je n’ai pas de lame de mise à jour de plugins. Dans administration, j’ai juste :
    La corbeille
    Site en travaux

    Avez vous une idée du problème ?
    Merci d’avance,
    Cordialement,
    Retenodus

    • Quel squelette utilises-tu ? Il y a peut-être des autorisations préprogrammées...

    • Retenodus

      Bonjour,

      J’utilise le jeu de squelette syezcreateurs.

    • Je m’en doutais. Peut-être devrais-tu alors en parler aux auteurs. Certaines lames sont en effet invalidées par ce squelette.

    • Bonjour

      Mets à jour ton squelettes et tu verras que la lame sera autoriser.
      Maj tous tes plugins par la page de chargement et vide le tmp.

      Elle dois réapparaitre, je l’ai sur un de mes sites.

    • SoyezCréateurs invalide volontairement un certains nombre de lames du CouteauSuisses jugées :

      • incompatibles avec une fonctionnalité de SoyezCréateurs (exemple, la lame sommaire automatique)
      • ou dangereuse (ex : mise à jour automatique ; la seule mise à jour efficace de SPIP est par SVN)
    • N’est-ce pas un jugement un peu arbitraire ? Tout le monde n’a pas de serveur SVN sur son hébergement.... SoyezCréateurs nécessite-t-il un serveur SVN ?

      Il existe sur le CS un pipeline pre_description_outil qui permet d’avoir accès à la description/configuration d’un outil avant affichage et traitement de tous les raccourcis. Ne serait-il pas «plus sympa» d’ajouter plutôt un message d’avertissement concernant le squelette spécifique SoyezCréateurs sur certaines lames, au lieu tout simplement de les interdire ?

    • Dans la mesure ou SoyezCréateurs cache les lames par cette ligne : http://zone.spip.org/trac/spip-zone/browser/_squelettes_/soyezcreateurs_net/plugins_2.1/plugins/soyezcreateurs/soyezcreateurs_options.php#L134

      Il suffit dans son config/mes_options.php de reprendre cette ligne et d’y mettre autre chose pour être prioritaire sur le masquage des lames.

    Reply to this message

  • 15

    Bonjour et merci pour ce plugin,

    actuellement, avec la dernière version du couteau suisse:

    Version locale : 1.8.29.00
    Révision : 42842
    Votre version est à jour.

    La mise à jour des plugins se lance et lors du retour sur la visu des tableaux, le plugin est toujours à mettre à jour.

    Cette indication change lors d’un chargement de la dernière version du plugin par ftp.

    Une piste?
    Par avance, merci,
    Alain

    • Bonjour

      Si tu refais ta manip 1h après est ce que ça marche ?

    • Bonjour,
      après “cherche” et “recherche”, les fichiers sont chargés dans: /lib/ et non dans: /plugins/auto/
      si cela peut aider à savoir pourquoi...
      Après transfert en ftp, les plugins et le tableau des mises à jours sont “à jour”
      D’où la question, pourquoi /lib/ ?
      merci,
      Alain

    • Pierre KUHN

      Bonjour

      Pour quel plugins Alain ?

      Car ça devrais pas le faire pour tous, y en a qui le font mais ça viens du faite qu’il sont par reconnu comme tel.

    • Tous, car j’ai voulu les cocher les uns après les autres avant de poster et aucun n’a fait le bon choix

    • TOUS ? meme le couteau suisse ?

      Est ce que tu as les bon droits sur le dossier plugins/auto/ ?

    • Merci de la piste, c’était bien les droits sur /plugins/auto/ (705 passés en 755) et ça marche!!!

      Encore merci de ta promptitude

      Alain

    • De rien, je fais du mieux avec ce que tu me dis mais c pas logique de mettre dans lib si 705 sur plugins auto...

    • Après analyse, lors de l’installation du couteau suisse, il est demandé que les droits soient modifiés pour /lib/ (qui n’était pas encore créé), alors que ce sont les droits de plugins/auto/ qui ne sont pas bon.

      Ensuite, c’est dans /lib/ que sont chargés les plugins, version “à jour”.

      C’est tout ce que j’ai pu remarquer...

      Encore merci,
      Alain

    • Salut,
      chez moi la mise à jour automatique ne fonctionne pas non plus. Cela concerne tout les plugins, le couteau suisse inclue. J’ai essayé avec les droits de dossiers en 777, car quand je met en 755 je reçois : «Erreur - Le répertoire ../plugins/auto/ n’est pas accessible en écriture.»
      Avec 777 je ne reçois aucun message d’erreur, la mise à jour a l’air de se dérouler correctement, mais une fois retourné sur la page couteau suisse la version du plugin est pareil qu’avant.
      Le site est en 2.1.8 mais le problème existait déjà avec des versions antérieurs..

      Qu’est-ce qui pourrais bloquer le processus? Une incompatibilité avec un autre plugin?
      Je n’ai pas ce problème sur d’autres sites sur le même serveur, seulement Bonux ne veut pas se laisser mettre à jour automatiquement.
      Merci pour vos tuyaux
      joz

    • Tu as quelle version du couteau ? Est ce que tu as essayer de la mettre a jour via le chargeur auto de spip ?

    • Une fois le Couteau Suisse mis à jour, as-tu essayé de “forcer l’actualisation distante” ?

    • Le couteau est à jour. J’avais essayé via le chargeur automatique, mais ça n’a pas fonctionné, j’ai du le faire manuellement comme pour les autres plugins.
      Comment est-ce que je peux forcer l’actualisation distante?

    • On le vois en bas de la lame de mise a jour si celle si est activer.

      PS: PatV, faudrait qu’on met a jour l’article sur ce point

    • rien ne se passe quand j’appuie sur “forcer l’actualisation distante”, seulement la fenêtre deviens grisâtre pendant quelques secondes...

    • Ton serveur ne permet peut-être pas la consultation à distance ?

    Reply to this message

  • 2

    Bonjour,

    J’ai une demande d’amélioration de fainéant.

    Serait-il possible lorsque l’on met à jour un plugin que le bouton “Suivant” soit en haut de la page plutôt qu’en bas.

    Cela évite pour chaque plugin mis à jour d’avoir à défiler la liste des fichiers à chaque fois.

    Merci

    • Ta souris n’as pas la super molette super-défilement ? La page dont tu parles est gérée par SPIP, qui ne prend pas le soin de lancer les pipelines, pas facile donc de customiser tout ça.. Peut-être qu’une surcharge du fichier minipres.css peut résoudre ton mega problème. Y ajouter (je n’ai pas testé...) :

      .suivant {
          position: fixed;
          top: 10em;
          margin-left: 30em;
      }
    • Ah ben si c’est pas facile à faire, c’est pas grave.

      Je l’ai dit c’est un truc de fainéant.

    Reply to this message

  • 3

    Patrice

    La lame renvoie sur le chargeur de plugins de spip au lieu de charger le plugins voulut

    Comment corriger cela ?

    Reply to this message

  • 7

    Mise à jour...

    J’ai beau installer à la main la dernière version du couteau suisse, vider TMP j’ai toujours des messages “La révision distante n’a pas pu être trouvée.” sous les plugins Lecteur Multimédia, Couteau suisse, Sélection d’articles (v1.1), SPIP Bonux (v1.9.1)

    Tous ces plugins sont en dossier auto

    Je ne comprends pas...

    • Manu_TJ

      Même soucis constaté depuis quelques jours, chez 2 hébergeurs différents. J’ai remarqué que pour les plugins considérés à jour le lien vers la révision est de la forme

      http://zone.spip.org/trac/spip-zone/log/_plugins_/Lecteur_multimedia?format=changelog

      alors que les liens indiquant “La révision distante n’a pas pu être trouvée.” sont de la forme

      file:///home/svn/repository/spip-zone/_core_/plugins/porte_plume?format=changelog

    • Depuis plusieurs jours maintenant, pour moi aussi même souci que ci-dessus : les mises à jour automatiques ne se font plus et j’ai le message suivant qui s’affiche pour chaque plugin : “La révision distante n’a pas pu être trouvée.”

    • Bonjour

      Oui nous sommes entrain de chercher le soucis, nous vous tenons au courant.

    • Bonjour,
      en fait ce sont les liens des fichiers svn.revision (origine) qui ont changé :
      origine : file:///home/svn/repository/...
      au lieu de : svn://zone.spip.org/...

      exemple pour le plugin “saisie” :


      Origine: file:///home/svn/repository/spip-zone/_plugins_/saisies
      Revision: 37085
      Dernier commit: 2010-04-09 22:56:43 +0200

      file:///home/svn/repository/spip-zone/_plugins_/saisies
      37085
      2010-04-09 22:56:43 +0200

      au lieu de :


      Origine: svn://zone.spip.org/spip-zone/_plugins_/saisies
      Revision: 37085
      Dernier commit: 2010-04-09 22:56:43 +0200

      svn://zone.spip.org/spip-zone/_plugins_/saisies
      37085
      2010-04-09 22:56:43 +0200

      A voir au niveau de la configuration du serveur de version non ?

    • Merci. Je viens de poster la correction qui prend en compte ce changement d’adresse.

    • Manu_TJ

      Bonjour Patrice

      merci pour le correctif.

    • Merci beaucoup pour le correctif... Il marche impeccable. Quel bel outil que le couteau Suisse. Bonne journée...

    Reply to this message

  • 2

    Bonsoir

    J’ai un soucis avec des plugins qui change de nom, maintenant j’ai deux url pour les chargés alors qu’une seul d’elle fonctionne ... ou corriger ça?

    • Peut-être repartir d’une unique installation propre du plugin, en supprimant les fichiers anciens par FTP. La procédure de mise à jour devrait ensuite être rétablie...

      De quel plugin s’agit-il?

    • Patrice

      IL s’agit de Fotoremix qui a été chargé en automatique et quand j’ai voulu le mettre a jour il a pas voulu par car dispo donc je pense que ça viens de Fotoremix et pas du CS

    Reply to this message

  • 1

    Lors de la mise à jour automatique du CS lui-même (1.8.12.1 vers , on passe par une page ecrire/?exec=admin_couteau_suisse qui présente un long texte avec des accents qui passent mal, probablement car la page n’a pas de charset spécifié.

    • Ah sans doute faudrait-il laisser un message aux devs SPIP pour rétablir le bon charset sur cette page. Ceci est indépendant du Couteau suisse...

    Reply to this message

  • 6

    Bonjour,

    Merci pour cette nouvelle lame. Je viens de mettre mon couteau suisse à jour. J’ai activé la lame mise à jour auto pour mes plugins. La plupart de ces derniers sont dans un dossier “auto”. Le CS les reconnait bien mais...il m’indique

    la révision distante n’a pas pu être trouvée

    . Donc pas de mise à jour possible. Quelqu’un a-t-il une idée de ce qui se passe?

    • Bonjour,

      Est-ce que tous vos plugins viennent soit de la zone soit de plugins.spip?
      Si ce n’est pas le cas, l’erreur vient de là. Les révisions sont contrôlées à partir de 2 endroits et surtout du trac...

      Si les plugins sont sur la zone et que vous avez ce problème, alors cela vient d’un problème de cache. Mettre “var_mode=recalcul” dasn votre url...

    • Merci pour la rapidité de votre réponse, j’ai procédé au vidage du cache mais rien n’y fait. Mes plugins viennent pour la plupart tous de plugins.spip. Que puis-je faire?

    • Je viens d’aller sur la zone, j’ai un message d’erreur: “The requested URL /trac/spip-zone/ was not found on this server.”. L’explication vient peut-etre de là?

    • Ah mais oui! Pardon!
      Pourtant je viens de voir passer un message sur la zone ce matin pour ça... Cette lame, pour le moment, ne fonctionne plus car le lien vers la zone à changer...

      Avant nous étions sur “zone.spip.org/trac/spip-zone/” et aujourd’hui on est sur “zone.spip.org/spip-zone/”...

      Tout cela est à confirmer par les dév...

    • Ok, j’avoue préférer cela. En tout cas merci pour votre aide. il ne me reste plus qu’à attendre que tout cela se réorganise.

    • Voila, tout refonctionne à présent, la zone est de retour ;-)

    Reply to this message

  • 1

    Bon, et à part cela… qu’est-ce que cette fonctionnalité (fort intéressante) fiche dans le Couteau Suisse, et pas dans le plugin à part susceptible d’être intégré au Core de SPIP ?

    • +1

      Cette fonctionnalité aurait tout intérêt à être intégré dans le core ou, à tout le moins, être disponible sous forme de plugin autonome.

    Reply to this message

Ajouter un commentaire

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom