Erweiteren Sie den 2FOLKS Client mit eigenen Aktionen

Globale Aktionen
Explizite Dokument-Typ Aktionen

Mitunter kann es nötig sein, dem Redakteur Aktionsmöglichkeiten zur Verfügung zu stellen, die der 2FOLKS Client von sich aus nicht bietet. So könnte ein Redakteur z.B. nach einer Export-Möglichkeit fragen, er benötigt eine Funktion, um einen Newsletter zu versenden oder Sie möchten dem Redakteur eine, auf seine Bedürfnisse abgestimmte Statistik liefern.

Natürlich könnten Sie dem Redakteur eine Webseite bauen, die ihm diese Möglichkeiten zur Verfügung stellt. Aber sie können, was eleganter ist, auch den 2FOLKS Client um eigene Aktionen erweitern.

Im Code, den Sie in PHP für jede Aktion programmieren, bekommen Sie ein Request-Objekt geliefert, welches Ihnen, je nach Aktion, einige Parameter übergibt. Als Result geben Sie ein Result-Objekt zurück und können damit unterschiedliche Dinge im Client auslösen. Mehr dazu gleich. Zunächst noch einmal ein wenig Übersicht.

Aktionen teilen sich auf in:

   

  1. Globale Aktionen.
    Die globalen Aktionen stehen unabhängig von Kontext zur Verfügung. Wenn globale Aktionen definiert und freigegeben sind, so erscheint im oberen Bereich, neben den Modulen, vor der Administration. Da die globalen Aktionen in nicht im Kontext eines Dokument-Typen stehen, bekommen Sie im Request-Objekt unterschiedliche Werte übergeben. Hat der Redakteur beim Auslösen der Aktion gerade ein Dokument selektiert, so bekommen Sie das Dokument und das Menü-Item im Request übergeben. Befindet sich der Redakteur gerade in der Benutzerverwaltung, so bekommen Sie im Request eine ID des selektierten Benutzers übergeben. Weitere Einzelheiten finden Sie beim Aktions-Request. Die Reihenfolge der globalen Aktionen können Sie durch Drag&Drop in der Liste verändern.
  2. Dokument-Typ Aktionen.
    Die Dokument-Typ Aktionen teilen sich in implizite und explizite Aktionen auf.

    Die impliziten werden vom Redakteur nicht direkt, sondern im Zuge anderen Handlungen ausgelöst. Zur Verfügung stehen die folgenden Aktionen:
    - After Create (wird ausgelöst, wenn ein Dokument erstellt wurde)
    - Before Save (wird ausgelöst, bevor ein Dokument gespeichert wird - ist aber noch nicht wirklich zu gebrauchen, weil das gespeicherte Dokument zurückgegeben wird, nicht das Geänderte)
    - After Save (wird ausgelöst, nachdem ein Dokument gespeichert wurde)
    - Before Delete (wird ausgelöst, bevor ein Dokument gelöscht wird)
    Im Result der Aktion können Sie mit diesen Aktionen z.B. vor dem Löschen referenzierende Dokumente löschen oder die Speicherung eines Dokumentes aus bestimmten Gründen verhindern. Die Reihenfolge der impliziten Aktionen ist nicht veränderbar, sie werden ohnehin dem Redakteur nie angezeigt.

    Die expliziten werden am unteren rechten Fensterrand dem Redakteur dann zur Verfügung gestellt, wenn er gerade ein Dokument selektiert hat, für welches explizite Aktionen definiert und freigeschaltet sind. Sie werden explizit durch den Redakteur ausgelöst. Mit so einer Aktion kann z.B. das selektierte Dokument exportiert werden oder, was auch immer. Die Reihenfolge der expliziten Aktionen lässt sich in der Liste per Drag&Drop verschieben.

Der Ablauf gestaltet sich in allen Bereichen gleich. Sie bekommen eine Variable namens $actionRequest zur Verfügung gestellt. Dieser können Sie diverse Parameter entnehmen. Dann erstellen Sie ein Aktions-Response-Typ (ActionMessage, ActionHtml, ActionUri oder ActionFile). Diesem geben Sie die von Ihnen zusammengestellten Informationen mit. Abschließend erstellen Sie ein Objekt vom Typ ActionResponse. Diesem übergeben Sie den Status Ihrer Bearbeitung (den Action-Response-Result) und Ihren Aktions-Response-Typ. Dann senden Sie die Antwort durch Aufruf der Funktion Send() Ihres Aktions-Response Objekts. Klingt kompliziert - ist ganz einfach. Schauen Sie sich die Beispiele der unterschiedlichen Aktions-Response-Typen an, Sie werden sofort verstehen, wovon ich rede.