Manual:Extensions/fr

From MediaWiki.org

Jump to: navigation, search

Les extensions sont des morceaux de code PHP qui permettent d'ajouter de nouvelles fonctionnalités ou de les améliorer dans le coeur de MediaWiki. Elles sont l'un des principaux avantages de MediaWiki et elles permettent d'adapter MediaWiki à ses besoins.

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

Vous pouvez naviguer dans Category:Extensions by category ou Extension Matrix pour voir la majeure partie des extensions qui ont été écrites. Pour voir comment les installer, voir plus bas.

Contents

[edit] Installer une extension

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

  1. Avant de commencer
    Certaines extension requièrent un patch. Beaucoup d'entre elles donnent des instructions pour l'installer via des commandes unix. Vous aurez besoin d'un accès shell (SSH) pour entrer ces commandes.
  2. Télécharger et installer ExtensionFunctions.php.
    Certaines extensions, spécifiquement les plus récentes requièrent un fichier nommé ExtensionFunctions.php. Ce fichier inclut un certain nombre de fonctions spécifiques aux extensions qui ne sont pas dans le coeur de MediaWiki. La meilleure solution est d'installer le fichier via SVN. Ce fichier est disponible ici. Une fois téléchargé, copiez le dans le dossier extensions de MediaWiki.
  3. Téléchagez votre extension.
    Les extension sont généralement disponible dans un paquet. Elles vont généralement dans un sous-dossier du dossier extensions. Une liste des extensions est disponible sur la page extension matrix, et une liste des extensions disponibles sur le répertoire SVN de Wikimedia est disponible à svn:trunk/extensions. Certaines extensions sont disponible sur ce wiki. Vous pourriez automatiser leur copie.
  4. Installer l'extension.
    Généralement à la fin du fichier LocalSettings.php, (mais avant le, "?>" s'il est présent), la ligne suivant devrait être ajoutée :
    require_once "$IP/extensions/extension_name/extension_name.php";
    
    Cette ligne force PHP à lire le fichier principal de l'extension et donc qu'elle soit accessible via MediaWiki.
    Note: Bien que cette procédure soit suffisante pour la majorité des extensions, d'autres peuvent requérir une installation spécifique, voyez la page de documentation de l'extension pour plus d'informations.
    Caution! Caution: Bien que les déclarations d'extensions puissent être ajoutées n'importe où dans le fichier LocalSettings.php file, il ne faut jamais rien ajouter avant la ligne require_once( "includes/DefaultSettings.php" );. En faisant ceci, les ajouts de certaines fonctions dans les variables de MediaWiki seront annulés lors de l'exécution de cette ligne et l'extension peut devenir inaccessible.

Des paquets non officiels d'extensions qui se trouvent dans le répertoire SVN sont accessibles sur le toolserver. Ces paquets sont créés à n'importe quel moment et peuvent contenir une version boguée de l'extension comme si vous la téléchargiez directement depuis SVN.

[edit] Écrire une extension

Chaque extension est normalement composée de 3 parties :

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

[edit] 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.setup.php)
  • 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é myextension/includes. Par exemple, voir Semantic MediaWiki
  • myextension/myextension.i18n.php - contient l'internationalisation de l'extension

[edit] Écrire les instruction 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 :

require_once( "$IP/extensions/myextension/myextension.php" );

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 : (replacer XXX par myextension)

$wgXXXConfigCeci=1;
$wgXXXConfigCela=false;
require_once( "$IP/extensions/XXX/XXX.php" );

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.

[edit] 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 $wgSeqnfr ou $wgSEQNFR. 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.

[edit] 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 __autoload($classname).

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):

$wgAutoloadClasses['Foobar'] = dirname(__FILE__) . '/Foobar.body.php';

.

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

$wgFoobarIncludes = dirname(__FILE__) . '/includes/';
$wgAutoloadClasses['SpecialFoobar'] 
  = $wgFoobarIncludes . 'SpecialFoobar.php'; #implémente la page spéciale
$wgAutoloadClasses['FoobarTag']
  = $wgFoobarIncludes . 'FoobarTag.php';   #implémente le tag <foobar>

[edit] Enregistrer l'extension

MediaWiki liste toutes les extensions qui sont installées sur la page Special:Version. 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 :

   $wgExtensionCredits['validextensionclass'][] = array(
       'name' => 'Example',
       'author' =>'John Doe', 
       'url' => 'http://www.mediawiki.org/wiki/User:JDoe', 
       'description' => 'This Extension is an example and performs no discernable function'
       );

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 :

[edit] 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 :

$wgExtensionFunctions[]='efFoobarSetup';
function efFoobarSetup() {
   #ici le code qui doit être exécuté à la fin
}

[edit] É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

[edit] Internationalizing your 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.

  1. 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.
  2. Dans la configuration et l'implémentation, remplacer ces chaines par wfMsg($msgID, $param1, $param2, ...).
  3. 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.
    <?php
    $allMessages = array(
    	'en' => array(
    		'sillysentence' => 'This sentence says nothing',
    		'answertoeverything' => 'Forty-two'
    	), 
    	'fr' => array(
    		'sillysentence' => 'Une phrase absurde',
    		'answertoeverything' => 'quarante-deux'
    	)
    );
    ?>
    
  4. 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 $wgMessageCache->addMesssages($aMessages, $lang) :
    require( dirname( __FILE__ ) . '/XXX.i18n.php' );
    foreach ( $allMessages as $lang => $langMessages ) {
        $wgMessageCache->addMessages( $langMessages, $lang );
    }
    


Pour plus d'informations, voir:

[edit] Publier votre extension

Pour catégoriser et documenter votre extension, voyez Template:Extension. Pour ajouter votre extension sur ce wiki : Please replace "MyExtension" with your extension's name:


[edit] 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 peuevent ê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.

[edit] Voir aussi