...
Seiteneigenschaften | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Um Dateien in Brandbox hochzuladen, ohne den hochladenden Nutzern einen Zugang zu brandbox zu gestatten, ist es möglich Uploadformulare zu generieren, welche sich dynamisch erweitern lassen.
...
Drawio | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Aufbau des Plugins
Die dynamischen Uploadformulare basieren auf der Entität dynamicUpload
. Diese Entität enthält sowohl Informationen, die für den Upload zwingend benötigt werden, als auch Informationen, die die Basisfunktionalität ergänzen.
Benötigte Parameter sind:
...
Drawio | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Die Events leiten von dtoEventAbstract
ab und verfügen alle über Referenzen zur jeweiligen jeweiligen dynamicUpload
-Entiät und zum entsprechenden verificationToken
. Diese Werte werden in einem Kontext-Objekt gespeichert, das in jedem DynamicUpload-Event zur Verfügung steht, da diese Events von OnPopulateDynamicUploadAbstract ableiten.
Über diese Kombination Werte kann eine Integrationsstelle die jeweilige Entität finden .
Möchte man vermeiden, dass weitere Events ausgeführt werden, so kann man die Wert der Eigenschaft continue
auf false setzen.
(z.B. dynamicUploadCategory anhand von dynamicUploadID).
Konfiguration
Die Uploadformulare besitzen eine Konfigurationstabelle (landingPage
). Das ist derzeit eine Panel-Tabelle. Das bedeutet, dass die Einstellungen für alle dynamischen Uploadformulare gelten.
Property | Bezeichnung | Beschreibung |
---|---|---|
backgroundImage | Hintergrundbild | Zeichenkette. Enthält den relativen Pfad zum gewünschten Hintergrundbild. |
logo | Logo | Zeichenkette. Enthält den relativen Pfad zum gewünschten Logo. |
Verwendung
Allgemeines
Alle Events im mehrstufigen Uploadprozess implementieren das Interface dam/upload/lib/event/dynamicUploadEventInterface. Tatsächlich leiten die meisten Events von der Klasse dam/upload/lib/event/adapter/dynamicUploadEventAdapter ab, um nur Methoden zu implementieren, die tatsächlich genutzt werden sollen.Es existiert ein default-Listener (dam/upload/lib/event/dynamicUploadDefaultEvent
), welcher ein bestimmtes Basisverhalten bereitstellt (Bereitstellen eines Logos, Umbenennen der Dateien etc.). Die Priorität beträgt 100 und somit ist es möglich dieses Verhalten zu umgehenKlasse Base\Upload\lib\event\OnPopulateDynamicUploadAbstract
ab um stets einen geeigneten Kontext bereitzustellen.
Uploadprozess
Um ein dynamisches Uploadformular zu erstellen ist zunächst lediglich eine existierende dynamicUpload-Entität mit einem dazugehörigen Verifizierungstoken notwendig. Mit dem URL-Token des Verifizierungstoken muss nun die URL "yourhost.com/public?request=dam/upload.formUpload&vToken=urlToken
" aufgerufen werden. Um sich dich Entitäten erzeugen zu lassen kann die öffentliche Methode dam\upload\engine::createDynamicUpload
genutzt werden. Die benötigten Entitäten kann der Integrator auch selbst erzeugen (siehe dam/ui).
Der Upload Prozess besteht aus drei Schritten. Einstiegspunkte für diese Schritte sind öffentliche Methoden. Alle Schritte/öffentlichen Methoden erwarten die URL-Repräsentation eines Verifizierungstoken. Ist dieser nicht vorhanden, fehlerhaft oder abgelaufen, so wird eine generische Fehlermeldung ausgegeben.
Schritt 1 (
...
Base/
...
Upload.formUpload):
Einstiegspunkt für den Uploadprozess ist damBase/uploadUpload.formUpload
. Hier wird das Formular initial platziert. In diesem Schritt lässt sich der Header des Formulares Container über das Event onPopulateDynamicUploadHeader
anpassen. Das Event enthält ein Array aus headerElement-Objekten, die aus styleguide/brandbox
kommen. Entsprechend werden nur headerElement
-Objekte dargestellt OnPopulateEntrypoint
erweitern. In diesem Event werden wiederum weitere Events ausgelöst:
- OnPopulateEntrypointHeadline
- OnPopulateEntrypointForm
- OnPopulateEntrypointButtons
Standardmäßig wird im Formular das Upload-Feld platziert. Das Upload-Feld lädt Dateien sequentiell hoch und fügt diese einem DynamicUploadProcess-Datensatz hinzu.
Schritt 2 (
...
Base/
...
Upload.
...
dynamicUploadEditSelection):
Wurden die Dateien erfolgreich hochgeladen, so werden deren IDs als contentIDs an dam/uploadwird Base/Upload.formUploadEdit
weitergegeben. aufgerufen. Hier wird das Event OnPopulateEdit aufgerufen, welches intern wiederum folgende Events auslöst, um die Inhalte für den Container zu erhalten:
- OnPopulateFileEntry
- OnPopulateButtons
Jede hochgeladene Datei ist eine Reihe im Formular. Diese Reihen müssen das input/file
-Feld enthalten. Einer Reihe können über das Event onPopulateDynamicUploadForm
OnPopulateFileEntry
weitere Felder hinzugefügt werden. Das Event dam/upload/lib/event/dto/dtoOnPopulateDynamicUploadForm
enthält diese Reihen als Instanzen von dam/upload/lib/map/entityUploadFileRow
.
Diese Felder müssen einem bestimmten Namensmuster folgen. Das Präfix für den Parameternamen kann über die Methode getInputNamePrefix
der Klasse dam/upload/lib/map/entityUploadFileRow
bezogen werden.
Beispiel: Präfix: inputFileRow[0], Name des Inputs: categoryID. Resultat: inputFileRow[0]['categoryID']Die hinzugefügten Felder folgen keinem Schema. Die Formulardaten werden an den nächsten Request weitergegeben und können dort von weiteren Listenern verarbeitet werden.
Im Container wird außerdem ein Button platziert, welcher den Upload von weiteren Dateien erlaubt.
Schritt 3 (
...
Base/
...
Upload.
...
formDynamicUploadSubmit):
Einen Abschluss findet der Vorgang im Schritt damSchritt Base/uploadUpload.formUploadSubmit
. Aus den erhaltenen HTTP-Parameter werden Instanzen der Klasse dam/upload/lib/event/dto/submittedRow
gebildet, sofern die in den HTTP-Parametern übertragenen Dateipfade existieren.
Feldvalidierungen
Wenn im zweiten Schritt die Feldinhalte validiert werden sollen, kann das ebenfalls über das Event onEditAfterUpload
geschehen. Das entsprechende Event-Objekt besitzt eine Eigenschaft, die ein Array an upload\lib\struct\structDynamicUploadViolation
-Objekten erwartet. Diese Objekte benötigen den Namen des fehlerhaften Parameters, die Fehlernachricht und die Nummer der Feldreihe. Die Fehlermeldungen werden wie von base/uiBase
als http\response\invalid
an das UI gesendet.
...
language | php |
---|---|
theme | RDark |
title | Erstellen von violations |
...
. Hier wird das Event OnPopulateResult ausgelöst. Standardmäßig werden die Dateien in einen Systemordner verschoben. Sollte der Pfad der Dateien geändert werden, ist auf die Prioritäten zu achten.