Jump to content

Extension:Semantic Forms Select

From mediawiki.org
This page is a translated version of the page Extension:Semantic Forms Select and the translation is 100% complete.
Manuel des extensions MediaWiki
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

  • Semantic MediaWiki 6.0+
  • Page Forms 5.3.0+
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 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 :

  1. Utiliser composer  :
    php composer.phar require mediawiki/semantic-forms-select "~4.0"
    
  2. Ajouter la ligne suivante à votre fichier LocalSettings.php après avoir invoqué les extensions Semantic MediaWiki et Page Forms :
    wfLoadExtension( 'SemanticFormsSelect' );
    
  3. 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.