/* 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=|after=}}) - 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"] } ] }