Page MenuHomePhabricator

A way to manipulate CSS-based preferences via the GUI
Closed, ResolvedPublic

Description

On the English Wiktionary we are currently devising a
bunch of ways for users to customize what they see in
various ways. These are implemented using templates which
contain CSS to hide unwanted variants and show only the
preferred variant.

The problem is that the vast majority of users don't know
about and don't want to know about editing the custom CSS
files.

If we had a preferences page that resulted in a CSS page
somewhere this would completely solve the problem. The
page or pages would need to be customizable via MediaWiki:
messages much like the navigation bar and
internationalized strings are currently implemented.

The resulting CSS might be a whole other internal CSS page
like wikibits which is not editable by the user, of it
could simply be served as part of the current custom CSS
page but not presented to UserName:Fred/monobook.css etc


Version: unspecified
Severity: enhancement
URL: http://en.wiktionary.org/wiki/Wiktionary:Grease_pit#User_CSS_vs._real_MediaWiki_preferences

Details

Reference
bz6135

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 21 2014, 9:17 PM
bzimport set Reference to bz6135.
bzimport added a subscriber: Unknown Object (MLST).

nospam0310 wrote:

It's not generation of CSS that we need, since we can
already generate CSS with templates. Specifically, we
ned two things:

Enable us to add options to a (new?) tab on

[[Special:Preferences]]

Expose a way to save the output of a template

programatically. E.g. if a query string could use
the "preload" option to overlay whatever already exists
at [[Special:Mypage/monobook.css]], the user could then
see the generated CSS and commit that CSS over their
existing monobook.css.

robchur wrote:

Please provide an example of something which couldn't be added as a user
preference (even via an extension), but which could be added in some other form.

Something about the request doesn't add up to me. A lot of dynamic programming
of core functions through wiki markup et al. makes me very nervous.

nospam0310 wrote:

There is no specific request to avoid adding user
preferences or extensions.

Existing ParserFunctions are able to producing content
for .css files, but if you would prefer to generate .css
file content using a server extension, that would be
great as well. Regardless of how the CSS is generated,
the key missing component now is to allow users customize
and save their .css preferences using an extensible set
of preferences without having them open their CSS file
manually.

Ideally, each user customization (e.g. whether to show
certain classes of words in italics) would be managed as
a user preference. Given specific settings for those
preferences, a CSS file can be created that will cause
the pages to display as the user desires.

Users comfortable with CSS already change their
[[Special:Mypage/monobook.css]] files to accomplish the
customization today. The majority of users, however, are
sqeamish even about copy-pasting sample CSS over their
[[Special:Mypage/monobook.css]]. We are just looking to
assist those users with modifying their CSS preferences.

I suggested the solution that I hoped would be the least
amount of developer work: allowing the "preload" query
string parameter to overlay existing
[[Special:Mypage/monobook.css]]. By allowing that option
to overlay the existing .css, we could write our own CSS
generation in the form of ParserFunctions.

If I understand your reply above, it seems to recommend a
more complete solution, i.e. adding user preferences and
somehow linking those preferences to the server-side
generation of users' css files.

The Gadgets extension looks just suitable solution for this request.