friendsofredaxo / yform_dropzone Goto Github PK
View Code? Open in Web Editor NEWErweitert YForm für REDAXO um Multiuploads mit Drag & Drop
License: MIT License
Erweitert YForm für REDAXO um Multiuploads mit Drag & Drop
License: MIT License
In der Listen-Übersicht und am Feld selbst den Download und das Löschen der Datei ermöglichen.
Sodass der Dateiname der hochgeladenen Dateien überall verfügbar ist und verlinkt werden kann.
Nämlich nicht direkt in assets/css
und assets/js
, sondern vom Addon/Plugin-Verzeichnis.
Grob gesagt:
Wenn was mit der Dropzone.js clientseitig schief läuft, ist das Problem entweder in der mitgelieferten JS-Datei in /assets/addons/yform_dropzone/js/
, oder serverseitig in der API unter /redaxo/src/addons/yform_dropzone/lib/
Erster Ansatz: Browser-Developer-Console liefert beim Fehler zusätzliche Infos als JSON in der Response, z.B. bei der Validierung (Dateigröße, Formate, oder, ob die Datei bereits vorhanden war).
Meist stimmt einfach was mit den Parametern der Validierung nicht.
Als Dateiformat ist pdf immer aktiviert, wenn die Tabelle angelegt wird.
Wenn ich es lösche und speichere ist es beim nächsten Aufruf wieder da.
Die vom Upload-Feld bekannten Validierungen sollen auch mit Dropzone funktionieren, heißt:
Zudem als Idee
und sicherstellen, dass das Skript nur 1x eingebunden wird.
Leider bekomme ich es nicht hin, das für jeden Besucher beim hochladen ein eigener Ordner genommen wird .
Wenn ich es mit zwei Nutzern teste, sieht jeder der Nutzer was der andere hochgeladen hat.
Die uniqueId wird irgendwie gar nicht durchgeschleift.
{
"add":"Dateien hinzufügen",
"start":"Upload starten",
"clear":"zurücksetzen",
"dictDefaultMessage":"Dateien auf dieses Feld ziehen",
"dictFallbackMessage":"Ihr Browser untersützt leider keine Drag\'n\'Drop Datei Uploads",
"dictFallbackText":"",
"dictFileTooBig":"Datei ist zu groß",
"dictInvalidFileType":"Dateityp wird nicht unterstützt",
"dictResponseError":"Ein Fehler ist aufgetreten. Ein oder mehrere Dateien konnten nicht hochgeladen werden.",
"dictCancelUpload":"abbrechen",
"dictUploadCanceled":"Upload wurde abgebrochen",
"dictCancelUploadConfirmation":"Upload wird abgebrochen",
"dictRemoveFile":"entfernen",
"dictRemoveFileConfirmation":"Datei wird entfernt",
"dictMaxFilesExceeded":"Zuviele Dateien",
"dictFileSizeUnits":"mb"
}
muss in die Felddefinition. Könnte man auch direkt bei der Eingabe der Parameter per default einfügen.
Warning: array_merge() [function.array-merge]: Argument #2 is not an array in redaxo/src/addons/yform_dropzone/ytemplates/bootstrap/value.dropzone.tpl.php on line 25
Warning: Invalid argument supplied for foreach() in redaxo/src/addons/yform_dropzone/ytemplates/bootstrap/value.dropzone.tpl.php on line 29
Error while executing statement "INSERT INTO rex_dropzone
SET dropzone
= :dropzone" using params {"dropzone":null}! SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'dropzone' cannot be null
an vielen Stellen wird mit $_FILES, $_SESSION, fopen()
etc. gearbeitet. Hier sollten die üblichen Klassen/Methoden/Funktionen von REDAXO verwendet werden.
Sprich im Backend ein Backend-Verzeichnis, im Frontend ein Frontend-Verzeichnis oder der Name der Tabelle.
dropzone.js ist prinzipiell ohne jQuery nutzbar - Bootstrap 3 erfordert hingegen jQuery.
Vielleicht findet man eine Lösung, die dropzone jQuery-frei zu halten.
Aktuell ist in der package.yml nix definiert
Der aktuelle Stand basiert auf einem anderen Projekt. Hier sollten wir den Quellcode austauschen, sodass dieser von Haus aus Bootstrap 3 kompatibel ist.
Der Denkansatz führt dazu, dass man fremden gegenüber die PHPSESSID offenbart. Hier sollte man, analog zum upload-Feld, einen eigenen Token generieren, anhand dessen man die Dateien zuordnet und im data-Verzeichnis ablegt.
Die dropzone benötigt noch eine aktuelle description am Value-Feld. Die kann sich aber noch in Abhängigkeit der Definitionen ändern.
wie besprochen...
im Moment wird ein manuelles Hiddenfeld für einen unique key benötigt, um sich zu merken, welche Dateien hochgeladen wurden und auch um eindeutige Ordner pro Formular+Feld+Nutzer zu erzeugen.
Das müsste man sich vom upload-Feld aus YForm abgucken und dann an den richtigen Stellen korrigieren - im JS, in der Felddefinition und im Template.
Die verliert momentan das Menü von YForm.
@gharlan hast du mir einen Tipp, wie ich das richtig anlege in der package.yml oder wie kann ich das mit Menü (Addon-Menü oben) rendern?
Finde yuploader ungeeignet. Je nachdem, ob der Code später in YForm landet, oder als Addon, würde ich das yform_dropzone nennen oder yform_uploder. der y-präfix ist Yakamara vorenthalten.
Aus irgendeinem Grund werden Fehlermeldungen nicht ausgegeben, bspw. wenn die dropzone die Datei aufgrund von Dateigrößenbeschränkungen oder Dateiendungen ablehnt.
Das Dateianhang-Download-Skript funkt dazwischen und liefert die index.php als Download aus.
Sonst läuft der Speicher irgendwann voll...
ich würde den aktuellen Stand jetzt gerne an FOR abgeben und hoffen, dass sich doch noch jemand daran beteiligt.
Das Addon hat jetzt einen prinzipiell funktionstüchtigen Zustand, auch wenn es noch nicht die Qualität hat, die ich mir gewünscht habe.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.