Manuel:Tutoriel HTMLForm 1ere partie
HTMLForm est un assistant puissant et facile pour construire des formulaires MediaWiki. Ce tutoriel va permettre aux développeurs de Manual:Pages spéciales de rentrer dans le sujet avec HTMLForm.
(Comme HTMLForm est une aide pour l'interface utilisateur, cela suppose que vous développez une extension de type IHM, c'est à dire une page spéciale)
Le reste de cette page concerne les notions de base pour créer une extension générique de page spéciale appelée MyForm. Ceci n'est pas directement en rapport avec ce tutoriel, mais il n'est pas inutile de montrer comment l'extension se présente. En bas de la page, le Special:MyForm affiche « Hello World ».
Sauter la partie débutant et passer directement au sujet HTMLForm
Si vous êtes d'accord, commençons...
Fichiers et environnement
- Cette explication concerne MediaWiki version 1.23 et plus récent.
Les classes de HTMLForm se trouvent sur /mediawiki/includes/HTMLForm.php
.
Le code est bien propre et assez documenté, ce qui devrait rendre heureux les programmeurs de Mediawiki.
Votre page spéciale (SpecialPage) est une extension appelée MyForm. Vous la trouverez en accédant à Special:MyForm.
Le code de votre IHM de page spéciale peut se trouver sur :
/mediawiki/extensions/MyForm/MyForm_body.php
Ce fichier précédent qui contient l'afficheur/contrôleur et le modèle (fichier principal de votre extension) peut se trouver sur :
/mediawiki/extensions/MyForm/MyForm.php
Les fichiers i18n peuvent se trouver dans le répertoire :
/mediawiki/extensions/MyForm/i18n
Puis .hooks, .alias... etc.
MyForm.php
<?php
/**
* Description nécessaire de @file, @authors et de la licence
* @FILLME!
* Toujours bon de rappeler cette partie importante
*/
// Eviter le traitement illégal, cela coûte peu, mais n'est pas nécessaire sur une installation correcte
if ( !defined( 'MEDIAWIKI' ) ) {
die( -1 );
}
// Extension Declaration
$wgExtensionCredits['specialpage'][] = [
'path' => __FILE__,
'name' => 'MyForm',
'author' => 'My Name',
'version' => '0.1.0',
'url' => 'https://www.mediawiki.org/',
'descriptionmsg' => 'myf-desc',
];
// A var to ease the referencing of files
$dir = __DIR__ . '/';
// i18n file referencing
$wgExtensionMessagesFiles['MyForm'] = $dir . 'MyForm.i18n.php';
// View file referencing
$wgAutoloadClasses['SpecialMyForm'] = $dir . 'MyForm_body.php';
// SpecialPage referencing
$wgSpecialPages['MyForm'] = 'SpecialMyForm';
// The Logic for your extension should be somewhere around here.
// NO PHP Closing bracket "? >". This is pure code.
LocalSettings.php
N'oubliez pas d'installer votre extension en ajoutant : require_once( "$IP/extensions/MyForm/MyForm.php" );
Dans le cas d'enregistrement d'extension, utiliser wfLoadExtension( 'MyForm' );
à la place.
MyForm.i18n.php
Cette page est obsolète. |
Ce fichier contiendra tous les messages utilisés dans votre formulaire. Faites attention aux IDs des messages, ils seront précisés ultérieurement dans ce tutoriel.
<?php
// Internationalisation for MyForm extension
// @FILLME!
$messages = [];
// English
$messages['en'] = [
'myf-desc' => 'A generic extension used by the HTMLForm tutorial'
];
// Message documentation (Message documentation)
$messages['qqq'] = [
'myf-desc' => '{{desc}}'
];
// French
$messages['fr'] = [
'myf-desc' => 'Une extension générique utilisée par le tutoriel d\'HTMLForm'
];
// More langages…
// NO PHP Closing bracket "? >". This is pure code.
MyForm_body.php
Et enfin le fichier qui nous intéresse le plus.
<?php
/**
* Description nécessaire de @file, @authors et de la licence
* @FILLME!
* Toujours bon de rappeler cette partie importante
*/
// Eviter le traitement illégal, cela coûte peu, mais n'est pas nécessaire sur une installation correcte
if ( !defined( 'MEDIAWIKI' ) ) {
die( -1 );
}
// Notre page spéciale
class SpecialMyForm extends SpecialPage {
public function __construct() {
// Le premier argument doit être le nom de votre page spéciale
// Le second argument concerne les droits (''rigthts'') et peut être ajouté pour restreindre l'accès à la page spéciale
parent::__construct( 'MyForm' );
}
/**
* Point d'entrée de la page spéciale
* @param string|null $par
*/
public function execute( $par ) {
$this->setHeaders();
$this->getOutput()->addHTML( 'Hello World' );
}
protected function getGroupName() {
return 'other';
}
}
// NO PHP Closing bracket "? >". This is pure code.