Extension:Semantic Forms Select/ko
출시 상태: 안정 |
|
|---|---|
| 구현 | 사용자 인터페이스, Ajax |
| 설명 | Allows generating a selectable form element inside forms from semantic queries |
| 만든 이 | Jason Zhang, James Hong Kong, Toni Hermoso Pulido |
| 최신 버전 | 4.0.0 (2026-06-04) |
| MediaWiki | 1.43+ |
| PHP | 8.1+ |
| 데이터베이스 변경 | 아니오 |
| Composer | mediawiki/semantic-forms-select |
| Licence | GNU General Public License 2.0 or later |
| 다운로드 | |
| 예시 | sandbox.semantic-mediawiki.org |
|
Compatibility
|
|
| Semantic Forms Select 확장 기능 번역 | |
The Semantic Forms Select extension generates a select form element whose option values are from a semantic query or parser function. Extension:Page Forms (originally Semantic Forms) provides a useful input type for select elements such as dropdown, combobox, and listbox. Their option values can be derived from a static list, pages in a category, concept, property's allowed values, etc. However, it is still limited.
This extension provides these features
- The option values for a select element are from an SMW query or parser function.
- If the SMW query or parser function is not parametrized, its option values are loaded at form generation time.
- If the SMW query or parser function is parametrized, in other words, its values depend on another form field. Its values are loaded through an AJAX call when the trigger field changes.
Usage
Two form fields are involved. 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.
Query And Function parameters
The input type from this extension is SF_Select. Field parameters are shown in the table below.
| Name | Required? | Description | Note |
|---|---|---|---|
| query=x | 예 | Semantic Query | Either query or function must be present. More information. |
| function=x | 예 | Parser Function | Either query or function must be present. More information. |
| template=x | 아니요 | The template the Value field in | Use either template or sametemplate |
| sametemplate | 아니요 | The Value field is in the same template as the Select field | Use either template or sametemplate |
| field=x | 아니요 | the Value field name | Value field has to be pure text field or html select field. Fields with Autocomplete feature are not supported |
| rmdiv | 아니요 | Remove the current instance when the Select field's value is not valid anymore | More information. |
| list | 아니요 | As it is defined in Page Forms | |
| size=x | 아니요 | As it is defined in Page Forms | |
| label | 아니요 | Query properties shown in queries as labels and page names as values | EXPERIMENTAL. Check example 3 below. |
| mandatory | 아니요 | Whether input is mandatory. |
Formats
Query 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.
Function format
{{{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 functions.
To fit a parser function into a field definition, Strip the {{# and }} at the beginning and the end of normal parser function format.
The result from a query or parser function should be a list of strings separated by comma.
Examples
Example 1: Static query
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}}}
Example 2: Static function
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 the current installation.
Example 3: Parametrized query/function
{{{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 @@@@. In this example, the Select field is P2Protocols3. The Value field is Project1. Both the Select field and the Value field are in the same template since we have sametemplate in the 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 the server through an 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 the 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 rmdiv parameter is for.
설치
주의: 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!
Acknowledgement
This project was sponsored by BioTeam and flexdms.
For support, please send an email to the user mailing list of Semantic MediaWiki.
| This extension is included in the following wiki farms/hosts and/or packages: |
