Das hier kommt später mal ins Wiki, jetzt würde das nur verwirren, weil das erst in BC 1.2 geht.
Grundlagen
Dashboards (bzw. deren Konfiguration) werden benutzer- und modulspezifisch gespeichert. Beim ersten Aufruf werden die vorgefundenen Widgets alphabetisch sortiert und in die Spalten eingeordnet. Das Standard-Layout besteht aus zwei Spalten.
Nach dem ersten Aufruf können die Widgets umsortiert, eingeklappt oder ganz entfernt werden. Die jeweilige Einstellung wird sofort gespeichert, es gibt also keinen [Speichern]-Button oder etwas in der Art.
Werden Widgets gefunden, die auf dem Dashboard fehlen - z.B. weil sie entfernt wurden -, wird die Liste dieser Widgets als Dropdown angezeigt.
(Die Funktionalität gibt es noch nicht und ob es wirklich ein Dropdown wird steht noch nicht fest.)
Module mit eigenem Dashboard
Auch Module können eine modulare Backend-Seite haben, die mit Widgets gefüllt werden kann. Ein Beispiel ist das Modul BCStats. Damit die Module die Funktionalität nicht selbst mitbringen müssen, werden die Helper "Widget" und "Dashboard" zur Verfügung gestellt.
Zunächst braucht man ein Unterverzeichnis "widgets", welches die einzelnen Widgets in Form von PHP-Dateien beinhaltet. Zusätzlich kann eine globale Konfigurationsdatei namens "widgets.config.php" hinterlegt werden. Diese kann folgende Einstellungen beinhalten:
Code: Alles auswählen
$widget_config = array(
'allow_global_dashboard' => false,
'preferred_layout' => '33-33-33',
);
'allow_global_dashboard' - Bestimmt, ob die Widgets auch im globalen Dashboard (im Backend) angezeigt werden können
'preferred_layout' - Bestimmt beim ersten Aufruf des Dashboards dessen Layout
Das für die Darstellung notwendige CSS wird automatisch aus dem Backend-Theme hinzugeladen, sofern vorhanden. (Datei widgets.css.) Das für die Verwaltung von Widgets (Minimieren, Verschieben, Entfernen) notwendige JavaScript wird vom Dashboard-Helper ebenfalls automatisch geladen. Das Modul kann nötigenfalls eigene CSS-Stile und JavaScripts mitbringen, notwendig ist das jedoch nicht.
Dashboard laden und ausgeben
Code: Alles auswählen
$config = CAT_Helper_Dashboard::getDashboard('<Modul>');
$parser->output('dashboard.tpl',array('dashboard'=>$config));
Dashboard Template
Code: Alles auswählen
<div class="mod_<Modul>">
{foreach $dashboard.columns col name='outer'}
<ul style="width:{$col.width}%;" class="fc_widgets fc_dashboard_sortable" id="dashboard_col_{$.foreach.outer.index}" data-module="<Modul>">
{foreach $col.widgets key widget name='inner'}
<li class="fc_widget_wrapper clearfix" id="dashboard_col_{$.foreach.outer.index}_item_{$.foreach.inner.index}" data-widget="{$widget.widget_path}">
<div class="fc_widget_title">
<div class="fc_widget_top">
<div data-action="close" data-widget="{$widget.widget_path}" class="icon icon-eye{if $widget.isMinimized}-blocked{/if}"></div>
<div data-action="remove" data-widget="{$widget.widget_path}" class="icon icon-remove"></div>
</div>
{$widget.settings.widget_title}
</div>
<div class="fc_widget_content">{$widget.content}</div>
</li>
{/foreach}
</ul>
{/foreach}
</div>
Konfiguration pro Widget
Jedes Widget kann eine eigene Konfiguration mitliefern, die vom Widget-Helper ausgewertet wird.
Code: Alles auswählen
$widget_settings = array(
'allow_global_dashboard' => false,
'widget_title' => CAT_Helper_I18n::getInstance()->translate('Browsers'),
'preferred_column' => 1
);
'allow_global_dashboard' - Bestimmt, ob das Widget auch im globalen Dashboard (im Backend) angezeigt werden kann
'widget_title' - Der anzuzeigende Titel. Fehlt dieser, wird der Modulname verwendet
'preferred_column' - Wirkt sich nur beim ersten Aufruf aus
(noch nicht implementiert)