From 108e4bb08b76b05cc0e4762b1c58b209f2483c56 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Wed, 14 Aug 2013 13:02:46 -0400
Subject: [PATCH] - Dashlets can now be managed from interface config (left column, right column, position, etc.). Defaults dashlets are used if appropriate fields in interface config are left empty. TODO: formatting of dashlets; they need to adjust themselves to left or right column.
---
interface/web/admin/lib/lang/en_system_config.lng | 7 ++
interface/web/admin/lib/lang/de_system_config.lng | 7 ++
interface/web/dashboard/dashboard.php | 32 ++++++++++
interface/web/admin/system_config_edit.php | 18 ++++++
interface/web/admin/form/system_config.tform.php | 36 ++++++++++++
interface/web/admin/templates/system_config_misc_edit.htm | 24 ++++++++
6 files changed, 122 insertions(+), 2 deletions(-)
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 50d627c..d04923b 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -409,6 +409,42 @@
'default' => 'n',
'value' => array(0 => 'n',1 => 'y')
),
+ 'admin_dashlets_left' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => ''
+ ),
+ 'admin_dashlets_right' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => ''
+ ),
+ 'reseller_dashlets_left' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => ''
+ ),
+ 'reseller_dashlets_right' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => ''
+ ),
+ 'client_dashlets_left' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => ''
+ ),
+ 'client_dashlets_right' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => ''
+ ),
##################################
# ENDE Datatable fields
##################################
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index cb82174..0baebc9 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -52,4 +52,11 @@
$wb['webmail_url_error_regex'] = 'Falsche Webmail URL';
$wb['phpmyadmin_url_note_txt'] = 'Platzhalter:';
$wb['webmail_url_note_txt'] = 'Platzhalter:';
+$wb['available_dashlets_note_txt'] = 'Verfügbare Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Admin-Dashlets links';
+$wb['admin_dashlets_right_txt'] = 'Admin-Dashlets rechts';
+$wb['reseller_dashlets_left_txt'] = 'Reseller-Dashlets links';
+$wb['reseller_dashlets_right_txt'] = 'Reseller-Dashlets rechts';
+$wb['client_dashlets_left_txt'] = 'Kunden-Dashlets links';
+$wb['client_dashlets_right_txt'] = 'Kunden-Dashlets rechts';
?>
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index a2b06be..1b370b4 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -52,4 +52,11 @@
$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
$wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
?>
diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php
index 9bf84d0..c2702c7 100644
--- a/interface/web/admin/system_config_edit.php
+++ b/interface/web/admin/system_config_edit.php
@@ -78,6 +78,24 @@
$app->tpl->setVar($record);
}
+ function onShowEnd() {
+ global $app, $conf;
+
+ // available dashlets
+ $available_dashlets_txt = '';
+ $handle = @opendir(ISPC_WEB_PATH.'/dashboard/dashlets');
+ while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..' && !is_dir($file)) {
+ $available_dashlets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.substr($file,0,-4).']<pre class="addPlaceholderContent" style="display:none;">['.substr($file,0,-4).'],</pre></a> ';
+ }
+ }
+
+ if($available_dashlets_txt == '') $available_dashlets_txt = '------';
+ $app->tpl->setVar("available_dashlets_txt",$available_dashlets_txt);
+
+ parent::onShowEnd();
+ }
+
function onSubmit() {
global $app;
diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm
index 16f6052..6538236 100644
--- a/interface/web/admin/templates/system_config_misc_edit.htm
+++ b/interface/web/admin/templates/system_config_misc_edit.htm
@@ -21,6 +21,30 @@
<label for="monitor_key">{tmpl_var name='monitor_key_txt'}</label>
<input name="monitor_key" id="monitor_key" value="{tmpl_var name='monitor_key'}" size="" maxlength="" type="text" class="textInput" />
</div>
+ <div class="ctrlHolder">
+ <label for="admin_dashlets_left">{tmpl_var name='admin_dashlets_left_txt'}</label>
+ <input name="admin_dashlets_left" id="admin_dashlets_left" value="{tmpl_var name='admin_dashlets_left'}" size="" maxlength="" type="text" class="textInput" /> {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"}
+ </div>
+ <div class="ctrlHolder">
+ <label for="admin_dashlets_right">{tmpl_var name='admin_dashlets_right_txt'}</label>
+ <input name="admin_dashlets_right" id="admin_dashlets_right" value="{tmpl_var name='admin_dashlets_right'}" size="" maxlength="" type="text" class="textInput" /> {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"}
+ </div>
+ <div class="ctrlHolder">
+ <label for="reseller_dashlets_left">{tmpl_var name='reseller_dashlets_left_txt'}</label>
+ <input name="reseller_dashlets_left" id="reseller_dashlets_left" value="{tmpl_var name='reseller_dashlets_left'}" size="" maxlength="" type="text" class="textInput" /> {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"}
+ </div>
+ <div class="ctrlHolder">
+ <label for="reseller_dashlets_right">{tmpl_var name='reseller_dashlets_right_txt'}</label>
+ <input name="reseller_dashlets_right" id="reseller_dashlets_right" value="{tmpl_var name='reseller_dashlets_right'}" size="" maxlength="" type="text" class="textInput" /> {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"}
+ </div>
+ <div class="ctrlHolder">
+ <label for="client_dashlets_left">{tmpl_var name='client_dashlets_left_txt'}</label>
+ <input name="client_dashlets_left" id="client_dashlets_left" value="{tmpl_var name='client_dashlets_left'}" size="" maxlength="" type="text" class="textInput" /> {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"}
+ </div>
+ <div class="ctrlHolder">
+ <label for="client_dashlets_right">{tmpl_var name='client_dashlets_right_txt'}</label>
+ <input name="client_dashlets_right" id="client_dashlets_right" value="{tmpl_var name='client_dashlets_right'}" size="" maxlength="" type="text" class="textInput" /> {tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"}
+ </div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='tab_change_discard_txt'}</p>
<div class="multiField">
diff --git a/interface/web/dashboard/dashboard.php b/interface/web/dashboard/dashboard.php
index dae00f8..0626758 100644
--- a/interface/web/dashboard/dashboard.php
+++ b/interface/web/dashboard/dashboard.php
@@ -157,8 +157,36 @@
/* Which dashlets in which column */
/******************************************************************************/
-$leftcol_dashlets = array('modules','invoices','quota','mailquota');
-$rightcol_dashlets = array('limits');
+$default_leftcol_dashlets = array('modules','invoices','quota','mailquota');
+$default_rightcol_dashlets = array('limits');
+
+$app->uses('getconf');
+$dashlets_config = $app->getconf->get_global_config('misc');
+//* Client: If the logged in user is not admin and has no sub clients (no reseller)
+if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+ $role = 'client';
+//* Reseller: If the logged in user is not admin and has sub clients (is a reseller)
+} elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+ $role = 'reseller';
+//* Admin: If the logged in user is admin
+} else {
+ $role = 'admin';
+}
+$dashlets_config[$role.'_dashlets_left'] = trim($dashlets_config[$role.'_dashlets_left']);
+$dashlets_config[$role.'_dashlets_right'] = trim($dashlets_config[$role.'_dashlets_right']);
+
+if($dashlets_config[$role.'_dashlets_left'] != ''){
+ preg_match_all('@\[(.*?)\]@', $dashlets_config[$role.'_dashlets_left'], $matches);
+ $leftcol_dashlets = $matches[1];
+} else {
+ $leftcol_dashlets = $default_leftcol_dashlets;
+}
+if($dashlets_config[$role.'_dashlets_right'] != ''){
+ preg_match_all('@\[(.*?)\]@', $dashlets_config[$role.'_dashlets_right'], $matches);
+ $rightcol_dashlets = $matches[1];
+} else {
+ $rightcol_dashlets = $default_rightcol_dashlets;
+}
/******************************************************************************/
--
Gitblit v1.9.1