feat(medien): Übersicht als Pflegewerkzeug statt als Galerie - #298
Merged
Conversation
nichtLehdev
added this pull request to stack #299
September 11, 2026 14:48
nichtLehdev
force-pushed
the
feat/media-overview-rework
branch
from
September 11, 2026 14:49
05ea047 to
3f1794a
Compare
Die Seite war als Galerie gebaut, benutzt wird sie als Metadaten-Editor: Das Kachelraster zeigte zwanzig Vorschaubilder und verbarg jedes Feld, das man ändern wollte. Ohne 57 Dialoge nacheinander zu öffnen ließ sich nicht sagen, welchem Bild der Alt-Text oder die Urheberangabe fehlt. Neu: - Umschalter Karten/Tabelle über `DashboardListViewToggle` wie in den übrigen Listen, Einstellung bleibt gespeichert. Die Tabelle zeigt Alt-Text und Urheber mit "fehlt"-Markierung. - Schnellfilter für Ausstehend, Ohne Alt-Text und Ohne Urheberangabe; die Kennzahlen darüber sind anklickbar und setzen denselben Filter. - Mehrfachauswahl mit Freigeben, Löschen und Herunterladen. Mehrere Dateien werden im Browser zu einem ZIP gepackt — JSZip liegt ohnehin im Bündel, und der Server muss so nicht 200 Bilder gleichzeitig vorhalten. - Zweispaltiger Bearbeiten-Dialog auf Basis der UI-Bausteine statt roher `<input>`-Elemente. Links Bild, Zuschnitt und Download, rechts das Formular. - Fokuspunkt lässt sich endlich setzen. Die Spalten gab es längst, nur keinen Weg dorthin: bislang half nur Zuschneiden, was das Original verbrauchte. - Der Zuschnitt liegt jetzt über dem Dialog statt an seiner Stelle. "Abbrechen" führt damit zurück ins Formular, und getippte Angaben stehen noch da. - Hochladen per Drag & Drop und mit mehreren Dateien auf einmal. - Der Löschdialog nennt Datei und Verwendung und warnt rot vor den beiden Beziehungen mit `onDelete: Cascade`: Bläserheft und Startseiten-Karussell verschwanden bisher stillschweigend mit dem Bild. - Aktionen stehen in einer eigenen Zeile unter der Kachel. Als schwebende Leiste über dem Bild waren sie am Rechner bis zum Hover unsichtbar. - Fehlende Dateien zeigen den gestalteten Platzhalter statt einer schwarzen Fläche. Zwei Fehler nebenbei: Das Suchfeld war 34 Pixel breit, weil `Select` einen festen `w-full`-Rahmen rendert und die Auswahlfelder das flexible Suchfeld zusammendrückten — die feste Breite sitzt jetzt außen, der gemeinsame Baustein bleibt unangetastet. Und Escape schließt die Dialoge, solange kein zweiter darüber liegt.
nichtLehdev
force-pushed
the
feat/media-overview-rework
branch
from
September 11, 2026 14:54
3f1794a to
f791447
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dritter von drei Teilen. Basis ist #297, das wiederum auf #296 steht.
Warum
Die Seite war als Galerie gebaut, benutzt wird sie als Metadaten-Editor. Das Kachelraster zeigte zwanzig Vorschaubilder und verbarg jedes Feld, das man ändern wollte — ohne 57 Dialoge nacheinander zu öffnen ließ sich nicht sagen, welchem Bild der Alt-Text oder die Urheberangabe fehlt.
Dazu war der Bearbeiten-Dialog aus rohen
<input>-,<button>- und<label>-Elementen gebaut, während die UI-Bausteine (Input,Textarea,Label,Checkbox,Button) direkt daneben ungenutzt lagen. Fokusrahmen, Deaktiviert-Darstellung und Dunkelmodus wichen dadurch vom übrigen Dashboard ab, und Hochlade- und Bearbeiten-Dialog sahen nicht einmal untereinander gleich aus.Was sich ändert
DashboardListViewTogglewie in den übrigen Listen, Einstellung bleibt gespeichert. Die Tabelle zeigt Alt-Text und Urheber mit „fehlt“-Markierung — genau das, wofür die Seite benutzt wird.focalPointX/focalPointYgab es längst, nur keinen Weg dorthin — bislang half nur Zuschneiden, was das Original verbrauchte.onDelete: Cascade. Geprüft anAG5Y9331.JPG: „Achtung: Es werden weitere Einträge mitgelöscht — Startseiten-Karussell“. Bisher stand dort nur „Bist du sicher?“, ohne auch nur den Dateinamen zu nennen.ImageWithFallback) statt einer schwarzen Fläche.Zwei Fehler nebenbei
Das Suchfeld in der Filterleiste war 34 Pixel breit (nachgemessen), während die beiden Auswahlfelder je 518 Pixel nahmen:
Selectrendert einen festenw-full-Rahmen, der dasflex-1-Suchfeld auf seine Mindestbreite zusammendrückte. Die feste Breite sitzt jetzt außen an der Aufrufstelle — der gemeinsame Baustein bleibt unangetastet, weil andere Seiten aufw-fullbauen.Und Escape schließt die Dialoge, solange kein zweiter darüber liegt.
ScrollableModalbekommt dafür ein optionalesonClose; wo nuronBackdropClickgesetzt ist, bleibt es beim bisherigen Verhalten.Prüfung
tscundeslint .sauber, Prettier angewandt, 600 Tests grün. Im Browser gegen die laufende Instanz durchgegangen: Feld leeren und speichern, Zuschnitt abbrechen mit erhaltenem Text, Tabellenansicht samt Fortbestehen über einen Neuladevorgang, serverseitiger Filter (57 → 53), ZIP-Download zweier Dateien, Kaskadenwarnung im Löschdialog. Nichts davon wurde tatsächlich gelöscht; der eine geänderte Testwert wurde wiederhergestellt.Offen
media.tagswird von nichts in der Anwendung gelesen. Die Felder funktionieren jetzt korrekt, statt halb kaputt zu sein — ob das Feld bleiben soll, ist eine eigene Entscheidung.