Extension:Page Forms/Lier les formulaires
Comment amener les utilisateurs sur les formulaires ?
La manière standard est via l'appel de la fonction analyseur #forminput
, 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 (PF) : 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 #formlink
au lieu de #forminput
.
Les formulaires de requête, qui utilisent Special:RunQuery, ont leur propre méthode de lien et utilisent la fonction d'analyseur #queryformlink
.
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 #forminput
.
Utiliser #forminput
Voici la syntaxe de la fonction analyseur #forminput
:
{{#forminput:form=|size=|default value=|button text=|query string=query string parameters|autocomplete on category=|autocomplete on namespace=|placeholder=|namespace selector=|super_page=|popup|reload|no autofocus|returnto=}}
Tous les paramètres sont facultatifs. Les paramètres sont détaillés ci-dessous :
Paramètre | Description |
---|---|
form=
|
nom du formulaire Page Forms à utiliser. Si une liste de formulaires est transmise avec des virgules de séparation, une liste déroulante apparaîtra, permettant à l'utilisateur de choisir entre ces formulaires. Si ce paramètre est laissé vide, une liste déroulante apparaîtra permettant à l'utilisateur de choisir parmi l'ensemble des formulaires existants. |
size=
|
taille de l'entrée de texte. Ce paramètre est malheureusement ignoré depuis que Page Forms v5 a été modifié pour utiliser OOUI. |
default value=
|
valeur de départ de l'entrée |
button text=
|
texte qui apparaîtra sur le bouton Soumettre
(par défaut, Créer ou modifier une page). |
query string=
|
vous pouvez utiliser cette option pour passer des informations au formulaire sous la forme suivante : nomDuModèle[nomDuChamp]=valeur. Ce qui devrait ressembler à la chaîne de requête d'URL typique; un exemple serait "query string=namespace=User&User[Is_employee]=yes". de plus, toutes les valeurs de la chaîne de la requête peuvent être transmises directement en tant que paramètres - de sorte que les valeurs ci-dessus pourraient être passées comme "|namespace=User|User[Is_employee]=yes". a query string can also be used to add an edit summary automatically |
autocomplete on category=
|
ajoute l'autocomplétion sur l'entrée, en utilisant les noms de toutes les pages d'une catégorie spécifique. |
autocomplete on namespace=
|
ajoute l'autocomplétion de l'entrée, en utilisant le nom de toutes les pages d'un espace de noms spécifique (seule une de ces deux pages peut être utilisée). Pour l'espace de noms principal, utiliserMain
|
placeholder=
|
texte initial qui apparaît dans l'entrée du formulaire avant que l'utilisateur ne tape quoi que ce soit. |
namespace selector=
|
spécifie qu'une liste déroulante doit être placée avant l'entrée du nom de la page, permettant à l'utilisateur de choisir parmi un ensemble d'espaces de noms possibles pour cette page; la valeur de ce paramètre contient cet ensemble de noms d'espace de noms, séparés par des virgules. (Pour l'espace de noms principal, il suffit d'avoir une valeur à blanc, comme ,User,Project .)
|
popup
|
ouvre le formulaire dans une fenêtre contextuelle. |
no autofocus
|
par défaut; l'entrée du formulaire obtient l'autofocus, c'est-à-dire que le curseur est placé sur l'entrée lorsque la page est chargée; ce paramètre spécifie qu'il ne faut pas le faire. |
returnto=
|
nom d'une page sur laquelle l'utilisateur sera envoyé après avoir soumis le formulaire, au lieu d'aller simplement sur la page enregistrée. |
reload
|
si "popup" ou "returnto" sont spécifiés, la page sur laquelle l'utilisateur se retrouve après avoir soumis le formulaire avec "action=purge" est alors rechargée. |
super_page=
|
Cela préfixera un current-page-name/ au début du nom de la page que l'utilisateur aura entré. Voir la section Ajouter des sous-pages |
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 namespace=namespace-name' au paramètre query string=.
Exemple d'appel de #forminput
:
{{#forminput:form=ExampleForm |query string=namespace=ExampleNamespace&={{PAGENAME}} }}
(Notez que, si vous voulez utiliser SMW sur un espace de noms personnalisé, vous devez ajouter l'espace de noms à $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. Pour que la page ajoutée soit automatiquement une sous-page, vous pouvez ajouter une valeur pour "super_page=" dans la chaîne de la requête. Pour en faire une sous-page de la page actuelle, vous pouvez définir cette valeur à "super_page={{FULLPAGENAME}}". Cela préfixera un current-page-name/ 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 page name
dans la balise info
de la définition du formulaire.
Il existe deux types de variables que l'on peut inclure dans la valeur de ce paramètre :
<template-name[field-name]>
- remplace par la valeur du champ field-name spécifié dans le modèle template-name. Remarque: cela ne fonctionne pas lorsque la balisefor template
est déclarée commemultiple
.<unique number>
- 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ètrestart=
; 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 à<unique number;start=1>
. 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 à<unique number;random>
. Vous pouvez également définir un nombre de chiffres différent de 6, en ajoutant un nombre après random, comme<unique number;random;4>
. Notez que pour tous ces cas, les paramètres sont séparés par des points-virgules- Notez que la valeur
page name=
ne peut pas contenir le caractère#
, car MediaWiki ne permet pas ce caractère dans les titres de page.
- Notez que la valeur
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 {{{info}}}
pourrait avoir un paramètre page name=<Quot[Author name]> quote <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 "http://mywiki.com/Special:FormEdit/Quote"
et remplir le formulaire; si l'auteur était fixé à "Ernest Hemingway"
, et qu'aucune autre citation dans le wiki ne l'avait comme auteur, en appuyant sur le bouton Enregistrer la page on obtiendrait une nouvelle page appelée "Ernest Hemingway quote 1"
.
La valeur de start
peut avoir des zéros en tête; une valeur de 001
, par exemple, conduirait à des pages qui auraient la valeur 001
, puis 002
, etc.
La valeur de page name=
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 Special:FormEdit/form-name
pour que cette configuration automatique de page puisse fonctionner ; s'ils s'arrêtent d'une manière quelconque à l'appel de #forminput
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 #formlink
, au lieu de créer l'URL directement. Cette fonction est appelée ainsi :
{{#formlink:form=|link text=|link type=|query string=query string parameters|target=|tooltip=|popup|reload|new window|returnto=}}
form=
, la chaîne de requête et les arguments popup
fonctionnent en #formlink
d'une manière très similaire à celle de leurs équivalents dans #forminput
.
Détail des paramètres :
link text=
|
fonctionne comme button text= (voir ci-dessus).
|
link type=
|
définit l'affichage du lien :
|
target=
|
ne devrait pas être utilisé habituellement, mais il définit la page cible à modifier, si vous voulez lier à l'édition d'une page spécifique. |
tooltip=
|
affiche une bulle d'aide si un utilisateur survole le lien avec la souris. |
popup
|
ouvre le formulaire dans une fenêtre contextuelle. (Remarque: les formulaires apparaissant dans une fenêtre contextuelle ne fonctionnent peut-être pas si vous avez installé l'extension ConfirmEdit - les utilisateurs peuvent ne pas voir le CAPTCHA qu'ils doivent remplir). |
new window
|
ouvre le formulaire dans une nouvelle fenêtre ou onglet, selon le navigateur. |
returnto=
|
le nom d'une page à laquelle l'utilisateur sera envoyé après avoir soumis le formulaire, au lieu de simplement accéder à la page enregistrée. |
reload
|
si "popup" ou "returnto" sont spécifiés, la page sur laquelle l'utilisateur se retrouve après avoir soumis le formulaire avec "action=purge " est alors rechargée.
|
Exemple d'appel à #formlink
:
{{#formlink:form=Quote|link text=Add a quote for this author|link type=button|query string=Quote[Author]={{PAGENAME}} }}
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 &
.
{{#formlink:form=Quote|link text=Add a quote for this author|link type=button|query string=Quote[Author]={{PAGENAME}}&Quote[Editor]=The MIT Press }}
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 urlencode
de l'extension ParserFunctions.
L'exemple ci-dessus par exemple, devrait être modifié en : Quote[Author]={{urlencode:{{PAGENAME}}}}
.
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 :
{{#formlink:form=Quote|link text=[[File:edit.png|link=]]}}
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 #queryformlink
.
Cela s'appelle de la même manière que #formlink
, sauf qu'il n'y a pas de paramètre target.
Pour une explication plus complète, voir Creating links to query forms .
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 #formredlink
.
Un appel typique à #formredlink
ira dans un modèle, et ressemblera à :
{{#formredlink:target={{{PageNameParameter|}}}|form=FormName}}
La syntaxe globale de #formredlink
est :
{{#formredlink:form=|link text=|existing page link text=|link type=|query string=query string parameters|target=|tooltip=|popup|reload|new window|create page}}
Ces paramètres sont très similaires à ceux de #formlink
(voir ci-dessus).
Il a deux paramètres supplémentaires :
- "existing page link text=" - définit le texte du lien lorsque la page cible sur laquelle on pointe existe déjà (le paramètre "
link text=
" n'a d'effet que si la page cible n'existe pas). - "create page" - force le système à créer automatiquement les pages associées aux liens en rouge Il faut noter qu'il que la création de page peut prendre un certain temps, puisqu'elle est effectuée via MediaWiki "jobs ", qui peut prendre de quelques secondes à plusieurs heures ou plus pour s'exécuter, en fonction de la longueur de la file d'attente des travaux. 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
$wgPageFormsAutoCreateUser
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 alt_form
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 :
{{#formredlink:target={{{source|}}}|alt_form[0]=Source|alt_form[1]=Magazine|alt_form[2]=Online magazine}}
Pour l'auteur :
{{#arraymap:{{{author|}}}|,|xx|{{#set:Was written by=xx}}{{#formredlink:target=xx|form=Author|alt_form[0]=Editorial board}}}}
Dans la page d'exemple, l'appel dans la source crée un lien vers Special:FormEdit/The_Denver_Post?alt_form[0]=Source&alt_form[1]=Magazine&alt_form[2]=Online magazine&redlink=1
.
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.
#arraymap
est utilisé pour insérer un appel à #formredlink
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 #arraymap
est "xx", et non "x" - "x" aurait pu être utilisé ici aussi, mais si l'appel #formredlink
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 défini un espace de noms comme ayant un formulaire par défaut , 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 #formredlink
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.
Vous pouvez activer cette fonctionnalité en ajoutant simplement ce qui suit à LocalSettings.php, en dessous de l'inclusion de PF :
$wgPageFormsLinkAllRedLinksToForms = true;
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 :
- 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.
- Ajoutez
preload=preload-page-name
à la valeur de la chaîne de la requête dans l'appel 'forminput'; cela va précharger l'ensemble du formulaire avec le contenu de cette page. - De même, vous pouvez ajouter une valeur "preload=..." à la chaîne de la requête pour une URL "FormStart" ou "FormEdit".
- Ajoutez
template-name[field-name]=field-value
à la valeur de la chaîne de la requête dans l'appel "forminput" pour définir la valeur pour un champ spécifique. Pour précharger les valeurs pour plusieurs champs utilisez "&" :template-name[field-name-1]=field-value-1&template-name[field-name-2]=field-value-2
- 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. Vous pourriez avoir quelque chose comme
template-name[1][field-name]=field-value&template-name[2][field-name]=field-value
pour deux 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'.
- Enfin, vous pouvez créer votre propre traitement personnalisé, en utilisant l'accroche sfEditFormPreloadText. Si une autre extension appelle cette accroche, elle peut précharger des données comme elle veut. La fonction enregistrée avec cette accroche doit avoir un en-tête comme
function-name(&$page_contents, $page_title, $form_title)
.
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 UrlGetParameters 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 à #forminput
ou #formlink
pour ce formulaire pourrait alors contenir le paramètre |query string=department=Finance
.
Si vous utilisez l'extension Cargo, la balise pour ce champ du formulaire pourrait alors ressembler à :
{{{field|Owner|input type=combobox|cargo table=Employees|cargo field=_pageName|cargo where=Department='{{#urlget:department}}' }}}
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 #formlink
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 #autoedit
.
Cette fonction est appelée et affichée d'une manière très similaire à #formlink
- 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 #autoedit
est :
{{#autoedit:form=|target=|link text=|link type=|summary=|minor|tooltip=|query string=query string parameters|reload|confirm|confirm text=}}
Tous ces paramètres fonctionnent de la même manière que dans #formlink
, à quatre exceptions près :
minor
- s'il est ajouté à l'appel, on marque toute les modifications effectuées avec ce lien comme étant des modifications mineures.reload
- s'il est ajouté à l'appel, la page actuelle est rechargée après avoir cliqué sur le lien.confirm
- s'il est ajouté à l'appel, une fenêtre de confirmation apparaît pour l'utilisateur avant de modifier réellement.confirm text=
- ifconfirm
was added, specifies the text (presumably, a question) that users will see before they agree to the edit.- Comme avec
#formlink
,link type
définit le type d'affichage et peut être initialisé à "link" ou "button" (le "bouton de publication" n'est pas une option). Cependant, pour#formlink
, une valeur manquante pour "link type" est la même chose que l'initialisation à "link"; tandis que pour#autoedit
, les deux choses sont différentes. Dans#autoedit
, une valeur manquante pour link type affichera le texte en tant que texte sans lien, tandis que la définitionlink type=link
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 :
{{#autoedit:form=Flavor|target=Vanilla|link text=Vote for Vanilla|link type=link|query string=Flavor[Num votes]={{#expr:{{#cargo_query:table=Flavors| field=Num_votes |no html}} + 1}}|summary=Adding vote {{#expr:{{#cargo_query:table=Flavors| field=Num_votes |no html}} + 1}}.}}
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 checkboxes
ou tokens
).
Pour ajouter une valeur à une telle liste, au lieu d'avoir un appel comme template name[field name]=value
dans la chaîne de requête, utilisez un appel comme template name[field name]+=value
.
Et pour supprimer une valeur, utilisez un appel comme template name[field name]-=value
.
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.
Modifier des modèles à plusieurs instances
Vous pouvez utiliser #autoedit
pour modifier les instances existantes ou pour en créer de nouvelles pour un modèle à plusieurs instances.
Pour faire cela, au lieu de mettre dans la chaîne de requête quelque chose comme template name[field name]=value
, mettez quelque chose comme template name[instance number][field name]=value
où le "numéro d'instance" est un entier positif ou nul.
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.
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 :
$wgPageFormsAutoeditNamespaces[] = NS_USER;
Utiliser #autoedit_rating
Une autre fonction de partage qui fonctionne de la même manière que "#autoedit" est #autoedit_rating
- bien que, au lieu d'afficher un lien ou un bouton, elle affiche une rangée d'étoiles du style notation; et le nombre d'étoile que l'utilisateur sélectionne est ce qui est envoyé pour remplir ou mettre à jour la page cible.
Liste des paramètres autorisés pour #autoedit_rating
:
form
- formulaire à utilisertarget
- page cible à modifierrating field
- champ à modifier dans la page cible; son nom doit suivre la syntaxetemplate-name[field-name]
num stars
- nombre d'étoiles à afficher (par défaut 5)allow half stars
- si ajouté à l'appel, permet à l'utilisateur de sélectionner des valeurs de demi-étoilestar width
- largeur de chaque étoile, en pixels (par défaut 24)summary
- résumé des mises à jour pour de telles modificationsminor
- s'il est ajouté à l'appel, on marque toute les modifications effectuées avec ce lien comme étant des modifications mineures.confirm
- 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 pfautoedit
- 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.
Delaying reload
The parser functions #forminput, #formlink, #formredlink and #autoedit all allow a reload
parameter, to reload the page that holds this parser function after the other page is modified, usually so that any relevant queries on that page can be refreshed. (For all but #autoedit, the reload
parameter has to be paired with either returnto=
or popup
.) By default, the reload happens right after the change is made, which in some cases is too soon, before the underlying data has changed. If this is the case on your wiki, you can add the following line to LocalSettings.php, which introduces a slight delay before the reload, hopefully giving the data enough time to be modified first:
$wgPageFormsDelayReload = true;