Extension:Page Forms/Page Forms and templates/fr

Fondamentalement, Page Forms est un utilitaire d'édition pour des modèles que l'on utilise dans les pages d'un wiki. Si vous ne savez pas ce qu'est un modèle, voyez Help:Templates/fr pour une explication du fonctionnement des modèles dans MediaWiki.

Page Forms ne prend en charge que les attributs sémantiques inclus dans des modèles, ce qui exclut donc les marqueurs sémantiques librement ajoutés dans les pages. L'idée est que toutes les données que l'on peut ajouter avec MediaWiki (données sémantiques, catégories, etc.) doivent être dans des modèles, pour les raisons suivantes :
 * les modèles permettent de clairement déterminer quelles informations appartiennent à quelles pages, en évitant ainsi les ambiguïtés dans la structure des données ;
 * les modèles cachent la complexité de la syntaxe nécessaire à l'affichage et au stockage des informations, ce qui simplifie l'édition ;
 * les modèles simplifient les modifications de l'organisation et de l'affichage des données, puisque des changements dans un grand nombre de pages peuvent être faits à partir d'une seule page, au lieu de modifier toutes les pages concernées.

Valeurs multiples pour un même champ
Page Forms ajoute une fonctionnalité importante pour l'usage des modèles : les fonctions #arraymap et #arraymaptemplate qui permettent de gérer des valeurs multiples pour un seul et même champ, ces valeurs étant séparées par une virgule ou un autre signe configurable. Ces fonctions permettent d'appliquer à chaque valeur un même traitement : généralement, les multiples valeurs d'un champ se verront toutes appliquer individuellement un même marqueur sémantique, mais dans des cas plus complexes, il est possible de faire de chaque valeur le nom d'une catégorie, d'une image, etc.


 * 1) arraymap et #arraymaptemplate peuvent également être utilisées en dehors des modèles.

arraymap
arraymap s'utilise de la manière suivante :

Cette instruction se lit ainsi : arraymap examine valeur qui n'est rien d'autre qu'un paramètre d'un modèle quelconque auquel vous donnez un contenu par l'intermédiaire d'un champ d'un formulaire que vous avez créé pour ce faire. arraymap découpe valeur selon le séparateur (par défaut, une virgule); chaque partie de valeur (var) est ensuite traitée de manière séparée en lui appliquant formule ; enfin le résultat est présenté avec nouveau séparateur.

Un exemple permettra de mieux comprendre comment s'utilise cette fonction : vous avez créé un formulaire pour remplir des fiches bibliographiques ; ce formulaire contient un champ Auteur et vous voulez pouvoir entrer plusieurs noms d'auteurs dans ce même champ et appliquer à chaque nom le marqueur sémantique « écrit par ». Vous devrez ajouter dans le modèle associé à votre formulaire pour afficher les informations bibliographiques d'un livre :

De cette manière, en éditant la page Les Soirées de Médan, vous écrirez dans le champ Auteur : « Émile Zola, Guy de Maupassant, etc. », et le résultat, au niveau du code, se traduira par « Écrit par::Émile Zola, Écrit par::Guy de Maupassant, etc. », ce qui s'affichera comme suit : « Émile Zola, Guy de Maupassant, etc. » La page Les Soirées de Médan aura ainsi l'attribut « Écrit par », avec « Émile Zola », « Guy de Maupassant » et autres auteurs comme valeurs de cet attribut.

Cet exemple montre comment arraymap applique à chaque nom, séparé des autres noms par une virgule et écrit dans le champ « Auteur », l'attribut « Écrit par ». Le séparateur est par défaut une virgule, et le nouveau séparateur est «, » (avec une espace après la virgule). Le contributeur peut ainsi ajouter toutes les valeurs (ici, les noms des auteurs) sur une même ligne. À noter que la lettre « x » est utilisée ici comme variable interne et qu'il peut se produire un conflit avec le nom de l'attribut si celui-ci contient cette lettre. Dans ce cas, vous pouvez remplacer cette variable par n'importe quel signe qui ne se trouve pas dans le nom de l'attribut.

Dans le cas où aucun résultat ne doit s'afficher, par exemple lorsque les valeurs entrées doivent servir de catégories, il faut remplacer le nouveau séparateur par quelque chose comme "&amp;#32;" pour éviter l'affichage de virgules. On aura donc :

Dans ce cas, toute page qui contient le modèle comportant ce code sera catégorisée selon les différentes valeurs de et il n'y aura pas d'affichage intempestif d'un séparateur.

Si vous utilisez les pages spéciales 'CreateTemplate' ou 'CreateClass' pour créer un modèle, #arraymap sera automatiquement ajouté dans ce modèle si vous indiquez qu'un champ peut contenir plusieurs valeurs.

arraymaptemplate
Dans certains cas, la formule à appliquer à chaque valeur est trop complexe pour être utilisée avec la fonction #arraymap. Vous pouvez alors utiliser un modèle à la place de cette formule, en utilisant la fonction #arraymaptemplate.

Pour ce faire, créez le modèle à appliquer à un champ (dans ce modèle, la valeur de ce champ devra être représentée par ) et utilisez l'instruction suivante dans votre modèle principal :

où modèle est le nom du modèle à appliquer aux différentes variables de valeur séparées par une virgule.

\n comme séparateur
Pour #arraymap comme pour #arraymaptemplate, l'utilisation de « \n » comme séparateur ou nouveau séparateur se traduira par une nouvelle ligne. Néanmoins, il faut remarquer que, pour obtenir un véritable retour à la ligne, il faut utiliser \n\n comme séparateur, conformément au fonctionnement de MediaWiki.

Pages spéciales pour les modèles
Page Forms ajoute trois pages spéciales relatives aux modèles : Special:Templates, qui fait la liste de tous les modèles de votre wiki, Special:CreateTemplate et Special:CreateClass, qui toutes deux servent à créer automatiquement des modèles.