Table des matières
Développement d'extensions (plugins)
Il est très facile d'écrire une extension pour Dokuwiki. Avant de créer le vôtre, pensez à chercher s'il n'existe pas déjà une extension similaire : extensions déjà existants. Puis lisez les règles élémentaires de sécurité pour les auteurs d'extensions.
DokuWiki possède une API d'extension très flexible. Elle permet aux développeurs d'étendre ses fonctionnalités, d'ajouter de nouvelles syntaxes, des modes d'action personnalisés, de nouveaux formats d'export et beaucoup d'autres choses.
Selon la fonction de l'extension, il peut appartenir à un ou plusieurs des types décrits ci-dessous.
Types d'extensions
Actuellement, il existe 8 types d'extensions :
- Les extensions de syntaxe étendent la syntaxe de base de Dokuwiki.
- Les extensions d'action peuvent être utilisés pour améliorer ou remplacer plusieurs fonctionnalités du noyau Dokuwiki, depuis la sauvegarde de pages du wiki jusqu’à l'ajout de nouveaux modes d'action.
- Les extensions d'administration peuvent fournir des fonctionnalités d'administration pour Dokuwiki - Ces extensions sont uniquement accessibles aux super-utilisateurs et aux gestionnaires via le bouton “Administration”.
- Les extensions helper peuvent être utilisés pour fournir des fonctionnalités à d'autres extensions. Ainsi, chaque extension n'a pas à ré-implémenter encore et encore les mêmes fonctionnalités.
- Les extensions de rendu autorisent de nouveaux types export et permettent de remplacer le traditionnel moteur de rendu XHTML de DokuWiki.
- Les extensions de service permettent d'ajouter des web-services.
- Les extensions d'authentification ajoutent des mécanismes d'authentification à DokuWiki pouvant être activés grâce au gestionnaire de configuration.
- Les Extensions CLI ajoutent des outils en ligne de commande à votre extension.
Une extension basique tel que l'extension color tient en un seul fichier nommé syntax.php
. Les extensions plus avancés nécessitent plusieurs composants. Par exemple l'extension “structured data plugin” a plusieurs composants de type syntaxe “data entry” et “table view”, un composant “mode d'action” pour avoir un bouton spécial d'édition et une page d'administration pour la maintenance de la base de données.
Le langage JavaScript et les feuilles de style CSS peuvent être utilisés dans tous les types de plugin, voir la structure de fichier d'une extension pour plus d'informations.
Sources d'information
De nombreuses sources d'information sont disponibles pour le développement d'extensions:
- La structure de fichier des extensions donne un aperçu de l'organisation générale et de la convention de nommage, des emplacements où ajouter du JavaScript et des feuilles de style CSS, ceci étant une porte d'entrée pertinente pour tous les types d'extensions.
- Quelques fonctions communes d'extension sont disponibles pour tous les types. Ajoute la localisation, la configuration et l'introspection.
- Les directives de sécurité approfondissent la compréhension des problèmes courants et présentent quelques mesures de protection.
- Quelques astuces de programmation d'extensions soulignent les bonnes pratiques et les bénéfices des outils de DokuWiki.
Nom du plugin
Un nom de plugin valide :
- Ne doit contenir que des caractères alphanumériques (a à z et 0 à 9).
- Le caractère “tiret du 8” “_” N'est PAS autorisé car :
- Il est réservé pour la séparation entre le
<nom du plugin>
et le<nom des composants>
. - Son utilisation donne une note de popularité de zéro.
- Si deux extensions utilisent le même nom :
- elles seront automatiquement incompatibles
- Un seul d'entre eux pourra avoir une page dédiée sur dokuwiki.org
Assistant de création d'extension
Le site https://pluginwizard.dokuwiki.org/ fournit un assistant pour créer le squelette d'un plugin Dokuwiki. Il est recommandé d'utiliser cet outil pour commencer le développement d'un nouveau plugin.
Si, par la suite, vous avez besoin de faire évoluer votre plugin, référez vous à la structure de fichier des extensions pour savoir comment les fichiers sont organisés au sein des extensions.
Publication d'extensions sur le site dokuwiki.org
Si vous avez créé une extension, merci d'en faire profiter la communauté. Vous avez juste à créer une page du nom de votre extension dans l'espace de nom “plugin”. Par exemple, si votre plugin s'appelle exemple
créez une page plugin:exemple
dans ce wiki.
La page devra contenir toute la documentation nécessaire à l'installation et à l'utilisation de votre extension, et devra donner aussi une idée précise de ce que votre extension permet de faire.1)
Plus d'informations sur la manière de rendre votre page agréable sont disponibles ici : Modèle de page d'extension.
En haut de chacun des fichiers de votre plugin, certaines métadonnées doivent être renseignées. Une description de celles-ci peut être trouvée sur cette page.
Depuis la version Ponder Stibbons, un signalement automatique des mises à jour est possible. Pour que le processus fonctionne correctement, il faut que la date “Dernière mise à jour le” sur la page dédiée au plugin soit égale à la date présente dans le fichier plugin.info.txt dans le tarball/zipfile. Dans le cas contraire, le signal “Mise à jour” persistera et la mise à jour ne sera pas effectuée.
L'envoi de fichiers sur le serveur dokuwiki.org n'est pas autorisé, vous aurez donc besoin de stocker vos fichiers quelque part en ligne. Nous vous recommandons de gérer vos fichiers sources avec un système de versionnement tel que Git.Github est une façon très simple de stocker vos sources et fichiers dans un dépôt public via Git. De plus, GitHub fournit un Bugtracker.
Vue d'ensemble des extensions
Plugin Survey fournit un aperçu de toutes les extensions présentes dans l'espace de noms des extensions de www.dokuwiki.org. Les données ont été collectées par un script automatique le 5/9/2010, avec des données additionnelles téléchargées manuellement. Au total, 697 pages d'extensions contenant 672 extensions ont été analysées et le code source de 647 extensions (96%) a été téléchargé et analysé.