Go to file
Timo Tijhof 9c5b7cef9e Improve localisation on Special:Gadgets, minor code cleanups
For each item, either display human-readable and translated text,
or display a technical non-translatable identifier as `<code>`,
with optional localised text in the title attribute.

* Re-format "rights" as a sentence instead of a bullet list. It was
  the only one using a bullet list, which made it feel a bit long.

* Re-format "actions" as `<code>` since they are not localised.

* Re-format "contentModels" as `<code>`, and add the localised display
  name in a title attribute, same as we do with "rights" already.
  ContentHandler::getLocalizedName() is also used already on
  Special:ChangeContentModel.

* Fix "contentModels" to set `needLineBreakAfter = true`, otherwise
  if a gadget also sets "supportsUrlLoad", then that sentence is
  appended to the previous line.

Update phrasing and sorting to be consistent everywhere, and adopt
native PHP types where possible.

In most cases, I made things alphabetical, with the exception of
Special:Gadgets user interface output, and Gadget class methods,
which both follow the order of most recently added feature last
(rights, skins, actions, namespaces, contentmodels, categories).

Highlights:

* Fix namespace IDs type. These can be strings when they are parsed
  from the gadget definition text, not always integers.

* Add explicit default for 'category'. In theory not needed because
  MediaWikiGadgetsDefinitionRepo has a `$section = '';` default, and
  MediaWikiGadgetsJsonRepo uses GadgetDefinitionContentHandler where
  `category: ''` is part of both the initial page content, as well
  as merged via getDefaultMetadata.

  This default benefits simpler test cases, and static analysis,
  since the Gadget class constructor does not (yet) require it.
  Without this, getCategory() could TypeError due to returning null.

Bug: T63007
Change-Id: I3b2c72a6424d520431d03761d23a5a222518ce3d
2024-03-25 15:37:40 -07:00
.phan Use HookHandlers for CodeEditor hook 2023-08-16 05:30:40 +00:00
i18n Improve localisation on Special:Gadgets, minor code cleanups 2024-03-25 15:37:40 -07:00
includes Improve localisation on Special:Gadgets, minor code cleanups 2024-03-25 15:37:40 -07: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 uses of deprecated wfGetDB() 2024-03-04 18:39:15 +05:30
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 dependencies 2024-02-10 17:22:54 +00:00
package.json build: Updating dependencies 2024-02-10 17:22:54 +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.