Extension:Page Forms/Documentation développeur
Cette page contient des informations sur le code Page Forms , pour les développeurs qui veulent mieux le comprendre, le modifier ou écrire du code en rapport.
Code
Pour afficher le code en ligne, y compris l'historique de version de chaque fichier, voir Gerrit.
Modifier ou améliorer Page Forms
Il n'y a certainement pas de pénurie sur les façons d'améliorer Page Forms , y compris les bogues qui peuvent être corrigés, les éléments d'interface qui peuvent être améliorés, ou de nouvelles fonctionnalités qui peuvent être ajoutées. Si vous êtes un développeur ou un utilisateur avec une certaine compétence technique, toute aide que vous pourrez fournir pour améliorer le logiciel est la bienvenue : Page Forms ne serait pas ce qu'il est actuellement sans les contributions de beaucoup d'entre vous.
Si vous rencontrez un problème ou une limitation dans Page Forms , et que vous souhaitez les voir corrigés, veuillez soit écrire à Yaron, ou sur la page de discussion, ou encore déclarer une tâche sur Phabricator.
Vous pouvez également voir la liste actuelle des bogues et fonctionnalités prévues.
Définir de nouvelles entrées
Pour créer un nouveau type d'entrée, vous devez définir une classe pour cette entrée, et la faire hériter (en utilisant le mot clé extends) de la classe PFFormInput, ou de l'une de ses classes filles. Il existe un certain nombre de méthodes que cette classe peut ou doit définir; les principales sont les suivantes :
getName()
- déclarer le nom de l'entrée dans la définition du formulaire.getParameters()
- déclarer les paramètres pouvant être transmis à cette entrée, quand Special:CreateForm est utilisé.getHtmlText()
- définir le HTML pour afficher cette entrée.getResourceModuleNames()
- définir le nom du ou des modules du ResourceLoader utilisés par cette entrée; si l'entrée contient du JavaScript ou du CSS, ils doivent être regroupés dans un ou plusieurs modules, qui sont ensuite spécifiés ici.
Les autres méthodes qui peuvent être redéfinies sont les suivantes :
getHandledPropertyTypes()
getDefaultParameters()
canHandleLists()
getDefaultCargoTypes()
getDefaultCargoTypeLists()
getOtherCargoTypesHandled()
getOtherCargoTypeListsHandled()
Il est utile de regarder les classes d'entrée de formulaire existantes, pour comprendre comment toutes ces fonctions sont appelées.
Note pour obtenir d'autres paramètres : disons que votre entrée est nommée myinput, et qu'elle est appelée dans la définition du formulaire de la manière suivante :
{{{field|Some Field|input type=myinput|color=orange|height=200}}}
Dans la méthode getHtmlText()
de votre classe, $this->mOtherArgs
contiendra les paires de valeurs de clé "color=orange" et "height=200", que la fonction peut ensuite utiliser comme elle le souhaite.
Enfin, une fois votre nouvelle entrée définie, elle doit être enregistrée.
Vous faites cela en utilisant l'accroche 'PageForms::FormPrinterSetup'
.
Vous devez enregistrer avec cette accroche une fonction similaire à :
public static function onFormPrinterSetup( &$pfFormPrinter ) {
$pfFormPrinter->registerInputType( 'MyInputClass' );
}
Tester
Vous pouvez trouver des informations sur le test du code sur la page Tester.