Version 1.2: Dashboard

Benutzeravatar
Morpheus
Beiträge: 1050
Registriert: Do 8. Aug 2013, 10:49
Kontaktdaten:

Re: Version 1.2: Dashboard

Beitrag von Morpheus »

Jepp, funzt
Hrgnh... (das gilt mir, nicht Dir)
Dafür bin ich doch da :lol:
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen!
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Version 1.2: Dashboard

Beitrag von shadowcat »

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)
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Version 1.2: Dashboard

Beitrag von shadowcat »

So... das Zurücksetzen des Dashboards sowie das Hinzufügen vorher entfernter Widgets ist jetzt auch fertig.
2015-04-16 15_08_33-BlackCat CMS » Administration - ADMINTOOLS.png
2015-04-16 15_08_33-BlackCat CMS » Administration - ADMINTOOLS.png (62.01 KiB) 2704 mal betrachtet
Screenshot aus BCStats, der obere Teil mit dem Select und den Buttons kommt aber vom Core, steht also auf jeder Art von Dashboard zur Verfügung.
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Version 1.2: Dashboard

Beitrag von shadowcat »

Hier mal ein aktuellerer Screenshot vom globalen Dashboard. In der Dropdown-Liste steht jetzt auch das Modul, zu dem das Widget gehört.
Dateianhänge
2015-05-05 15_44_25-BlackCat CMS » Administration - START.png
2015-05-05 15_44_25-BlackCat CMS » Administration - START.png (48.81 KiB) 2677 mal betrachtet
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Antworten