====== 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 : [[:fr:plugins|extensions déjà existants]]. Puis lisez les [[fr:devel:security|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 [[fr:wiki:syntax|syntaxes]], des [[fr:devel:action modes|modes d'action]] personnalisés, de nouveaux [[fr:export| 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 [[Syntax Plugins|extensions de syntaxe]] étendent la [[fr:wiki:syntax|syntaxe]] de base de Dokuwiki. * Les [[Action Plugins|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 [[action modes|modes d'action]]. * Les [[:devel:admin_plugins|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 [[:devel:helper_plugins|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 [[:devel:renderer_plugins|extensions de rendu]] autorisent de nouveaux types [[:export]] et permettent de remplacer le traditionnel moteur de rendu XHTML de DokuWiki. * Les [[:devel:remote_plugins|extensions de service]] permettent d'ajouter des web-services. * Les [[Auth Plugins|extensions d'authentification]] ajoutent des mécanismes d'authentification à DokuWiki pouvant être activés grâce au gestionnaire de configuration. * Les [[fr:devel:cli_plugins|Extensions CLI]] ajoutent des outils en ligne de commande à votre extension. Une extension basique tel que l'[[plugin:color|extension color]] tient en un seul fichier nommé ''syntax.php''. Les extensions plus avancés nécessitent plusieurs composants. Par exemple l'extension "[[plugin:data|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 [[devel:javascript|JavaScript]] et les [[devel:css|feuilles de style CSS]] peuvent être utilisés dans tous les types de plugin, voir la [[devel:plugin_file_structure|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 [[devel:plugin file structure|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 [[devel:javascript|JavaScript]] et des [[devel:css|feuilles de style CSS]], ceci étant une porte d'entrée pertinente pour tous les types d'extensions. * Quelques [[devel:common_plugin_functions|fonctions communes d'extension]] sont disponibles pour tous les types. Ajoute la localisation, la configuration et l'introspection. * Les [[security|directives de sécurité]] approfondissent la compréhension des problèmes courants et présentent quelques mesures de protection. * Quelques [[plugin programming tips|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 '''' et le ''''. * Son utilisation donne une note de [[:popularity|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 [[:devel:plugin_file_structure|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.((Vous pouvez utiliser l'extension [[plugin:imageshack]] pour mettre des images dans votre page.)) Plus d'informations sur la manière de rendre votre page agréable sont disponibles ici : [[devel:plugin_homepages|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 [[plugin:repository|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 [[devel:plugin_info|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.[[http://github.com|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 ===== [[devel:plugin survey:|Plugin Survey]] fournit un aperçu de toutes les [[:plugins|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é.