Go to file
Timo Tijhof d2a37f5f69 Replace EditFilterMergedContent hook with ContentHandler override
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
2024-04-24 19:31:14 +00:00
.phan Use HookHandlers for CodeEditor hook 2023-08-16 05:30:40 +00:00
i18n Replace EditFilterMergedContent hook with ContentHandler override 2024-04-24 19:31:14 +00:00
includes Replace EditFilterMergedContent hook with ContentHandler override 2024-04-24 19:31:14 +00:00
tests/phpunit Improve localisation on Special:Gadgets, minor code cleanups 2024-03-25 15:37:40 -07:00
.eslintrc.json build: Update linters 2023-07-01 14:26:21 +01:00
.gitignore Fix typos, update gitignore with OS tempfiles 2020-03-11 21:24:22 +05:30
.gitreview Whoops, track not trace 2016-10-24 17:02:35 -07:00
.phpcs.xml Add missing @var and improve documentation 2020-12-18 00:21:49 +01:00
CODE_OF_CONDUCT.md build: Updating mediawiki/phan-taint-check-plugin to 1.3.0 2018-08-19 12:48:57 +00:00
composer.json build: Upgrade mediawiki/mediawiki-codesniffer to v43.0.0 2024-03-10 19:23:46 +01:00
COPYING Add COPYING 2014-01-16 02:31:28 +00:00
extension.json Replace EditFilterMergedContent hook with ContentHandler override 2024-04-24 19:31:14 +00:00
GadgetDefinition.schema.json Replace EditFilterMergedContent hook with ContentHandler override 2024-04-24 19:31:14 +00:00
Gadgets.alias.php Add aliases for Simplified & Traditional Chinese 2024-01-07 17:08:00 +08:00
Gruntfile.js build: Update linters 2023-07-01 14:26:21 +01:00
package-lock.json build: Updating eslint-config-wikimedia to 0.27.0 2024-04-17 11:19:19 +00:00
package.json build: Updating eslint-config-wikimedia to 0.27.0 2024-04-17 11:19:19 +00:00
README.md Make repo configuration independent of ObjectFactory specs 2023-12-12 13:15:31 +00:00

Gadgets

The Gadgets extension provides a way for users to pick JavaScript or CSS based "gadgets" that other wiki users provide.

See https://www.mediawiki.org/wiki/Extension:Gadgets for more documentation.

The Gadgets extension was originally written by Daniel Kinzler in 2007 and is released under the GNU General Public Licence (GPL).

Prerequisites

This version of Gadgets requires MediaWiki 1.27 or later. To get a version compatible with an earlier MediaWiki release, visit ExtensionDistributor/Gadgets.

Installing

Copy the Gadgets directory into the extensions folder of your MediaWiki installation. Then add the following lines to your LocalSettings.php file (near the end):

wfLoadExtension( 'Gadgets' );

Usage

See https://www.mediawiki.org/wiki/Extension:Gadgets#Usage

Caveats

  • Gadgets do not apply to Special:Preferences, Special:UserLogin and Special:ResetPass so users can always disable any broken gadgets they may have enabled, and malicious gadgets will be unable to steal passwords.

Configuration

  • $wgGadgetsRepo: configures which GadgetRepo implementation will be used to source gadgets from. Currently, "definition" mode is the recommended setting and default. The "json" mode is not ready for production usage yet.
  • $wgSpecialGadgetUsageActiveUsers: configures whether or not to show active user stats on Special:GadgetUsage. True by default.