Search the FirstSpirit Knowledge Base
Hallo zusammen,
es geht um folgendes:
wir haben eine Absatzvorlage für eine Mediengalerie, dort wird ein Medienordner gepflegt und alle enthaltenen Bilder und Videos werden dargestellt. Als Feature soll ein Button gerendert werden, über welchen der Endbenutzer alle angezeigten Medien als .zip-Archiv herunterladen kann. Diese Funktionialität habe ich jetzt als FSM mit einer Executable umgesetzt. Im HTML-Kanal der Absatzvorlage wird nun ein $CMS_RENDER(script:"vantaio_script_mediafolderzipprovider", "parameterMap": parameterMap)$ aufgerufen. Anschließend enthält die übergebene Map das .zip-Archiv als Media-Objekt und ich kann die Referenz auflösen. Im FSM an sich wird der aktuelle Medienordner aus der Map entnommen, darüber iteriert, ein .zip-Archiv erstellt und dieses dann in dem Ordner als Medium angelegt. Anschließend werden das Zip und der Ordner freigegeben.
Das funktioniert auch in der Preview alles gut, jedoch wenn ich eine Generierung durchführe kann kein neues Medium angelegt werden (das fertige .zip-Archiv im Medienordner), da ich mich in einem "read only store" befinde. Das liegt daran, dass ich grade dabei bin zu releasen. Gibt es eine Möglichkeit das Medium dennoch anzulegen und mit der aktuellen Generierung auszuliefern?
Schließlich will ich das Zip nicht bei jeden Preview-Aufruf anlegen, sondern erst bei der Generierung.
Ich habe bereits versucht in der Executable die gesetzten Permissions zu ändern aber auch diese sind read-only.
Folgende Zeile schlägt fehl, wenn sie während der Generierung aufgerufen wird:
Media zipArchiveAsMediafile = mediaFolder.createMedia(filenameWithoutExtension, filenameWithoutExtension, Media.FILE, false, true);
Ein weiteres Detail ist, dass ich wenn ich in der Preview bin den Medienordner locken muss, um darin zu arbeiten (mediaFolder.setLock(true, true);) während der Generierung hingegen wirft das locken eine Exception, weil Locks im Release-Zustand nicht unterstützt werden. Lasse ich das Locken weg, lande ich schlussendlich beim oben genannten Problem.
So soll die Struktur nach dem Erstellen des Zips sein:
Vielen Dank und viele Grüße,
Kevin Kaster
Ich habe das Modul nun so umgeschrieben, dass das .zip-Archiv in Generierungsverzeichnis erstellt wird und nie im Media Store landet, dadurch umgeht das Zip auch die Versionierung und man verhindert, dass das Ganze die Projektgröße aufbläht. Die URL generiere ich jetzt von Hand mit Hilfe des URLPrefix.
Ich habe das Modul nun so umgeschrieben, dass das .zip-Archiv in Generierungsverzeichnis erstellt wird und nie im Media Store landet, dadurch umgeht das Zip auch die Versionierung und man verhindert, dass das Ganze die Projektgröße aufbläht. Die URL generiere ich jetzt von Hand mit Hilfe des URLPrefix.