Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

Version 1 Nächste Version anzeigen »

Version

v5.5.2

Datum

 

Bundlebundle/dam
Packagedam/upload
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.

Erstellt man beispielsweise ein Uploadformular für Kategorien, so kann man über einen Link mit Verifizierungstoken auf dieses Formular zugreifen. Der Uploadprozess besteht aus drei Schritten:

  1. Upload der Dateien
  2. Befüllen der Felder pro Datei (sofern vorhanden) bzw. Hinzufügen oder Entfernen von Dateien
  3. Abschluss des Uploadvorgangs

Im Fall der Kategorie gibt es keine zusätzlichen Felder im zweiten Schritt. Das Verknüpfen der hochgeladenen Dateien zur vorausgewählten Kategorie findet im dritten Schritt codeseitig statt.

Um das Formular optisch und inhaltlich zu verändern werden Events angeboten. Auch die Verarbeitung der hochgeladenen Dateien ist über Events manipulierbar.

Es sollte eine öffentliche Rolle vorhanden sein, die es ermöglicht Dateien und Ordner anzulegen. Ist das nicht der Fall, wird der Uploadvorgang fehlschlagen.


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:

  • Name
  • IDs der Verifizierungstoken

Optionale Parameter sind:

  • Ablaufdatum des Formulars
  • ID des Dateinamenformats
  • ID der temporären Rolle

Integrationsspezifische Informationen sind in eigenen Entitäten zu speichern (siehe dynamicUploadCategory in "dam/category").

Die Events leiten von dtoEventAbstract ab und verfügen alle über Referenzen zur  jeweiligen dynamicUpload-Entiät und zum entsprechenden verificationToken. Über diese Kombination 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.

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 ContainersGanzzahl. 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 umgehen.


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 (dam/upload.formUpload):

Einstiegspunkt für den Uploadprozess ist dam/upload.formUpload. Hier wird das Formular initial platziert. In diesem Schritt lässt sich der Header des Formulares ü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.

Schritt 2 (dam/upload.formUploadEdit):

Wurden die Dateien erfolgreich hochgeladen, so werden deren IDs als contentIDs an dam/upload.formUploadEdit weitergegeben. 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 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'].

Schritt 3 (dam/upload.formUploadSubmit):

Einen Abschluss findet der Vorgang im Schritt dam/upload.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.


Erstellen von violations
/**
 * @param upload\lib\event\dto\dtoOnEditAfterUpload $dto
 */
 public function onValidateEditAfterUpload(upload\lib\event\dto\dtoOnEditAfterUpload $dto) {
   foreach($dto->submittedRows as $submittedRow):
     $rowNumber = $submittedRow->rowNumber;
     $dto->violations[] = new upload\lib\struct\structDynamicUploadViolation('testField', 'Hier ging was schief', $rowNumber);
   endforeach;
}
  • Keine Stichwörter