Files
xamxam/app/templates/partials/form/checkbox-list.php
Pontoporeia 1b02ccb1d5 fix: mark languages as required, add required-field visual indicators on both forms
- checkbox-list.php: support $required prop → adds required + aria-required on fieldset
- add.php: languages checkbox now marked required (matches server-side validation)
- partage/index.php: same for student form
- admin.css: dashed border on required inputs, bold labels, red asterisk via :has(), "Champs obligatoires" note
- Both forms now show "* Champs obligatoires" note at top

Server-side required fields = titre, auteurice, synopsis, année, orientation, ap, finality, languages (≥1), access_type_id, confirmation_email. All now have required attribute + visual asterisk.
2026-04-20 16:19:55 +02:00

42 lines
1.7 KiB
PHP

<?php
/**
* Checkbox list partial — renders a group of checkboxes (e.g. languages, formats).
*
* The group label uses a visible <span> as the first column (matching other form
* rows), while a <fieldset>/<legend> in the second column provides the accessible
* grouping required by WCAG 1.3.1. The <legend> is visually hidden (sr-only) to
* avoid duplicating the visible label text.
*
* Variables consumed:
* string $name — input name attribute (will be posted as array: name[])
* string $label — group label text
* array $options — each element must have 'id' and 'name' keys
* array $checked — array of 'id' values that are currently checked
* bool $required — whether at least one checkbox must be checked; default false
*/
$checked = $checked ?? [];
$required = $required ?? false;
?>
<div>
<span class="admin-row-label"><?= htmlspecialchars($label) ?></span>
<fieldset class="admin-checkbox-group"<?= $required ? ' required aria-required="true"' : '' ?>>
<legend class="sr-only"><?= htmlspecialchars($label) ?></legend>
<ul>
<?php foreach ($options as $opt): ?>
<li>
<label class="admin-checkbox-label">
<input type="checkbox"
name="<?= htmlspecialchars($name) ?>[]"
value="<?= htmlspecialchars((string)$opt['id']) ?>"
<?= in_array((string)$opt['id'], array_map('strval', $checked)) ? 'checked' : '' ?>>
<?= htmlspecialchars($opt['name']) ?>
</label>
</li>
<?php endforeach; ?>
</ul>
</fieldset>
</div>
<?php
unset($checked);