Fix form field required states & missing fields per spec

- Admin add: add contact_public checkbox (matching edit form)
- All forms: formats checkbox-list now required
- All forms: jury promoteur·ice interne required, lecteur·ice interne/externe required
- All forms: licence select now required
- Admin edit: add E-mail de confirmation fieldset
- Partage: contact always visible when provided (no contact_public field)
- Partage: filter PACS from AP programs dropdown
- Server-side validation: formats, jury, licence required (create + edit controllers)
- Autofocus mappings for new validation errors
- No duplicate asterisks — verified across all rendered fields
- fix: add missing old() function in admin edit controller
- refactor: move admin email field to Backoffice as Contact interne, never send email
- Untrack admin.log (covered by .gitignore)
This commit is contained in:
Pontoporeia
2026-05-07 19:54:52 +02:00
parent 51f9f56e09
commit 696259afae
11 changed files with 307 additions and 45 deletions

24
TODO.md
View File

@@ -13,7 +13,6 @@
- [x] `AboutController.php` — removed credits, sourceCode DB loading
- [x] `templates/public/about.php` — hardcoded source code URL, hardcoded credits HTML
- [x] `apropos.css``.apropos-toc-source` styles
- [x] `.gitignore` — ignore `app/storage/logs/*.log`
## Duplicate TFE submission prevention (fixes)
- [x] `DuplicateThesisException` — typed exception carrying existing thesis metadata
@@ -141,6 +140,14 @@
- [x] Recapitulatif: show promoteur·ice ULB and lecteur·ices interne/externe
- [x] Migration: `014_tfe_form_fields.sql` — ALTER + view rebuild
- [x] Fix `Call to undefined function old()` in admin edit page — define `old()` in `app/public/admin/edit.php` (was only in `add.php`)
- [x] Add Note contextuelle and Backoffice fieldsets to admin add form (matching edit form)
- [x] `Database::createThesis()` — add `context_note`, `remarks`, `jury_points`, `exemplaire_baiu`, `exemplaire_erg`, `cc4r` columns
- [x] `ThesisCreateController::validateAndSanitise()` — handle new admin-only fields
- [x] `ThesisCreateController::submit()` — pass new fields to `createThesis()`
- [x] Replace admin E-mail de confirmation fieldset with Contact interne in Backoffice section (add + edit)
- [x] Remove confirmation email sending from add/edit (admin never sent; student partage unchanged)
## Refactor form structure per spec (student vs admin)
- [x] Remove `jury_president` field from student-facing forms (edit keeps it as optional)
- [x] Jury: split into promoteur·ice interne, promoteur·ice ULB, lecteur·ice interne, lecteur·ice externe — each with +add button
@@ -158,3 +165,18 @@
- [x] Fichiers: cover image hint updated to 4:3 ratio
- [x] All three form pages (admin add, admin edit, partage) updated
- [x] Controllers updated: `collectJuryMembers`, `validateAndSanitise`, `buildFileSizeInfo`, `license_custom`, `cc2r``cc4r` mapping
## Fix form field required states & missing fields per spec
- [x] Admin add: add `contact_public` checkbox (matching edit form)
- [x] Admin add + partage + admin edit: formats checkbox-list `$required = true`
- [x] All forms: jury promoteur·ice interne `required` attribute
- [x] All forms: jury lecteur·ice interne `required` attribute (at least one)
- [x] All forms: jury lecteur·ice externe `required` attribute (at least one)
- [x] All forms: licence select `$required = true`
- [x] Admin edit: add "E-mail de confirmation" fieldset
- [x] Partage: contact always visible (POST handler defaults `showContact` to true when no `contact_public` key present)
- [x] Partage: filter PACS from AP programs dropdown
- [x] Verify no duplicate asterisks on any field
- [x] Admin add: `contact_public` POST handling in ThesisCreateController for admin submissions
- [x] Server-side validation: formats required, jury members required, licence required (ThesisCreateController + ThesisEditController)
- [x] Autofocus mappings for new validation errors (format, jury, licence)