Tracker and implementation bug for the Gadget Manager that was going to be implemented during the Gadgets 2.0 sprint in July 2011.
Description
Details
- Reference
- bz29398
| Status | Subtype | Assigned | Task | ||
|---|---|---|---|---|---|
| Invalid | None | T34169 Action to join scripts and styles in one file | |||
| Open | None | T110014 Make gadgets easily customizable (merge Gadgets' branch "gadgetprefs" from GSoC 2011) | |||
| Open | None | T31272 Implement Gadgets 2.0 | |||
| Open | SD0001 | T31398 Implement Gadget Manager | |||
| Resolved | Krinkle | T32160 Add public method to mw.loader to get module names from registry | |||
| Resolved | Krinkle | T32591 Add support to only return keys in ApiAllMessages | |||
| Resolved | Krinkle | T31397 Implement mw.Title module in core | |||
| Resolved | Krinkle | T31441 Expose CapitalLinks config in JS to allow modules to properly handle titles on case-sensitive wikis | |||
| Resolved | Krinkle | T140323 Create reverse migration script for Gadgets 2.0 | |||
| Resolved | SD0001 | T382995 Allow MenuTagMultiSelectWidget to be used in HTMLForm with value represented as a textarea |
Event Timeline
@Krinkle, @Legoktm: Thanks. I've started creating some documentation at https://www.mediawiki.org/wiki/Gadgets_2.0. BTW, I've been trying to get the Gadget Manager interface running locally, but haven't had any luck. I've checked out 247869, switched wgGadgetsRepoClass to GadgetDefinitionNamespaceRepo and changed the SpecialGadgets registration to SpecialGadgets2.php. I currently get fatal errors about getDefinitionTitle() being undefined. Is there a particular patchset that I can checkout that will let me load the Gadget Manager and try it out? Do I also need to checkout any pending changesets in core?
Added some documentation on getting the dev code running in case anyone else wants to as well:
https://www.mediawiki.org/wiki/Gadgets_2.0#Temporary_method_until_Gadgets_2.0_code_is_merged
I'm interested in moving the four gadget namespaces to a shared read-only wiki. I want to refer to those namespaces via interwiki prefixes, mapped to the URL of a wiki that holds these content pages. To edit any page retrieved from a remote wiki, a user would need to login to that wiki to perform the editing.
Would the Gadget manager be impervious to this configuration -- that is, read-access to gadget namespaces would be via the interwiki table ??
thanks for any replies.
For those interested in implementing this, there is code for a Gadget Manager implementation already, and can be found in the RL2 branch of the mediawiki/extensions/Gadgets repo. This is from the 2011 prototype that @Catrope and myself worked on at the time.
It is however based on the deprecated jQuery UI. I suggest migrating it to HTMLForm instead.
@Krinkle, hi! Would you like to rethink the manager and implement it on the community configuration?
I started implementing a UI for editing gadget definitions using HTMLForm. I considered Community Configuration as well but that doesn't seem to precisely fit the use case. Community Config would have been suitable if there were only one gadget to configure instead of several. But let me know if there are ways to work around that.
@Urbanecm_WMF hi! Do you think it would be useful to use CC for gadget managment? And is this possible? :)
Change #1107096 had a related patch set uploaded (by SD0001; author: SD0001):
[mediawiki/extensions/Gadgets@master] Add special page UI for configuring gadgets in JSON repo
I went ahead and created a user script. There are a few rough edges, but it is generally usable.
How hard would it be to make this use CommunityConfiguration? It's basically a tailored JSON editor just like all the other CC modules, so it's almost odd for it not to be in CC.
I do think Gadgets should not hard-depend on CommunityConfiguration, though. For tests, you can skip on the file level (outside the class structure) if the test class uses a trait that lives in CC.
Could you render that sections as details-summary and only keep the basic sections opened? Maybe also re-order a bit like so:
I think most gadgets are like hotcat:
HotCat (⚙️) [ResourceLoader | dependencies = mediawiki.api, mediawiki.user, mediawiki.language ] | HotCat.js
or even simpler:
colored-discussion (⚙️) [ResourceLoader] | colored-discussion.css
OldDiff (⚙️) [ResourceLoader] | OldDiff.css
searchFocus (⚙️) [ResourceLoader] | searchFocus.js
So you definitely need: a code name, description, pages, and in many cases dependencies. The rest is fairly rare. Even deps are sometimes loaded by gadgets internally.
And BTW. ResourceLoader should probably be selected by default.
CommunityConfiguration makes sense for cases where there's a single JSON blob for the whole site. In case of gadgets, there's one for each gadget. I don't think CC supports that use case. Also, Codex doesn't support several of the widgets used here. (Even HTMLForm required several improvements to support this: 1108173, 1106741, 1107093).

