Extension:Semantic Forms Select
Semantic Forms Select État de la version : stable |
|
---|---|
Implémentation | Interface utilisateur, Ajax |
Description | Allows to generate a selectable form element inside forms from semantic queries |
Auteur(s) | Jason Zhang, James Hong Kong, Toni Hermoso Pulido |
Maintenance | gesinn.it and others |
Dernière version | 4.0.0-beta (2022-04-28) |
MediaWiki | 1.35+ |
PHP | 7.3+ |
Modifie la base de données |
Non |
Composer | mediawiki/semantic-forms-select |
Licence | Licence publique générale GNU v2.0 ou supérieur |
Téléchargement | |
Exemple | sandbox.semantic-mediawiki.org |
Compatibility
|
|
Traduire l’extension Semantic Forms Select | |
The Semantic Forms Select extension generates a select form element which option values are from semantic query or parser function. Page Forms (originally Semantic Forms) provides useful input type for select elements such as dropdown, combobox, and listbox. Leurs valeurs peut être tirée de listes statiques, de pages d'une catégorie, de concept, des valeurs autorisées d'une propriété... 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 parser.
- Si la requête SMW ou la fonction parser n'a pas de paramètres, les valeurs d'option sont chargées au moment de la génération du formulaire.
- Si la requête SMW ou la fonction parser nécessite des paramètres, en d'autres termes, ses valeurs dépendent d'un autre champ. Ses valeurs sont chargées par une requête ajax lorsque le champ déclencheur est changé.
Utilisation
Deux champs de formulaires sont impliqués. The first one is the form field we are trying to define. It is termed as Select field. The second one is the field the Select field depends on. It is termed as Value field. A change of Value field will trigger the loading of Select field.
Requête et paramètres de fonction
The input type from this extension is SF_Select. Field parameters are shown in the table below.
Name | Required | Description | Note |
---|---|---|---|
query=x | oui | Semantic Query | Either query or function must be present. Autres informations. |
function=x | oui | Parser Function | La requête ou la fonction doit être présente. Autres informations. |
template=x | non | Modèle dans lequel figure le champ Value | Utiliser soit le modèle ou le même modèle |
sametemplate | non | Le champ Value est dans le même modèle que le champ Select | Utiliser soit le modèle ou le même modèle |
field=x | non | the Value field name | Value field has to be pure text field or html select field. Fields with Autocomplete feature are not supported |
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 | Query properties shown in queries as labels and page names as values | EXPERIMENTAL. Check example 3 below. |
mandatory | non | Whether input is mandatory. |
Query And Function format
{{{field|AllProtocols|input type=SF_Select|query=((Category:Protocol));format~list;sep~,;link~none;headers~hide;limit~500}}}
In the above example, the query is [[Category:Protocol]]|format=list|sep=,|link=none|headers=hide|limit=5000. To avoid parsing and text transform, we have to convert [ to (, = to ~ and | to ; in the query.
{{{field|AllProtocols1|input type=SF_Select|function=ask:((Category:Protocol));format~list;sep~,;link~none;headers~hide;limit~500}}}
Parser function follows the same rule. The parser function is ask in example above. We can of course use other valid parser function. To fit a parser function into field definition, Strip the {{# and }} at the beginning and the end of normal parser function format.
The result from query or parser function should be a list of string separated by comma.
Examples
Exemple 1 : requête statique
Values are retrieved when the form is loaded.
{{{field|AllProtocols|input type=SF_Select|query=((Category:Protocol));format~list;sep~,;link~none;headers~hide;limit~500}}}
Exemple 2 : fonction statique
Values are retrieved when the form is loaded.
{{{field|Users|input type=SF_Select|function=getallusers}}}
Here the getallusers is a custom parser function which gives all users in current installation.
Exemple 3: Requête/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}}}
The parameter is the special character string @@@@. Dans cet exemple, le champs Select est P2Protocols3. The Value field is Project1. Both Select field and Value field are in the same template since we have sametemplate in field definition. If Value field is from another template, the template parameter should be used. When Project1 field changes, the @@@@ will be replaced by the value of Project1's value. The query is then sent to server through ajax call. The results will be the option values for P2Protocols3 field. If the current template is multiple, the P2Protocols3 only depends on the Project1 in the same 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}}}
In this case above, when adding a property to be shown (Has Name) and an extra label
parameter, the property value is shown instead of the resulting page name.
Parser functions can be parametrized in the same way.
{{{field|UserInGroup|input type=SF_Select|function=getallusersInGroup:@@@@|sametemplate|field=Group}}}
In this example, we list all users in the selected group of Group field.
In case the queried results contain a comma (,) as a separator one has to choose another separator like e.g. an asterisk (*). Use it both in the query and in the parser 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=*}}}
Example 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}}}
In this example, the Endpoint field depends on P2Protocols4 field in study template. The current template is also a multiple template. Endpoint's value is reloaded after P2Protocols4 changes. After reloading, Endpoint may not have any selected values and it is left in an invalid state. In this case, we may want to automatically remove the current instance. This is what rmdir parameter is for.
Installation
Note : The extensions Semantic MediaWiki and Page Forms are required and should be included before this extension in order to work.
- To install this extension
- Use composer :
php composer.phar require mediawiki/semantic-forms-select "~4.0"
- Add the following line to your "LocalSettings.php" file after invoking the extensions Semantic MediaWiki and Page Forms:
wfLoadExtension( 'SemanticFormsSelect' );
- Done!
Remerciements
This project was sponsored by BioTeam and flexdms.
For support, please send email to the user mailing list of Semantic MediaWiki.
Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : Cette liste ne fait pas autorité. Certaines fermes de wikis ou hôtes et / ou paquets peuvent contenir cette extension même s'ils ne sont pas listés ici. Vérifiez toujours cela avec votre ferme de wikis ou votre hôte ou votre paquet avant de confirmer. |