Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Seiteneigenschaften


Version

v5.5.26

Datum

 

Bundlebundle/dam-core
PackagedamBase/uploadUpload
Ersteller
Tester



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
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNamedynamicUploadProcess
simpleViewerfalse
diagramWidth579669
revision2


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
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNamedynamicUploadCategory
simpleViewerfalse
diagramWidth921521
revision2

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.

Image Removed(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.

PropertyBezeichnungBeschreibung
backgroundImageHintergrundbildZeichenkette. Enthält den relativen Pfad zum gewünschten Hintergrundbild.
logoLogoZeichenkette. Enthält den relativen Pfad zum gewünschten Logo.
containerOffsetVersatz des Containers
Ganzzahl. Enthält einen Wert von 1-12. Sinnvolle Werte liegen im Bereich von 1-6. Der Container wird um das n/12-fache vom linken Fensterrand nach Rechts versetzt.containerOffsetMobileVersatz des Containers (Mobile Ansicht)Ganzzahl. Enthält einen Wert von 1-12. Sinnvolle Werte liegen im Bereich von 1-6. Der Container wird um das n/12-fache vom linken Fensterrand nach Rechts versetzt.containerWidthBreite des ContainersGanzzahl. Enthält einen Wert von 1-12. Der Container füllt das n/12-fache der verfügbaren Breite.containerWidthMobileBreite des Containers (Mobile Ansicht)Ganzzahl. Enthält einen Wert von 1-12. Der Container füllt das n/12-fache der verfügbaren Breite.

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.

...

languagephp
themeRDark
titleErstellen 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.