Extension:Semantic Forms Select
État de la version : stable |
|
|---|---|
| Implémentation | Interface utilisateur, Ajax |
| Description | Allows generating a selectable form element inside forms from semantic queries |
| Auteur(s) | Jason Zhang, James Hong Kong, Toni Hermoso Pulido |
| Dernière version | 4.0.0 (2026-06-04) |
| MediaWiki | 1.43+ |
| PHP | 8.1+ |
| Modifie la base de données |
Non |
| Composer | mediawiki/semantic-forms-select |
| Licence | Licence publique générale GNU v2.0 ou ultérieur |
| Téléchargement | |
| Exemple | sandbox.semantic-mediawiki.org |
|
Compatibility
|
|
| Traduire l’extension Semantic Forms Select | |
L'extension Semantic Forms Select génère un élément de formulaire select dont les valeurs des options sont le query sémantique ou la fonction d'analyse. Extension:Page Forms (initialement Semantic Forms) fournit un type d'entrée utile pour les éléments de sélection tels que : zone déroulante, boîte de liens et boîte de listes. La valeur des options peut être tirée d'une liste statique, des pages d'une catégorie, de concept, des valeurs autorisées d'une propriété, etc. Quoi qu'il en soit, le choix est limité.
Cette extension fournit ces caractéristiques
- Les valeurs des options d'un élément select proviennent d'une requête SMW ou d'une fonction d'analyse.
- Si la requête SMW ou la fonction d'analyse n'a pas de paramètre, les valeurs des options sont chargées au moment de la génération du formulaire.
- Si la requête SMW ou la fonction parser possède des paramètres, en d'autres termes, ses valeurs dépendent d'un autre champ du formulaire. Ses valeurs sont chargées par une requête ajax lorsque le champ déclencheur est modifié.
Utilisation
Deux champs de formulaire sont concernés. Le premier est le champ de formulaire que nous essayons de définir. C'est le champ Select. Le second champ est celui duquel Select dépend. C'est le champ Value. Un changement du champ Value déclenche le chargement du champ Select .
Requête et paramètres de fonction
Le type d'entrée de cette extension est SF_Select. Les paramètres de champs sont indiqués dans le tableau ci-dessous.
| Nom | Obligatoire | Description | Note |
|---|---|---|---|
| query=x | oui | requête sémantique | query ou function doit être présent. Autres informations. |
| function=x | oui | fonction d'analyse syntaxique | query ou function doit être présent. Autres informations. |
| template=x | non | modèle dans lequel figure le champ Value | utiliser template ou sametemplate |
| sametemplate | non | le champ Value est dans le même modèle que le champ Select | utiliser template ou sametemplate |
| field=x | non | nom du champ Value | Le champ de Value doit être un champ de texte pur ou un champ de sélection html. Les champs avec la fonctionnalité d'autocomplétion ne sont pas pris en charge |
| rmdiv | non | supprimer l'instance actuelle lorsque la valeur du champ Select n'est plus valide | autres informations. |
| list | non | comme défini dans Page Forms | |
| size=x | non | comme défini dans Page Forms | |
| label | non | propriétés de query affichées dans les requêtes comme étiquette et noms de page affichés en tant que valeur | EXPERIMENTAL — voir l'exemple 3 ci-dessous. |
| mandatory | non | si l'entrée est obligatoire. |
Formats
Format de query
{{{field|AllProtocols|input type=SF_Select|query=((Category:Protocol));format~list;sep~,;link~none;headers~hide;limit~500}}}
Dans l'exemple ci-dessus, query vaut [[Category:Protocol]]|format=list|sep=,|link=none|headers=hide|limit=5000.
Pour éviter l'analyse et la transformation du texte, il faut convertir [ en (, = en ~ et | en ; dans le query.
Format de function
{{{field|AllProtocols1|input type=SF_Select|function=ask:((Category:Protocol));format~list;sep~,;link~none;headers~hide;limit~500}}}
La fonction de l'analyseur suit la même règle.
Dans l'exemple ci-dessus, c'est la fonction d'analyse qui est demandée.
Nous pouvons bien sûr utiliser d'autres fonctions valides d'analyse.
Pour adapter une fonction d'analyse à la définition du champ, supprimer les {{# et }} au début et à la fin du format normal du format de la fonction d'analyse.
Le résultat du query ou de la fonction d'analyse doit être une liste de chaînes séparées par des virgules.
Exemples
Exemple 1 : requête statique
Les valeurs sont récupérées quand le formulaire est chargé.
{{{field|AllProtocols|input type=SF_Select|query=((Category:Protocol));format~list;sep~,;link~none;headers~hide;limit~500}}}
Exemple 2 : fonction statique
Les valeurs sont récupérées quand le formulaire est chargé.
{{{field|Users|input type=SF_Select|function=getallusers}}}
Ici, getallusers est une fonction d'analyse personnalisée qui donne tous les utilisateurs dans l'installation actuelle.
Exemple 3 : Requête ou fonction paramétrique
{{{field|P2Protocols3|input type=SF_Select|query=((Category:Protocol))((Protocol Belongs to Project::@@@@));format~list;sep~,;link~none;headers~hide;limit~
200|sametemplate|field=Project1}}}
Le paramètre est la chaîne de caractères spéciale @@@@. Dans cet exemple, le champs Select est P2Protocols3. Le champ Value vaut Project1. Les champs Select et Value sont dans le même modèle grâce à la définition du champ sametemplate. Si le champ Value vient d'un autre modèle, le paramètre template doit être utilisé. Lorsque le champ Project1 est modifié, @@@@ sera remplacé par ce que vaut Project1. La requête est ensuite envoyée au serveur à l'aide d'un appel Ajax. Les résultats seront les valeurs d'options pour le champ P2Protocols3. Si le modèle actuel est multiple, P2Protocols3 ne dépend que de Project1 dans la même instance.
{{{field|P2Protocols3|input type=SF_Select|query=((Category:Protocol))((Protocol Belongs to Project::@@@@));?Has Name;format~list;sep~,;link~none;headers~hide;limit~
200|sametemplate|field=Project1|label}}}
Dans ce cas ci-dessus, lorsque vous ajoutez une propriété à afficher (Has Name) et un paramètre supplémentaire label, la valeur de la propriété est affichée au lieu du nom de la page résultante.
Les fonctions d'analyse peuvent être paramétrées de la même manière.
{{{field|UserInGroup|input type=SF_Select|function=getallusersInGroup:@@@@|sametemplate|field=Group}}}
Dans cet exemple, nous listons tous les utilisateurs du groupe sélectionné dans le champ Group.
Si les résultats demandés contiennent une virgule (,) comme séparateur, on doit choisir un autre séparateur comme par exemple un astérisque (*). Utilisez-le pour query et pour function.
{{{field|Protocol1|input type=SF_Select|query=((Category:Protocol))((Protocol Belongs to Project::@@@@));format~list;sep~*;link~none;headers~hide;limit~200|sametemplate|field=Project1|sep=*}}}
Exemple 4 : rmdiv
{{{for template|StudyProtocolMultiple3|label=Demonstrate External Dependency multiple, rmove|multiple}}}
{|
!Depends on Protocols 5 on Study template
|{{{field|Endpoint|input type=SF_Select|list|size=2|query=((Is a Protocol Endpoint::@@@@));mainlabel~-;?Endpoint Name;format~list;sep~,;headers~hide;limit~5
0|list|size=5|template=Study|field=P2Protocols4|rmdiv}}}
|}
{{{end template}}}
Dans cet exemple, le champ Endpoint dépend du champ P2Protocols4 dans le modèle d'étude.
Le modèle actuel est également un modèle multiple.
La valeur du point d'accès Endpoint est rechargée après que P2Protocols4 est modifié.
Après le rechargement, Endpoint peut ne pas avoir de valeurs sélectionnées et reste dans un état non valide.
Dans ce cas, nous pourrions vouloir supprimer automatiquement l'instance actuelle.
C'est le rôle du paramètre rmdiv.
Installation
Note : Les extensions Semantic MediaWiki et Page Forms sont nécessaires et doivent être incluses avant cette extension pour que cela fonctionne.
Pour installer cette extension :
- Utiliser composer :
php composer.phar require mediawiki/semantic-forms-select "~4.0"
- Ajouter la ligne suivante à votre fichier LocalSettings.php après avoir invoqué les extensions Semantic MediaWiki et Page Forms :
wfLoadExtension( 'SemanticFormsSelect' );
- voilà, c'est fait !
Remerciements
Ce projet a été sponsorisé par BioTeam et flexdms.
Pour le support, veuillez envoyer un courriel à la liste de diffusion de Semantic MediaWiki.
| Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : |
