Bien sûr que non car MediaWiki a justement une page qui traite de l'utilisation d'un éditeur externe. Ceux qui pratiquent souvent ce genre d'outil en ont donc besoin. En plus, il est fréquent d'avoir affaire à des moteurs de blog / wiki différents, dont la syntaxe est aussi différente[1]. On y trouvera donc les avantages suivants :

  • avoir la coloration syntaxique associée à chaque moteur pour éviter plus facilement les erreurs de syntaxe
  • approcher le rendu de la page dans l'éditeur façon WYSIWYG[2] (en mettant l'italique en italique, le gras en gras, etc.)
  • avoir le texte du formulaire à côté de la page à modifier au lieu de l'avoir tout en bas ou dans une autre page
  • disposer de fonctions d'édition de texte puissantes

Kwrite-DotClear Édition de ce billet dans Kwrite (voir en grand)

La coloration syntaxique

Commençons par l'un des principaux intérêts de la manœuvre : colorer le texte de manière à faire apparaître les caractères de formatage et, pourquoi pas, essayer de donner une idée du rendu final du texte dès l'édition.

Dans l'environnement KDE, kwrite et kate sont deux éditeurs de texte évolués et plutôt pratiques, notamment avec le module de complètement automatique des mots[3]. Par défaut ils partagent le même moteur d'édition de texte donc les colorations syntaxiques de l'un fonctionnent de facto dans l'autre, il suffit de les placer au bon endroit, en l'occurrence le répertoire :

/usr/share/apps/katepart/syntax/

Si vous avez une version relativement récente de KDE, vous y trouverez d'emblée le fichier mediawiki.xml livré avec Kate et Kwrite.

Ces fichiers de coloration syntaxique consistent à définir des règles basées sur des suites de caractères à trouver ou des expressions régulières. Lorsque l'éditeur rencontre une des règles, il applique au texte le style indiqué par la règle puis continue jusqu'à la prochaine règle. Partir des règles de MediaWiki permet d'arriver rapidement à des règles pour d'autres moteurs. Mes fichiers de coloration syntaxique sont bien sûr disponibles :

Reste à ouvrir sans effort le texte d'un formulaire dans l'éditeur de texte.

Les techniques d'édition externe

On peut recenser au moins 3 méthodes pour éditer un formulaire web dans un éditeur externe sans faire à chaque fois des manipulations fastidieuses. Dans l'ordre du techniquement plus simple au techniquement plus complexe :

  1. avec un module complémentaire du navigateur dédié à l'édition de formulaires, quels qu'ils soient
  2. avec un fichier de contrôle envoyé par le serveur et un script appelé par le navigateur qui doit supporter cette fonctionnalité[4]
  3. avec une fonctionnalité du système d'exploitation appelée « système de fichiers virtuel » (VFS[5] en anglais)

L'avantage de la première option, outre la facilité d'installation, est qu'elle est universelle : on installe un module qui permet d'ouvrir automatiquement un éditeur avec le contenu d'un formulaire quelconque. L'avantage de la deuxième est qu'on n'est pas cantonné aux textes et éditeurs de texte : MediaWiki se targue de permettre l'édition de dessins vectoriels (SVG) par ce biais. Enfin l'avantage de la dernière est qu'elle permet de dérouler toute l'armada d'outils de traitement de fichiers textes des systèmes Linux, si pratiques pour automatiser des tâches.

Avec tout ça, votre plaisir de publier dans un blog ou un wiki devrait être décuplé ! C'est en tout cas ce que je vous souhaite ;-) . Pour l'heure, passons les 3 méthodes en revue.

Avec un module complémentaire du navigateur

Il existe plusieurs extensions Firefox qui permettent de transférer le contenu d'un formulaire web à un éditeur externe et vice-versa (cf. la page Wikipedia:Text editor support). Dans le cas de l'extension It's All Text, on a simplement un petit bouton bleu qui apparaît en bas à droite de tous les formulaires. Il suffit de cliquer pour voir s'ouvrir l'éditeur que l'on a choisi avec exactement le même texte que le formulaire. Lorsqu'on a fini de le modifier, on sauvegarde le texte et le formulaire se colore momentanément de jaune pour signifier sa mise à jour automatique. C'est tout !

NB : bien sûr il faut avoir sélectionné son éditeur favori dans les préférences du module; dans le cas contraire il vous le demandera au premier lancement !

Avec un fichier de contrôle

L'astuce ici repose sur une fonctionnalité du logiciel tournant sur le serveur web, MediaWiki en l'occurrence (cf. Help:External editors). Lorsqu'on édite la page, moyennant une option à régler par l'utilisateur, MediaWiki envoie un fichier de contrôle plutôt que le formulaire d'édition. Ce fichier indique au navigateur de lancer un script appelé helper application en anglais, en lui fournissant des paramètres (adresse des données à éditer, type de données, etc.). C'est le script qui décide quoi faire en fonction des informations reçues :

  • éditer un texte
  • retoucher un dessin vectoriel
  • comparer le texte de deux versions différentes d'une même page
  • etc.

Pour le moment le script le plus abouti est écrit en langage Perl. Il faut donc avoir un interpréteur Perl et ses modules nécessaires. Le script s'occupe de récupérer le fichier sur le serveur web, d'en enregistrer une copie locale temporaire et de renvoyer cette copie au serveur après modification, le tout avec une petite interface graphique sommaire mais sympathique.

Avec un système de fichiers virtuel (pour MediaWiki)

Un système de fichiers virtuel consiste à présenter sous la forme d'une classique arborescence de répertoires et de fichiers une source de données quelconque : serveur FTP, contenu d'archives compressées, répertoire crypté, etc. Bien sûr dans les Linux Debian et dérivés, il y a ce qu'il faut pour installer rapidement des systèmes de fichiers virtuels, en particulier celui de MediaWiki, nommé wikipediafs. On ne vous montrera l'installation qu'en ligne de commande pour des raisons de simplicité de rédaction, mais vous êtes bien sûr libres ;-) d'utiliser des gestionnaires de logiciels graphiques :

$ sudo apt-get install wikipediafs

sudo est la commande qui permet de se faire passer pour l'administrateur et apt-get la commande magique qui gère les milliers de paquets logiciels inclus dans Linux Debian et dérivés. Évidemment apt-get se chargera automatiquement d'installer les autres paquets nécessaires au fonctionnement, notamment le VFS. Cependant pour pouvoir l'utiliser après installation, il faut remplir deux conditions :

  1. le module fuse doit être chargé dans le noyau
  2. l'utilisateur doit être autorisé à utiliser fuse, c'est-à-dire qu'il fait partie du groupe fuse

On effectue ces deux opérations de cette manière :

$ sudo modprobe fuse
$ sudo usermod --append --groups fuse $(whoami)

modprobe est la commande qui indique au noyau Linux de charger un module, usermod est celle qui modifie les attributs d'un utilisateur et whoami permet de récupérer le login de l'utilisateur courant[6]. Pour éviter d'avoir à charger le module fuse à chaque démarrage de votre système, il suffit d'ajouter ce module au fichier /etc/modules :

$ sudo echo 'fuse' >> /etc/modules

On peut enfin utiliser le VFS MediaWiki, ce qui consiste à :

  1. créer un répertoire dans lequel apparaîtront les pages Wikipedia
  2. modifier le fichier de configuration de wikipediafs
  3. monter le VFS MediaWiki

Le fichier de configuration .wikipediafs/config.xml doit ressembler à quelque chose comme cela :

<wfs-config>
    ...
    <sites>
        <site>
            <dirname>wikibooks-fr</dirname>
            <host>fr.wikibooks.org</host>
            <basename>/w/index.php</basename>
            <username>mon_identifiant</username>
            <password>mon_mot_de_passe</password>
        </site>
        ...
    </sites>
</wfs-config>

Auquel cas on montera le VFS de cette manière :

$ mkdir wfs
$ mount.wikipediafs wfs/

et on l'utilisera ensuite ainsi :

$ cat wfs/wikibooks-fr/Programmation_CSS
[...]
$ ls wfs/wikibooks-fr/
Programmation_CSS

NB: mount.wikipediafs est la commande montant le VFS MediaWiki et cat affiche le contenu d'un fichier dans la console.

On voit dans cet exemple que le paramètre <dirname> du fichier .wikipediafs/config.xml indique le sous-répertoire de wfs/ dans lequel les fichiers du VFS vont atterrir alors que <host> est le nom du serveur MediaWiki et <basename> ce qu'on ajoute au nom du serveur pour atteindre une page (par exemple la page http://fr.wikibooks.org/w/index.php?Programmation_CSS).

Remarque : toutes les pages atterrissent dans le répertoire wfs/wikibooks-fr/ et elles n'y sont visibles que lorsqu'elles ont été chargée une fois via le VFS (c'est l'objet de la commande cat de l'exemple). Il n'y a en effet pas de commande pour extraire la liste des pages sur le serveur MediaWiki, heureusement car la liste serait longue sur WikiPedia !

Enfin pour démonter le VFS la commande est :

$ fusermount -u wfs

Pour conclure on voit que cette méthode d'édition d'un formulaire est indéniablement plus complexe que la première, mais elle a le mérite de nous familiariser avec le concept de VFS dont les possibilités sont énormes. En effet, pourquoi ne pas monter l'espace FTP personnel de votre fournisseur d'accès dans votre système de fichiers pour assurer des sauvegardes par exemple ? C'est nettement plus sûr que des CD ou des DVD et moins contraignant...

Notes

[1] pour ma part j'utilise 4 syntaxes différentes très régulièrement : DotClear (évidemment), MediaWiki, Trac et Wikini

[2] de l'anglais « What you see is what you get », vous voyez ce que vous obtiendrez

[3] une boîte apparaît dès qu'on tape 3 lettres en proposant les mots du texte commençant pareillement

[4] c'est bien évidemment le cas de notre navigateur favoris à (presque) tous, Firefox

[5] Virtual File System

[6] l'encadrement avec les parenthèses et le signe dollar ($) permet de récupérer l'exécution de la commande whoami