Config option for global default dashboard (#4080)

* Config option for global default dashboard

Add config option to set a global default dashbord.  This will be used
instead of the user's "Default" dashboard unless they have changed their
default dashboard in their user settings.

* Use a dropdown for the default_dashboard option

Update generate_dynamic_config_panel to allow assoc arrays with
`'value'` and `'description'` as keys and change to a select box.

* Fix PHP style issues lost during merge
This commit is contained in:
Eldon Koyle
2016-08-23 12:37:12 -06:00
committed by Neil Lathwood
parent 0b57b1ef69
commit 787c4f09f7
5 changed files with 59 additions and 7 deletions

View File

@@ -18,12 +18,23 @@
$no_refresh = true;
$default_dash = 0;
if (($tmp = dbFetchCell('SELECT dashboard FROM users WHERE user_id=?', array($_SESSION['user_id']))) != 0) {
$tmp = dbFetchCell(
'SELECT dashboard FROM users WHERE user_id=?',
array($_SESSION['user_id'])
);
if ($tmp != 0) {
$default_dash = $tmp;
} elseif (dbFetchCell('SELECT dashboard_id FROM dashboards WHERE user_id=?', array($_SESSION['user_id'])) == 0) {
$vars['dashboard'] = dbInsert(array('dashboard_name'=>'Default','user_id'=>$_SESSION['user_id']), 'dashboards');
} elseif ((int)$config['webui']['default_dashboard_id']) {
// if the user hasn't set their default page, and there is a global default set
$default_dash = (int)$config['webui']['default_dashboard_id'];
}
if ($default_dash == 0 && dbFetchCell(
'SELECT dashboard_id FROM dashboards WHERE user_id=?',
array($_SESSION['user_id'])
) == 0) {
$vars['dashboard'] = dbInsert(array('dashboard_name'=>'Default', 'user_id'=>$_SESSION['user_id']), 'dashboards');
if (dbFetchCell('select 1 from users_widgets where user_id = ? && dashboard_id = ?', array($_SESSION['user_id'],0)) == 1) {
dbUpdate(array('dashboard_id'=>$vars['dashboard']), 'users_widgets', 'user_id = ? && dashboard_id = ?', array($_SESSION['user_id'],0));
dbUpdate(array('dashboard_id'=>$vars['dashboard']), 'users_widgets', 'user_id = ? && dashboard_id = ?', array($_SESSION['user_id'], 0));
}
}
if (!empty($vars['dashboard'])) {

View File

@@ -25,6 +25,27 @@ $availability_map_conf = array(
),
);
$dashboard_conf = array(
array('name' => 'webui.default_dashboard_id',
'descr' => 'Set global default dashboard id',
'type' => 'select',
'options' => dbFetchRows(
"SELECT 0 as `value`, 'no default dashboard' as `description`
UNION ALL
SELECT `dashboards`.`dashboard_id` as `value`,
CONCAT( `users`.`username`, ':', `dashboards`.`dashboard_name`,
CASE
WHEN `dashboards`.`access` = 1 THEN ' (shared, read-only)'
WHEN `dashboards`.`access` = 2 THEN ' (shared, read-write)'
ELSE ''
END
) as `description`
FROM `dashboards` JOIN `users` ON `users`.`user_id` = `dashboards`.`user_id`
WHERE `dashboards`.`access` > 0;"
),
),
);
echo '
<div class="panel-group" id="accordion">
<form class="form-horizontal" role="form" action="" method="post">
@@ -33,6 +54,7 @@ echo '
echo generate_dynamic_config_panel('Graph settings', $config_groups, $graph_conf);
echo generate_dynamic_config_panel('Search settings', $config_groups, $search_conf);
echo generate_dynamic_config_panel('Availability map settings', $config_groups, $availability_map_conf);
echo generate_dynamic_config_panel('Dashboard settings', $config_groups, $dashboard_conf);
echo '
</form>