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. If the values are page names, and those pages have a "display title" set that is different from their real page name, then by default the form will display the display title instead of the page name. If you want, you can have the page name itself displayed, by adding the following to LocalSettings.php:

You can enable other such mappings using the following parameters:



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
Four of the input types (, , plus   and   for versions before 5.0) use autocompletion — as the user starts typing, the input shows a dropdown list of possible completions.

If a field represents a Semantic MediaWiki property, or Cargo field, of type " ", autocompletion will be enabled by default — the field will autocomplete on the names of all pages that are already pointed to by that property or field. For any other type, there is no default autocompletion, but you can achieve this same effect simply by setting the input type to one of the four types that have autocompletion.

You can manually set a field to autocomplete on the set of values from an SMW property, a Cargo field, a category, a namespace, a "concept", or a manually-set list, by using one of the "values ..." parameters - see "Setting values and mappings", above.

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. To change this number, change the value of  in 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
You can have a field autocomplete on values from outside the wiki, using the following parameter:


 * identifiant d'URL

To do so, take the following steps:


 * 1) Create a page/web service that takes in a substring via the query string, and displays a set of completion values. Page Forms expects to get a JSON format response with a toplevel key of "pfautocomplete" and an array of objects with the "title" key marking the values of possible completions. You can see a brief example of this from this API call on semantic-mediawiki.org.
 * For example, if you had a list of three countries -- Uruguay, Germany, and Japan -- and were asked for a list of possible completions for "an", you would return:
 * This also makes it easy to autocomplete on the values from another wiki.
 * 1) Decide on a short string to represent this URL.
 * For example, the service providing lookups in our list of countries could be called " ".
 * 1) Add the short string to the array in   in your LocalSettings.php file to configure Page Forms to use your URL when it sees the string. Put " " where you want the user's input will go.
 * In our example, if we want Page Forms to feed the user's keystrokes to the url  via the url parameter " ", we'd put:
 * 1) Add the parameter "values from url=URL-identifier-string" to the relevant field in the form definition.
 * For our country example, we might have a field that looks like:
 * 1) Add the parameter "values from url=URL-identifier-string" to the relevant field in the form definition.
 * For our country example, we might have a field that looks like:

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


The External Data extension (ED) supports retrieving data from a number of sources which include external URLs, regular wiki pages, uploaded files, files on the local server, databases and LDAP directories.

To autocomplete using ED, you need to first call any of ED's "#get_..._data" parser functions within the form definition (preferably at the bottom of the form definition, to avoid unnecessary line breaks). This will fetch data that can then be used in the field tags. (See the External Data documentation for how to call these.) The field tag may then use these parameters:


 * ED variable name (obligatoire)
 * ED variable name (optionnel)
 * ED variable name (optionnel)

Here is a sample call to #get_web_data to fetch data from some URL:

Assuming a form definition contains a call like that, a field tag can then use the values retrieved for autocompletion - not just to set the autocomplete values themselves, but also, if the input type is "combobox" or "tokens", to set a corresponding thumbnail image and description for each one.

Assuming our External Data call retrieved three "columns" of values, as the one above does, the field tag using this data could look like:



Autocomplétion dépendante
You can set a field's autocompletion values to be based on the value a user has already set of another field in the form. This is done with the parameter, which has this syntax:

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.

Is that confusing?

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.

The syntax for this parameter is:



A value can be provided with more than one element-id:



If using show on select together with a mapping template, use the labels defined in the mapping template as values (not the true parameter names).

For inputs of type 'checkbox', simply " element ID" should be used. Note that the element IDs cannot contain spaces and/or multibyte characters and cannot start with a number.

For an example of this feature in use, see this form, and observe what happens when you select different values for the "Publication type" dropdown. You can see how that was implemented in this form definition.