contao / core

Contao 3 → see contao/contao for Contao 4
GNU Lesser General Public License v3.0
490 stars 213 forks source link

Neuer Hook für Systemnachrichten #2776

Closed tristanlins closed 12 years ago

tristanlins commented 12 years ago

Ich schlage einen Hook vor, um Systemnachrichten auf der Startseite generieren zu können. Über parseBackendTemplate lassen sich Meldungen zwar einbauen, das ist aber sehr "unbequem".

Ein Anwendungsfallbeispiel: Ich gebe in meiner Erweiterung layout_additional_sources eine Meldung auf der Startseite aus, dass man wenn YUI Compressor nicht verfügbar alternativ den cssMinimizer nutzen kann. (Siehe Snapshot)

In meinem Fall lassen sich die Meldungen über die Systemeinstellungen abschalten. Eventuell währe hier ein "ausblenden" Button sinnvoll der einen kompletten Hook abschaltet. Der "ausblenden" Button könnte z.B. den Hook komplett ausblenden oder nur für einen Benutzer (die Meldung sollte natürlich auch wieder einblendbar sein, z.B. über die Systemeinstellungen oder Profil) Ein Mockup wie so etwas aussehen könnte, habe ich an gehangen.

Download the attachments

--- Originally created on January 9th, 2011, at 12:18pm (ID 2776)

Toflar commented 12 years ago

Find ich auch schön die Idee! Aber Tristan - mit Patch wären die Chancen wohl höher =)

--- Originally created on January 10th, 2011, at 11:13pm

leofeyer commented 12 years ago

[[WikiIncompleteDe|Unvollständiges Ticket]]

--- Originally created on January 21st, 2011, at 10:45pm

tristanlins commented 12 years ago

Ich werde mal eine Beispielimplementierung dafür bauen. Könnte aber bisl dauern ^^

--- Originally created on January 24th, 2011, at 09:37am

Toflar commented 12 years ago

Wie sieht es hier aus? Also mal abgesehen davon, ob das ein- und ausblendbar via Settings sein soll fände ich das schon sehr wichtig. Einfach ein Hook in der Main::welcomeScreen() and der Stelle wo momentan nur folgendes steht:

// Check for latest version
if (!empty($GLOBALS['TL_CONFIG']['latestVersion']) && version_compare(VERSION . '.' . BUILD, $GLOBALS['TL_CONFIG']['latestVersion'], '<'))
{
    $objTemplate->update = sprintf($GLOBALS['TL_LANG']['MSC']['updateVersion'], $GLOBALS['TL_CONFIG']['latestVersion']);
}

Du könntest Den Hook dann im Core auch verwenden um

Den Hinweis für neue Versionen einzubauen

Solche Wartungsarbeiten anzukündigen (ich weiss, du magst Links ins Forum nicht, aber hier halte ich es für angebracht =)): http://www.contao-community.de/showthread.php?20283-Contao.org-wegen-Wartungsarbeiten-am-Freitag-den-10.-Juni-nicht-verf%FCgbar&p=137203#post137203

Ich glaube das ist ein Anliegen der Community.

--- Originally created on June 23rd, 2011, at 08:53am

tristanlins commented 12 years ago

Wie versprochen werde ich später (heute) noch eine Beispielimplementierung liefern.

--- Originally created on June 23rd, 2011, at 09:03am

tristanlins commented 12 years ago

So, ich habe meine "Vorstellung" von Systemnachrichten und Systembenachrichtigungen jetzt fertig (jetzt weiß ich warum ich gestern Abend dachte, ich hätte was vergessen...)

Ich habe gleich 2 Systeme, mit denen man Nachrichten (dauerhaft) und Benachrichtigungen (einmalig) anzeigen lassen kann:

Systemnachrichten Werden über einen HOOK aufgerufen:

$GLOBALS['TL_HOOKS']['getSystemMessage'][] = array('Test', 'sysMsg1', false, TL_ALL);
$GLOBALS['TL_HOOKS']['getSystemMessage'][] = array('Test', 'sysMsg2', 'TL_ERROR');
$GLOBALS['TL_HOOKS']['getSystemMessage'][] = array('Test', 'sysMsg3', 'TL_CONFIRM');

Dieser HOOK besteht aus bis zu 4 Feldern, wobei nur 2 notwendig sind:

  1. Klasse (Pflicht, wie bisher)
  2. Methode (Pflicht, wie bisher)
  3. CSS Klasse (optional, default: tl_info) -> damit lässt sich eine CSS Klasse hinzufügen für die optische gestaltung
  4. Sichtbarkeit (optional, Werte: TL_ALL | TL_ADMIN, default: TL_ADMIN) -> damit kann man eine Systemnachricht entweder allen Benutzern (TL_ALL) oder nur Admins (TL_ADMIN) anzeigen lassen

Systemnachrichten werden immer angezeigt, deshalb kann man sie auch ausblenden, doch anstatt die deaktivierten Systemnachrichten in einem DB Feld zu speichern, speichere ich diese in der Session -> Session löschen und alle Nachrichten sind wieder da, das ist denke ich verständlicher, als die einzelnen Hooks zum Wiederherstellen zur Auswahl zu geben.

Systembenachrichtigungen

Diese sind, wie die Sessionvariablen TL_ERROR, TL_CONFIRM und TL_INFO einmalig, jedoch gibt es bei den 3 genannten ein Problem, sie werden nicht immer angezeigt! Es ist vom BE Modul abhängig, ob die getMessages() Methode aufgerufen und diese Nachrichten angezeigt werden oder nicht. Die Systembenachrichtigungen werden immer angezeigt, denn diese werden oberhalb des Containers angezeigt (siehe Snapshot).

Ich denke am besten kann man sich das ganze vorstellen, wenn man sich einfach die Snapshots anschaut. Außerdem habe ich Archive von den Änderungen und von einer Testerweiterung gemacht, die das alles testen soll.

--- Originally created on June 24th, 2011, at 02:16pm

tristanlins commented 12 years ago

PS: die Änderungen sind für auf Basis des aktuellen 2.10er trunks gemacht worden!

--- Originally created on June 24th, 2011, at 02:35pm

tristanlins commented 12 years ago

Und hier das ganze nochmal mit Patch Dateien, statt vollständigen Dateien.

--- Originally created on June 24th, 2011, at 02:59pm

BugBuster1701 commented 12 years ago

Könnte ich auch gebrauchen, so könnte ich bei manueller Installation melden, wenn eine abhängige Erweiterung fehlt. Das geht zwar auch über $_SESSION["TL_INFO"], aber das erscheint dann immer und auf jeder Seite und ist auch nicht abschaltbar. Daher finde ich diese Lösung hier wesendlich besser.

--- Originally created on September 18th, 2011, at 05:25pm

ghost commented 12 years ago

+1

--- Originally created by qzminski on October 3rd, 2011, at 12:51pm

aschempp commented 12 years ago

Benötigen wir auch für Isotope: http://www.contao-forge.org/issues/2111

--- Originally created on October 3rd, 2011, at 12:55pm

Toflar commented 12 years ago

Was mir auch auffällt und mit dem Hook vom Core ebenfalls gleich gelöst werden könnte: Wir haben hunderte von Fragen im Forum bei denen die Lösung ganz einfach war: Sprachenfallback im Seitenbaum aktivieren.

Eine Fehlermeldung, wenn noch gar kein Seitenbaum als Fallback definiert wurde wäre Gold wert!!

--- Originally created on October 6th, 2011, at 12:04pm

aschempp commented 12 years ago

@Tofar: Die Meldung gibt es imho seit der 2.10

--- Originally created on October 6th, 2011, at 12:38pm

Toflar commented 12 years ago

Ja in der tl_page, das stimmt. Aber sie wäre viel besser aufgehoben, als Systemmeldung so wie sie Tristan gepostet hat. Über das Design lässt sich diskutieren, vielleicht findet Leo oder ein Grafiker noch etwas das bisschen netter aussieht (nichts für ungut Tristan, aber Du bist ja auch kein Designer :D) ;)

--- Originally created on October 6th, 2011, at 01:33pm

Toflar commented 12 years ago

Auch ich bin kein Designer, aber ich darf ja nicht meckern ohne Gegenvorschlag ;)

--- Originally created on October 6th, 2011, at 02:21pm

tristanlins commented 12 years ago

@Tofler gute Idee, aber dann sollten auf der BE-Startseite die Nachrichten trotzdem angezeigt werden, sonst gehen die eventuell unter.

--- Originally created on October 6th, 2011, at 03:00pm

andreasisaak commented 12 years ago

Ich find die Idee von Toflar mit dem Badge sehr gut. Grafisch müsste man das nochmal bearbeiten ;) aber wenn das so implementiert wird, dann wäre das schonmal ein großer Schritt.

--- Originally created on October 6th, 2011, at 03:32pm

leofeyer commented 12 years ago

Implementiert in d5368c7001524644115c3b002207fd81. Der Hook bietet nur die Schnittstelle, um Nachrichten anzeigen zu lassen. Wie komplex man die Benachrichtigung anlegt (Beschränkung auf Gruppen, Möglichkeit zur Deaktivierung etc.) bleibt jedem Entwickler selbst überlassen.

--- Originally created on October 21st, 2011, at 02:18pm

Toflar commented 12 years ago

Cool, Leo!

--- Originally created on October 21st, 2011, at 02:26pm

leo-unglaub commented 12 years ago

Wie komplex man die Benachrichtigung anlegt (Beschränkung auf Gruppen, Möglichkeit zur Deaktivierung etc.) bleibt jedem Entwickler selbst überlassen.

Ja, ich denke auch das macht am meisten sinn. Danke fürs einbauen.

--- Originally created on October 21st, 2011, at 02:30pm

fbender commented 12 years ago

Beim Umbenennen von SystemMessages in Messages wurde das einleitende Kommentar vergessen – kannst du das bitte noch korrigieren, sonst ärgern sich wieder einige IDEs bzw. deren Benutzer ;-).

--- Originally created on October 31st, 2011, at 09:57pm

leofeyer commented 12 years ago

--- Originally completed on October 21st, 2011, at 02:18pm