mediawiki-extensions-Templa.../spec.templatedata.json

121 lines
3.8 KiB
JSON
Raw Normal View History

/*
Specification for the JSON descriptor as used in the
TemplateData extension for MediaWiki.
Author: Timo Tijhof
Author: Trevor Parscal
Property names listed in brackets (e.g. [foo]) are optional. This means
they may be omitted from the object. If a null value is allowed, this will
be explicitly specified.
@structure {Object} Root
@property {null|InterfaceText} [description]
@property {Object} params Contains all parameters.
Keyed by parameter name, contains #Param objects.
@property {Array} [paramOrder] The logical order in which parameters should be
displayed. The array contains each parameter key exactly once.
@property {Array} sets List of groups of parameters that should be used
together. A parameter can be in multiple sets. Not every parameter has to be
in a set. The array contains #Set objects.
@structure {Object} Param
@property {null|InterfaceText} [label] Defaults to key of object in `Root.params`.
@property {boolean} [required=false]
@property {null|InterfaceText} [description]
@property {boolean|string} [deprecated=false] Tooltip for the user detailing
the intent for the deprecated parameters.
@property {Array} [aliases] List of aliases.
An alias is an alternative name for the parameter that may be used instead of
(not in addition to) the primary name. Aliases are not documented in a
separate Param object. If they need more information, they should be in their
own property marked "deprecated".
@property {string} [default] The default value or description thereof.
@property {Type} [type] The type of the expected parameter value.
@property {string} [inherits] Key to another object in `Root.params`.
The current Param object will inherit from that one, with local properties
overriding the inherited ones.
@structure {Object} Set
@property {InterfaceText} label Label of this set.
@property {Array} params One or more parameter keys.
@structure {string} Type
One of the following:
- unknown
When no type is specified.
- string
Any textual value.
- number
Any numerical value (without decimal points or thousand separators).
- wiki-page-name
A valid MediaWiki page name for the current wiki. Doesn't have to exist,
but if not, should be a valid page name to create.
- wiki-user-name
A valid MediaWiki user name for the current wiki. Doesn't have to exist,
but if not should be a valid user name to create.
- content
Page content (such as text style, links and images etc.).
- unbalanced-wikitext
Raw wikitext that should not be treated as standalone content because it
is unbalanced (eg. templates concatenating incomplete wikitext as a bigger
whole such as {{echo|before=<u>|after=</u>}})
- line
Short text field - use for names, labels, and other short-form fields.
@structure {string|Object} InterfaceText
A free-form string (no wikitext) in the content-language of the wiki, or,
an object containing those strings keyed by language code.
Examples:
*/
/**
* [[Template:Unsigned]]
*
* Example usage:
* {{unsigned|JohnDoe|2012-10-18}}
* {{unsigned|user=JohnDoe|year=2012|month=10|day=18|comment=blabla}}
*/
{
"description": "Label unsigned comments in a conversation.",
"params": {
"user": {
"label": "User's name",
"type": "wiki-user-name",
"required": true,
"description": "User name of person who forgot to sign their comment.",
"aliases": ["1"]
},
"date": {
"label": "Date",
"description": {
"en": "Timestamp of when the comment was posted, in YYYY-MM-DD format."
},
"aliases": ["2"]
},
"year": {
"label": "Year",
"type": "number"
},
"month": {
"label": "Month",
"inherits": "year"
},
"day": {
"label": "Day",
"inherits": "year"
},
"comment": {
"required": false
}
},
"sets": [
{
"label": "Date",
"params": ["year", "month", "day"]
}
]
}