Manual:How to make a MediaWiki skin/Migrating SkinTemplate based skins to SkinMustache/fr

Déjà présente sans la version MW 1.35 en 2020, la classe SkinMustache a été ajoutée au noyau de MediaWiki. Ce développement rend possible l'utilisation des modèles Mustache pour créer des habillages. Il s'adresse aux développeurs d'habillages qui ne veulent pas utiliser PHP, ou qui souhaitent réduire leur dépendance avec PHP. Le but de ce tutoriel est donc de démontrer les étapes dont vous aurez besoin pour convertir un habillage SkinTemplate basé sur PHP en SkinMustache.



Etape 1 : enregistrer un habillage
Auparavent un habillage devait déclarer une classe PHP Skin qui étendait la classe SkinTemplate. Il fallait alors déclarer plusieurs propriétés utilisées pour définir les clés internes des habillages ainsi que les modèles PHP associés.

Depuis MW 1.35, cette information peut être fournie au moment de l'enregistrement de l'habillage.

Historiquement, les habillages nécessitaient la création de deux classes PHP. Avec le nouveau processus d'enregistrement, il vous faut au plus une classe PHP.

Lorsque vous déclarez un habillage, il est possible d'initialiser  avec   pour utiliser l'interface noyau par défaut :

Si votre habillage contient des accroches, nous vous recommandons de les sortir dans un fichier séparé.

Voici un exemple pour l'habillage Monobook : 701142



Etape 2 : décupler la puissance de la modélisation
Pour suivre cette nouvelle étape, on suppose que vous possédez quelques connaissances du langage des modèles Mustache. Au minimum vous devez comprendre les bases suivantes de Mustache présentes dans l'exemple ci-dessous :



Hello World !
Create a Mustache file with the relative path templates/skin.mustache

To use the SkinMustache class, declare the class property as SkinMustache.

Chargez l'habillage dans votre navigateur et vous devriez voir le contenu de votre fichier Mustache.



Utiliser une classe personnalisée
Pour faciliter la migration, vous pouvez utiliser votre propre classe personnalisée en étendant la classe SkinMustache, tout au moins dans une étape intermédiaire, puis commencer la redirection du code à partir du modèle de votre habillage vers les nouveaux modèles.

Créer une nouvelle classe d'habillage qui étend SkinMustache, par exemple pour l'habillage MonoBook, elle pourrait s'appeler SkinMonoBook.

Lorsque vous utilisez un modèle basé sur PHP tel que MonoBookTemplate, on s'attend à ce que le développeur d'habillage implémente une fonction  qui renvoie le HTML.

Dans SkinMustache, l'approche est différente. Nous fournissons un tableau associatif de template data qui est passé au modèle Mustache.

Dans l'exemple suivant, de nouvelles données sont initialisées et passées au modèle Mustache :

Avec cette modification nous pouvons faire la correction suivante sur notre modèle pour produire les données.

En utilisant cette technique nous pouvons relier notre ancien habillage à SkinMustache.

D'abord il nous faudra peut être refactoriser notre méthode execute pour en détacher une fonction qui renvoie la chaîne de caractères contenant le corps de l'habillage. Il est important de remarquer que dans SkinMustache, vous ne pouvez modéliser que le contenu de la balise. Dans SkinMustache, une fois la refactorisation faite, nous pouvons étendre les données passées à un modèle comme démontré ci-dessus avec l'exemple html-hello. Nous pouvons ajouter une nouvelle variable de modèle  qui peut être rendue à l'intérieur de notre skin.mustache en tant de HTML brut.



Etape 3 : donnée entre accolades
Maintenant vous devriez avoir un habillage qui implémente SkinMustache et qui utilise BaseTemplate pour générer le HTML. Le PHP à l'intérieur de votre modèle PHP qui implémente BaseTemplate doit être possible avec Mustache.

Les habillages SkinMustache sont dirigés par les données, ce qui nous le pensons, donne une meilleure souplesse quant à la manière de présenter les données. Les données sont informées par les habillages au fur et à mesure. Ces données sont documentée dans la section Template data.

Il y a peu de conseils sur cette étape, à part explorer comment vous pouvez générer un code HTML identique à votre code dans BaseTemplate en utilisant uniquement les données et les modèles. Les problèmes que vous rencontrez en faisant cela doivent être signalés sur la page de discussion pour aider les autres utilisateurs.



Etape 4 : remplir les données manquantes
Pendant l'étape 3 vous pouvez observer que le HTML que vous essayez de générer ne peut pas être mis en forme en utilisant les données à l'intérieur de SkinMustache. Heureusement grâce à l'étape 2 nous savons que l'on n'est pas limité par les données passées à notre modèle.

Néanmoins il est utile pour nous de savoir quelles sont les données manquantes car il est probable que votre habillage fait quelque chose d'unique qui pourrait être utile aux autres habillages.

Simplement par l'existence de votre code, vous avez communiqué des informations qui seraient utiles, mais nous vous invitons à créer un ticket explicitement sur Phabricator pour demander les données dont vous avez besoin.