ftimme
2013-08-14 108e4bb08b76b05cc0e4762b1c58b209f2483c56
- 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.
6 files modified
124 ■■■■■ changed files
interface/web/admin/form/system_config.tform.php 36 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/de_system_config.lng 7 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/en_system_config.lng 7 ●●●●● patch | view | raw | blame | history
interface/web/admin/system_config_edit.php 18 ●●●●● patch | view | raw | blame | history
interface/web/admin/templates/system_config_misc_edit.htm 24 ●●●●● patch | view | raw | blame | history
interface/web/dashboard/dashboard.php 32 ●●●●● patch | view | raw | blame | history
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
    ##################################
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';
?>
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';
?>
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;
        
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" />&nbsp;{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" />&nbsp;{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" />&nbsp;{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" />&nbsp;{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" />&nbsp;{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" />&nbsp;{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">
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;
}
/******************************************************************************/