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 Mitteilungen", "Sie haben %n eigene Mitteilung"]
}]
}
}
Bitte beachten Sie, dass Sie Standard Kategorien nicht überschreiben sollten. Diese sind: quarantine, system, lost_pages, public_save, workflow, liveserver
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 mehr als 1 Mitteilung gibt und der zweite Wert, sobald es genau eine 1 Mitteilung gibt. Wird der zweite Wert nicht angegeben, wird immer der erste Wert für den Titel verwendet. Der Platzhalter %n wird dabei automatisch mit der Anzahl ersetzt.
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ück liefern, die für diese Kategorie in Mitteilungen und Erinnerungen angezeigt werden sollen. Beispiel:
function get_custom_notification($category, $notify) {
$items = [];
if ($category == 'foobar') { // Nur für die Kategorie "foobar" erweitern
$items[] = [
'ref' => $notify->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. Sie können als Referenz aber auch einen eigenen String verwenden, wenn dieser eindeutig zuzuordnen ist.
- title: der anzuzeigende Text in der Mitteilung.
Es sind auch noch weitere Eigenschaften möglich:
- quote: eine nähere Beschreibung der Mitteilung (wird unterhalb von title angezeigt).
- icon: die URL zu einer Icon Grafik (sollte mit $GLOBALS['egotec_conf']['url_dir'] beginnen).
- meta: die URL, die beim Klick auf die Mitteilung geöffnet werden soll.
- action: die URL im Hauptfenster (open), Page Frame (dlg) oder neuem Fenster (popup) ö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 (zum aktuellen Zeitpunkt ist das auch der einzige unterstützte Typ). 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).
Der Wert für ref wird automatisch generiert, kann aber über params.ref bei Bedarf überschrieben werden.