mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
Add Mots-clés and Langues management to contenus page
- Add searchLanguages, getAllLanguagesWithCount, renameLanguage, mergeLanguage, deleteLanguage to Database - Create actions/language.php handler with rename/merge/merge_bulk/delete actions - Add merge_bulk action to actions/tag.php - Add Mots-clés section to contenus template with HTMX search, select checkboxes, rename/delete/merge buttons, and multi-select merge toolbar - Add Langues section to contenus template with same pattern - Create contenus-tags-fragment.php and contenus-languages-fragment.php HTMX fragments - Remove form-settings- from flat-fieldset CSS selector so fieldsets in contenus retain border/padding - contenus.php: add 'Gérer les mots-clés' link to /admin/tags.php - contenus.php: add Langues fieldset with HTMX search + table (rename/merge/delete/bulk) - tags.php: add HTMX search bar, checkbox column, bulk merge toolbar - Create tags-fragment.php and contenus-langues-fragment.php for HTMX - Remove tab component and associated CSS - Simplify JS: separate tags/langues-prefixed functions - Fix redirects: tag.php defaults to /admin/tags.php, supports return override - Keep tags.php standalone page and Mots-clés button unchanged
This commit is contained in:
91
TODO.md
91
TODO.md
@@ -1,88 +1,7 @@
|
||||
# TODO
|
||||
|
||||
- [x] Remove delete-all TFE from parametres (template, dialog, controller, DB method, logger)
|
||||
- [x] Move Formulaire + Types de travaux from parametres to contenus under Paramètres du Formulaire h2
|
||||
- [x] Restructure contenus Formulaire: sub-headings for Restrictions, Degré d'ouverture, Types de travaux, Structure
|
||||
- [x] Copy mots-clé htmx system (dropdown, pills, create) to Autre Langue input
|
||||
- [x] Languages: store lowercase, display with ucfirst (getOrCreateLanguage, CSV import, getAllLanguages, v_theses_full, schema seed data, migration 025)
|
||||
- [x] CSV importer: add AP aliases for D&P du multiple, PACS variants, Narraion typo
|
||||
- [x] Move default semantic form element styles (checkbox, radio, select) from admin.css/form.css into common.css
|
||||
- [x] Keep specific layouts/classes in form.css (admin-form grid, checkbox-group layout, etc.)
|
||||
- [x] Ensure selects, checkboxes, and radios are properly styled globally
|
||||
- [x] Converge towards the styled form appearance rather than unstyled
|
||||
- [x] Fix: replace mb_strlen/mb_substr/mb_strtolower with strlen/substr/strtolower (mbstring extension missing on server, caused fatal error on partage submit at ThesisCreateController line 511)
|
||||
- [x] Fix: annexes checkbox in partage form clears other file inputs — scoped HTMX swap to #annexes-input-block instead of replacing entire #format-fichiers-block
|
||||
- [x] Fix: website/video/audio inputs should be inline in Fichiers fieldset (not sub-fieldsets) — removed <fieldset class="fichiers-format-extra"> wrappers
|
||||
- [x] Fix: video/audio show direct upload input when PeerTube disabled — parallel inputs: PeerTube upload when enabled, direct `files[]` upload when disabled
|
||||
- [x] Fix: format checkboxes HTMX include missing has_annexes — added it so annexes state preserved across format changes
|
||||
- [x] Fix: format checkbox toggle clears file inputs — split into two blocks: #format-fichiers-block (stable: TFE/annexes/couverture/note) and #format-extras-block (swappable: website/video/audio extras)
|
||||
- [x] Fix: remove website label/legend input — website section now shows only URL field
|
||||
- [x] Fix: format-extras not appearing — moved #format-extras-block inside Fichiers fieldset (after annexes), uses hx-select to extract from response
|
||||
- [x] Remove duration_pages, duration_minutes, file_size_info entirely (form, schema, DB, views, controllers, tests, CSV export, email)
|
||||
- [x] Rename cc4r → cc2r everywhere (DB column, schema, PHP code) to fix pre-existing naming inconsistency
|
||||
- [x] Merge Publication fieldset's is_published checkbox into Backoffice fieldset
|
||||
- [x] Fix: PHP parse error in admin/index.php — `''` escape in single-quoted string not valid in PHP 8.5
|
||||
- [x] Add explanation hint to is_published checkbox
|
||||
- [x] Admin index: use AP code instead of full name in list and filter dropdown
|
||||
- [x] Admin index: remove pagination, show all theses in table
|
||||
- [x] Admin index: HTMX column sorting (click header → reload table via HTMX)
|
||||
- [x] Admin index: prevent action buttons from stacking vertically
|
||||
- [x] Admin index: compact icon-only buttons (SVG) with tooltips replacing text labels
|
||||
- [x] Admin index: reduce status badge font size
|
||||
- [x] Admin index: change Voir icon to spectacles/circles SVG
|
||||
- [x] Admin index: split Statut column into Publié and Accès
|
||||
- [x] Admin index: tighten table cell padding to --space-3xs
|
||||
- [x] Admin index: remove main padding, add padding to .admin-list-toolbar and #admin-table-wrap
|
||||
- [x] Admin index: remove subtitles from Titre column
|
||||
- [x] Admin index: add alternating row background colors
|
||||
- [x] Admin index: remove #admin-table-container wrapper element, use #admin-table-wrap
|
||||
- [x] Admin index: rearrange toolbar — stats beside title, buttons in single row, search inline with selects on right
|
||||
- [x] Admin index: fix toolbar search inputs vertical stacking (add flex-direction: row)
|
||||
- [x] Admin index: stats as fieldsets with legend labels (Total/Publiés/Attente), centered content
|
||||
- [x] Admin index: remove horizontal padding from toolbar and table-wrap (keep bottom padding only)
|
||||
- [x] Admin index: make Filtrer/Réinitialiser buttons same size as inputs (add btn--sm)
|
||||
- [x] Admin index: rename Importer un CSV → Importer, merge Export CSV + Export fichiers → Exporter modal with checkboxes
|
||||
- [x] Create unified /admin/actions/export.php endpoint with ?csv=1&files=1&db=1 support
|
||||
- [x] Admin index: move export DB from parametres into exporter modal
|
||||
- [x] Admin index: color stats — green for Publiés, yellow for Attente
|
||||
- [x] Remove export-db fieldset and dialog from parametres.php
|
||||
- [x] Replace large JS script in admin index with minimal version (8 lines vs ~70)
|
||||
- [x] Bulk actions: form wraps all checkboxes, no dynamic DOM building in JS
|
||||
- [x] Replace emoji/text buttons in acces.php/acces-etudiante.php with Phosphor SVG icon buttons
|
||||
- [x] Replace text button in contenus.php with pencil SVG icon button
|
||||
- [x] Add Phosphor Icons credit to about page
|
||||
- [x] Add back-to-list arrow button to add/edit/recapitulatif/contenus-edit/tags page titles, make bigger (32px)
|
||||
- [x] Remove Voir button from admin index — row click navigates to recapitulatif
|
||||
- [x] Add hover highlight on clickable table rows
|
||||
- [x] AP column no-wrap, N/A values greyed
|
||||
- [x] Tags page: back button, admin-main--list, no padding, icon buttons, #admin-table-wrap
|
||||
- [x] Move #bulk-actions into fixed-height #bulk-meta-bar at top, prevent layout shift
|
||||
- [x] Credits: move Iconographie below Typographies
|
||||
- [x] Rename Accès étudiant·e → Liens étudiant·e
|
||||
- [x] Add 'name' column to share_links (schema + migration + model)
|
||||
- [x] Add edit dialog for share links (edit name, password, expiration)
|
||||
- [x] Row click opens link in new tab, remove Visiter button
|
||||
- [x] Add update action to acces-etudiante.php controller
|
||||
- [x] Add ShareLink::update() method
|
||||
- [x] Remove admin-bulk-meta__default (count bar), clean up layout
|
||||
- [x] Fix nested form issue: per-row publish/unpublish buttons now submit correctly
|
||||
- [x] Fix delete button: stopPropagation prevents row nav on confirm
|
||||
- [x] CSV import: set is_published=0 by default instead of 1
|
||||
- [x] Fix AP column wrapping: CSS selector main > table didn't match (table nested in div)
|
||||
- [x] Admin mobile block screen: fix inline style beating media query, use CSS default display:none instead
|
||||
- [x] Fix deploy: add missing 023b migration to rename cc4r→cc2r, make run.php skip 'no such column' errors
|
||||
- [x] Fix FK constraint violation on edit: pass null instead of 0 for absent orientation/ap/finality
|
||||
- [x] Mots-clés: interactive tag search with HTMX suggestions, pill display, round bin-icon remove buttons
|
||||
- [x] Mots-clés: lowercase enforcement, deduplication, absolute dropdown, keyboard arrows/enter/escape, blur hide, spacing + counter above input, CSV import lowercased, space-collapse normalization, minimum 3 keywords required
|
||||
- [x] ErrorHandler: shared static helper for structured error_log + user-friendly messages with precise FK field extraction from SQLite errors. Applied to 12 action files + 6 public controllers + 2 form controllers + partage. Covers FK, UNIQUE, NOT NULL constraint types.
|
||||
- [x] Fix: findOrCreateAuthor cannot clear email (empty string skips update, leaves old email)
|
||||
- [x] Fix: "NON" stored as literal email string in authors table — cleaned existing DB rows, added OUI/NON→null guard in findOrCreateAuthor and CSV import
|
||||
- [x] Fix: contact_interne field in edit form never saved — removed dead field from form and dead validation from create controller
|
||||
- [x] Fix: formulaire.php unconditionally suppresses display_errors even in dev mode
|
||||
- [x] Fix: access_type_id radio has no "none" option — added "— Non défini" radio for admin mode
|
||||
- [x] Fix: radio button checked detection broken (int vs string strict comparison in fieldset-licence-explanation.php)
|
||||
- [x] Rename author_email → contact_interne in v_theses_full view, controllers, forms, and templates
|
||||
- [x] Rename author_show_contact → contact_public in v_theses_full view
|
||||
- [x] Restore contact_interne backoffice field with proper variable name, wire to save (takes precedence over mail)
|
||||
- [x] Fix: htmlspecialchars(null) crash in old() on admin/add.php and admin/edit.php (null values in form data)
|
||||
- [x] Fix: jury-fieldset.php old() return type confusion (array vs string) for jury_lecteur:_interne:_externe keys
|
||||
- [x] Rename "Éditer Données Secondaires" → "Données Secondaires", remove wrapping fieldset on Mots-clés
|
||||
- [x] Create admin-toc.php sidebar TOC partial with IntersectionObserver
|
||||
- [x] Include TOC in contenus.php, acces.php, parametres.php
|
||||
- [x] Add .admin-with-toc flex layout and .admin-toc CSS
|
||||
- [x] Fonts: verified Ductus + BBB DM Sans are loaded via variables.css → common.css
|
||||
|
||||
Reference in New Issue
Block a user