Every plugin and module: a Settings button under its switch #885

Closed
opened 2026-10-10 16:11:43 +00:00 by tiagoagueda · 1 comment
Owner

Every plugin, sub-plugin, module and sub-module has, beneath its on/off switch, a Settings button (icon + label; icon only on small screens, with the tooltip Settings):

  • hidden when it has no settings;
  • shown but disabled when the person may not change them, with the tooltip You are not authorised to change settings.

What exists today

  • Only ungoverned rows can have one: row.settings_url from settings_url_name (core/server_views.py:1268-1284); only identifiers sets it (server:identifier_schemes), opening a dialog hard-coded in templates/server/plugins.html:134-141. Governed rows draw none.
  • Connected plugins have per-person settings (config_fields()) under Settings → Connections; core/settings_sections.py has a sidebar registry no plugin uses.
  • The page is staff-only (StaffRequiredMixin).
  • settings is a synced Lucide icon (the list leaves the icon's name blank; recommended settings).

What would change

  • A plugin declares its settings (a form class or a settings URL) on its manifest; the page draws the button and a dialog for each from that, not by hand.
  • aria-disabled plus the tooltip for the not-authorised case (a disabled button cannot show a tooltip on focus; SC 4.1.2).
  • On phones, the label sr-only (the button-labels issue #852 governs wider screens).

Decisions

  • Who may. Today only staff see this page, so not authorised arises only with #886; until then the button is shown or hidden.

Checked against main at 8c3d03570. From the maintainer's improvements list of 2026-10-07 (plugins).

Every plugin, sub-plugin, module and sub-module has, beneath its on/off switch, a **Settings** button (icon + label; icon only on small screens, with the tooltip *Settings*): - hidden when it has no settings; - shown but **disabled** when the person may not change them, with the tooltip *You are not authorised to change settings.* ## What exists today - Only **ungoverned** rows can have one: `row.settings_url` from `settings_url_name` (`core/server_views.py:1268-1284`); only `identifiers` sets it (`server:identifier_schemes`), opening a dialog hard-coded in `templates/server/plugins.html:134-141`. Governed rows draw none. - Connected plugins have per-person settings (`config_fields()`) under *Settings → Connections*; `core/settings_sections.py` has a sidebar registry no plugin uses. - The page is staff-only (`StaffRequiredMixin`). - `settings` is a synced Lucide icon (the list leaves the icon's name blank; recommended `settings`). ## What would change - A plugin declares its settings (a form class or a settings URL) on its manifest; the page draws the button and a dialog for each from that, not by hand. - `aria-disabled` plus the tooltip for the not-authorised case (a `disabled` button cannot show a tooltip on focus; SC 4.1.2). - On phones, the label `sr-only` (the button-labels issue #852 governs wider screens). ## Decisions - **Who may.** Today only staff see this page, so *not authorised* arises only with #886; until then the button is shown or hidden. Checked against `main` at `8c3d03570`. From the maintainer's improvements list of 2026-10-07 (plugins).
tiagoagueda added this to the 0.6.0 milestone 2026-10-10 16:11:43 +00:00
Author
Owner

Fixed in b9a1d4fe2 on main.

Fixed in b9a1d4fe2 on main.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo#885
No description provided.