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 la 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. Il y a une raison pour laquelle l'étape initiale dans laquelle l'utilisateur entre d'abord le nom de la page : 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 à, 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, c'est à dire la manière standard de fournir les formulaires aux utilisateurs, est fait en utilisant la fonction d'analyseur.



Utiliser #forminput
Voici la syntaxe de la fonction analyseur  :



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. Pour faire cela, ajoutez  au paramètre query string=.

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.



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



Détail des paramètres :

Exemple d'appel à  :



Cela permettra de lier la page, via un bouton, à un formulaire pour ajouter une citation, avec le champ "Auteur" initialisé avec le nom de la page actuelle. S'il existe des valeurs multiples, elles doivent être séparées par.



Notez que si une partie de votre chaîne de requête - comme le nom d'une page ou autre chose - contient des caractères tels que des apostrophes, des et-commerciaux ou des signes plus , vous devrez encoder cette valeur URL. Pour cela, vous pouvez utiliser la fonction  de l'extension ParserFunctions. L'exemple ci-dessus par exemple, devrait être modifié en :.

Vous voudrez peut-être que le lien vers le formulaire soit une image, au lieu d'un texte ou d'un bouton. 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. Pour une explication plus complète, voir.



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).



Utiliser #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. Un appel typique à  ira dans un modèle, et ressemblera à :

La syntaxe globale de  est :



Ces paramètres sont très similaires à ceux de  (voir ci-dessus). 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 " " 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. Les pages créées avec cette méthode seront associées à l'ID utilisateur 1 (c'est à dire le premier utilisateur créé sur le wiki), à moins que vous n'initialisiez   avec un autre nom d'utilisateur.

Il peut arriver que vous ne soyez pas sûr du formulaire utilisé pour créer un lien vers une page; il peut se trouver dans un ensemble à choisir. Vous pouvez l'initialiser de sorte que l'utilisateur obtienne d'autres possibilités lorsqu'il clique sur le lien rouge, en ajoutant un ou plusieurs paramètres à la chaîne de requête  dans l'appel de #formredlink, chacun avec son propre numéro.

À titre d'exemple, voir cette page. A la fois l'auteur et la source ont un lien en rouge, mais les liens vous mènent aux formulaires pour ajouter ces deux pages (veuillez ne pas remplir ni soumettre ces formulaires, car cela casserait l'exemple). Lorsque vous accédez aux formulaires de chaque page, vous pouvez voir, en haut, qu'il y a des formulaires alternatifs que vous pouvez sélectionner pour ajouter chaque page. Cette possibilité est fournie par les deux appels suivants à #formredlink dans le modèle où ces liens sont définis :

Pour la source :

Pour l'auteur :

Dans la page d'exemple, l'appel dans la source crée un lien vers. Notez qu'aucun formulaire principal ou par défaut n'est spécifié; seuls les formulaires alternatifs.

L'appel auteur est plus complexe car ce champ peut contenir une liste de valeurs. est utilisé pour insérer un appel à  pour chaque valeur individuelle; ainsi que pour stocker chaque valeur individuelle en utilisant une propriété SMW.

Notez que la variable interne utilisée pour cet appel  est "xx", et non "x" - "x" aurait pu être utilisé ici aussi, mais si l'appel   avait utilisé ses paramètres link text= ou existing link text=, ceux-ci auraient échoué, car ils contiennent la lettre "x"; "xx" est plus sûr ici.



Espaces de noms associés aux formulaires
Si vous avez, les liens rouges qui vont à une page de cet espace de noms iront aussi dans le bon formulaire ajouter des données, sans aucun travail supplémentaire nécessaire.



Faire pointer les liens en rouge vers un sélecteur de formulaires
Pour les liens rouges non définis par  et qui ne pointent pas vers un espace de noms associé à un formulaire, vous pouvez avoir chaque lien qui pointe vers une page d'aide, ce qui permet à l'utilisateur de choisir le formulaire du wiki à utiliser pour créer cette page - ou ne pas utiliser de formulaire du tout. You can enable this functionality simply by adding the following to LocalSettings.php, below the inclusion of PF:

Vous pouvez voir un exemple de cette interface en cliquant sur le lien rouge ici (mais s'il vous plaît, pour la validité de l'exemple ne créez pas cette 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 :

The function registered with this hook should have a header like. 
 * Indiquez une valeur par défaut pour tous les champs où vous attendez une valeur dans le formulaire.
 * Indiquez une page de préchargement pour l'entrée texte libre, qui va précharger le champ du texte libre avec le contenu de cette 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 "&":
 * Pour précharger les valeurs pour les modèles à instance multiples, ajoutez le numéro de l'instance après le nom du modèle. So you could have something like for two instances.
 * De même, vous pouvez ajouter une valeur pour un champ spécifique à la chaîne de requête de l'URL pour 'FormStart' ou '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.

Passer un contexte
Un appel à #forminput ou #formlink peut inclure des paramètres de chaîne de requête arbitraires, que le formulaire peut ensuite utiliser pour modifier des aspects tels que l'affichage, les valeurs d'autocomplétion, 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.

Par exemple, disons qu'il existe un formulaire appelé "Document" qui contient un champ Owner, que vous voulez compléter automatiquement avec différents noms selon le département de l'entreprise pour lequel le formulaire est appelé. Un appel à  ou   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 d'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, 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,  , a missing value for "link type" is the same as setting the value to "link"; while for  , the two are different. Dans  , une valeur manquante pour link type affichera le texte en tant que texte sans lien, tandis que la définition   affichera un 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 :

<span id="Using_#autoedit_rating">

Utiliser #autoedit_rating
Another parser function that works similarly to #autoedit is  - 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. Liste des paramètres autorisés pour  :


 * - formulaire à utiliser
 * - page cible à modifier
 * - champ à modifier dans la page cible; son nom doit suivre la syntaxe
 * - 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.