Ein moderner Datei-Uploader für REDAXO mit Chunk-Upload und nahtloser Medienpool-Integration.
Dieser Uploader wurde mit Blick auf Benutzerfreundlichkeit (UX), Barrierefreiheit und rechtliche Anforderungen entwickelt. Er bietet eine moderne Drag-and-Drop-Oberfläche und integriert sich nahtlos in den REDAXO-Medienpool.
-
Chunk-Upload als Kernfeature:
- Zuverlässiges Hochladen großer Dateien in kleinen Teilen (Chunks)
- Einstellbare Chunk-Größe (Standard: 5MB)
- Fortschrittsanzeige für einzelne Chunks und die Gesamtdatei
- Automatisches Zusammenführen der Chunks nach dem Upload
-
Moderne Oberfläche:
- Drag & Drop für einfaches Hochladen von Dateien
- Live-Vorschau der Bilder während des Uploads
- Responsives Design für alle Bildschirmgrößen
-
Automatische Bildoptimierung:
- Verkleinerung großer Bilder auf konfigurierbare Maximalgröße
- Einstellbare Kompressionsqualität für JPEG/PNG/WebP
- Beibehaltung der Originaldimensionen für GIF-Dateien
- Optionale Erstellung von Thumbnails
-
Barrierefreiheit & rechtliche Sicherheit:
- Erzwingt das Setzen von Alt-Texten für Bilder
- Legt automatisch Metafelder an, falls sie noch nicht existieren
- Optionale Abfrage des Copyrights und der Beschreibung für Mediendateien
-
YForm-Integration:
- Spezielles YForm-Value-Feld mit automatischer Löschung nicht verwendeter Medien
- Multi-Upload-Unterstützung mit dynamischer Vorschau
- Einfache Konfiguration über bekannte YForm-Schnittstellen
-
Mehrsprachigkeit:
- Verfügbar in Deutsch (DE) und Englisch (EN)
- Einfach erweiterbar für weitere Sprachen
-
Sichere API:
- Token-basierte Authentifizierung für externe Zugriffe
- Unterstützung für YCOM-Benutzerauthentifizierung
- Validierung von Dateitypen und -größen
-
Wartungswerkzeuge:
- Einfache Bereinigung temporärer Dateien und Chunks
- Protokollierung aller Upload-Vorgänge
- Admin-Interface zur Systemwartung
- AddOn installieren: Installiere das AddOn "filepond_uploader" über den REDAXO-Installer.
- AddOn aktivieren: Aktiviere das AddOn im Backend unter "AddOns".
- Konfigurieren: Passe die Einstellungen unter "FilePond Uploader > Einstellungen" an deine Bedürfnisse an.
- Fertig: Der Uploader ist nun einsatzbereit!
$yform->setValueField('filepond', [
'name' => 'bilder',
'label' => 'Bildergalerie',
'allowed_max_files' => 5,
'allowed_types' => 'image/*',
'allowed_filesize' => 10,
'category' => 1
]);
PIPE-Variante für YForm:
filepond|pic|Profilbild|image/*|3|1|1|Bitte ein Bild hochladen|Hier können Sie Ihr Profilbild hochladen
Hinweis: Das
filepond
-Value-Feld in YForm ist eine bequeme Möglichkeit, den Uploader zu verwenden. Alternativ kann ein normales Input-Feld mit den notwendigendata
-Attributen versehen werden. In diesem Fall entfällt die automatische Löschung nicht verwendeter Medien.
<input
type="hidden"
name="REX_INPUT_VALUE[1]"
value="REX_VALUE[1]"
data-widget="filepond"
data-filepond-cat="1"
data-filepond-maxfiles="5"
data-filepond-types="image/*"
data-filepond-maxsize="10"
data-filepond-lang="de_de"
data-filepond-chunk-enabled="true"
data-filepond-chunk-size="5242880"
>
<?php
$files = explode(',', 'REX_VALUE[1]');
foreach($files as $file) {
if($media = rex_media::get($file)) {
echo '<img
src="'.$media->getUrl().'"
alt="'.$media->getValue('med_alt').'"
title="'.$media->getValue('title').'"
>';
}
}
?>
Der Chunk-Upload ist das Herzstück des FilePond-Uploaders und ermöglicht das zuverlässige Hochladen großer Dateien auch bei langsameren Internetverbindungen.
- Datei-Aufteilung: Große Dateien werden clientseitig in kleine Teile (Chunks) aufgeteilt.
- Chunk-weiser Upload: Jeder Chunk wird einzeln hochgeladen, mit individueller Fortschrittsanzeige.
- Serverseitige Zusammenführung: Nach Abschluss des Uploads werden alle Chunks zu einer vollständigen Datei zusammengefügt.
- Automatische Bereinigung: Temporäre Dateien werden nach erfolgreichem Upload automatisch entfernt.
- Verbesserte Zuverlässigkeit: Bei Netzwerkproblemen müssen nur fehlgeschlagene Chunks erneut hochgeladen werden.
- Große Dateien: Überwindung von Server-Limits für maximale Upload-Größen.
- Bessere Performance: Serverseitige Ressourcen werden effizienter genutzt.
- Benutzerfreundlichkeit: Klare Fortschrittsanzeige für jeden Chunk und die Gesamtdatei.
Im Backend können Sie folgende Chunk-Upload-Einstellungen anpassen:
- Chunk-Upload aktivieren/deaktivieren: Globale Einstellung für alle Upload-Felder.
- Chunk-Größe: Die Größe jedes Chunks in MB (Standard: 5MB).
- Temporäre Dateien aufräumen: Manuelle Bereinigung alter temporärer Dateien.
Das AddOn enthält eine Helper-Klasse, die das Einbinden von CSS- und JavaScript-Dateien vereinfacht.
// Im Template oder Modul
<?php
echo filepond_helper::getScripts();
echo filepond_helper::getStyles();
?>
Folgende data
-Attribute können zur Konfiguration verwendet werden:
Attribut | Beschreibung | Standardwert |
---|---|---|
data-filepond-cat |
Medienpool Kategorie ID | 0 |
data-filepond-types |
Erlaubte Dateitypen | image/* |
data-filepond-maxfiles |
Maximale Anzahl an Dateien | 30 |
data-filepond-maxsize |
Maximale Dateigröße in MB | 10 |
data-filepond-lang |
Sprache (de_de / en_gb ) |
de_de |
data-filepond-skip-meta |
Meta-Eingabe deaktivieren | false |
data-filepond-chunk-enabled |
Chunk-Upload aktivieren | true |
data-filepond-chunk-size |
Chunk-Größe in Bytes | 5242880 |
data-filepond-types="mime/type"
- Bilder:
image/*
- Videos:
video/*
- PDFs:
application/pdf
- Medienformate (Bilder, Videos, Audio):
image/*, video/*, audio/*
Beispiele:
<!-- Alle Bildtypen -->
data-filepond-types="image/*"
<!-- Bilder und PDFs -->
data-filepond-types="image/*, application/pdf"
<!-- Microsoft Office -->
data-filepond-types="application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation"
Hinweis: Bei Verwendung von YForm/Yorm muss
rex_login::startSession()
vor Yform/YOrm aufgerufen werden.
Im Frontend sollte die Session gestartet werden:
rex_login::startSession();
Die Werte sollten zurückgesetzt werden, wenn sie nicht mehr benötigt werden.
rex_set_session('filepond_token', rex_config::get('filepond_uploader', 'api_token'));
Dadurch wird der API-Token übergeben, um Datei-Uploads auch außerhalb von YCOM im Frontend zu ermöglichen.
rex_set_session('filepond_no_meta', true);
Dadurch lässt sich die Meta-Abfrage (Titel, Alt-Text, Copyright) deaktivieren (boolescher Wert: true
/ false
).
<?php
rex_login::startSession();
// Session-Token für API-Zugriff setzen (für Frontend)
rex_set_session('filepond_token', rex_config::get('filepond_uploader', 'api_token'));
// Optional: Meta-Eingabe deaktivieren
rex_set_session('filepond_no_meta', true);
// Filepond Assets einbinden (besser im Template ablegen)
if (rex::isFrontend()) {
echo filepond_helper::getStyles();
echo filepond_helper::getScripts();
}
?>
<form class="uploadform" method="post" enctype="multipart/form-data">
<input
type="hidden"
name="REX_INPUT_MEDIALIST[1]"
value="REX_MEDIALIST[1]"
data-widget="filepond"
data-filepond-cat="1"
data-filepond-types="image/*,video/*,application/pdf"
data-filepond-maxfiles="3"
data-filepond-maxsize="10"
data-filepond-lang="de_de"
data-filepond-skip-meta="<?= rex_session('filepond_no_meta', 'boolean', false) ? 'true' : 'false' ?>"
data-filepond-chunk-enabled="true"
data-filepond-chunk-size="5242880"
>
</form>
document.addEventListener('DOMContentLoaded', function() {
// Dieser Code wird ausgeführt, nachdem das HTML vollständig geladen wurde.
initFilePond();
});
Falls JQuery im Einsatz ist, rex:ready im Frontend triggern.
document.addEventListener('DOMContentLoaded', function() {
// Dieser Code wird ausgeführt, nachdem das HTML vollständig geladen wurde.
$('body').trigger('rex:ready', [$('body')]);
});
Falls das Panel nicht richtig dargestellt wird, kann es helfen, den Stil anzupassen:
.filepond--panel-root {
border: 1px solid var(--fp-border);
background-color: #eedede;
min-height: 150px;
}
Bilder werden automatisch optimiert, wenn sie eine konfigurierte maximale Pixelgröße überschreiten:
- Große Bilder werden proportional verkleinert.
- Die Qualität ist konfigurierbar (10-100).
- GIF-Dateien werden nicht verändert.
- Die Originaldatei wird durch die optimierte Version ersetzt.
Standardmäßig ist die maximale Größe 1200 Pixel (Breite oder Höhe). Dieser Wert und die Kompressionsqualität können in den Einstellungen angepasst werden.
Folgende Metadaten können für jede hochgeladene Datei erfasst werden:
- Titel: Wird im Medienpool zur Verwaltung der Datei verwendet.
- Alt-Text: Beschreibt den Bildinhalt für Screenreader (wichtig für Barrierefreiheit und SEO), gespeichert in
med_alt
. - Copyright: Information zu Bildrechten und Urhebern, gespeichert in
med_copyright
. - Beschreibung: Ausführlichere Beschreibung des Medieninhalts, gespeichert in
med_description
.
Wichtige JavaScript-Events für eigene Entwicklungen:
// Upload erfolgreich
pond.on('processfile', (error, file) => {
if(!error) {
console.log('Datei hochgeladen:', file.serverId);
}
});
// Datei gelöscht
pond.on('removefile', (error, file) => {
console.log('Datei entfernt:', file.serverId);
});
// Chunk-Upload-Fortschritt (nur wenn Chunk-Upload aktiviert ist)
pond.on('processfileProgress', (file, progress) => {
console.log(`Chunk-Fortschritt für ${file.filename}: ${Math.floor(progress * 100)}%`);
});
Als Administrator können Sie temporäre Dateien und Chunks über die Einstellungsseite bereinigen. Dies ist besonders nützlich, wenn:
- Uploads abgebrochen wurden
- Temporäre Dateien nicht automatisch gelöscht wurden
- Sie Speicherplatz freigeben möchten
Die Wartungsfunktion löscht:
- Alte Chunk-Verzeichnisse (älter als 24 Stunden)
- Temporäre Metadaten-Dateien
- Nicht mehr benötigte temporäre Dateien
- Die maximale Dateigröße wird serverseitig überprüft.
- Das Copyright-Feld und die Beschreibung sind optional, Titel und Alt-Text sind Pflicht.
- Uploads landen automatisch im Medienpool.
- Metadaten werden im Medienpool gespeichert.
- Videos können direkt im Upload-Dialog betrachtet werden.
- Bilder werden automatisch auf die maximale Größe optimiert.
- Chunk-Upload funktioniert auch bei langsameren Internetverbindungen zuverlässig.
- KLXM Crossmedia GmbH: klxm.de
- Entwickler: Thomas Skerbis
- Vendor: FilePond - pqina.nl/filepond
- Lizenz: MIT
- GitHub Issues: Für Fehlermeldungen und Feature-Anfragen.
- REDAXO Slack: Für Community-Support und Diskussionen.
- www.redaxo.org: Offizielle REDAXO-Website.
- AddOn Homepage: Für aktuelle Informationen und Updates.