Add website-type TFE support: URLs stored as thesis_files rows, HTMX-toggle on Site web format

This commit is contained in:
Pontoporeia
2026-05-07 21:24:46 +02:00
parent 9dc7ea98f2
commit ac0008df6c
10 changed files with 399 additions and 39 deletions

14
TODO.md
View File

@@ -102,6 +102,20 @@
- [x] Migration `013_fix_csv_column_shift.sql`: move orientation from synopsis→orientation_id, finality from context_note→finality_id for already-imported theses
- [x] Migration `013_fix_remarks_keywords.php`: move keywords from remarks→tags+thesis_tags for already-imported theses
## Support website-type TFE (URL instead of uploaded files)
- [x] Add `file_type = 'website'` support to `thesis_files` — URL stored in `file_path`, no filesystem upload (no schema change needed)
- [x] Admin add form: "Site web (URL)" field dynamically shown via HTMX when "Site web" format checked
- [x] Admin edit form: website URL field via HTMX toggle + recognize website (🌐 icon) in existing-files list
- [x] Student partage form: website URL field via HTMX toggle + HTMX script added
- [x] TFE detail page (`tfe.php`): render `website` type as iframe with sandbox in media section
- [x] `ThesisCreateController`: handle website URL in submit → `handleWebsiteUrl()` stores as thesis_files row
- [x] `ThesisEditController`: handle website URL in save → `handleWebsiteUrl()` replaces existing website row; delete-files skips unlink for URLs
- [x] Edit page: website rows deletable via same delete_files checkbox mechanism
- [x] File size 0 for website rows — hidden in edit list to avoid showing "0.00 MB"
- [x] HTMX fragment endpoint: `/admin/actions/format-website-fragment.php` + `/partage/format-website-fragment`
- [x] `checkbox-list.php` partial: optional `hxPost`/`hxTarget` for HTMX live update
- [x] Server-side initial render: pre-populate `#website-url-section` if "Site web" already checked
## Standardise répertoire filter column rendering
- [x] Centralise filter column rendering into a shared `repFilterEntry()` function
- [x] Define `$filterColumns` config array as single source of truth for the 5 filter columns