Eigene Mitteilungen und Erinnerungen definieren

Sie können eigene Mitteilungen und Erinnerungen jeden Typs definieren. Dafür müssen Sie eine neue Kategorie von Mitteilungen und Erinnerungen festlegen. Dies geschieht in der conf.json Datei.

{ "notification": { "categories": [{ "category": "foobar", "title": ["Sie haben %n eigene Mitteilung", "Sie haben %n eigene Mitteilungen"] }] } }
warning

Bitte beachten Sie, dass Sie Standard Kategorien nicht überschreiben sollten. Diese sind: quarantine, system, public_save, workflow

Die Bezeichnung für category ist für die Zuordnung der Funktionalität wichtig. Der Wert für title wird als Titel angezeigt und ist ein Array. Dabei wird der erste Titel angezeigt, wenn es für diese Kategorie genau 1 Mitteilung gibt und der zweite Wert, sobald es mehr als 1 Mitteilung gibt. Wird der zweite Wert nicht angegeben, wird immer der erste Wert für den Titel verwendet.

wb_incandescent

Sie können für eine Kategorie die Eigenschaft prepend setzen, wenn Sie diese immer ganz oben anzeigen möchten.

Funktionalität definieren

Legen Sie in Ihrem Design die Datei admin/notify.php an. Hier muss es die PHP Funktion get_custom_notification geben, die folgende Parameter erhält:

  • $category: die zu prüfende Kategorie.
  • $notify: das Ego_Notify Objekt.

Diese Funktion muss ein Array mit Elementen zurückliefern, die für diese Kategorie in Mitteilungen und Erinnerungen angezeigt werden sollen. Beispiel:

function get_custom_notification($category, $notify) { $items = []; if ($category == 'foobar') { $items[] = [ 'ref' => $this->getRef('foobar', ['custom']), 'title' => $GLOBALS['auth']->translate('Es ist ein Fehler aufgetreten') ]; } return $items; }

In diesem Beispiel wird für die Kategorie foobar immer eine Mitteilung ausgegeben. Sie können hier das Array $items nur dann erweitern, wenn Ihre eigenen Prüfungen die Notwendigkeit ergeben, eine Mitteilung anzuzeigen.

Ein Element muss folgende Eigenschaften besitzen:

  • ref: eine eindeutige Referenz für diese Mitteilung. Das kann eine beliebige eindeutige ID sein. Das Ego_Notify Objekt bietet die Methode getRef($prefix, $keys) an, die aus der Kombination aus einem beliebigen $prefix und beliebigen $keys einen eindeutigen MD5 Hash erzeugt. Diese Referenz wird z.B. benötigt um festzustellen, welche Mitteilung der betroffene Benutzer bereits gelesen hat.
  • title: der anzuzeigende Text in der Mitteilung.

Es sind auch noch weitere Eigenschaften möglich:

  • quote: eine nähere Beschreibung der Mitteilung.
  • icon: die URL zu einer Icon Grafik.
  • meta: die URL, die beim Klick auf die Mitteilung geöffnet werden soll.
  • action: die URL im Hauptfenster (open) oder Page Frame (dlg) öffnen. Nutzen Sie function, um eine eigene Funktion in der Eigenschaft meta aufzurufen.
  • persistent: die Mitteilung kann nicht als gelesen markiert werden.
  • important: die Mitteilung als wichtig einstufen (sie wird dadurch rot hervorgehoben und kann nicht als gelesen markiert werden). Diese Mitteilung ist auch immer ganz oben.

Falls Sie in Ihrer Mitteilung auf eine Seite verweisen möchten, können Sie die Ego_Notify Methode createElement($type, $category, $data = []) nutzen. Diese erzeugt bereits ein entsprechendes Element, dass eine Seite darstellt und auf diese verweist. Beispiel:

$items[] = $notify->createElement('page', 'foobar', [ 'page' => $page ]);

Der Wert für $type ist dabei page. Der Wert für $category der der betroffenen Kategorie. Über $data kann außer das betroffene Page Objekt in page auch noch folgendes angegeben werden.

  • date: das anzuzeigende Feld für das Datum (Standard: c_date).
  • quote: entspricht dem quote eines gewöhnlichen Elements. Dieser Wert wird einem Standard quote vorangestellt.
  • params: ein Array mit weiteren Eigenschaften eines gewöhnlichen Elements (hier kann quote auch komplett überschrieben werden).