Commit graph

27 commits

Author SHA1 Message Date
Umherirrender f6b16d34de Use namespaced classes
Changes to the use statements done automatically via script
Addition of missing use statement done manually

Change-Id: Ib342f7315b331c18b3f7d9e3c22ff3e4d5d8c7f2
2024-10-20 01:15:50 +02:00
Umherirrender 557cd3826d specials: Get global via IContextSource::getConfig
Change-Id: I21a7164913514b919cb36959d6aa0e228a9e1e49
2024-09-17 21:54:33 +02:00
jenkins-bot 6fed9643c8 Merge "Inject services into SpecialGadgets" 2024-06-30 12:02:52 +00:00
Fomafix c2b21d5116 Use service GadgetsRepo instead of deprecated GadgetRepo::singleton()
Change-Id: I1cfe65fa6ec9a10c4d1812b7c5edbe35facf2587
2024-06-29 19:01:18 +00:00
Fomafix b40211a711 Inject services into SpecialGadgets
Change-Id: Icb4dac39a68ec988e95003ed2d7c6718f3bd400c
2024-06-29 18:57:00 +00:00
Umherirrender 0b870852d8 Use namespaced classes
Changes to the use statements done automatically via script
Addition of missing use statement done manually

Change-Id: Idc09b4f3e1ffa40f234b34cd8c0c515bd58ce67b
2024-06-09 11:27:57 +02:00
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
jenkins-bot d6e1510af0 Merge "Add support for categories in definitions" 2024-03-16 22:54:42 +00:00
Sophivorus e2cb01ddcd Add support for categories in definitions
Adds a "categories" option to the gadget definition, which takes a
list of category names. Enabled gadgets will only load when the
viewed page is in one of the required categories.

Bug: T204201
Bug: T63007
Change-Id: I0ced9507bdab6cacd0baf2a331859099f35b73e5
2024-03-16 22:31:03 +00:00
Umherirrender c5ce0b1a7c build: Upgrade mediawiki/mediawiki-codesniffer to v43.0.0
Change-Id: I36974f572bbf3e7fcd504496769ee7b6b28651b1
2024-03-10 19:23:46 +01:00
Siddharth VP a629d7f71d Introduce MultiGadgetRepo to facilitate repo migration
MultiGadgetRepo is a wrapper around two or more GadgetRepos so that
they can be used at the same, facilitating migration from one repo to
another.

If a gadget appears in both repos, the definition in the first repo
takes precedence, and a warning is shown on Special:Gadgets.

This can be enabled to wrap GadgetDefinitionNamespaceRepo and
MediaWikiGadgetsDefinitionRepo by setting $wgGadgetsRepo to
'json+definition'. In this configuration, once a new JSON definition
exists for the same name, it is used instead of the old one, and the
old one can then safely be removed at a later time in the safe
knowledge that it is no longer used.

Adapted from If3cc5e22e9812d0fd1a9e8e269ea74a7f667dadd

Bug: T140323
Co-authored-by: Kunal Mehta <legoktm@debian.org>
Change-Id: Ibad53629e63ec8713d7a3b84a19838b94600588e
2024-03-02 18:22:04 +00:00
jenkins-bot 88e934c6cb Merge "Goodbye Gadget/Gadget_definition namespaces!" 2024-02-24 16:50:56 +00:00
Bartosz Dziewoński 9cc4ff546e Use OutputPage::setPageTitleMsg() instead of ::setPageTitle()
Bug: T343994
Change-Id: I71d1ffabd3fca96c6a3b2a9f1647edf9e675e332
2024-02-17 02:57:11 +01:00
Timo Tijhof fce6fdfb20 Goodbye Gadget/Gadget_definition namespaces!
== What ==

* Remove the empty Gadget and Gadget_definition namespaces.
* Remove the "gadgets-definition-edit" user right.
* Remove need for custom namespace permissions that previously
  had to extend editsitejs to apply to NS_GADGET.

== Why ==

Simplify the (unused) "GadgetDefinitionNamespaceRepo" backend for
Gadgets 2.0 by making it less radically different from the status quo.

The experimental 2.0 branch will now make use of the "gadget definition"
content model via "MediaWiki:Gadgets/<id>.json" pages, instead of
through a dedicated namespace.

When I first worked the Gadgets 2.0 branch, content models
were not a thing in MediaWiki, and interface-admin wasn't a thing yet
either. Now that we have per-page permissions and per-page content
models, we don't really need a separate namespace.

This follows the principle of least surprise, and fits well with other
interface admin and site configuration tools such as:
- Citoid, MediaWiki:Citoid-template-type-map.json,
- VisualEditor, MediaWiki:Visualeditor-template-tools-definition.json,
- AbuseFilter, MediaWiki:BlockedExternalDomains.json,
- the upcoming "Community Config" initiative.

If/when we develop the SpecialPage GUI for editing gadget definitions,
this can save its data to these pages the same as it would in
any other namespace. Similar to how Special:BlockedExternalDomains
operates on MediaWiki:BlockedExternalDomains.json.

See also bf1d6b3e93 (I6ffd5e9467), which recently removed the
gadgets-edit user right in favour of the editsite{css,js,json} rights.

Change-Id: I5b04ab251552e839087d0a8a6923d205adc7f771
2024-02-13 13:30:26 +00:00
Timo Tijhof a8c3eb1282 Move "gadgets" message to "special-gadgets"
This makes way for "MediaWiki:Gadgets/<id>.json" to be used free of
any confusion or misinterpretation about the subpage being a
translation of "MediaWiki:Gadgets".

Change-Id: Icb68ce6c26a83d7201a97a5406f8752b3c5b0855
2024-02-09 19:10:54 +00:00
Novem Linguae cc22098a48 Make Special:Gadgets [Edit description] link smaller
To match the style of section [edit] links in articles.

Bug: T344489
Change-Id: Ic3fd864a7b2889ba246418d4a781fd8db29f5ce9
2024-01-18 16:49:16 -08:00
Novem Linguae 5b656b1ee9 SpecialGadgets: refactor
Improve code grouping and comments.

Change-Id: I67fd8081fb5e47bd5a13c85b68433d9a90b67c05
2024-01-18 16:44:43 -08:00
jenkins-bot da62832dde Merge "SpecialGadgets: better variable names" 2024-01-18 23:21:01 +00:00
jenkins-bot 4ca73e1556 Merge "SpecialGadgets: convert Xml class to Html class" 2024-01-17 18:08:04 +00:00
Novem Linguae e62314d4ba SpecialGadgets: fix docblock type mistake
Change-Id: I1716c0c4b74ec34d6b8b69316fb397aa1de3b8bc
2024-01-17 08:02:14 -08:00
Novem Linguae 209c626d66 SpecialGadgets: better variable names
Change-Id: I515d4016a3cb4a9eeb2488a39afa2b5d48a2dc48
2024-01-17 07:59:17 -08:00
Novem Linguae eeb4740fbc SpecialGadgets: convert Xml class to Html class
Change-Id: I8a24789a11ad5f494dc0f9a87642b1b79b40fd3b
2024-01-17 07:50:21 -08:00
Umherirrender 1afd0a6e02 Use namespaced classes
This requires 1.42 for some new names

Changes to the use statements done automatically via script
Addition of missing use statement done manually

Change-Id: Iacbea33299995c537a7ef77b524614ad02c6a559
2024-01-06 17:45:07 +01:00
Siddharth VP 22752225a1 Make GadgetRepo a service
Turn GadgetRepo into a service, deprecate GadgetRepo::singleton()

Change-Id: I0ab14ca936eec1eead91d4eb0970f898628c8388
2023-12-05 17:38:41 -06:00
Siddharth VP adda8a6649 Show gadget definition validation warnings in Special:Gadgets
Bug: T298334
Change-Id: Id241125b9b8abfb971dfa600ab0df9c6047f2b32
2023-11-30 21:59:04 +00:00
Timo Tijhof d12bf68c25 docs: Make PHP file headers more consistent
* A fixed license header for the file.

* Move class descriptions, doc tags, author/copyright to the
  class block. Remove MW-core specific "ingroup" tags such as
  "SpecialPage" which has no meaning in an extension and are not
  used by Doxygen.
  Ref https://gerrit.wikimedia.org/r/q/message:ingroup

Change-Id: I13d9b0ff7a3150180196c9fa58f8a321b14edd22
2023-10-30 18:10:58 -04:00
Siddharth VP a7309d2b1f Namespace special page classes
Change-Id: I005f6674c9cc80c5c9e26ae84acfbceebb43734e
2023-10-30 21:13:41 +05:30
Renamed from includes/SpecialGadgets.php (Browse further)