Unter Umständen kann es sinnvoll sein, bestimmte Seitentypen mit dem Desktop zu verknüpfen. Dafür stehen auf dem Desktop Desklets zur Verfügung. Die sind nichts anderes als Zellen, die Informationen anzeigen.
Um eine neue Zelle zu erstellen, werden 2 Dateien benötigt:
- site / Mandant / Seitentyp / admin / desktop.php
- site / Mandant / Seitentyp / admin / desktop.html
In der dektop.html wird das Template der Zelle definiert. Die dektop.php-Datei bindet die Zelle ins das System ein.
Beispiel-Desklet: Seitenstatistik
Um den Aufbau und die Verwendung eines Desklets näher zu erläutern, sollen im Beispiel verschiedene Statistiken eines Mandanten angezeigt werden.
Das Template (desktop.html)
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%">
{t}aktive Seiten{/t}
</td>
<td>
{$aktive_seiten}
</td>
</tr>
<tr>
<td>
{t}inaktive Seiten{/t}
</td>
<td>
{$inaktive_seiten}
</td>
</tr>
<tr>
<td>
{t}gelöschte Seiten{/t}
</td>
<td>
{$geloeschte_seiten}
</td>
</tr>
</table>
Die Template-Datei ist im Aufbau recht einfach gehalten: In einer Tabelle werden aktive, inaktive und gelöschte Seiten untereinander angezeigt. Die einzelnen Werte sind mit entsprechenden Platzhaltern versehen, die noch befüllt werden.
Das Skript (desktop.php)
<?php
/**
* Beispiel-Desklet
* Seitenstatistiken ermitteln und als Deklet anzeigen
*/
/**
* Seiten ermitteln und an Smarty übergeben
*/
// Anzahl aktiver Seiten
$alle_seiten = $site->getPages(array(),array('auth_or' => '1=1'));
$smarty->assign('aktive_seiten',$alle_seiten->numRecords());
// Anzahl inaktiver Seiten
$alle_seiten = $site->getPages(array('where' => 'inactive = 1'),array('auth_or' => '1=1'));
$smarty->assign('inaktive_seiten',$alle_seiten->numRecords());
// Anzahl gelöschter Seiten
$alle_seiten = $site->getPages(array('where' => 'deleted = 1'),array('auth_or' => '1=1','deleted' => 1));
$smarty->assign('geloeschte_seiten',$alle_seiten->numRecords());
/**
* Desklet vorbereiten
*/
$cell = array();
$cell[0]['name'] = 'Mandant-Informationen'; // Titel
$cell[0]['id'] = 'mandant_infos'; // id-Bezeichnung
$cell[0]['icon'] = "../admin_skin/egotec/desktop/stats.gif"; // Icon
// Desklet Inhalt aus der desktop.html einbinden
if(in_array($site->name.'_'.$cell[0]['id'], $active_cells)) // Nur anzeigen wenn aktiv
{
$cell[0]['body'] = $smarty->fetch($GLOBALS['egotec_conf']['site_dir'].$GLOBALS['site']->name.'/page/admin/desktop.html');
} else
{
$cell[0]['body'] = '';
}
// Fertige Zelle hinzufügen
$GLOBALS['cells'][] = $cell;
?>
Das Skript ermittelt zunächst über die getPages-Funktion des Site-Objekt die gewünschten Seiten-Mengen. Diese werden nach jeder Abfrage jeweils als Smarty-Platzhalter zur Verfügung gestellt.
Im zweiten Schritt werden Elemente wie Titel und Icon des Desklets bestimmt. Über die Smarty->fetch Methode wird das Template (body.html) in das body-Element der Zelle eingebunden und angezeigt.
Zuletzt wird die fertige Zelle über $GLOBALS['cells'][] = $cell; dem System bekannt gegeben.
Desklet anzeigen
Sobald das neue Desklet über "Ansicht->Mandanten-Informationen" aktiviert wurde, erscheint dieses auf dem Desktop-Bereich.