Page MenuHomePhabricator

Create standard method for registering and displaying skin preferences
Open, Needs TriagePublic

Description

Some skins have user preferences specific to them, such as MonoBook's option to disable the responsive mobile layout, options on other responsive skins like Timeless to force or disable the sidebar(s), and Metrolook's collapsible sidebars. Some extensions also add options for specific skins, such as Theme and the now defunct Vector improvements extension.

The problem is, we don't really seem to have any standardised way of adding or displaying these - MonoBook adds its below the entire skin selection list, Theme adds them inline within the list under the skin they apply to, others don't even add them to Special:Preferences at all, and instead have the options built into the feature where it displays on the interface, or similar. Nor do we have a specific standard way of adding them, though in practice they do typically have a check included to only display at all once the skin in question is activated.

We should establish a standard as to when and where they appear (Under list? Inline? After activating skin? After selecting skin?), and with this build into core an abstraction for adding them where the skin/extension specifies what skin it applies to, what the preferences are, and that's it. They appear, consistently, in special:preferences with the skin they apply to.

Note that this would not prevent other options from continuing to be added elsewhere if actually needed.

Event Timeline

I propose using theme's approach: putting them all inline under the specific skin, and displaying immediately as soon as the skin is selected using js, not just showing up once the skin is selected (but also doing this without js).

Should this be an RfC, or should I just implement something and declare it the standard?