feat: Ordneruebersicht in der Galerie -- und der Proxy haelt keine Bilder mehr fest

ORDNERUEBERSICHT. Eine Spalte neben der Galerie mit allen Ordnern, auf allen
Ebenen, mit Anzahl und Groesse; ein Klick filtert. Neu dafuer:

- GET /api/dash/folders -- die Ordner werden in JavaScript zusammengezaehlt
  und nicht in SQL: fuer eine Baumansicht braucht es JEDE Ebene, und das waere
  in SQLite eine rekursive Abfrage, die niemand mehr liest.
- GET /api/dash/media?folder=... als EIGENER Filter neben der Suche. Die Suche
  findet mit LIKE %...% auch "alt/vehicles/adder.webp"; ein Ordner, der Dinge
  zeigt, die nicht darin liegen, ist keiner. Hier ist der Anfang verankert.
- Die LIKE-Sonderzeichen werden maskiert: ein Ordner "fotos_alt" wuerde sonst
  auch "fotosXalt" treffen, weil _ in LIKE ein beliebiges Zeichen ist.

Die Zahlen sind kumulativ -- "vehicles" enthaelt, was in "vehicles/showroom"
liegt. Alles andere ueberrascht in einer Baumansicht. Nachgemessen ueber drei
Ebenen: vehicles (24) > showroom (2) > tief (1), Filter und Zaehlung stimmen,
und nach dem Aufraeumen steht wieder vehicles (22).

Flache Liste mit Einrueckung statt aufklappbarem Baum: bei einer Handvoll
Ordner ist ein Aufklappmechanismus mehr Bedienung als Nutzen -- und was man
nicht aufklappen muss, kann man auch nicht zugeklappt uebersehen.

Dazu: der NPM-Zwischenspeicher ist zu. Der Schnipsel steht im Feld "Custom
Nginx Configuration"; NPM setzt ihn innerhalb des server-Blocks ein, eine
location ist dort also gueltig. Nachgemessen: cache-control kommt wieder von
uns, und ein ueberschriebenes Bild ist sofort das neue.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 18:22:51 +02:00
co-authored by Claude Opus 5
parent aa2575bdf4
commit f7086c231c
5 changed files with 224 additions and 12 deletions
+6 -2
View File
@@ -391,8 +391,12 @@ dieselbe Datei neu → abrufen über NPM: "ERSTE-FASSUNG" ← alt
alte**, obwohl Upload, Protokoll und Datenbank alle „fertig" sagen. Das ist
die Sorte Fehler, die man drei Ebenen tiefer sucht.
Der Gegenschnipsel gehört in NPM, Proxy Host `fivemanage.d4rkst3r.de`
*Advanced*:
**Behoben am 11.08.2026** und nachgemessen: die Datei trägt jetzt wieder
unsere eigene Kopfzeile (`cache-control: public, max-age=300`, kein `Expires`
von NPM mehr), und ein überschriebenes Bild kommt **sofort** durch. Der
Schnipsel steht im Feld *Custom Nginx Configuration* des Proxy-Hosts — NPM
setzt ihn dort innerhalb des `server`-Blocks ein (`{{ advanced_config }}`,
Zeile 28 von 52 in der Vorlage), eine `location` ist dort also gültig:
```nginx
# Dateien nicht zwischenspeichern -- sie koennen sich unter derselben