Plugin: Slideshow - API

Die Slideshow kann nicht nur über vorher erstelle statische Elemente gefüllt werden, sondern auch über Prozessoren mit dynamischen Inhalt. Damit die Slideshow Dynamischen Inhalt anzeigen kann, muss dies unter Konfiguration > CMS > Slideshow > Dynamischer Inhalt aktiviert werden.


In der Konfiguration kann dann ein Prozessor-Klassenname angegeben werden, der von allen Slideshows verwendet wird, die selber keinen eigenen Prozessor haben. Wenn die Standardwerte in Slideshow-Boxen überschrieben werden können aktiviert ist, kann pro Slideshow ein eigener Prozessor angegeben werden. Hier können Prozessoren entweder wie in der Konfiguration direkt per Klassennamen oder aber in das System per ObjectType eingebunden werden.

Per Klassenname


Die referenzierte Klasse muss das Interface wcf/system/slideshow/processor/ISlideshowProcessor implementieren.

Per ObjectType


DefinitionName: de.warly.plugin.slideshow.processor
Interface der Klasse: wcf/system/slideshow/processor/ISlideshowProcessor

Der ObjectType wird dann in der Liste für Dynamischer Inhalt mit dem Namen wcf.acp.slideshow.processor.[objectType] angezeigt.

ISlideshowProcessor

wcf/system/slideshow/processor/ISlideshowProcessor ist das Interface, das alle Prozessoren unterstützen müssen, die dynamischen Inhalt bereitstellen oder die Slideshow verändern wollen. Es gibt die abstrakte Klasse wcf/system/slideshow/processor/AbstractSlideshowProcessor, welche alle Methoden des Interfaces überschreibt, sodass nur noch die Methoden implementiert werden müssen, in denen etwas passiert

function requiresIdentifier() Boolean


Gibt einen Boolean zurück der bestimmt, ob beim verwenden dieses Prozessors ein Bezeichner für jede Slideshow festgelegt werden muss. Dieser wird dann dem Prozessor übergeben der dann für jede Slideshow angepassten Inhalt ausspielen kann.

In AbstractSlideshowProzessor wird protected $requiresIdentifier = false zurückgegeben, das in Subklassen überschrieben werden kann.

function supportsStaticItems() Boolean


Gibt einen Boolean zurück der bestimmt, ob beim verwenden dieses Prozessors statische Elemente hinzugefügt werden können oder der Prozessor ausschließlich eigene Elemente erstellt. Statische Elemente werden in processItems($items) und processItemSequence($items, $itemSequence) übergeben.

In AbstractSlideshowProzessor wird protected $supportsStaticItems = true zurückgegeben, das in Subklassen überschrieben werden kann.

function getConditionsTemplate() String


Gibt einen String zurück, der im Formular der Slideshow angezeigt wird, wenn dieser Prozessor ausgewählt wurde. Hier können zusätzliche Felder aber auch z.B. Informationen zu dem Prozessor angezeigt werden.

function setConditionsData(array $conditionsData) Void


Diese Methode wird aufgerufen, wenn eine Slideshow mit diesem Prozessor bearbeitet wird. Das Array enthält die Daten die beim letzten Speichern in getConditionsData() zurückgegeben wurden.

function readConditions() Void


Diese Methode wird nach dem Absenden des Formulars aufgerufen. Analog zu wcf/form/IForm::readFormParameters() sollten hier die Felder des Prozessors eingelesen werden.

function validateConditions() Void


Diese Methode wird analog zu wcf/form/IForm::validate() nach dem einlesen der Felder aufgerufen und sollte Exceptions werfen, wenn eine Eingabe ungültig ist.

function getConditionsData() Array


Diese Methode wird aufgerufen, um die Daten die für den Prozessor notwendig sind, zu speichern. Das zurückgegebene Array wird beim erneuten bearbeiten in setConditionsData(array $conditionsData) gegeben.

function setup(ViewableSlideshow $slideshow) Void


Diese Methode wird beim rendern der Slideshow aufgerufen und übergibt die anzuzeigende ViewableSlideshow. An dieser Stelle können alle properties der Slideshow verändert werden.

function processItems(array $items) Array


Diese Methode wird mit den statischen Elementen (wenn vorhanden) als Array von ViewableSlideshowItem-Elementen mit deren itemID als Key aufgerufen und muss ein Array von ViewableSlideshowItem-Elementen zurückgeben. Das zurückgegebene Array kann dabei vollständig geändert werden, es besteht keine Pflicht die vorgegebenen Elemente zu verwenden.


Das zurückgegebene Array kann entweder auch die itemID als Key verwenden oder ein zero-based Array zurückgegeben. Im letzteren Fall wird das Array dann vom SlideshowBoxController abgeändert und die itemID als Key gesetzt. Dies kann u.U. die Erstellung des Arrays vereinfachen.


Um eigene Elemente zu erstellen sollte die Methode ViewableSlideshowItem::create($image) verwendet werden. Es erstellt ein temporäres Element mit einer UUID als itemID. Auf dem erstellten Element können alle properties beliebig gesetzt werden.

function processItemSequence(array $items, array $itemSequence) Array


Diese Methode dient dazu, die Reihenfolge der Elemente festzulegen, in der sie angezeigt werden. Als Parameter wird das fertige ViewableSlideshowItem-Array (aus processItems(array $items)) und die zuvor erstellte Sequenz der Elemente übergeben. Wenn keine Statischen Elemente übergeben wurden, enthält die $itemSequence nur die Keys der Elemente in der Reihenfolge wie sie in $items stehen.


Rückgabewert ist ein Array mit den itemIDs der Elemente. Die zurückgegebenen itemIDs müssen in $items vorhanden sein. Alle nicht vorhandenen itemIDs werden herausgefiltert.