Page MenuHomePhabricator

Implement Gadget Manager
Open, LowPublic13 Estimated Story Points

Description

Tracker and implementation bug for the Gadget Manager that was going to be implemented during the Gadgets 2.0 sprint in July 2011.

Event Timeline

bzimport raised the priority of this task from to High.Nov 21 2014, 11:34 PM
bzimport set Reference to bz29398.
bzimport added a subscriber: Unknown Object (MLST).
Paladox subscribed.

Hi has this been implanted or still be waiting to be implanted.

He7d3r renamed this task from Implement Gadget Manager (tracking) to 2.0: Implement Gadget Manager (tracking).Apr 26 2015, 6:37 PM
He7d3r updated the task description. (Show Details)
Aklapper lowered the priority of this task from High to Medium.Apr 26 2015, 9:53 PM
Aklapper subscribed.

@Krinkle I'm confused as to how is this bug meant to be resolved? If it's purely for tracking, it should be closed as all the blocking tasks have been closed (unless I'm misinterpreting the nature of tracking bugs). However, the feature is still missing, and this task has no description of what needs implementing beyond what it should be called.

Legoktm renamed this task from 2.0: Implement Gadget Manager (tracking) to 2.0: Implement Gadget Manager.Aug 2 2015, 6:45 AM
Legoktm removed a project: Tracking-Neverending.

@Krinkle I'm confused as to how is this bug meant to be resolved? If it's purely for tracking, it should be closed as all the blocking tasks have been closed (unless I'm misinterpreting the nature of tracking bugs). However, the feature is still missing, and this task has no description of what needs implementing beyond what it should be called.

It used to be a tracking bug, but now we can just make it a generic "implement gadget manager" task. The code is mostly written and lives in the RL2 branch and now needs to be ported to the master branch.

@Krinkle: Could you explain what a "Gadget Manager" is in the bug description? Is this a front-end UI or a back-end feature for ResourceLoader?

Specified at https://www.mediawiki.org/wiki/ResourceLoader/Version_2_Design_Specification#Gadget_Manager

The gadget manager is the user interface, to be hosted on Special:Gadgets, that effectively replaces MediaWiki:Gadgets-definition. From there gadget definitions can be created, modified and deleted.

In Gadgets 2.0, the definitions are stored in a separate content model in the revision store. However they're not meant to be modified directly, there is a GUI for it.

Change 247869 had a related patch set uploaded (by Kaldari):
[WIP] Add Gadget manager, overhaul Special:Gadgets

https://gerrit.wikimedia.org/r/247869

For Community Tech: the task is to remove code from Legoktm's WIP patch related to cross-wiki/global gadgets, and update to current standards.

@Krinkle, @Legoktm: The documentation at https://www.mediawiki.org/wiki/ResourceLoader/Version_2_Design_Specification#Gadget_Manager leaves me with several unanswered questions:

  • What is Special:Gadgets/<id> for? What information or interfaces are shown there?
  • What is the actual process for editing a gadget definition (starting from the Gadget Manager (Special:Gadgets))?
  • Can you edit or delete a gadget from the corresponding Gadget_definition page, or do you have to do it through the Gadget Manager?
  • If you delete a gadget from the Gadget Manager, what happens? Does that just disable it? Does it delete the corresponding CSS and JS pages? Does it delete the Gadget_definition page?
  • When you create a gadget, is it immediately available in the preferences?
  • Is there a separate "enable/disable" function?
  • What aspects of Gadgets 2.0 will be included in the first iteration? What features will be added later?

I guess what I'm lacking is a very general bird's eye view of how Gadgets 2.0 is supposed to work. Mock-ups of Special:Gadgets, Special:Gadgets/<id>, and the interface for editing gadgets would help a lot, but I understand if you don't have time to do that. At the least, a description of what the new Special:Gadgets page is supposed to contain would be helpful, as I only have a very vague idea at this point.

@Krinkle, @Legoktm: The documentation at https://www.mediawiki.org/wiki/ResourceLoader/Version_2_Design_Specification#Gadget_Manager leaves me with several unanswered questions:

  • What is Special:Gadgets/<id> for? What information or interfaces are shown there?

The same as Special:Gadgets overview, but a permalink to the details of just one gadget definition. This is also from which definitions can be exported or deleted, e.g. Special:Gadgets/:id/export.

  • What is the actual process for editing a gadget definition (starting from the Gadget Manager (Special:Gadgets))?

View Special:Gadgets. This outputs a table-like interface with one row for each gadget. Click "Modify gadget" in the row you want to modify. Without javascript, this points to action=edit of the gadgets definition page. With javascript (and user right), this opens a dialog for a visualised editing interface to modify each of the properties where most fields are autocompleted (e.g. skin names, message keys, script/style page names).

  • Can you edit or delete a gadget from the corresponding Gadget_definition page, or do you have to do it through the Gadget Manager?

The Gadget manager points to action=delete of the gadgets definition page.

  • If you delete a gadget from the Gadget Manager, what happens? Does that just disable it? Does it delete the corresponding CSS and JS pages? Does it delete the Gadget_definition page?

It deletes the gadget definition page only. Wiki pages for script, style and interface messages (in Gadget and MediaWIki namespace respectively) are retained and may be deleted separately if desired (and not used elsewhere).

  • When you create a gadget, is it immediately available in the preferences?

Yes.

  • Is there a separate "enable/disable" function?

No.

  • What aspects of Gadgets 2.0 will be included in the first iteration? What features will be added later?

The proof of concept RL2 branch implemented all features kind of. In the recent clean up work by @Legoktm and yourself the "Global gadgets" aspect was removed pending outcome of T71445. I don't expect this to be added later. Rather it will receive its own solution, likely based around Git and a friendly deployment model.

I guess what I'm lacking is a very general bird's eye view of how Gadgets 2.0 is supposed to work. Mock-ups of Special:Gadgets, Special:Gadgets/<id>, and the interface for editing gadgets would help a lot, but I understand if you don't have time to do that. At the least, a description of what the new Special:Gadgets page is supposed to contain would be helpful, as I only have a very vague idea at this point.

The code in the RL2 branch should work fine to get a general sense. I've checked it out just now, ran update.php and viewed Special:Gadgets. Here's what it looks like:

Screen Shot 2015-11-07 at 00.29.07.png (238×1 px, 23 KB)

Screen Shot 2015-11-07 at 00.29.44.png (1×1 px, 163 KB)

Screen Shot 2015-11-07 at 00.30.19.png (841×1 px, 174 KB)

@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?

Try the "RL2" branch in the Gadgets repository.

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

This is done, but waiting for feedback from @Legoktm.

@kaldari: did you get the feedback from @Legoktm ? Is this still only "normal" priority?

This is done, but waiting for feedback from @Legoktm.

kaldari lowered the priority of this task from Medium to Low.Oct 17 2016, 5:03 PM

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.

Krinkle renamed this task from 2.0: Implement Gadget Manager to Implement Gadget Manager.Feb 25 2017, 4:07 AM
Krinkle updated the task description. (Show Details)
Krinkle removed a subscriber: wikibugs-l-list.

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.

Comments

  • ...
  • Gadgetmanager wise, I don't see many problems.
    • It's all jQuery UI, which we are trying to get rid off.. but it is fairly self contained, so I think that's ok for now, but is there a ticket for that ?