Manual:Extensions/fr

{| style="border: 2px solid #aaa; padding: 1em 2em; margin: 1em 0 2em 0; width:auto; margin:0 auto; float: left" |

Qu'est-ce que c'est qu'une extension ?
Les extensions vous permettent de personnaliser l'apparence et la façon de travailler de MediaWiki.

Les utilisateurs wiki peuvent rechercher parmi les extensions existantes ou bien demander une nouvelle extension. Les administrateurs système peuvent installer (ou désinstaller) des extensions sur les systèmes MediaWiki qu'ils gèrent. Les développeurs peuvent écrire de nouvelles extensions ou bien améliorer/maintenir des extensions existantes.

Recherchez les extensions par mot(s)-clé(s) :
 * style="textalign: center; valign: middle; padding: 0 2em" |


 * }

En fonction de vos objectifs, vous pouvez utiliser des extensions pour :


 * étendre la syntaxe wiki pour écrire des articles - consultez les catégories extensions des fonctions parseur et extensions parseur pour avoir des exemples.
 * ajouter des nouvelles possibilités au niveau reporting et adminstration - consultez la catégorie extensions pages spéciales pour avoir des exemples.
 * changer l'apparence du logiciel - consultez la galerie des styles utilisateur et la catégorie extensions interface utilisateur pour avoir des exemples.
 * étendre la sécurité via d'autres mécanismes d'authentification - consultez la catégorie extensions authentification et autorisation pour avoir des exemples.

Certaines extensions sont maintenues par les développeurs MediaWiki, d'autres sont écrites par des développeurs tiers. De ce fait, un certain nombre d'entre elles contiennent des bogues et la compatibilité entre extensions n'est pas garantie. Certaines ne sont pas maintenues : toutes les extensions ne fonctionnent pas sur toutes les versions de MediaWiki. L'utilisation de toute extension, notamment celles qui sont marquées comme dangereuses, se fera à vos risques et périls. Lorsque l'utilisation d'une extension réclame d'ajouter des patches dans le noyau MediaWiki ou des entrées supplémentaires dans votre(vos) base(s) de données, assurez-vous d'effectuer une sauvegarde de votre base de données et/ou du code noyau MediaWiki de façon à éviter de planter de façon permanente votre wiki.

Navigation dans les extensions
Vous pouvez naviguer dans la catégorie Extensions par catégorie ou Matrice des extensions pour voir la majeure partie des extensions qui ont été écrites. Pour les informations sur la manière d'installer ces extensions ou bien d'écrire la vôtre, voyez plus bas.

Installer une extension
MediaWiki est prêt à accepter des extensions dès la fin de l'installation. Pour ajouter une extension, suivez ces étapes :

Le script de maintenance importDump.php ne fonctionnera pas pour toute extension qui nécessite des espaces de nom personnalisés qui est incluse dans la condition ci-dessus comme Extension:Semantic MediaWiki, Extension:Semantic Forms.
 * 1) Avant de commencer
 * Certaines extensions requièrent un patch. Un bon nombre d'entre elles fournissent aussi des instructions pour les installer via des commandes unix. Vous aurez besoin d'un accès shell (SSH) pour entrer ces commandes énumérées dans les page d'aide de l'extension.
 * 1) Téléchargez votre extension.
 * Les extensions sont généralement distribuées sous forme de packages modulaires. Elles vont généralement dans leur propre sous-répertoire du dossier . Une liste des extensions documentées est disponible sur la page Matrice des extensions, et une liste des extensions stockées sur le répertoire SVN de Wikimedia est disponible à svn:trunk/extensions. Certaines extensions sont disponibles sur [ ce wiki] . Peut-être souhaiteriez-vous automatiser leur copie.
 * Des regroupements (en anglais Bundles) non officiels d'extensions stockées dans la base de connaissance SVN de Wikimedia peuvent être trouvés sur le serveur d'outils. Ces groupements sont en fait des instantanés arbitraires, donc gardez bien en tête qu'ils peuvent contenir une version non fonctionnelle de l'extension (c'est comme si vous la téléchargiez directement depuis le répertoire du développeur).
 * 1) Installez votre extension.
 * Généralement à la fin du fichier, (mais au-dessus de délimiteur de fin de code PHP " " s'il est présent), la ligne suivante devrait être ajoutée :
 * Cette ligne oblige l'interpréteur PHP à lire le fichier principal de l'extension et donc rendre l'extension accessible via MediaWiki.
 * Certaines extensions peuvent être en conflit avec les scripts de maintenance, par exemple si elle accèdent directement à $_SERVER (non recommandé).
 * Dans ce cas, elle peuvent être enveloppées avec une condition afin que les scripts de maintenance puissent toujours s'exécuter.
 * Dans ce cas, elle peuvent être enveloppées avec une condition afin que les scripts de maintenance puissent toujours s'exécuter.

Écrire une extension
Chaque extension est normalement composée de 3 parties :


 * la configuration
 * l'exécution
 * l'internationalisation

Organisation interne d'une extension
L'organisation interne d'une extension a changé au cours du temps. Initialement, elles étaient composées d'un seul fichier. Lorsque MediaWiki a évolué, cette organisation est devenue obselète. Au lieu de ceci, l'extension est généralement placée dans un dossier contenant un ou plusieurs fichiers correspodant aux trois parties : configuration, exécution et internationalisation.


 * myextension/myextension.php - contient les instruction de configuration. (Note: Le fichier peut aussi s'appeler  )


 * myextension/myextension.body.php - contient le code d'exécution pour une extension simple. Pour des extensions plus complexes, il peut y avoir plusieurs fichiers et être placé dans un sous dossier nommé .  Par exemple, voir Semantic MediaWiki


 * myextension/myextension.i18n.php - contient l'internationalisation de l'extension

Écrire les instructions de configuration
Le but est d'écrire un fichier pour qu'ensuite l'utilisateur n'ait plus qu'à inclure celui-ci dans LocalSettings.php, comme ceci :

Si vous voulez que votre extension soit configurable, vous devez définir et documenter quelques paramètres de configuration et l'utilisateur devrait avoir à écrire quelque chose comme ceci : (remplacer XXX par myextension)

Pour avoir cette simplicité, suivez ces instructions :
 * définissez et/ou déclarez chaque paramètre de configuration ajouté par l'extension.
 * préparez les classes pour le chargement automatique.
 * déterminez les parties de la configuration qui doivent être exécutées immédiatement ou un peu plus tard après que le coeur de MediaWiki se soit initialisé et configuré.
 * enregistrez chaque page spéciale, tag XML, fonction du parseur et variable utilisé par l'extension
 * définissez les hooks (crochets) nécessaires pour votre extension.
 * configuration et ajout du fichier d'internationalisation.

Faire une extension configurable
Si vous voulez que l'utilisateur puisse configurer l'extension, vous devrez donner une ou plusieurs variables de configuration. Il est généralement bien que ces variables aient un nom unique. Elles devraient également suivre les conventions de nommage de MediaWiki (par exemple les variables devraient commencer par $wg) Par exemple, si votre extension est nommée "Simple extension qui ne fait rien", vous pourriez faire commencer le nom de chaque variable de configuration par  ou. Il n'est généralement pas bien de prendre un nom d'une variable qui n'existe pas dans MediaWiki sans préfixe car une autre extension pourrait aussi l'utiliser. Il ne faut pas que l'utilisateur soit obligé de choisir entre deux extensions qui ne marchent pas ensemble à cause d'utiliser une variable du même nom.

Il est recommandé d'inclure une documentation sur l'utilisation de ces variables de configuration dans le documentation de l'extension.

Préparer les classes pour le chargement automatique
Si vous choisissez d'utiliser des classes pour votre extension, MediaWiki contient un mécanisme simplifié pour charger automatiquement le fichier source d'une classe quand celle-ci est requise. Dans la plupart des cas, cela doit vous éviter de devoir écrire votre propre méthode.

Pour utiliser ce mécanisme, vous devez ajouter une entrée à la variable $wgAutoloadClasses. La clé du tableau doit être le nom de la classe et la valeur associée le fichier qui contient le code de cette classe. Ainsi par exemple (l'extension est nommée Foobar):

.

Pour des extensions complexes, quand il y a plusieurs fichiers :

Enregistrer l'extension
MediaWiki liste toutes les extensions qui sont installées sur la page. Par exemple, vous pouvez voir toutes les extension utilisées ici sur Special:Version. C'est également bien d'être sur que toutes les extensions sont listées sur cette page. Pour ceci, vous pouvez ajouter une entrée à $wgExtensionCredits pour chaque page spéciale, tag XML, fonction du parseur ou variable. L'entrée peut être ajoutée de la manière suivante :

validextensionclass doit être specialpage, parserhook, variable, other, comme spécifié sur Manual:$wgExtensionCredits.

En plus de l'enregistrement ci-dessus, chaque "hook" utilisé est également répertorié sur cette page. Pour des détails, voir la documentation spécifique à chaque type d'extension :


 * Manual:Special pages
 * Manual:Variable
 * Manual:Parser functions
 * Manual:Tag extensions

Retarder la configuration
LocalSettings.php est exécuté assez tôt dans le processus de MediaWiki et beaucoup de choses ne sont pas encore configurées. Ceci peut être un problème pour certaines extensions. MediaWiki laisse une chance pour executer les instructions avant ou après la configuration.

Pour pouvoir exécuter certaines commandes après la configuration de MediaWiki, il faut le faire en deux phases :
 * définir une fonction de configuration
 * la déclarer dans $wgExtensionFunctions pour qu'elle soit exécutée à la fin du processus de configuration.

Le code PHP devrait ressembler à ceci :

Écrire la partie d'exécution de l'extension
La technique d'écriture dépend de la partie de MediaWiki que vous voulez étendre :


 * Wiki-syntaxe: Extensions qui étendent la syntaxe en ajoutant des tags XML, fonctions du parseur et variables. Cliquez sur les liens pour plus d'informations.
 * Informations et administration: Extensions qui ajoutent une page spéciale pour l'administration et des informations. Pour plus d'informations, voir Manual:Special pages.
 * Article automation and integrity: Extensions qui facilitent ou modifient l'intégration entre MediaWiki et la base de données. Ces extensions vont utiliser des hooks pour modifier le comportement lors de la création, modification, renommage et suppression d'articles. Voir Manual:Hooks pour plus d'informations.
 * Apparence: Extensions qui modifient l'apparence avec des skins. Voir Manual:Skin et Manual:Skinning pour plus d'informations.
 * Sécurité: Extensions qui limitent leur utilisation (ou celle du wiki) à certains utilisateur avec les permissions adéquates. Voir Manual:Preventing access pour plus d'informations. Certaines extensions utilisent un système externe d'autentifications, voir AuthPlugin.  Pour celle qui limitent la lecture du wiki à certains groupes, voir Security issues with authorization extensions.

Voir aussi Extensions FAQ et Developer hub/fr

Internationaliser votre extension
Si vous voulez utiliser votre extension sur des wikis qui sont utilisés en plusieurs langues, il faut internationaliser l'extension. Ceci est assez simple à faire.

 Pour chaque chaine renvoyée à l'utilisateur, définissez un message. MediaWiki supporte des paramètres dans les messages et doit être utilisé quand le message dépend de la valeur à l'exécution. Toujours utiliser un nom en minuscules. Dans la configuration et l'implémentation, remplacer ces chaines par . Mettre les messages dans le fichier d'internationalisation (myextension.i18n.php). Ceci est généralement fait avec un tableau à deux dimensions dont la première clé est la langue et la seconde le nom du message, la valeur est le texte du message.  Dans la fonction de configuration, il faut les ajouter dans le coeur de MediaWiki. Ceci est généralement fait en incluant le fichier de localisation, naviguer dans le tableau et l'ajouter avec  : </li> </ol>

Pour plus d'informations, voir:
 * Internationalisation
 * Localization checks

Publier votre extension
Pour catégoriser et documenter votre extension, voyez Template:Extension. Pour ajouter votre extension sur ce wiki :

Techniques d'extension
Les extensions peuvent être catégorisées selon la technique utilisée. La plupart des extensions peuvent utiliser plusieurs techniques :


 * Subclassing: Certaines extensions peuvent être des sous-classes de certaines classes de base de MediaWiki :
 * Pages spéciales - Sous-classes de SpecialPage pour générer du contenu qui est créé dynamiquement selon l'état du système, des paramètres donnés et requêtes sur la base de données. Elles peuvent être utilisées pour l'administration et l'information.
 * Skins - Les skins changent l'apparence de MediaWiki en modifiant le code qui génère la page en étant une sous-clase de SkinTemplate.
 * Hooks: Une technique pour injecter un code PHP pendant l'exécution normale de MediaWiki. Elles peuvent être utilisées par le parseur, l'internationalisation et la maintenance.
 * Tags - Tag du style XML qui sont associés à une fonction qui renvoie un code HTML. Le texte peut être formaté de n'importe quelle manière à l'intérieur et n'a pas besoin d'être affiché. Ces tags peuvent être utilisés pour générer du HTML qui contient des objets google, des formulaires, des flux RSS, ...
 * Mots magiques: Une technique pour modifier des chaines de wiki-texte en association avec une fonction. Et les variables et les fonctions du parseur utilisent cette technique. Tout le texte va être remplacé par la valeur de retour de la fonction. La relation entre la fonction et le mot magique est définie par un tableau donné à une fonction qui utilise le hook LanguageGetMagic. Voir Manual:Magic words pour plus d'informations.
 * Variables - Les variables n'ont pas de paramètres et retournent une valeur fixée d'avance. Des chaines comme  ou   sont des exemples de variables.
 * fonctions du parseur - . Comme un tag mais renvoie du wikitext.

Voir aussi

 * Extension Matrix
 * Category:Extensions
 * Template:Extension
 * Manual:Parser functions
 * Manual:Special pages
 * Manual:Tag extensions
 * Project:Extension requests
 * Manual:Translating extensions - Informations à propos de la traduction d'extensions.
 * m:Category:MediaWiki extensions - en attendant la fin du transfert sur MediaWiki.org.