Eine neue GUI für den Medienpool
Hey! Ihr wünscht Euch den Medienpool 3? Das können wir nicht bieten. Aber hier ist MediaPlace – ein moderner Medienpool-Ersatz fürs REDAXO-Backend, mit dem sich das Warten schon mal ganz gut aushalten lässt.
Vollbild-Overlay statt Popup-Gefrickel, dazu ein Eingabe-Widget für Module/Formulare und eine nahtlose Übernahme aller klassischen Zugangspunkte (Hauptmenü, REX_MEDIA[n]/REX_MEDIALIST[n]). Unter der Haube läuft die REST-API des FriendsOfREDAXO/api-Addons.
Es ist kein extra Uploader-AddOn mehr erforderlich. MediaPlace unterstützt chunked Uploads via API-AddOn. Einfach Dateien in die aktuell geöffnete Kategorie ziehen oder mit STRG+V / CMD+V einfügen.
Overlay & Medienverwaltung
- Kategorie-Baum mit Suche, Verschieben, Anlegen/Umbenennen
- Serverseitige Suche über Titel, Dateiname, Originalname und Metadaten
- Typ- und Tag-Filter, „Nur unbenutzte Medien“-Filter, 8 Sortieroptionen
- Grid, Liste & Media Wall (Masonry), Kachelgröße per Slider
- Detail-Panel mit editierbarem Titel, eigenen Metadaten-Feldern, Verwendungsstatus, Datei tauschen/löschen/downloaden
- Fokuspunkt-Editor direkt im Detail-Panel, sobald das focuspoint-Addon installiert ist
- Zuschneiden direkt im Detail-Panel, sobald das cropper-Addon installiert ist
- Upload per Drag & Drop, Button oder einfach Cmd+V/Ctrl+V pasten
- Responsive Compact-Mode fürs schmale Fenster, Dark Mode Toggle
- Sieht aus wie REDAXO, weil es sich an
be_styleorientiert
ffmpeg-Integration (sobald das ffmpeg-Addon installiert ist)
- Echte Video-Vorschau im Grid statt Datei-Icon – wahlweise animiert oder als (deutlich günstigeres) Einzelbild, komplett abschaltbar
- „Video optimieren“-Button: ersetzt eine zu große Videodatei in-place durch eine kleinere, gleicher Dateiname
- Aufklappbare technische Details (Auflösung, Codec, Bitrate, Framerate, …)
Bilder optimieren
- „Bild optimieren“-Button im Detail-Panel für Bestandsbilder, die größer als die konfigurierte Upload-Grenze sind
- Cronjob „Vorschaubilder vorwärmen“ erzeugt Grid-Thumbnails (Bild & Video) im Hintergrund vor, statt bei jedem ersten Betrachten live zu generieren
Tags
- Eigene Combobox mit Mehrfachauswahl + „neu anlegen“-Option im Detail-Panel
- Zentrale Tag-Verwaltung (eigene Backend-Seite): neue Tags direkt anlegen, umbenennen (kaskadiert automatisch auf alle Dateien), Farbe zentral ändern, löschen
Sammlungen
- Eigene Sammlungen anlegen, Medien per Lesezeichen-Button oder Drag & Drop zuordnen
- Auch als Batch: mehrere Medien mit Cmd/Ctrl+Klick markieren und gemeinsam ziehen
Cloud-Speicher durchsuchen und importieren (sobald ein Storage-Provider-Addon wie nextcloud installiert und berechtigt ist)
- Eigener Sidebar-Bereich pro angebundenem Speicher, Navigation per Ordner-Kacheln und eigener Breadcrumb, serverseitige Suche sofern der Provider sie unterstützt
- Einzeldatei-Import direkt aus der Mini-Detailansicht, im Picker-Modus mit sofortiger Übernahme
- Massenimport: Mehrfachauswahl per Checkbox oder „Alle im aktuellen Ordner“, einmalige Zielkategorie-Wahl, Fortschrittsanzeige mit Fehlerliste je Datei
KI-Funktionen (optional, sobald das separate ai_platform-Addon installiert/konfiguriert und in den Einstellungen aktiviert ist)
- ALT-Text-Generierung: „AI generieren“-Button neben dem ALT-Text-Feld (Einzeldatei) sowie „KI-Alt-Text-Generator“ im Zahnrad-Menü (mehrere Dateien mit fehlendem ALT-Text nacheinander abarbeiten). Schreibt nie automatisch – Vorschläge werden erst nach Prüfung durch einen expliziten Klick übernommen.
- KI-Tag-Vorschläge: schlägt beim Bearbeiten einer Datei passende Tags vor – ausschließlich aus Tags, die zuvor in der Tag-Verwaltung gezielt dafür freigegeben wurden (geschlossenes Vokabular, die KI legt nie eigenständig neue Tags an).
Mehrfachauswahl
- Im Picker-Modus: Dateien markieren, „Übernehmen“ liefert die Auswahl als Array zurück
- Im Normalmodus: Cmd/Ctrl+Klick markiert mehrere Medien für Batch-Löschen oder Sammlungs-Zuordnung
Input-Widget
- Vorschau, Hinzufügen/Entfernen, Drag & Drop-Sortierung bei Mehrfachauswahl
- Initialisiert sich automatisch, auch bei dynamisch nachgeladenen Feldern (MBlock & Co.)
- AddOn installieren und aktivieren.
- Das FriendsOfREDAXO/api-Addon muss ebenfalls installiert sein – unter API → Konfiguration die
backend/media*-Endpunkte (Liste, Get, Add, Delete, Update, Category) aktivieren. - Fertig. Der Hauptmenüpunkt „Medienpool“ öffnet ab sofort direkt den neuen Overlay.
Unter MediaPlace finden sich die Admin-Seiten Einstellungen, Metainfo Felder, Demo und Hilfe. Der Picker/Overlay selbst bleibt für alle Backend-User mit Medienrecht nutzbar – nur der „Nur unbenutzte Medien“-Filter braucht zusätzlich ein eigenes Recht, das sich über Benutzer → Rollen vergeben lässt.
Falls doch lieber der alte Medienpool gewünscht ist: unter MediaPlace → Einstellungen die Checkbox „Klassischen Medienpool-Menüpunkt ersetzen“ abschalten. Dann verhält sich alles wieder wie im REDAXO-Standard.
Hinweis: Der alte Medienpool bleibt als Picker-Seite erreichbar – für AddOns, die MediaPlace noch nicht unterstützen (z. B. TinyMCE/CKEditor5), springt der klassische Auswahl-Popup weiterhin ein.
Ebenfalls in den Einstellungen: „Tagging (System-Tags) deaktivieren“ und „Sammlungen deaktivieren“ blenden die jeweiligen Bereiche unabhängig voneinander aus. Bereits gespeicherte Daten gehen dabei nicht verloren, nur die Bedienoberfläche verschwindet.
Unter MediaPlace → Tag-Verwaltung (Recht mediaplace[manage_tags]) lassen sich System-Tags zentral verwalten, unabhängig davon, ob sie schon einer Datei zugewiesen sind:
- Neuen Tag anlegen – Name, Farbe und optional direkt „Für KI-Vorschläge freigeben“ (siehe unten). So lässt sich eine Tag-Liste vorab kuratieren, statt sie erst durch Zuweisen an eine Datei entstehen zu lassen.
- Umbenennen – kaskadiert automatisch auf alle Dateien, die den Tag tragen.
- Farbe ändern – zentral für den Tag, gilt danach überall. Die Farbe eines bestehenden Tags ist nur noch hier änderbar; das Farb-Swatch im Tag-Widget einer Datei erscheint nur noch bei der Neuanlage.
- Löschen – entfernt den Tag von allen Dateien.
Sammlungen (collection:-Präfix) tauchen hier bewusst nicht auf – die haben ihre eigene Verwaltung („Sammlungen verwalten“ im Overlay).
Unter MediaPlace → Einstellungen → Upload lässt sich „Bilder beim Upload verkleinern“ aktivieren (standardmäßig aus), mit maximaler Breite/Höhe in Pixeln. Zu große Bilder werden im Browser per Canvas herunterskaliert, bevor sie hochgeladen werden – Seitenverhältnis bleibt erhalten, kleinere Bilder werden nie vergrößert, und das Dateiformat bleibt unverändert. GIFs (könnten animiert sein) und SVGs (kein Rasterbild) werden dabei nie angefasst.
Ist der Schalter aktiv, taucht im Detail-Panel bei bereits gespeicherten Bildern, die größer als diese Grenze sind (z. B. von vor der Aktivierung), ein „Bild optimieren“-Button auf – verkleinert die Datei nachträglich in-place (gleicher Dateiname, per GD, unterstützt JPG/PNG/WebP, nicht GIF/SVG). Der Button verschwindet von selbst, sobald das Bild innerhalb der Grenze liegt. Braucht das Rollenrecht mediaplace[optimize_image] (Benutzer → Rollen).
Ist das separate ffmpeg-Addon installiert, zeigt das Grid für Videos eine echte Vorschau statt des Datei-Icons. Der Modus ist unter MediaPlace → Einstellungen einstellbar:
- Aus – nur das Datei-Icon, keine Vorschau-Generierung
- Einzelbild – ein einzelnes Standbild, deutlich günstiger als eine Animation (kleines Video-Symbol auf der Kachel macht trotzdem klar, dass es sich um ein Video handelt)
- Animiert – kurze, bewegte Vorschau (Standard, bisheriges Verhalten)
Im Detail-Panel eines Videos gibt es außerdem, sofern ffmpeg lauffähig ist:
- „Video optimieren“ (Rollenrecht
mediaplace[optimize_video]): ersetzt die Videodatei in-place durch eine kleinere, gleicher Dateiname. Läuft im Hintergrund weiter, eine Statuszeile zeigt den Fortschritt; bereits optimierte Dateien zeigen die erreichte Kompressionsrate. - „Technische Details“: aufklappbare Auflösung/Dauer/Codec/Bitrate/Framerate-Angaben, erst beim Aufklappen nachgeladen.
Ist das cropper-Addon installiert und hat der User das Recht cropper[], zeigt das Detail-Panel bei Bildern einen Zuschneiden-Button – öffnet cropper's Bearbeitungsoberfläche direkt im MediaPlace-Overlay, ohne Seitenwechsel.
Ist ein Storage-Provider-Addon installiert (z. B. nextcloud) und hat der Nutzer dessen eigenes Recht, taucht in der Sidebar ein zusätzlicher Bereich mit einem Eintrag je angebundenem Speicher auf. Ein Klick öffnet die entfernte Ordnerstruktur direkt im gewohnten Grid/Liste-Layout, inklusive eigener Breadcrumb und – sofern der Provider das unterstützt – Suche.
- Einzelne Datei importieren: Klick auf eine Datei öffnet eine schlanke Mini-Detailansicht mit einem „In Medienpool importieren“-Button. Zielkategorie wird einmalig abgefragt.
- Mehrere Dateien auf einmal importieren: Der Auswahl-Modus-Button in der Werkzeugleiste (gleicher Button wie für die lokale Mehrfachauswahl) blendet Checkboxen auf den Dateien ein. Eine Fußleiste bietet „Alle auswählen“ (nur Dateien im gerade angezeigten Ordner, nicht rekursiv), die Anzahl der Auswahl sowie „Auswahl importieren“. Nach der Zielkategorie-Wahl läuft der Import in kleinen Chunks mit Fortschrittsbalken; einzelne fehlgeschlagene Dateien brechen die restlichen nicht ab, sondern erscheinen als eigene Fehlerzeile.
- Der Import kopiert die Datei in den lokalen Medienpool – die entfernte Originaldatei bleibt beim Provider unverändert bestehen (kein Verschieben/Löschen).
Ist das cronjob-Addon installiert, steht unter Cronjobs der Typ „MediaPlace: Vorschaubilder vorwärmen“ zur Verfügung: erzeugt Grid-Thumbnails (Bilder und, falls ffmpeg installiert ist, auch Videos) im Hintergrund vor, statt sie erst beim ersten Betrachten live zu generieren – schont den Server bei großen, noch nicht durchgewärmten Kategorien. Pro Lauf wird je Typ nur eine begrenzte, einstellbare Anzahl neuer Vorschaubilder erzeugt (bereits gecachte werden übersprungen), neueste Dateien zuerst.
Nutzt du das klassische Metainfo-Feld med_alt statt eines eigenen JSON-Alt-Feldes, kannte MediaPlace bisher keine Möglichkeit, ein rein dekoratives Bild (bei dem laut Barrierefreiheits-Richtlinien bewusst alt="" korrekt ist) von einem tatsächlich fehlenden ALT-Text zu unterscheiden – ein leeres Feld zählte immer als "fehlt".
Unter MediaPlace → Einstellungen findet sich dafür eine eigene Box „Klassisches ALT-Text-Feld“: fehlt med_alt und/oder das zusätzliche Dekorativ-Feld, lässt es sich dort per Klick anlegen (nutzt REDAXOs eigene Metainfo-API, keine manuelle Feldanlage nötig). Ist das Dekorativ-Feld bei einem Bild aktiviert, zählt es in der "Medien ohne ALT-Text"-Sidebar-Ansicht, im "ALT-Text fehlt"-Hinweis im Detail-Panel sowie überall sonst in MediaPlace nicht mehr als fehlend, unabhängig vom Inhalt von med_alt. Wird ein eigenes JSON-Alt-Feld genutzt (Widget-Typ „alt“), ist das nicht relevant – das hat sein eigenes „Dekorativ“-Flag bereits eingebaut.
Optional, sobald das separate ai_platform-Addon installiert und konfiguriert ist (mindestens ein Profil vom Typ „Bildverständnis“) – ohne ai_platform bleiben beide Funktionen unter MediaPlace → Einstellungen → „KI-Funktionen“ einfach ausgeblendet.
ALT-Text-Generierung (Schalter „KI-Alt-Text aktivieren“):
- „AI generieren“-Button neben dem ALT-Text-Feld im Detail-Panel (eigenes JSON-Feld oder klassisches
med_alt) – schreibt nur ins sichtbare Feld, gespeichert wird weiterhin über den normalen Speichern-Button. - „KI-Alt-Text-Generator“ im Zahnrad-Menü: erzeugt zunächst nur Vorschläge für alle Dateien ohne ALT-Text (Thumbnail + editierbares Textfeld je Datei, größere Vorschau per Klick, einzelne Einträge verwerfbar), geschrieben wird erst nach „Übernehmen“. Ein Lauf ist auf 25 Dateien begrenzt (jede ist ein echter KI-Aufruf), „Weitere generieren“ holt bei Bedarf nach.
- Prompt-Profil (Barrierefreiheit/Neutral/SEO) und eigener Prompt konfigurierbar. SVG-Dateien werden beim Einzeldatei-Button clientseitig auf Canvas gerendert (der Browser kann SVG selbst rendern, ein Server-Rasterizer wäre unzuverlässig) – in der Massengenerierung werden sie stattdessen übersprungen und separat gezählt. Zu große Bilder werden vor dem Senden automatisch verkleinert (Einstellung „Maximale Bildkantenlänge für die KI-Analyse“).
KI-Tag-Vorschläge (Schalter „KI-Tag-Vorschläge aktivieren“):
- „KI-Tags vorschlagen“-Button im Tag-Widget des Detail-Panels, Vorschläge erscheinen als anklickbare Chips – ein Klick fügt den Tag hinzu, gespeichert wird wie gewohnt über den Speichern-Button.
- Geschlossenes Vokabular: die KI schlägt ausschließlich Tags vor, die in der Tag-Verwaltung explizit über die Spalte „KI-Vorschläge“ freigegeben wurden (Default: kein Tag freigegeben) – sie legt nie eigenständig neue Tags an. Obergrenze pro Datei konfigurierbar (Standard 3).
Beide Funktionen teilen sich das konfigurierte Bildverständnis-Profil und die Bildgrößen-Einstellung. Zugriff ist rechtegeprüft: der Einzeldatei-Button braucht normalen Medienzugriff, „KI-Alt-Text-Generator“ zusätzlich das granularere Recht mediaplace[bulk_operations].
<!-- Einzelbild -->
<input class="mp3-widget" name="REX_INPUT_VALUE[1]" value="REX_VALUE[1]">
<!-- Galerie (mehrere Dateien, kommasepariert) -->
<input class="mp3-widget" data-mp3-multiple="true" name="REX_INPUT_VALUE[2]" value="REX_VALUE[2]">
<!-- Mit Direkt-Upload: Dateien per Drag&Drop oder Klick direkt hochladen
(Kategorie-Auswahl-Dialog vor dem Upload), zusätzlich zum normalen
Picker. Nur Bilder erlauben mit data-mp3-types (Syntax wie natives
<input accept>). -->
<input class="mp3-widget" data-mp3-multiple="true" data-mp3-upload="true" data-mp3-types="image/*" name="REX_INPUT_VALUE[3]" value="REX_VALUE[3]">Klick auf ➕ öffnet den Picker. Werden Felder dynamisch nachgeladen (z. B. MBlock), einfach MP3Widget.init() erneut aufrufen. Bei Mehrfachauswahl lässt sich die Galerie per Umschalter im Toolbar zwischen Kacheln- und Listenansicht wechseln (Einstellung gilt geteilt für alle Widgets auf der Seite).
MP3.open(function (filename) {
console.log('Gewählt:', filename);
});
// Mehrfachauswahl
MP3.open(function (filenames) {
console.log('Gewählt:', filenames);
}, { multiple: true });Automatisch abgefangen werden nur klickbare klassische Widgets – REX_MEDIA[n]/REX_MEDIALIST[n], mform +media+/+medialist+, der Hauptmenüpunkt (mediaplace_classic.js, Event-Delegation) – die öffnen den MediaPlace-Overlay statt des alten Popups.
TinyMCE und CKEditor5 rufen openREXMedia()/openMediaPool() dagegen direkt per JavaScript auf, ohne abfangbaren Klick. Das bleibt bewusst unverändert, damit ihr Popup-Fenster-Vertrag (jQuery(window).on('rex:selectMedia', ...)) weiter funktioniert – dort springt also weiterhin der klassische Medienpool ein (siehe Hinweis oben).
Baut ihr einen eigenen Picker oder Feldtyp und wollt aktiv MediaPlace nutzen, statt die alte Popup-Kompatibilität nachzubauen, ruft einfach direkt die JS-API auf:
MP3.open(function (filename) {
// Datei ausgewählt, z.B. ins eigene Eingabefeld schreiben
});
// bestehende Auswahl im Detail-Panel ansehen, ohne sie zu ändern
MP3.openFile('bild.jpg');Alle mediaplace_*-Endpunkte laufen über REDAXOs rex-api-call-Mechanismus und sind Backend-Session-Endpunkte, keine öffentliche/token-basierte API – sie prüfen rex::isBackend() + rex::getUser() und funktionieren deshalb nur mit einer eingeloggten Backend-Session (gleicher Origin, z.B. fetch(..., { credentials: 'same-origin' }) aus eigenem Backend-JS heraus). Für externen/headless-Zugriff auf REDAXO-Standarddaten (Titel, echte Metainfo-Felder) ist stattdessen das FriendsOfREDAXO/api-Addon mit Bearer-Token gedacht.
| Methode | Endpunkt | Zweck |
|---|---|---|
| GET | ?rex-api-call=mediaplace_json_metainfo&filename={f} |
Metadaten + Felder + Tags eines Mediums laden |
| PATCH | ?rex-api-call=mediaplace_json_metainfo&filename={f} |
Metadaten + Tags speichern |
| GET/PATCH | ?rex-api-call=mediaplace_tags |
Tag-Katalog laden, Sammlungen verwalten |
| GET/PATCH | ?rex-api-call=mediaplace_categories |
Kategorien laden, verschieben |
| GET | ?rex-api-call=mediaplace_unused&filenames=a,b,c |
Prüft, welche Dateien unbenutzt sind |
| GET/POST | ?rex-api-call=mediaplace_focuspoint |
Fokuspunkt lesen/speichern (nur mit focuspoint-Addon) |
| GET/POST | ?rex-api-call=mediaplace_crop |
Zuschneiden (nur mit cropper-Addon) |
| GET | ?rex-api-call=mediaplace_video_optimize&func=start|status |
Video optimieren starten/pollen (nur mit ffmpeg-Addon) |
| GET | ?rex-api-call=mediaplace_video_info&file={f} |
Technische Videodaten lazy nachladen (nur mit ffmpeg-Addon) |
| GET | ?rex-api-call=mediaplace_image_optimize&func=optimize&file={f} |
Übergroßes Bild in-place verkleinern |
| GET | ?rex-api-call=mediaplace_metainfo_form&filename={f} |
Formular für echte Metainfo-Felder laden/speichern (Einstellung „Metadaten bearbeiten“) |
Beispiel: Metadaten eines Mediums auslesen (aus eigenem Backend-JS, gleiche Session):
fetch('index.php?rex-api-call=mediaplace_json_metainfo&filename=beispiel.jpg', {
credentials: 'same-origin',
})
.then(r => r.json())
.then(json => console.log(json.data)); // { copyright: "...", alt_text: {...}, ... } -- Schlüssel je nach MediaPlace → Metainfo FelderAntwortform (handleGet() in lib/rex_api_mediaplace_json_metainfo.php): { success, data, fields, clangs, system_tags, system_tag_catalog, title } – data enthält die aktuellen Werte (Schlüssel = Feld-key aus MediaPlace → Metainfo Felder), fields die zugehörigen Felddefinitionen (Label/Widget-Typ/Optionen).
Läuft der Code bereits serverseitig in REDAXO (eigenes AddOn, kein HTTP-Umweg nötig), direkt die PHP-Klasse dahinter nutzen:
$media = rex_media::get('beispiel.jpg');
$data = \FriendsOfRedaxo\Mediaplace\MetainfoJsonStorage::loadFromMedia($media);
echo $data['copyright'] ?? '';Wichtig: med_json_data ist ein MediaPlace-eigenes Feld und taucht nicht in den generischen Medien-Antworten des api-Addons auf (das kennt nur echte Metainfo-Spalten). Für Letztere siehe GET /api/backend/media/{filename}/metainfo des api-Addons.
System-Tags und Sammlungen liegen in zwei eigenen Tabellen, nicht im api-Addon. Eine Sammlung ist dabei technisch nur ein Tag mit collection:-Präfix im Namen (collection:Sommerkampagne), angezeigt/verwaltet wird das über dasselbe Tag-Feld im Detail-Panel.
Einen fertigen "gib mir alle Dateien mit Tag X"-API-Endpunkt gibt es nicht – ?rex-api-call=mediaplace_tags liest Tags nur pro (bekannter) Datei, keine Rückwärtssuche. Serverseitig (eigenes AddOn, Modul, Cronjob) übernimmt \FriendsOfRedaxo\Mediaplace\SystemTagManager das:
use FriendsOfRedaxo\Mediaplace\SystemTagManager;
// Alle Dateien mit einem bestimmten Tag
$filenames = SystemTagManager::getFilenamesForTag('Sommerkampagne');
// Alle Dateien einer Sammlung (Praefix wird automatisch ergaenzt)
$filenames = SystemTagManager::getFilenamesForCollection('Projekt X');
foreach ($filenames as $filename) {
$media = rex_media::get($filename);
// ...
}Weitere Methoden dort: getCatalog() liefert den kompletten Tag-/Sammlungs-Katalog (Name + Farbe, ungetrennt), getTags()/getCollections() filtern ihn in echte Tags bzw. Sammlungen (bei Sammlungen bereits ohne collection:-Präfix), isCollectionTagName(string $name) prüft einen einzelnen Namen. Über die API entspricht das GET ?rex-api-call=mediaplace_tags ohne filename/filenames (Antwort-Feld catalog, ungefiltert wie getCatalog()).
Das Detail-Panel ist über den Extension Point MEDIAPLACE_WIDGET_TYPES erweiterbar – andere Addons können so eigene Feldtypen anmelden, ohne dass MediaPlace sie kennen muss:
rex_extension::register('MEDIAPLACE_WIDGET_TYPES', function (rex_extension_point $ep) {
$types = $ep->getSubject();
$types['my_widget'] = [
'label' => 'Mein Feldtyp',
'class' => MyAddon\MyWidget::class, // implements MetainfoWidgetInterface
'fragment' => 'my_addon/detail_field_body_my_widget.php',
];
return $types;
});MyWidget implementiert nur normalizeValue(mixed $value): mixed fürs Speichern; das Fragment bekommt $field, $value, $info und $clangs und liefert nur den Feldkörper (die Hülle kommt vom Dispatcher). Passt der Wert nicht ins generische Einzelfeld-Schema, lässt sich das Auslesen beim Speichern per MP3.registerFieldCollector(widgetType, function (key, panelEl) { return value; }) anpassen.
Das Overlay ist komplett über CSS-Custom-Properties (--mp3-*) eingefärbt, keine Farbe steht hart im Markup oder JS. Ob und wie es auf Dark Mode reagiert, entscheiden vier Blöcke in assets/mediaplace.css:
:root { --mp3-modal-bg: #fff; /* ... */ } /* Light-Default */
body.rex-theme-dark { --mp3-modal-bg: #1a202c; /* ... */ } /* manuell gewähltes Dark-Theme */
@media (prefers-color-scheme: dark) {
body.rex-has-theme:not(.rex-theme-light) { --mp3-modal-bg: #1a202c; /* ... */ }
} /* System-Präferenz, sofern nicht explizit "Hell" gewählt */
#mp3-overlay.mp3-dark-mode { --mp3-modal-bg: #1a202c; /* ... */ } /* eigener Dark-Mode-Toggle im Overlay, unabhängig vom Backend-Theme */rex-theme-dark / rex-theme-light / rex-has-theme sind REDAXOs eigene Backend-Konvention (gesetzt in core/layout/top.php, ausgewertet z. B. vom mitgelieferten be_style-Addon) – kein MediaPlace-Spezifikum. Setzt euer eigenes Backend-Theme-Addon beim manuellen Umschalten auf Dark ebenfalls die Klasse rex-theme-dark auf <body> (statt eines eigenen Mechanismus), greift MediaPlaces Dark Mode automatisch mit, ganz ohne Anpassung hier.
Soll MediaPlace stattdessen eine andere Dark-Palette als die eingebaute bekommen, oder nutzt euer Theme eine abweichende Erkennung (eigene Body-Klasse, eigener Selector), reicht es, die betroffenen --mp3-*-Variablen im eigenen, nach mediaplace/assets/mediaplace.css geladenen Stylesheet neu zu definieren:
/* eigenes Backend-Theme-AddOn, eigene CSS-Datei, nach MediaPlace geladen */
body.mein-theme-dark {
--mp3-modal-bg: #101010;
--mp3-header-bg: #181818;
/* weitere --mp3-*-Variablen nach Bedarf, siehe :root-Block in mediaplace.css für die vollständige Liste */
}Die vollständige Variablenliste steht am Anfang von assets/mediaplace.css im :root-Block (Light-Defaults) – alle vier Blöcke definieren dieselben Namen, nur mit anderen Werten.
Wichtig: Das gilt nur für den MediaPlace-Overlay selbst (#mp3-overlay). Die klassischen REDAXO-Metainfo-Feldtypen im normalen Medienpool-Bearbeiten-Formular (Copyright, Auswahllisten, Medienlisten-Widget usw.) rendern über REDAXOs eigene Core-Fragmente und erben das Backend-Theme direkt – die sollten nicht von hier aus überschrieben werden, sondern folgen automatisch demselben rex-theme-dark.
- FriendsOfREDAXO
- Inspiriert von gängigen System-Filemanagern.
- Nutzt die FriendsOfREDAXO/api-REST-Schnittstelle
- Lizenz: MIT
