Extension:Page Forms/Linking to forms/fr

Comment amener les utilisateurs sur les formulaires ? La manière standard est via l'appel de la fonction analyseur , qui affiche une seule entrée afin pour que les utilisateurs puissent saisir le nom de page; s'il saisissent ce nom et cliquent sur le bouton, il sont dirigés vers un formulaire pour créer cette page - sauf si une page avec un nom identique existe déjà, auquel cas ils sont dirigés vers un formulaire de modification de la page existante. Ceci est connu sous le nom de processus en deux étapes. La raison pour laquelle l'étape initiale dans laquelle l'utilisateur entre d'abord le nom de la page, existe, c'est pour s'assurer que les utilisateurs ne vont pas écraser des pages existantes par accident. Ce processus est tellement standard qu'il est implémenté dans les formulaires par défaut produits par les pages d'aide de Special:CreateForm et de Special:CreateClass de Page Forms : toute page de définition de formulaire créée par Page Forms inclut au début, un appel à #forminput, pour que les utilisateurs qui arrivent sur cette page de formulaire puissent automatiquement commencer à utiliser le formulaire.

Néanmoins, il est aussi possible d'avoir des utilisateurs qui sautent la première étape, celle où il faut saisir le nom le la page - c'est ce que vous devriez faire si le formulaire contient une formule pour définir le titre de la page en fonction de ce que saisit l'utilisateur. C'est le processus en une seule passe qui utilise la fonction d'analyseur  au lieu de.

Les formulaires de requête, qui utilisent Special:RunQuery, ont leur propre méthode de lien et utilisent la fonction d'analyseur.



Processus en deux étapes
Le processus en deux étapes, par exemple la manière standard de fournir les formulaires aux utilisateurs, est fait en utilisant la fonction d'analyseur.



Avec #forminput
Voici la syntaxe de la fonction analyseur #forminput :



Tous les paramètres sont facultatifs. Les paramètres sont détaillés ci-dessous :



Ajouter les pages d'un espace de noms donné
Vous pouvez avoir un formulaire d'entrée de page qui crée des pages dans un espace de noms spécifique (comme User:) par défaut, sans forcer les utilisateurs à entrer cet espace de nom à chaque fois. To do that, add "" to the "query string=" parameter.

Exemple d'appel de  :



(Note that, if you want to use SMW on a custom namespace, you need to add the namespace to $smwgNamespacesWithSemanticLinks.)



Ajouter des sous-pages
Dans MediaWiki, vous pouvez créer des sous-pages en incluant une barre oblique dans le nom de la page. To have the page that's added automatically be a subpage, you can add a value for "super_page=" in the query string. Pour en faire une sous-page de la page actuelle, vous pouvez définir cette valeur à "super_page=". Cela préfixera un  au début du nom de la page que l'utilisateur aura entré.



Processus en une étape
Vous pouvez avoir automatiquement le nom de la page créée par le formulaire, en ajoutant un paramètre  dans la balise  de la définition du formulaire. Il existe deux types de variables que l'on peut inclure dans la valeur de ce paramètre :


 * - remplace par la valeur du champ field-name spécifié dans le modèle template-name. Remarque: cela ne fonctionne pas lorsque la balise  est déclarée comme.
 * - par défaut, remplace par le nombre le plus bas pour lequel le titre de page généré est unique. Normalement, cette valeur est vide au départ, puis va à 2, puis 3, etc. Cependant, on peut définir manuellement le nombre de départ pour cette valeur, en ajoutant un paramètre ; ce nombre doit être positif ou nul. Par exemple, pour que le nombre commence à 1 et s'incrémente, vous devez définir la balise à  . Vous pouvez également le définir comme un nombre aléatoire à six chiffres en ajoutant le paramètre random, de sorte que la balise ressemble à  . Vous pouvez également définir un nombre de chiffres différent de 6, en ajoutant un nombre après random, comme  . Notez que pour tous ces cas, les paramètres sont séparés par des points-virgules
 * Notez que la valeur  ne peut pas contenir le caractère , car MediaWiki ne permet pas ce caractère dans les titres de page.

Voir ici pour un exemple de formulaire qui utilise une formule de nom de page.

Comme autre exemple, imaginez un formulaire pour stocker des citations remarquables. Son étiquette  pourrait avoir un paramètre page name=&lt;Quot[Author name]> quote &lt;unique number;start=1>. Cela comprendra le nom de l'auteur dans le nom de chaque page de citation, ainsi qu'un numéro pour garantir l'unicité de chaque page d'opinion ajoutée. Un utilisateur pourrait alors aller à l'URL  et remplir le formulaire; si l'auteur était fixé à , et qu'aucune autre citation dans le wiki ne l'avait comme auteur, en appuyant sur le bouton  on obtiendrait une nouvelle page appelée.

La valeur de  peut avoir des zéros en tête; une valeur de , par exemple, conduirait à des pages qui auraient la valeur  , puis  , etc.

La valeur de  est traitée par l'analyseur MediaWiki, donc vous pouvez également ajouter des fonctions d'analyse, des variables prédéfinies, etc. à la valeur. Notez que les utilisateurs doivent être dirigés vers la page pour que cette configuration automatique de page puisse fonctionner ; s'ils s'arrêtent d'une manière quelconque à l'appel de   et qu'il doivent saisir un nom de page, ce nouveau nom écrasera celui généré automatiquement pour la page.



Avec #formlink
Si vous voulez,vous pouvez générer ce lien en utilisant la fonction analyseur, au lieu de créer l'URL directement. Cette fonction est appelée ainsi :



Explication des paramètres :

An example call to  would be:



This will link from the page, via a button, to a form for adding a quote, with the "Author" field filled in with the current page name. If there are multiple values, they should be separated by "&".



Note that if any part of your query string — such as a page name or anything else — contains characters such as apostrophes, ampersands , or plus signs , you will need to URL-encode that value. For that, you can use the  function from the ParserFunctions extension. The example above, for instance, would need to change to: .}}

You may want to have the link to the form be an image, instead of text or a button. Pour cela, vous pourriez appeler quelque chose comme :





Liens vers les formulaires de requête
Vous pouvez lier aux formulaires de requête, c'est-à-dire aux formulaires exécutés dans la page Special:RunQuery, en utilisant la fonction d'analyseur. Cela s'appelle de la même manière que, sauf qu'il n'y a pas de paramètre target. For a more complete explanation, see.



Faire pointer les liens rouges vers un formulaire
Dans MediaWiki, les liens vers les pages qui n'existent pas sont appelés 'liens rouges' (red links), car ils s'affichent habituellement en rouge. Par défaut, ces liens pointent vers une page pour ajouter des articles au wiki en utilisant l'interface d'édition standard. Néanmoins, vous pouvez à la place faire pointer les liens rouges directement vers un formulaire pour créer cette page, si le formulaire adequat est connu d'avance; et vous pouvez en plus faire pointer tous les autres liens rouges vers une page d'aide qui permet aux utilisateurs de choisir le formulaire du wiki qu'ils peuvent utiliser (s'il existe).



Avec #formredlink
Pour obtenir un lien spécifique (soit sur lui-même, soit vers un modèle) pointez vers un formulaire si la page vers laquelle ce lien pointe n'existe pas, utilisez la fonction analyseur #formredlink. Un appel typique à #formredlink ira dans un modèle, et ressemblera à :

The overall syntax of #formredlink is:



These parameters are very similar to those of #formlink (see above). Il a deux paramètres supplémentaires :


 * "existing page link text=" - sets the text of the link when the target page being pointed to exists already (the "link text=" parameter takes effect only when the target does not exist).
 * "create page" - causes red-linked pages to get automatically created by the system. It should be noted that it may take a while for each page to be created, since page creation is done through MediaWiki "", which can take anywhere from a few seconds to several hours or more to run, depending on the length of the job queue. Pages created with this method will be associated with user ID 1 (the first user created on the wiki), unless you set   to another username.

There may be times when you are not sure which form a linked-to page will use; it could be one of a number of choices. You can set it so that the user gets other possibilities when they click on the red link, by adding one or more "alt_form" query string parameters to the #formredlink call, each with its own number.

As an example, see this page. Both the author and the source are red-linked, but the links take you to forms for adding these two pages (please do not actually fill out and submit these forms, because that would ruin the example). When you get to the forms for each page, you can see, at the top, that there are alternative forms that you can select for adding each page. That is enabled by the following two calls to #formredlink in the template where those links are defined:

Pour la source :

Pour l'auteur :

In the example page, the "source" call creates a link to. Note that no main/default form is specified; only alternate forms.

The "author" call is more complex because that field can hold a list of values. is used to put in a call to  for each individual value; as well as to store each individual value using an SMW property.

Note that the internal "variable" used for this  call is "xx", not "x" - "x" could have been used here too, but if the   call had used its "link text=" or "existing link text=" parameters, those would have failed, because they contain the letter "x"; "xx" is safer here.



Espaces de noms associés aux formulaires
If you've, red-links that go to a page within that namespace will also go to the right 'add data' form, without any extra work needed.



Faire pointer les liens en rouge vers un sélecteur de formulaires
For red links not defined by  and not pointing to a form-associated namespace, you can have every such link point to a helper page, that lets the user choose which of the wiki's forms to use to create this page - or to use no form at all. You can enable this functionality simply by adding the following to LocalSettings.php, below the inclusion of PF:

You can see an example of this interface by clicking on the red link here (please do not create this page).



Précharger les données
On peut vouloir qu'un formulaire possède déjà des données préremplies quand il est accédé par l'utilisateur. (Notez que cela ne s'applique qu'à l'ajout de nouvelles données ou aux formulaires de requête; pour modifier une page existante, il n'y a aucun moyen de définir le contenu du formulaire à autre chose que le contenu actuel de la page.) Il existe plusieurs façons de faire cela :


 * Specify a "default" value for whatever fields you want to have a value for in the form.
 * Specify a "preload" page for the "free text" input, which will preload the free text field with the contents of that page.
 * Add to the query string value in the 'forminput' call; this will preload the entire form with the contents of that page.
 * Similarly, you can add a "preload=..." value to the query string for a 'FormStart' or 'FormEdit' URL.
 * Add to the query string value in the 'forminput' call, to set the value for a specific field. To preload values for more than one field use "&":
 * To preload values for multiple-instance templates, add the instance number after the template name. So you could have something like for two instances.
 * Similarly, you can add a value for a specific field to the URL query string for 'FormStart' or 'FormEdit'.
 * Finally, you can create your own custom handling, using the 'sfEditFormPreloadText' hook. Si une autre extension appelle cette accroche, elle peut précharger des données comme elle veut. The function registered with this hook should have a header like.



Passer un contexte
A call to #forminput or #formlink can include arbitrary query string parameters, which the form can then use to modify aspects like the display, autocomplete values, etc. Cela peut être réalisé avec l'extension UrlGetParameter qui fournit la fonction d'analyse syntaxique #urlget, qui peut lire le ou les paramètres de la chaîne de requête en question.

For example, let's say there is a form called "Document" that contains a field, "Owner", which you want to have autocomplete with different names depending on the company department for which the form is being called. Un appel à #forminput ou #formlink pour ce formulaire pourrait alors contenir le paramètre. Si vous utilisez l'extension Cargo, la balise pour ce champ du formulaire pourrait alors ressembler à :

Si vous utilisez cette approche, il est probablement préférable de ne pas avoir d'onglet Modifier avec le formulaire pour les pages créées avec ce formulaire; au lieu de cela, chaque page doit afficher (via son modèle) un ensemble de #formlink appels pour modifier la page, un pour chaque valeur possible (dans ce cas, chaque département).



Modifier les pages automatiquement


Utiliser #autoedit
Vous pouvez créer des liens qui lorsqu'on clique sur eux créent ou modifient des pages automatiquement en tâche de fond avec un ensemble prédéfini de valeurs, en utilisant la fonction d'analyseur. Cette fonction est appelée et affichée d'une manière très similaire à  - la différence étant que le lien ne fait que réaliser une action en arrière plan, au lieu d'amener l'utlisateur sur un formulaire. La syntaxe pour  est :



All these parameters work in the same way as they do in #formlink, with four exceptions:


 * - s'il est ajouté à l'appel, on marque toute les modifications effectuées avec ce lien comme étant des modifications mineures.
 * - s'il est ajouté à l'appel, la page actuelle est rechargée après avoir cliqué sur le lien.
 * - s'il est ajouté à l'appel, une fenêtre de confirmation apparaît pour l'utilisateur avant de modifier réellement.
 * Like with #formlink,  sets the type of display and can be set to "link" or "button" ("post button" is not an option). However, for #formlink, a missing value for "link type" is the same as setting the value to "link"; while for #autoedit, the two are different. Dans #autoedit, une valeur manquante pour link type affichera le texte en tant que texte, sans lien, tandis que la définition link type=link l'affichera en tant que lien.

Exemple
Par exemple, disons que vous voulez créer un système de vote simple, permettant aux utilisateurs de voter entre Vanille, Chocolat et Fraise. Vous avez une page pour chacune, et chacune contient un modèle appelé "Arôme", avec un champ appelé "Num votes" - ce champ, à son tour, définit un champ Cargo appelé "Num_votes". Et il y a aussi un formulaire, aussi appelé "Flavor", pour modifier de telles pages. Pour créer un lien qui, lorsqu'on clique dessus, augmente le nombre de votes de la page "Vanilla" d'un à la fois, vous pouvez placer le lien suivant sur la page :





Modifier une liste de valeurs
Vous pouvez ajouter ou supprimer une valeur d'une liste de valeurs pour les champs contenant une liste de valeurs (comme les champs éditables avec les types d'entrée  ou  ). Pour ajouter une valeur à une telle liste, au lieu d'avoir un appel comme dans la chaîne de requête, utilisez un appel comme. Et pour supprimer une valeur, utilisez un appel comme.

Malheureusement, cette fonctionnalité ne fonctionne actuellement que pour les champs dont le délimiteur est la virgule.

Si, lors de l'ajout d'une valeur à une liste, cette valeur est déjà présente; ou si lors de la suppression d'une valeur, cette valeur n'était pas présente, cet appel n'aura aucun effet.

<span id="Modifying_multiple-instance_templates">

Modifier des modèles à plusieurs instances
Vous pouvez utiliser  pour modifier les instances existantes ou pour en créer de nouvelles pour un modèle à plusieurs instances. To do that, instead of putting in the query string something like, put in something like , where instance number is an integer that's 0 or higher. Si le numéro d'instance correspond à une instance qui est déjà sur la page, l'instance du modèle existant sera modifiée; si elle est supérieure à cela, une nouvelle instance sera créée, avec cette valeur pour ce champ.

<span id="For_additional_namespaces">

Pour les espaces de noms supplémentaires
Par défaut, la fonctionnalité de modification automatique est disponible pour chacun des soi-disant espaces de noms de contenu, qui par défaut sont juste l'espace de noms principal. Néanmoins, cela peut être modifié en changeant la variable globale $wgPageFormsAutoeditNamespaces dans LocalSettings.php. Par exemple, pour permettre à la modification automatique de s'appliquer aussi aux pages de l'espace de noms User: vous devez ajouter la ligne suivante :

Using #autoedit_rating
Another parser function that works similarly to #autoedit is #autoedit_rating - although, instead of displaying a link or button, it displays a rating-style row of stars; and the number of stars the user selects is what is sent to populate or update the target page.

A listing of the allowed parameters for #autoedit_rating:


 * - formulaire à utiliser
 * - page cible à modifier
 * - the field to be modified in the target page; its name should follow the syntax
 * - nombre d'étoiles à afficher (par défaut 5)
 * - si ajouté à l'appel, permet à l'utilisateur de sélectionner des valeurs de demi-étoile
 * - largeur de chaque étoile, en pixels (par défaut 24)
 * - résumé des mises à jour pour de telles modifications
 * - s'il est ajouté à l'appel, on marque toute les modifications effectuées avec ce lien comme étant des modifications mineures.
 * - si ajouté à l'appel, une fenêtre de confirmation apparaît pour l'utilisateur avant de modifier réellement.

API
La fonctionnalité de modification automatique est également disponible via l'API MediaWiki en tant qu'action  - cela permet aux scripts externes et aux robots de modifier facilement les appels de modèle dans les pages wiki. La documentation complète se trouve ici.