Médiathèque

La médiathèque contient toutes les images que vous uploadez dans le CMS. Ouvrez Médias dans la sidebar.

La médiathèque contient toutes les images que vous uploadez dans le CMS. Ouvrez Médias dans la sidebar.

Ce que vous voyez

Une grille de vignettes, paginée. Chaque tuile affiche :

  • L'aperçu de l'image (variante admin-thumb : 240×240)
  • Nom du fichier
  • Date d'upload
  • Dimensions (ex. 1920×1080)
  • Badge de type (image/svg/etc.)

Au-dessus de la grille :

  • Bouton Upload — ouvre un sélecteur de fichier (ou drag-and-drop du fichier sur la page)
  • Recherche — par nom de fichier
  • Filtre par type — Tous / Image / SVG

Cliquer une tuile ouvre un panneau de détails à droite avec :

  • Aperçu pleine taille (variante admin-preview : 800×800)
  • Nom du fichier (éditable)
  • Texte alt (utilisé par les thèmes pour <img alt>)
  • Légende (optionnelle, utilisée par les thèmes qui affichent les légendes)
  • Métadonnées du fichier (taille, dimensions, content-type, date d'upload, uploadé par)
  • Télécharger l'original n'est PAS disponible — seules les variantes sont conservées (voir ci-dessous)
  • Bouton Supprimer

Pipeline d'image multi-variantes

Chaque upload passe par un pipeline 100% navigateur (services/imageProcessing.ts) qui produit plusieurs variantes en WebP (ou le format choisi par le thème actif) :

Variantes du thème actif (déclarées dans le manifest du thème) :

  • thumbnail — typiquement 400×400
  • medium — typiquement 800×800
  • large — typiquement 1600×1600
  • (le thème peut en déclarer d'autres)

Trois variantes admin-seules :

  • admin-thumb — 72×72 (avatars, vignettes de listing)
  • admin-preview — 800×800 (panneau de détails)
  • admin-original — 2000×2000 fit-contain, qualité 90 — source de re-crop préservée pour les variantes que le thème ajoutera plus tard

L'original uploadé n'est pas conservé. Cela suffit pour la majorité des usages — admin-original couvre les re-crops futurs jusqu'à 2000 px sur le grand axe.

Where sont stockés les fichiers

Tous les fichiers sont uploadés sur Flexweg via l'API Files au chemin :

media/<année>/<mois>/<slug>-<hex>/<variante>.<ext>

Le <hex> est un suffixe aléatoire 6 caractères ajouté par normalizeMediaSlug — collisions impossibles par construction. Donc deux fichiers avec le même nom n'écrasent jamais le contenu de l'autre.

Supprimer un média

Le bouton Supprimer dans le panneau de détails enlève le document média de la base (Firestore ou SQLite) ET supprime le dossier complet media/<année>/<mois>/<slug>-<hex>/ sur Flexweg (un seul appel DELETE /files/delete-folder plutôt que par-fichier).

Attention : si l'image est utilisée comme hero d'un post ou dans un bloc, la référence devient orpheline. Le système d'avertissement de la médiathèque ne fait pas (encore) de vérification d'utilisation — supprimez avec précaution.

SVG

Les SVG sont uploadés tels quels (pas de pipeline de variantes). Le contenu est passé par DOMPurify côté admin pour neutraliser tout script malveillant avant stockage. Les thèmes peuvent les utiliser via <img> ou inliner via dangerouslySetInnerHTML (au choix du thème).