mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets
synced 2024-12-12 15:35:08 +00:00
d2a37f5f69
The reason for this hook is not the validation itself, because that is already done by `GadgetDefinitionContent->isValid` which is part of the core Content interface, already enforced by ContentHandler. Instead, the hook was here to provide the custom interface message GadgetDefinitionValidator, because the core Content interface is limited to boolean isValid(), which provides a very generic error message. However, nowadays ContentHandler exposes this mechanism directly such that we can directly attach a custom message to it without needing to wait for the stack to reach the EditPage and then override it after the fact from a global hook. Also: * Simplify validation logic towards "is" checks with only an expected description. * Move schema.json file to top-level file. It has been unused for as long as it has been in the repo, despite appearing (due to its placement) to be used as part of the source. It was added, I believe, with the intent to be used by the validator, but it isn't. It also isn't validated or checked for correctness by anything right now. For now, keep it as informal schema in the top-level location for easy discovery where perhaps others can find a use for it. SD0001 mentions gadget developers may want to start using it for Git-maintained gadgets to help with validation in their IDE, after Gadgets 2.0 is launched. Test Plan: * Set `$wgGadgetsRepo = 'json+definition';` * Create `MediaWiki:Gadgets/example.json` * Attempt to save "x" in settings.namespaces item. * Attempt to save "x.zip" in module.pages item. * Fails with this patch, similar as on master. Bug: T31272 Change-Id: I61bc3e40348a0aeb3bd3fa9ca86ccb7b93304095
66 lines
6.5 KiB
JSON
66 lines
6.5 KiB
JSON
{
|
|
"@metadata": {
|
|
"authors": [
|
|
"Daniel Kinzler, brightbyte.de"
|
|
]
|
|
},
|
|
"gadgets-desc": "Lets users select custom [[Special:Gadgets|CSS and JavaScript gadgets]] in their [[Special:Preferences#mw-prefsection-gadgets|preferences]]",
|
|
"prefs-gadgets": "Gadgets",
|
|
"prefs-description-gadgets": "Enable additional features for your account.",
|
|
"gadgets-prefstext": "Below is a list of special gadgets you can enable for your account.\nThese gadgets are mostly based on JavaScript, so JavaScript has to be enabled in your browser for them to work.\nNote that these gadgets will have no effect on this preferences page.\n\nAlso note that these special gadgets are not part of the MediaWiki software, and are usually developed and maintained by users on your local wiki.\nLocal interface administrators can edit the [[MediaWiki:Gadgets-definition|definitions]] of available gadgets, and local administrators can edit their [[Special:Gadgets|descriptions]], where you can see the source code of each gadget. The numbers of users for each gadget on this wiki is listed at [[Special:GadgetUsage|Gadget usage statistics]].",
|
|
"gadgets-prefstext-safemode": "Gadgets are currently unavailable as safe mode has been enabled. Please [[#mw-input-wpforcesafemode|disable safe mode]] to use gadgets.",
|
|
"special-gadgets": "Gadgets",
|
|
"gadgetusage": "Gadget usage statistics",
|
|
"gadgetusage-gadget": "Gadget",
|
|
"gadgetusage-usercount": "Number of users",
|
|
"gadgetusage-noresults": "No gadgets found.",
|
|
"gadgetusage-intro": "This table indicates the number of users who have enabled each gadget on this wiki. An active user is counted as someone who has made an edit in the last {{PLURAL:$1|day|$1 days}}. This list excludes stats for gadgets enabled for everyone by default and may include gadgets that are no longer available.",
|
|
"gadgetusage-intro-noactive": "This table indicates the number of users who have enabled each gadget on this wiki. This list excludes stats for gadgets enabled for everyone by default and may include gadgets that are no longer available.",
|
|
"gadgetusage-activeusers": "Active users",
|
|
"gadgetusage-default": "Default",
|
|
"gadgets-definition": "",
|
|
"gadgets-title": "Gadgets",
|
|
"gadgets-pagetext": "Below is a list of special gadgets users can enable on their [[Special:Preferences#mw-prefsection-gadgets|preferences page]], as defined by the [[MediaWiki:Gadgets-definition|definitions]].\nThis overview provides easy access to the system message pages that define each gadget's description and code.",
|
|
"gadgets-editdescription": "Edit description",
|
|
"gadgets-viewdescription": "View description",
|
|
"gadgets-uses": "Uses",
|
|
"gadgets-required-rights": "Requires the following {{PLURAL:$2|right|rights}}: $1.",
|
|
"gadgets-required-skins": "Available for the {{PLURAL:$2|$1 skin|following skins: $1}}.",
|
|
"gadgets-required-actions": "Limited to the {{PLURAL:$2|\"$1\" page action|following page actions: $1}}.",
|
|
"gadgets-required-namespaces": "Limited to {{PLURAL:$2|namespace $1|the following namespaces: $1}}.",
|
|
"gadgets-required-categories": "Limited to {{PLURAL:$2|category $1|the following categories: $1}}.",
|
|
"gadgets-required-contentmodels": "Limited to {{PLURAL:$2|content model $1|the following content models: $1}}.",
|
|
"gadgets-default": "Enabled for everyone by default.",
|
|
"gadgets-legacy": "Gadget is not loaded. Please migrate to ResourceLoader. ([https://www.mediawiki.org/wiki/Special:MyLanguage/ResourceLoader/Migration_guide_(users) Learn more])",
|
|
"gadgets-packaged": "This gadget is [https://www.mediawiki.org/wiki/ResourceLoader/Package_files packaged], with entry point being $1",
|
|
"gadgets-export": "Export",
|
|
"gadgets-export-title": "Gadget export",
|
|
"gadgets-not-found": "Gadget \"$1\" not found.",
|
|
"gadgets-export-text": "To export the $1 gadget, click on \"{{int:gadgets-export-download}}\" button, save the downloaded file,\ngo to Special:Import on the destination wiki and upload it. Then add the following to MediaWiki:Gadgets-definition page:\n<pre>$2</pre>\nYou must have appropriate permissions on the destination wiki (including the right to edit system messages) and import from file uploads must be enabled.",
|
|
"gadgets-export-download": "Download",
|
|
"gadgets-requires-es6": "This gadget is only supported on ES6-compliant browsers",
|
|
"gadgets-validate-notset": "The property <code>$1</code> is not set.",
|
|
"gadgets-validate-wrongtype": "The property <code>$1</code> must be of type <code>$2</code>.",
|
|
"gadgets-validate-json": "JSON files are specified but not used. They are only valid in packaged gadgets.",
|
|
"gadgets-validate-es6default": "Gadgets requiring ES6 cannot be enabled by default.",
|
|
"gadgets-validate-noentrypoint": "Package flag ignored as no script files are specified.",
|
|
"gadgets-validate-noscripts": "Scripts are ignored, because this gadget sets <code>type=styles</code>.",
|
|
"gadgets-validate-stylepeers": "Peer gadgets are ignored, because this is a styles-only gadget. Set <code>type=general</code> to override.",
|
|
"gadgets-validate-scriptsnotallowed": "Scripts and data files are not used, because this gadget sets <code>type=styles</code>.",
|
|
"gadgets-validate-invalidjs": "Script $1 is not used, due to invalid content model \"$2\".",
|
|
"gadgets-validate-invalidcss": "Stylesheet $1 is not used, due to invalid content model \"$2\".",
|
|
"gadgets-validate-invalidjson": "Data page $1 is not used, due to invalid content model \"$2\".",
|
|
"gadgets-validate-nopeer": "Peer gadget \"$1\" is ignored, because it does not exist.",
|
|
"gadgets-validate-invalidpeer": "Peer gadget \"$1\" is ignored, because it is not a styles-only gadget.",
|
|
"gadgets-validate-invalidactions": "The following {{PLURAL:$2|action is|actions are}} not recognized: $1",
|
|
"gadgets-validate-invalidcontentmodels": "The following content {{PLURAL:$2|model does|models do}} not exist: $1",
|
|
"gadgets-validate-invalidnamespaces": "The following namespace {{PLURAL:$2|number does|numbers do}} not exist: $1",
|
|
"gadgets-validate-invalidskins": "The following {{PLURAL:$2|skin does|skins do}} not exist: $1",
|
|
"gadgets-validate-invalidrights": "The following {{PLURAL:$2|right does|rights do}} not exist: $1",
|
|
"gadgets-validate-invalidtitle": "Page title \"$1\" is invalid",
|
|
"gadgets-validate-unknownpages": "Contains one or more pages without .js, .css or .json suffix. They would not be used.",
|
|
"gadgets-validate-duplicate": "A second definition of gadget $1 was detected and shall be ignored",
|
|
"gadgets-validate-nopage": "Page \"$1\" does not exist.",
|
|
"gadgets-supports-urlload": "This gadget supports loading via URL with <code>?withgadget</code> query parameter."
|
|
}
|