Skip to content

[UI/UX] Theming / Appearance and Accessibility management #39278

@joshtrichards

Description

@joshtrichards

Also known as: Global Theming, Appearance and accessibility, and User Theming

The Theming versus the User Appearance/Accessibility + User Theming stuff is a bit confusing. I mean in terms of:

  • nomenclature usage
  • organization and presentation in the user interface (in both Administration and Personal contexts)
  • naming in the global config <-- this last one is likely due to legacy and mostly a documentation issue IMO

In the UI we have...

...the Administration->"Theming": (/settings/admin/theming) page:

  • Name (Organization?)
  • Web link
  • Slogan
  • Color (Background color?)
  • Logo
  • Background and login image
  • Legal notice link
  • Privacy notice link
  • Header logo
  • Favicon
  • Toggle: Disable user theming?
    • "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on."

I'd say the Admin page is actually pretty solid, with only minor potential tweaks (more on that in my proposal list).

Then we have also in the UI...

...the Personal->"Appearance and accessibility" (/settings/user/theming) page:

  • While unstated, this is effectively "Appearance, accessibility, and user theming" (all combined)
  • Color/Contrast Modes: System default, Light, Dark, High contrast, Dark with high contrast
  • Toggle: Dyslexia font
  • Toggle: Keyboard shortcuts
  • Global theming overrides (aka: "User theming"): Background image and/or background color (if user theming is permitted by the admin)

I have some ideas to make the Personal page clearer (more on that in my proposal list).

Then in the system config.php we have:

  • theme <-- I believe this is legacy (i.e. only applicable if not using the theming app)
  • enforce_theme <-- Essentially legacy as it's no longer necessary with theming app having its own equivalent parameter

I propose we:

  • Add a divider between the "Dyslexia font" toggle and the "Color/contrast modes"
  • Place a sub-heading like "Additional Accessibility Settings" above the "Dyslexia front" and "Keyboard shortcuts" toggles
  • Rename "Administration->Theming" to "Administration->Theming and appearance"
  • Add the heading "User Theming" just above the "Background" section on the "Appearance and accessibility" (/settings/user/theming)"* page to clarify that's where the user adjustable (if permitted) theme overrides are
  • Strike the word "theme" from the various "Color/Contrast Modes" included under "Appearance and accessibility" (/settings/user/theming)" page since "theme" is a misnomer there
  • Add a heading above the list of "Color/Contrast Modes" that says... "Color/Contrast Modes" since that's what they really are and since they're entirely independent (from the user's perspective) from the actual admin configured theme
  • Add some clarifying language to the enforce_theme parameter if it is indeed essentially depreciated or, at the very least, equivalent to the theming app's toggle for "Disable user theming"
  • Add the ability for the admin to specify a default "Color/Contrast Mode" in the global Theming (with the same set of modes available to choose from that individual users already have)
  • Possibly clarify what we mean by "system" when we say "System default theme" on the Personal "Appearance and accessibility" page (I think at the moment "system" here effectively means the user's system not the server since there's no truly globally configurable mode for this... at least until the prior bullet point is also implemented). And, as already noted, this might be better renamed entirely to something along the lines "System default Color/Contrast mode"

The above are some mid-morning thoughts that came together while looking into #39199 and attempting to clarify some of my longstanding confusion over theming/appearance/accessibility management/configuration. I reserve the right to revise this brain dump, but at least now it's recorded (for another time when I - or anyone else - has a better opportunity to dig deeper into actual implementation bits) . :-)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions