Ajouter une ressource

Le dialogue d'ajout est le dernier écran de la Médiathèque à ne pas avoir été repris. Il ne dénote pas seulement : deux de ses défauts sont des bugs de dimensionnement, et un troisième fait qu'on ne voit pas ce qu'on vient de choisir.

La thèse : les deux onglets sont le problème. « Local » / « En ligne » est une distinction technique — où vivent les octets — imposée avant que l'utilisateur ait fait quoi que ce soit. Un seul corps suffit : une zone de dépôt, et dessous une ligne discrète « ou coller une URL ».
Aujourd'huitel quel dans le code

Nouvelle ressource

Local
En ligne
Fichiers Aucun aperçu possible
↺ Annuler ✓ Créer

1 Rayon 20 — l'échelle de l'app va de 5 à 10.

2 Le corps se dimensionne sur l'écran, pas sur le dialogue : 960 × 540 demandés dans 512 de large.

4 Cinq fichiers choisis, et voilà tout ce qu'on en voit.

5 « Local » / « En ligne » écrits en dur, en français.

6 Deux boutons de même poids ; le primaire accepte le clic à vide.

Proposémaquette

Ajouter une ressource

Glissez vos fichiers ici ou parcourez JPG, PNG, GIF, MP3, MP4, WEBM, PDF, JSON
  • salle-des-fossiles.jpg2560 × 1707 Image
  • commentaire-salle-2-nl.mp33 min 12 s Audio
  • brochure-2026.pdf12 pages PDF
3 fichier(s) · 4,8 Mo

Le gain principal n'est pas l'habillage : c'est la liste. On voit ce qu'on a choisi, et on peut en retirer un.

Les défauts, relevés dans le code

Numérotés comme sur la maquette de gauche. Les trois marqués bug ne relèvent pas du goût.

#Ce qui clocheEffet
1 Rayon 20 sur le dialoguenew_resource_popup.dart:22 Hors de l'échelle de l'app (5 / 8 / 10). Exactement le défaut qu'on vient de retirer de la modale de détail.
2 bugLe corps se dimensionne sur MediaQueryupload_content_container.dart:33-35 width * 0.5 × height * 0.5 de l'écran : sur 1920 × 1080, 960 × 540 demandés dans un dialogue de 512 de large utile. Le contenu déborde et se fait rogner.
3 bugLe champ URL aussiupload_online_resources_container.dart:107 — // TODO GET SIZE Même cause : width * 0.35 de l'écran. Le TODO est resté.
4 bugOn ne voit pas ce qu'on a choisiupload_content_container.dart:57-58 Sur le web, après sélection : une carte titrée « Fichiers », sous-titrée « Aucun aperçu possible ». Cinq fichiers ou un seul, même affichage. Aucun moyen d'en retirer un — il faut tout recommencer.
5 Onglets écrits en durresource_tab.dart:30-31 « Local » et « En ligne » restent en français en anglais et en néerlandais — le trou qu'on vient de combler ailleurs dans la Médiathèque.
6 Deux boutons de même poids, et une erreur évitablenew_resource_popup.dart:60-92 Le primaire accepte le clic à vide, puis affiche une notification orange « aucun fichier chargé ». Désactiver le bouton supprime l'erreur au lieu de l'expliquer.
Type forcé à Image pour tout fichier localresource_tab.dart:93 et :97 Code mort et trompeur : create() re-déduit le type depuis l'extension. À lire, on croit que le MP3 sera enregistré comme image.
bugfilesToSendWeb!.length sur une variable nullenew_resource_popup.dart:82 Branche non-web uniquement : cliquer « Créer » sans rien choisir plante. Invisible en production tant que l'app reste web.

Ce que ça touche

Le geste change

  • Glisser-déposer réel, plus seulement un bouton bleu.
  • Une ligne par fichier : type, nom, poids, et une croix pour en retirer un.
  • Le poids total des fichiers choisis. Avant compression : la calculer pour l'afficher referait tout le travail de l'upload une seconde fois, et l'estimation haute est du bon côté pour un quota.
  • « Ajouter 3 fichiers » plutôt que « Créer » : le bouton dit ce qui va se passer.
  • Le type se déduit de l'extension et s'affiche en pastille, ce que le code fait déjà sans le montrer.

Les fichiers

  • new_resource_popup.dart — réécrit
  • upload_content_container.dart — réécrit (zone de dépôt + liste)
  • resource_tab.dartsupprimé, il ne portait que la barre d'onglets
  • upload_online_resources_container.dartsupprimé, remplacé par le champ URL dépliant
  • Une poignée de clés l10n, dans la même série media*
Implémenté le 2026-09-03. Glisser-déposer réel (écoute des événements du document — Flutter web ne reçoit pas les fichiers du bureau), liste retirable, champ URL dépliant, bouton désactivé à vide. resource_tab.dart, upload_content_container.dart et upload_online_resources_container.dart sont supprimés ; le nouveau sélecteur vit dans Components/resource_picker.dart. Le dialogue de confirmation partagé (12 appelants) a été repris dans la foulée : « Oui »/« Non » en dur remplacés, et le bouton de confirmation passe en rouge quand l'action détruit.
C'était hors périmètre du lot V1 Médiathèque. v1-mediatheque-plan.md ne mentionne ce dialogue nulle part : le lot s'arrête à la grille, aux facettes et au panneau de détail. Ce chantier-ci est adjacent, pas inclus — à faire maintenant dans la foulée, ou à poser comme carte de suivi. C'est un arbitrage, pas une évidence.