diff --git a/html/css/styles.css b/html/css/styles.css index 13662682f5..4780329da2 100644 --- a/html/css/styles.css +++ b/html/css/styles.css @@ -1703,7 +1703,7 @@ tr.search:nth-child(odd) { background: red!important; } -.tile_header { +.widget_header { padding: 0.8em; background-color: #000000; color: #ffffff; @@ -1713,6 +1713,6 @@ tr.search:nth-child(odd) { border-top-right-radius: 4px; } -.tile_body { +.widget_body { padding: 0.8em; } diff --git a/html/forms/update-dashboard-config.inc.php b/html/forms/update-dashboard-config.inc.php index ea44f11d39..70e5fcee23 100644 --- a/html/forms/update-dashboard-config.inc.php +++ b/html/forms/update-dashboard-config.inc.php @@ -5,23 +5,31 @@ $message = 'Error updating user dashboard config'; $data = json_decode($_POST['data'],true); $sub_type = mres($_POST['sub_type']); -$tile_id = mres($_POST['tile_id']); +$widget_id = mres($_POST['widget_id']); -if ($sub_type == 'remove' && is_numeric($tile_id)) { - if ($tile_id == 0 || dbDelete('dashboard_items','`user_id`=? AND `dashboard_item_id`=?', array($_SESSION['user_id'],$tile_id))) { +if ($sub_type == 'remove' && is_numeric($widget_id)) { + if ($widget_id == 0 || dbDelete('users_widgets','`user_id`=? AND `user_widget_id`=?', array($_SESSION['user_id'],$widget_id))) { $status = 'ok'; $message = ''; } } -elseif ($sub_type == 'add' && is_numeric($tile_id)) { - $tile = dbFetchRow('SELECT * FROM `tiles` WHERE `tile_id`=?', array($tile_id)); - if (is_array($tile)) { - list($x,$y) = explode(',',$tile['base_dimensions']); - $item_id = dbInsert(array('user_id'=>$_SESSION['user_id'],'widget_id'=>$tile_id,'title'=>$tile['tile_title'],'content'=>$tile['tile'],'size_x'=>$x,'size_y'=>$y),'dashboard_items'); - if (is_numeric($item_id)) { - $extra = array('item_id'=>$item_id,'title'=>$tile['tile_title'],'content'=>$tile['tile'],'size_x'=>$x,'size_y'=>$y); - $status = 'ok'; - $message = ''; +elseif ($sub_type == 'add' && is_numeric($widget_id)) { + $dupe_check = dbFetchCEll('SELECT `user_widget_id` FROM `users_widgets` WHERE `user_id`=? AND `widget_id`=?',array($_SESSION['user_id'],$widget_id)); + + if (is_numeric($dupe_check)) { + $message = 'This widget has already been added'; + } + else { + + $widget = dbFetchRow('SELECT * FROM `widgets` WHERE `widget_id`=?', array($widget_id)); + if (is_array($widget)) { + list($x,$y) = explode(',',$widget['base_dimensions']); + $item_id = dbInsert(array('user_id'=>$_SESSION['user_id'],'widget_id'=>$widget_id,'title'=>$widget['widget_title'],'size_x'=>$x,'size_y'=>$y),'users_widgets'); + if (is_numeric($item_id)) { + $extra = array('item_id'=>$widget_id,'title'=>$widget['widget_title'],'widget'=>$widget['widget'],'size_x'=>$x,'size_y'=>$y); + $status = 'ok'; + $message = ''; + } } } } @@ -32,7 +40,7 @@ else { foreach ($data as $line) { if (is_array($line)) { $update = array('col'=>$line['col'],'row'=>$line['row'],'size_x'=>$line['size_x'],'size_y'=>$line['size_y']); - dbUpdate($update, 'dashboard_items', '`dashboard_item_id`=?', array($line['id'])); + dbUpdate($update, 'users_widgets', '`user_widget_id`=?', array($line['id'])); } } } diff --git a/html/pages/front/tiles.php b/html/pages/front/tiles.php index d23c534276..4e5f444f73 100644 --- a/html/pages/front/tiles.php +++ b/html/pages/front/tiles.php @@ -14,41 +14,31 @@ $no_refresh = true; -foreach (dbFetchRows('SELECT * FROM `dashboard_items` WHERE `user_id`=?',array($_SESSION['user_id'])) as $items) { +foreach (dbFetchRows('SELECT * FROM `users_widgets` LEFT JOIN `widgets` ON `widgets`.`widget_id`=`users_widgets`.`widget_id` WHERE `user_id`=?',array($_SESSION['user_id'])) as $items) { $data[] = $items; } if (!is_array($data)) { - $data[] = array('dashboard_item_id'=>'0','widget_id'=>1,'title'=>'Add a widget','content'=>'placeholder','col'=>1,'row'=>1,'size_x'=>2,'size_y'=>2,'refresh'=>60); + $data[] = array('user_widget_id'=>'0','widget_id'=>1,'title'=>'Add a widget','widget'=>'placeholder','col'=>1,'row'=>1,'size_x'=>2,'size_y'=>2,'refresh'=>60); } $data = serialize(json_encode($data)); $dash_config = unserialize(stripslashes($data)); -$new_tile = ' - -'; - ?> - -  - + + @@ -65,6 +55,7 @@ $('#new-tile').popover(); diff --git a/sql-schema/058.sql b/sql-schema/058.sql index 7099997229..ebfca59b3c 100644 --- a/sql-schema/058.sql +++ b/sql-schema/058.sql @@ -1,3 +1,3 @@ -CREATE TABLE `dashboard_items` ( `dashboard_item_id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `widget_id` int(11) NOT NULL, `col` tinyint(4) NOT NULL, `row` tinyint(4) NOT NULL, `size_x` tinyint(4) NOT NULL, `size_y` tinyint(4) NOT NULL, `title` varchar(255) NOT NULL, `content` text NOT NULL, `refresh` tinyint(4) NOT NULL DEFAULT '60', PRIMARY KEY (`dashboard_item_id`), KEY `user_id` (`user_id`,`widget_id`) ) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=latin1; -CREATE TABLE `tiles` ( `tile_id` int(11) NOT NULL AUTO_INCREMENT, `tile_title` varchar(255) NOT NULL, `tile` varchar(255) NOT NULL, `base_dimensions` varchar(10) NOT NULL, PRIMARY KEY (`tile_id`), UNIQUE KEY `tile` (`tile`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -INSERT INTO `tiles` (`tile_id`, `tile_title`, `tile`, `base_dimensions`) VALUES (1, 'Availability map', 'availability-map', '4,3'), (2, 'Device summary horizontal', 'device-summary-horiz', '4,2'), (3, 'Alerts', 'alerts', '6,4'), (4, 'Device summary vertical', 'device-summary-vert', '4,3'), (5, 'World map', 'globe', '3,3'); +CREATE TABLE `users_widgets` ( `user_widget_id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `widget_id` int(11) NOT NULL, `col` tinyint(4) NOT NULL, `row` tinyint(4) NOT NULL, `size_x` tinyint(4) NOT NULL, `size_y` tinyint(4) NOT NULL, `title` varchar(255) NOT NULL, `refresh` tinyint(4) NOT NULL DEFAULT '60', PRIMARY KEY (`user_widget_id`), KEY `user_id` (`user_id`,`widget_id`) ) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=latin1; +CREATE TABLE `widgets` ( `widget_id` int(11) NOT NULL AUTO_INCREMENT, `widget_title` varchar(255) NOT NULL, `widget` varchar(255) NOT NULL, `base_dimensions` varchar(10) NOT NULL, PRIMARY KEY (`widget_id`), UNIQUE KEY `widget` (`widget`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; +INSERT INTO `widgets` (`widget_id`, `widget_title`, `widget`, `base_dimensions`) VALUES (1, 'Availability map', 'availability-map', '4,3'), (2, 'Device summary horizontal', 'device-summary-horiz', '4,2'), (3, 'Alerts', 'alerts', '8,4'), (4, 'Device summary vertical', 'device-summary-vert', '4,3'), (5, 'World map', 'globe', '3,3');