# MediaWiki sémantique/Configuration des formulaires

Nous avons vu comment créer des formulaires rudimentaires, fonctionnels et pratiques, mais nous sommes encore loin d'avoir épuisé toutes les possibilités de l'extension Formulaires Sémantiques.
Dans ce chapitre, nous allons voir en détail un certain nombre de paramètres qui vous permettront de mieux adapter vos formulaires au genre de données que vous voulez utiliser dans votre wiki, et nous reviendrons sur la fonction #forminput pour faciliter la création de nouvelles pages.

## Formulaire

Les pages de formulaires sont composés de plusieurs parties que nous avons décrites précédemment ; nous allons maintenant voir comment configurer ce qui concerne les champs.

### Paramètres d'utilisation des modèles (« for template »)

« for template » (littéralement : pour le modèle) est la balise qui permet d'indiquer quel modèle doit être utilisé dans le formulaire : les champs du formulaire correspondront aux paramètres de ce modèle. On écrira ainsi :
Les autres paramètres de cette balise sont :
* label= : place un titre et un cadre autour de votre formulaire. Dans le cas où vous utilisez plusieurs modèles dans un même formulaire, cela permet de les distinguer.
* multiple : autorise l'utilisation multiple d'un formulaire dans une même page.
    Reprenons notre exemple bibliographique : vous avez un formulaire pour ajouter des données bibliographiques d'un livre. Ce formulaire ne crée qu'une seule ligne bibliographique. Pour utiliser plusieurs fois le même formulaire sur une page (par exemple, ajouter plusieurs lignes bibliographiques à la page d'un auteur), on écrira : {{{for template|Bibliographie|multiple}}}. Un bouton « Ajouter » apparaîtra alors dans les pages que vous éditerez avec ce formulaire. En cliquant sur ce bouton, ce même formulaire apparaîtra une deuxième fois dans la page d'édition, et vous pourrez en ajouter autant que vous voudrez en recliquant sur « Ajouter ». Vous pourrez aussi déplacer ces formulaires les uns par rapport aux autres.
* add button text= : texte du bouton pour l'utilisation multiple d'un formulaire. Vous pouvez par exemple placer le texte « Ajouter un livre », ou simplement « + ».
* strict : seuls les champs qui correspondent aux paramètres du modèle seront affichés dans le formulaire.
* embed in field=modèle[paramètre] :autorise l'utilisation d'un autre modèle avec le paramètre spécifié. Il s'agira dans ce cas d'utiliser un modèle dans un modèle, nous verrons plus loin comment procéder.

### Configuration des champs (« field »)

« field » définit un champ correspondant à un paramètre du modèle indiqué dans « for template ».
C'est la balise qui comporte le plus de paramètres, mais les paramètres possibles varient selon le type de champ (listes, cases à cocher, etc). Nous en donnons une liste commentée ci-dessous.

#### Paramètres généraux

Ces paramètres sont valables pour tous les champs.
* input type= : définit un type de champ, tel que dropdown (liste), checkbox (cases à cocher), date (l'affichage des dates pose problème, nous aborderons cette question dans la FAQ).
* hidden : le champ sera caché.
    {{{field|auteur|hidden}}}
* mandatory : il est obligatoire de remplir le champ pour sauvegarder la page.
    {{{field|auteur|mandatory}}} : dans cet exemple, il est obligatoire d'indiquer l'auteur.
* restricted : le champ ne sera modifiable que par certains utilisateurs.
* default= : le contenu par défaut du champ.
* class=
* property=
* list
* delimiter= : un séparateur quand le champ peut prendre plusieurs valeurs (par défaut une virgule).
* holds template : pour utiliser un champ avec un modèle indiqué dans « embed in field= ». Nous décrirons plus loin en détail ce paramètre, car son utilisation est assez complexe.

#### Paramètres pour des valeurs prédéfinies

* values= : liste des valeurs possibles pour un champ, séparées par une virgule. Ceci permet de définir une liste ou des cases à cocher.
* values from property=
* values from concept=
* values from namespace=
* values from url=
* remote autocompletion
* existing values only
* show on select=
* values dependent on=

#### Paramètres pour le texte libre

* rows= : nombre de rangées de la boîte d'édition du texte libre.
* cols= : nombre de colonnes de la boîte d'édition du texte libre.
* autogrow : la taille de la boîte d'édition s'adapte automatiquement à son contenu.
* editor= : ajoute une barre d'édition. Paramètre unique : « wikieditor » qui suppose l'installation de Extension:WikiEditor.

#### Paramètres de téléchargement

* uploadable : Place un lien à côté du champ pour ouvrir une fenêtre popup et importer un fichier. Le nom du fichier (sans le préfixe « Fichier: ») se placera ensuite automatiquement dans le champ.
* image preview
* default filename=

#### Paramètres divers

* size= : taille du champ.
* placeholder= : texte à afficher dans le champ, par exemple une explication, qui s'efface ensuite quand on remplit le champ.
* maxlength=
* include timezone

## Configurations complexes

Nous plaçons à part les configurations des champs qui suivent car elles demandent des explications détaillés.

### Modèle dans un modèle
## Champ pour ajouter des pages avec un formulaire (#forminput)

Nous avons déjà rencontré la fonction #forminput dans l'en-tête des pages de formulaires, et nous avons dit que cette fonction permet d'afficher un champ dans lequel on entre le nom d'une page que l'on veut modifier avec un formulaire. Nous allons voir que cette fonction comporte de nombreux paramètres très utiles, par exemple pour ajouter un champ « ajouter une œuvre » sous une liste bibliographique.
Voici tous les paramètres que nous allons expliquer :
{{#forminput:form=|size=|default value=|button text=|query string=|query string parameters|autocomplete on category=|autocomplete on namespace=|remote autocompletion|placeholder=|popup}}
Nous commencerons par les plus simples :
* size= : taille du champ.
* button text= : texte du bouton.
* placeholder= : texte à afficher dans le champ, par exemple une explication, qui s'efface ensuite quand on remplit le champ.
* popup : ouvre une fenêtre popup dans laquelle vous créerez ou modifierez une page.
* autocomplete on category ou on namespace= affiche des suggestions d'après la catégorie ou l'espace de nom indiqué.