Manual:Page content models/fr

Le ContentHandler introduit dans MediaWiki 1.21 vous permet d'ajouter de nouveaux modèles de contenu qui ne sont pas du wikicode. Cela permet aux pages wiki d'être composées de données autres que wikitext et représentées de quelque manière que ce soit - par exemple: Markdown, reStructuredText, icalendar ou un format XML personnalisé. L'affichage et l'édition de ces modèles de contenu peuvent être gérés de manière personnalisée (`` par exemple '' une coloration syntaxique différente ou de nouveaux formulaires de saisie de données)

Cette page décrit les étapes à parcourir pour créer un nouveau modèle de contenu dans une extension. Il suppose une certaine familiarité avec les pratiques générales de développement d'extensions. Pour un bref résumé des exigences, voir la section Résumé au bas de cette page.

Un modèle de contenu dénué de sens " Goat" sera utilisé pour les exemples. Vous pouvez aussi examiner l'extension DataPages, qui est une partie de.

Enregistrement
D'abord, ajoutez le nom du modèle de contenu de la classe du gestionnaire à votre :


 * La valeur de gauche ici est le nom du type de contenu, il peut s'agir de n'importe quelle chaîne unique que vous souhaitez et elle coïncide avec les cinq types de contenu intégrés: $ 1. Cette valeur est exposée aux utilisateurs à des endroits tels que Special:ChangeContentModel et les informations de page.
 * La valeur de droite est le nom complet d'une classe qui étend.

Ceci nécessite que deux nouvelles classes,  et , soient ajoutées à  (si leur espace de noms n'est pas dans ). D'autres informations concernant ces classes sont données ci-dessous.

Constantes optionnelles du modèle de contenu
La chaîne 'goat' ci-dessus est l'ID du modèle de contenu (généralement appelé $ 1 dans le code), et est généralement également définie comme une constante. Ces constantes sont définies pour tous les modèles de contenu intégrés et beaucoup de documentation fait référence aux constantes «$ 1». Si vous ne les avez pas définis, ceci peut être un peu gênant. La définition doit être faite via la fonction de rappel (callback) dans extension.json. Par exemple :

Dans  :

Dans  :

Vous ne devez pas le faire de cette façon, mais simplement utiliser la chaîne de caractères.

Assigner des modèles de contenu aux pages
Si vous voulez que l'espace de noms entier d'un wiki ait un modèle de contenu par défaut, vous pouvez le définir comme tel dans extension.json :

Ou si vous voulez déterminer le type de contenu par l'ajout d'un suffixe de type quasi-fichier sur le nom de la page wiki, vous pouvez utiliser le hook $ 1. Par exemple:

Gestionnaire de contenu
La prochaine chose à définir est la classe $ 1, où nous spécifions également le format sous lequel ce type de contenu sera stocké (dans ce cas, du texte). ContentHandlers don't know anything about any particular page content, but determine the general structure and storage of the content.

Contenu
The GoatContent class is the representation of the content's data, and does not know anything about pages, revisions, or how it is stored in the database. Beside the required seven inherited methods, you can add other public methods are domain-specific; in this case we want to be able to retrieve the goat's name.

Formulaire de modification
Maintenant que nous avons configuré le squelette, nous allons essayer de modifier un exemple. Pour faire ceci, nous créons  en spécifiant quelles actions que nous voulons associer aux classes. Pour commencer, nous allons juste traiter de 'modifier' (qui correspond à 1 $ dans l’URL).

Et nous allons créer notre nouvelle classe de 1 $, essentiellement la même que le noyau de 2 $, mais en utilisant notre propre 3 $:

Notre nouvelle classe de 1 $ est l’endroit où l’action se produit (excusez le jeu de mots):

Vous devriez maintenant être en mesure de modifier une page et de voir votre formulaire. Mais lorsque vous mettez des données dedans, et frappez « aperçu », vous verrez que les choses ne fonctionnent pas encore pleinement et que vous n’obtenez pas de sortie, ni votre texte soumis montré à nouveau dans le formulaire.

Nous devons donc passer outre à l’action « soumettre » ainsi, avec une nouvelle classe de 1 $ et l’ajout de 2 $ à notre méthode de 3 $. Notre catégorie de 1 $ devrait être la même que celle du noyau, mais hérité de nos 2 $.

Affichage
Un modèle de contenu est responsable de la production de toute sortie requise pour l’affichage. Cela implique généralement de travailler avec ses données et de produire html d’une certaine manière, pour ajouter à la sortie parser.

Afficher une description/documentation
Parfois, vous pouvez afficher des informations ou de la documentation pour un article qui ont un modèle de contenu personnalisé comme JSON. En fait, il n’y a pas system messages pour afficher du texte au-dessus de ces pages (à l’exception de 2 $ affichés ci-dessus seulement JavaScript et CSS pages). You may want to see T206395 for further details.

Comparer les versions
The GoatDifferenceEngine class is the representation of the difference between goat contents. We override the default  method to generate a diff.

In order to tell MediaWiki to use our GoatDifferenceEngine, we overwrite the  in our GoatContentHandler.

Résumé
Pour implémenter un nouveau modèle de contenu avec un formulaire d'édition personnalisé, créez ceci :

Voir aussi

 * - pour la documentation de l'utilisateur final concernant la modification d'un modèle de contenu.
 * - pour un exemple de modèle de contenu personnalisé (mais pas encore n'importe quel formulaire de modification personnalisé).
 * - pour un exemple de modèle de contenu personnalisé (mais pas encore n'importe quel formulaire de modification personnalisé).