## Objective The `SEARCH_FORM_SCHEMA` schema type defines forms used in the extended `Special:Search` profile. ## Properties - `type` - `tags` simple tags to categorize a schema - `forms` defines the forms and fields to be displayed ### Example
{
"type": "SEARCH_FORM_SCHEMA",
"forms": {
"Foo": [],
}
"tags": [
"search form"
]
}
#### Form definition
- `type` requires `SEARCH_FORM_SCHEMA`
- `forms` defines a collection of forms
- `Books and journals` as title of a form
- `Has title` is a simple input field without any constraints
- `Publication type` is an input field with additional attributes
{
"type": "SEARCH_FORM_SCHEMA",
"forms": {
"Books and journals": [
"Has title",
"Has author",
"Has year",
{
"Publication type": {
"autocomplete": true,
"tooltip": "Some context to be shown ...",
"required": true
}
},
{
"Publisher": {
"autocomplete": true
"tooltip": "message-can-be-a-msg-key"
}
}
],
"Media and files": [ ]
}
}
Fields can define attributes such as:
- `autocomplete` (true, false) whether the field should add an autocomplete function or not
- `tooltip` (text or msg key) shows a tooltip with either a text or retrieves information from a message key
- `placeholder` (text) shown instead of the property name
- `required` (true, false) whether the field input is required before submitting or not
- `type` (HTML5) preselect a specific type field
#### Default form
`default_form` to define a default form that is displayed when no other form was preselected.
{
"type": "SEARCH_FORM_SCHEMA",
"default_form": "Books and journals",
...
}
#### Term parser
The `term_parser` prefix can be used to shorten the input cycle and summarize frequent properties so that a user can write:
- `(in:foobar || phrase:foo bar) lang:fr` instead of
- `[[in:foobar]] || [[phrase:foo bar]]
[[Language code::fr]] OR [[Document language::fr]] OR [[File attachment.Content language::fr]] OR [[Has interlanguage link.Page content language::fr]]`
{
"type": "SEARCH_FORM_SCHEMA",
"term_parser": {
"prefix": {
"lang": [
"Language code",
"Document language",
"File attachment.Content language",
"Has interlanguage link.Page content language"
]
}
}
}
Prefixes are only applicable (and usable as means to shorten the search term) from within the extended search form.
#### Namespaces
`namespaces` section defines namespaces to be preslected or hidden.
- `default_hide` hides the namespace box by default on the extended profile form
- `hidden` identifies namespaces that should be hidden from appearing in any SMW related form
- `preselect` assign a pre-selection of namespaces to a specific form
{
"type": "SEARCH_FORM_SCHEMA",
"namespaces": {
"default_hide": true,
"hidden": [
"NS_PROJECT",
"NS_PROJECT_TALK"
],
"preselect": {
"Books and journals": [
"NS_CUSTOM_BOOKS",
"NS_FILE"
],
"Media and files": [
"NS_FILE"
]
}
}
}
#### Descriptions
Describes a form and is shown at the top of the form fields to inform users about the intent of
the form.
{
"type": "SEARCH_FORM_SCHEMA",
"descriptions": {
"Books and journals": "Short description to be shown on top of a selected form"
}
}
## Validation
`/data/schema/search-form-schema.v1.json`