Extension:Page Forms/Values, mappings and autocompletion/fr

Page Forms offers many options related to both the setting and display of possible values for inputs, both for input types that offer a finite set of options (such as "dropdown" and "checkboxes") and those that offer free-form data entry ("combobox" and "tokens").



Définition des valeurs et des correspondances
Certains types d'entrée fournissent à l'utilisateur des valeurs prédéfinies. Cela peut être des valeurs parmi lesquelles l'utilisateur doit choisir (comme le type d'entrée ), ou des valeurs d'exemple pour guider l'utilisateur (comme , bien que là aussi ces options peuvent être rendues obligatoires en ajoutant le paramètre  ).

Dans les deux cas, l'ensemble des paramètres pour spécifier les valeurs affichées à l'utilisateur est presque le même. Voici les paramètres de la balise de champ (field) qui peuvent être utilisés dans tous les cas :

Il y existe quelques options supplémentaires pour les entrées basées sur l'autocomplétion; voir ci_dessous.

Correspondance
Il est possible que l'ensemble des valeurs affichées à l'utilisateur soit différent de l'ensemble des valeurs qui apparaissent actuellement dans le wikicode de la page. Si les valeurs sont des noms de pages et que ces pages ont un ensemble de titres d'affichage (display title) différent du nom réel de la page, le formulaire affichera par défaut ce display title au lieu du nom de page. Si vous le souhaitez, vous pouvez faire afficher le nom de la page lui-même en ajoutant ceci à LocalSettings.php :

Vous pouvez activer d'autres correspondances similaires en utilisant les paramètres suivants :



Exemple 1 : modèle de correspondance
Un formulaire peut contenir une balise de champ telle que :

Le modèle sur Template:StatusLabel peut ensuite contenir quelque chose comme :

Vous pouvez ensuite utiliser le même mapping template pour afficher le libellé de la valeur sur les pages classiques qui ne sont pas des formulaires. Dans le modèle qui contient le champ état, vous pouvez avoir ceci :

Example 2: Cargo-based mapping
Let's say that, in a company, every employee is assigned an employee ID. In the wiki, the page about each employee has as its name the employee ID. There are also pages about projects, and within each project page is a "Project members" field, which holds a list of employee IDs. In the "Project" form, in the "Project members" input, you want people to enter in employees' actual names, but have the employee IDs show up on the page. You could do that with the following field tag:

Now, what if the name of each employee page is not the employee ID (nor their real name) but rather a randomly-assigned name, like "Employee 12345"? Then you could do the mapping using the additional "mapping cargo value field" parameter, like this:

Autocomplétion
Quatre des types d'entrée (, , plus   et   pour les versions antérieures à la 5.0) utilisent l'autocomplétion - à mesure que l'utilisateur commence à taper, l'entrée affiche une liste déroulante des possibilités de complétion.

Si un champ représente une propriété de Semantic MediaWiki, ou de champ Cargo, de type  , l'autocomplétion sera activée par défaut — le champ se complètera automatiquement pour les noms de toutes les pages qui sont déjà marquées par cette propriété ou ce champ. Pour tous les autres types, il n'existe pas d'autocomplétion par défaut, mais vous pouvez réaliser cela simplement en déclarant ce type d'entrée comme étant l'un des quatre possèdant l'autcomplétion.

Vous pouvez définir manuellement un champ à autocomplétion sur l'ensemble des valeurs à partir d'une propriété SMW, d'un champ Cargo, d'une catégorie, d'un espace de noms, d'un concept, ou d'une liste définie manuellement, en utilisant l'un des paramètres valeurs ... - voir ci-dessus.

You can also autocomplete based on values outside the wiki, contained in web pages, databases, files, etc.; see "Autocompleting on outside values" below for the various ways to do this.

If a field is specified to hold multiple values, autocompletion will, by default, support multiple values: after a value is entered, and a delimiter placed, a new autocompletion will start for the next value. You can manually specify that a field should have multiple-value autocompletion, by adding the "list" parameter to the field's definition. You can also specify the delimiter for this list of values, using the "delimiter=..." parameter (the default is a comma).

By default, the maximum number of autocompletion possibilities that a field will offer is 1,000; this is for performance reasons. Pour modifier ce nombre, modifiez la valeur de  dans LocalSettings.php.

Désactivation
Vous pouvez désactiver l'autocomplétion si elle a été déclarée par défaut sur un champ, en indiquant que le type d'entrée est simplement « text » ou « textarea ».



Autocomplétion distante
L'ensemble des valeurs possibles d'autocomplétion d'un champ est par défaut contenu directement dans la page HTML du formulaire, dans une déclaration JavaScript. Par soucis de performance, il y existe une limite sur le nombre de valeurs placées sur la page; par défaut la limite est fixée à 100. Une fois cette valeur atteinte, l'autocomplétation à distance est réalisée à l'endroit, où l'autocompletation se produit par un appel Ajax au serveur, en fonction de ce que l'utilisateur a saisi. Ce type d'autocomplétion est plus lent, mais il permet beaucoup plus de résultats d'autocomplétion.

Vous pouvez modifier la définition par défaut en ajoutant quelque chose comme ceci à LocalSettings.php :



Correspondance de chaque caractère
Par défaut, l'autocomplétion dans Page Forms détecte le début de chaque mot dans l'ensemble des valeurs possibles. Vous pouvez par contre modifier l'autocomplétion afin qu'elle coïncide avec chaque caractère, en ajoutant la ligne suivante à LocalSettings.php :

Cette fonctionnalité est particulièrement importante pour les wikis qui ont des valeurs avec des caractères non ASCII, comme les wikis dans les langues avec des alphabets non romains; puisque la complétion automatique par défaut, basée sur les mots ne fonctionne pas encore avec des caractères non ASCII.



Autocomplétion sur les caractères accentués
L'autocomplétion des inflexions pour les caractères accentués, est prise en charge pour les types d'entrée combobox et tokens.

Le repli d'accents a ses limites mais il peut aider à ce que certaines interactions importantes quoique négligées, avec l'utilisateur fonctionnent mieux. Une fonction réalisant le repli d'accents associe essentiellement les caractères Unicode à leur équivalent ASCII. Avec le repli d'accents, il n'est pas important de savoir si vous cherchez cafe, café ou çåFé; le résultat sera le même.



Autocomplétion sur les valeurs externes
Il existe quelques façons d'avoir un champ complété automatiquement en utilisant des données provenant de l'extérieur du wiki :


 * à partir d'une URL similaire à celle d'une API qui prend une sous-chaîne et renvoie les données au format JSON nécessaire
 * à partir de Wikidata
 * à partir de toute source externe, en utilisant l'extension.



A partir d'une URL externe
Vous pouvez obtenir l'autocomplétion d'un champ sur des valeurs venant de l'extérieur du wiki, en utilisant le paramètre suivant :


 * identifiant d'URL

Pour réaliser cela, suivez ces étapes :


 * 1) Créez une page ou un service web qui recupère une sous-chaîne via la chaîne de requête, et qui affiche un ensemble de valeurs de complétion. Page Forms attend un format JSON dans la réponse avec une clé « pfautocomplete » à la racine et un tableau d'objets avec la clé « title » marquant les valeurs des complétions possibles. Un court exemple de ceci est disponible à partir de cet appel d'API sur semantic-mediawiki.org.
 * Par exemple, si vous aviez une liste de trois pays -- Uruguay, Germany et Japan -- et que l'on vous demande la liste des résultats possibles pour "an", vous renverrez :
 * Ceci facilite aussi l'autocomplétion des valeurs provenant d'un autre wiki.
 * 1) Décidez d'une chaîne courte  pour représenter cette URL.
 * Par exemple, le service qui fournit des recherches dans notre liste de pays pourrait être appelé  .
 * 1) Ajoutez la chaîne abrégée dans le tableau de   du fichier LocalSettings.php pour configurer Page Forms et utiliser votre URL lorsqu'il détecte la chaîne. Mettez «   » là où vous voulez envoyer la saisie de l'utilisateur.
 * Dans notre exemple, si nous voulons que Page Forms alimente le texte tapé par l'utilisateur vers l'URL  via le paramètre d'URL «   », nous écrivons :
 * 1) Ajoutez le paramètre « values from url=URL-identifier-string » au champ ad'hoc dans la définition du formulaire.
 * Pour notre exemple des pays, le champ peut ressembler à :
 * 1) Ajoutez le paramètre « values from url=URL-identifier-string » au champ ad'hoc dans la définition du formulaire.
 * Pour notre exemple des pays, le champ peut ressembler à :

From Wikidata
You can have a form input hold, and autocomplete on, values from Wikidata, using the parameter. The value for this parameter is structured as a mini-query, like  ("instance of" = "sculpture", "country" = "Italy"). The "Q" values can also be replaced by field names, to enable a Wikidata-based version of "show on select", for example, where "Location" is a template, and "Country" is a field, above the current one.



Utiliser l'extension External Data/Données Externes


L'extension External Data (ED) prend en charge la récupération des données à partir d'un certain nombre de sources qui incluent les URL externes, les pages régulières de wiki, les fichiers téléversés, les fichiers du serveur local, les bases de données et les répertoires LDAP.

Pour compléter automatiquement en utilisant ED, vous devez d'abord appeler l'une des fonctions #get_..._data d'analyse de ED dans la définition du formulaire (de préférence en bas de la définition du formulaire, pour éviter les passages à la ligne inutiles). Cela permettra de récupérer les données qui peuvent ensuite être utilisées dans les balises des champs. (Voir la documentation de External Data pour savoir comment les appeler). La balise de champ peut alors utiliser ces paramètres :


 * nom de variable ED (obligatoire)
 * nom de variable ED (optionnel)
 * nom de variable ED (optionnel)

Voici un exemple d'appel à #get_web_data pour récupérer les données d'une URL :

En supposant qu'une définition de formulaire contienne un tel appel, une balise de champ peut ensuite utiliser les valeurs récupérées pour l'autocomplétion - non pas simplement pour définir les valeurs d'autocomplétion en elles-mêmes, mais également, si le type d'entrée est « combobox » ou « tokens », pour définir une image de la vignette correspondante et la description de chacunes d'elles.

En supposant que l'appel de External Data récupère trois colonnes de valeurs comme ci-dessus, la balise du champ qui utilise ces données est similaire à :



Autocomplétion dépendante
Vous pouvez définir les valeurs d'autocomplétion d'un champ en fonction de la valeur déjà définie par l'utilisateur d'un autre champ du formulaire. Ceci se fait à l'aide du paramètre  dont la syntaxe est la suivante :

It specifies that the current set of allowed values for this field are all the values taken by this same field from pages where 'field name' is equal to the value selected for 'field name' in the current form.

Est-ce gênant ?

Well, this example may help: if a template is called "Restaurant" and it has template fields (not properties) named "Country" and "City", and you want the set of cities that are used for autocompletion to be only those cities in the country that the user selected, then the field tag for the City field should look something like:



Paramètre show on select
For inputs of type 'checkbox', 'checkboxes', 'radiobutton', 'dropdown' and 'listbox', the parameter  specifies that one or more elements on the page should only be displayed if and when certain value(s) are selected within that input.

La syntaxe de ce paramètre est :



Une valeur peut être fournie avec plus d'un ID d'élément :



Si vous utilisez l'affichage sur sélection avec un modèle de correspondance, utilisez comme valeurs, les étiquettes définies dans le modèle de correspondance (et non pas les vrais noms des paramètres).

Pour les entrées de type 'checkbox', il suffit d'utiliser «  element ID ». Notez que les identifiants d'éléments (element ID) ne peuvent pas contenir d'espaces ni de caractères multi-octets et ne peuvent pas commencer par un nombre.

Pour un exemple de cette fonctionnalité utilisée, voir ce formulaire, et observez ce qui se passe lorsque vous sélectionnez différentes valeurs de la liste déroulante Publication type. Vous pouvez voir comment cela a été mis en œuvre dans cette définition de formulaire.