From d9f94eeb13d51f839aef796b7102283c30908098 Mon Sep 17 00:00:00 2001 From: Pontoporeia Date: Fri, 3 Apr 2026 13:10:24 +0200 Subject: [PATCH] a11y(jury-fieldset): fix WCAG 3.3.2, 4.1.2, 2.1.1 + audit 1.4.4/1.4.12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3.3.2 Labels or instructions - Replace bare (no 'for', no associated control) with
Lecteur·ices giving AT a proper programmatic label for the entire lecteur group 4.1.2 Name, role, value — Externe checkboxes lacked group context - Add aria-label="Promoteur·ice — externe" on the promoteur Externe checkbox - Add aria-label="Lecteur·ice N — nom" on every lecteur name input - Add aria-label="Lecteur·ice N — externe" on every lecteur Externe checkbox - All three attributes added to both PHP-rendered rows and the addJuryRow() JS that builds new rows dynamically 2.1.1 Keyboard — remove buttons already had aria-label; verified and updated label text to "Supprimer le lecteur·ice N" (consistent with new numbering) CSS (admin.css) - Add .admin-body fieldset fieldset.admin-jury-lecteurs rule: removes border/padding/background from the nested fieldset so it reads as a sub-group inside the outer jury fieldset, not a double-bordered card Audit (no code change) - WCAG 1.4.4: all font-size values use rem — no px text sizing anywhere - WCAG 1.4.12: only overflow:hidden on media containers and .sr-only utility; no essential text content is clipped by text-spacing overrides - WCAG 4.1.2 bulk JS: result is a redirect to flash-messages.php which already emits role="alert"/role="status" — no additional JS announcement needed --- TODO.md | 36 +++++++----- public/assets/css/admin.css | 20 +++++++ templates/partials/form/jury-fieldset.php | 68 +++++++++++++---------- todo/04-accessibility.md | 12 ++-- 4 files changed, 85 insertions(+), 51 deletions(-) diff --git a/TODO.md b/TODO.md index a3a7b64..7fcb4dd 100644 --- a/TODO.md +++ b/TODO.md @@ -7,28 +7,34 @@ Pending tasks have been split into topic files under [`todo/`](todo/README.md): | [todo/01-css-semantic-refactor.md](todo/01-css-semantic-refactor.md) | CSS class audit, semantic HTML (public + admin), inline style extraction, favicon | | [todo/02-php-components.md](todo/02-php-components.md) | Form field partials, shared UI partials, controller extraction, backend maintenance | | [todo/03-system-cache.md](todo/03-system-cache.md) | `system_cache` table, `SystemCache` class, `system.php` refactor | -| [todo/04-accessibility.md](todo/04-accessibility.md) | WCAG 2.1 AA — remaining failures grouped by success criterion | +| [todo/04-accessibility.md](todo/04-accessibility.md) | WCAG 2.1 AA - remaining failures grouped by success criterion | ## Recently completed (this session) -- [x] `admin.css` — added `[aria-current="page"]` rule for admin nav links (`border-bottom: 2px solid currentColor; padding-bottom: 1px`) fixing WCAG 1.4.1 (active nav link had no non-colour indicator) -- [x] `admin.css` — fixed undefined `--admin-purple` variable in pagination hover; replaced with `--accent-primary` (same `#9557b5` value) -- [x] `todo/01-css-semantic-refactor.md` — audited all CSS/HTML refactor tasks; marked ~15 items as already-done (`.admin-main`, `.admin-page-title`, `.admin-form-row`, `.admin-label`, `.admin-input/select/textarea`, `.admin-table`, `.admin-fieldset`, `tfe.css` class replacements, `search.css` selector, `login.php`/`edit.php` inline styles, `admin-alert` replacement, form partial hints) -- [x] `todo/04-accessibility.md` — marked WCAG 1.4.1 admin nav and `--admin-purple` audit items as completed +- [x] `admin.css` - added `[aria-current="page"]` rule for admin nav links (`border-bottom: 2px solid currentColor; padding-bottom: 1px`) fixing WCAG 1.4.1 (active nav link had no non-colour indicator) +- [x] `admin.css` - fixed undefined `--admin-purple` variable in pagination hover; replaced with `--accent-primary` (same `#9557b5` value) +- [x] `todo/01-css-semantic-refactor.md` - audited all CSS/HTML refactor tasks; marked ~15 items as already-done (`.admin-main`, `.admin-page-title`, `.admin-form-row`, `.admin-label`, `.admin-input/select/textarea`, `.admin-table`, `.admin-fieldset`, `tfe.css` class replacements, `search.css` selector, `login.php`/`edit.php` inline styles, `admin-alert` replacement, form partial hints) +- [x] `todo/04-accessibility.md` - marked WCAG 1.4.1 admin nav and `--admin-purple` audit items as completed -- [x] `admin/index.php` — server-side pagination (25/page); `Database::getThesesListCount()` added; `getThesesList()` extended with `$limit`/`$offset`; `access_type` JOIN added to query (was missing); result-count meta line added; `.pagination-wrap` + `.pagination-btn` + `.pagination-info` styles added to `admin.css` +- [x] `admin/index.php` - server-side pagination (25/page); `Database::getThesesListCount()` added; `getThesesList()` extended with `$limit`/`$offset`; `access_type` JOIN added to query (was missing); result-count meta line added; `.pagination-wrap` + `.pagination-btn` + `.pagination-info` styles added to `admin.css` -- [x] `checkbox-list.php` — replaced `
` with `
    ` (WCAG 1.3.1 fix) -- [x] `admin.css` — replaced `.admin-checkbox-list` with `.admin-body fieldset.admin-checkbox-group > ul` semantic selectors; added `span.admin-row-label` as visible label column counterpart -- [x] `login.php` — wrapped content in `
    ` landmark -- [x] `account.php` — `