Files
xamxam/TODO.md
Pontoporeia c4a550f9d1 Rework contenus-edit: auto-save, OverType toolbar, dynamic sidebar links
- Auto-save: new autosave.js with 1.5s debounce, watches all forms with
  data-autosave, POSTs to form action with Accept: application/json, shows
  saving/saved/error status indicator
- All action handlers (page.php, apropos.php, form-help.php) now detect
  JSON Accept header and return {success, csrf_token} or {error} responses
- OverType toolbar enabled (toolbar:true) on all three markdown editors
  (page, about_page, form_help)
- Sidebar links: replaced fixed erg_site_url / source_code_url rows with
  dynamic sidebar_links array of {label, url} objects. Add/remove via JS.
  Fallback migration reads legacy keys if sidebar_links is empty.
- Updated AboutController and about.php template to render dynamic links
- Updated apropos.css: unified .apropos-toc-link replacing .apropos-toc-erg
  and .apropos-toc-source
- New CSS: autosave-status states, sidebar-link-row layout
- Removed all Enregistrer + Annuler buttons — auto-save and h1 back-arrow
  make them redundant
2026-06-10 00:18:40 +02:00

2.7 KiB

TODO

  • Fix #1: TFE publié se dépublie quand on modifie ses données (is_published missing from getThesisRawFields SELECT)

  • Fix #2: Renommer "Note contextuelle" → "Note contextuelle relative à soutenance"

  • Fix #3: Impossible de mettre une majuscule au nom d'étudiant·e — la recherche par nom en SQLite est case-sensitive (BINARY), contournait le UPDATE et tombait dans le fallback email sans updater le nom. Ajout COLLATE NOCASE + UPDATE dans le chemin email.

  • Fix #4: Décorréler contact interne et contact visible (ajouter colonne contact_visible sur theses)

  • Fix #5: "Contact public : non" partout, non modifiable, sans impact

  • Fix #6: Investiguer "libre → interne" impossible — aucune restriction trouvée dans le code admin

  • Hotfix: contact_visible manquant dans le SQL de updateThesis (l'edit matchait createThesis à la place)

  • Fix #7: Options de licence non persistées en edit — HTMX load trigger perdait les valeurs

  • Fix #3 (v2): findOrCreateAuthor avec cascade ID → nom → email, setThesisAuthors passe les IDs existants

  • Migration 038: corriger les identifiers theses qui ne matchent pas leur année

  • Filtres finalité + format dans la page de recherche (search.php)

  • Styliser boutons Filtrer/Réinitialiser : plus compacts, Réinitialiser en neutre

  • Commit + jj new

  • Fix identifier-year mismatch: extend save() to regenerate identifier when prefix doesn't match year (not just on year change)

  • Fix migration runner run.php to support .php migrations alongside .sql

  • Fix runner: treat PHP subprocess idempotent errors (no such column / already exists) as skippable rather than fatal

  • Update 016 and 038 PHP migrations to accept $argv[1] DB path

  • Fix migration 016 to gracefully handle banner_path column already being dropped

  • Commit + jj new

  • Formulaire étudiant : préciser "un seul contact" dans le label, mise à jour du hint pour le format le plus court (site sans https://www., insta/mastodon avec @), adaptation de l'affichage public pour supporter ces formats courts (liens automatiques pour @pseudo → Instagram, @pseudo@instance → Mastodon, domaine nu → https://)

  • Déplacer "Contact visible" du Backoffice vers "Informations du TFE" dans le formulaire admin edit, renommer "Identité" → "Informations du TFE" dans le récapitulatif admin

  • Rework contenus-edit: auto-save (debounce 1.5s) sur tous les formulaires (page, form-help, contacts, sidebar links), toolbar OverType sur tous les éditeurs markdown, sidebar links dynamiques (add/remove) remplaçant les 2 liens fixes erg_site_url/source_code_url par un seul key sidebar_links avec fallback de migration