add new funtionality view favourite console visual

This commit is contained in:
daniel 2017-12-28 15:13:06 +01:00
parent dfba134905
commit 0b5678fba6
16 changed files with 378 additions and 59 deletions

View File

@ -0,0 +1,5 @@
START TRANSACTION;
ALTER TABLE `tlayout` ADD `is_favourite` int(1) NOT NULL DEFAULT 0;
COMMIT;

View File

@ -1234,6 +1234,7 @@ UPDATE tagente SET tagente.alias = tagente.nombre;
-- Table `tlayout`
-- ---------------------------------------------------------------------
ALTER TABLE tlayout ADD `background_color` varchar(50) NOT NULL default '#FFF';
ALTER TABLE tlayout ADD `is_favourite` int(1) NOT NULL DEFAULT 0;
-- ---------------------------------------------------------------------
-- Table `tlayout_data`

View File

@ -34,10 +34,14 @@ $hack_metaconsole = '';
if (defined('METACONSOLE'))
$hack_metaconsole = '../../';
$buttons['visual_console_favorite'] = array('active' => false,
'text' => '<a href="index.php?sec=network&sec2=godmode/reporting/visual_console_favorite">' .
html_print_image ("images/list.png", true, array ("title" => __('Visual Favourite Console'))) .'</a>');
if (!defined('METACONSOLE')) {
ui_print_page_header(
__('Reporting') .' &raquo; ' . __('Visual Console'),
"images/op_reporting.png", false, "map_builder");
"images/op_reporting.png", false, "map_builder", false, $buttons);
}
$id_layout = (int) get_parameter ('id_layout');

View File

@ -177,6 +177,9 @@ $table->data[5][1] .= '<span class="opt" style="visibility:hidden;">
value="modsize">' . __('Get default image size') .
'</button></span>';
$table->data[6][0] = __('Fovourite visual console');
$table->data[6][1] = html_print_checkbox('is_favourite', 0, $is_favourite, true);
if ($action == 'new') {
$textButtonSubmit = __('Save');
$classButtonSubmit = 'sub wand';
@ -379,6 +382,22 @@ $(document).ready (function () {
$("#text-background_color").attachColorPicker();
if($("#checkbox-is_favourite").is(":checked")) {
$("#hidden-is_favourite_sent").val(1);
}
else{
$("#hidden-is_favourite_sent").val(0);
}
$("#checkbox-is_favourite").change(function(){
if($(this).is(":checked")) {
$("#hidden-is_favourite_sent").val(1);
}
else{
$("#hidden-is_favourite_sent").val(0);
}
});
});
</script>

View File

@ -107,6 +107,7 @@ switch ($activeTab) {
$width = '';
$height = '';
$visualConsoleName = '';
$is_favourite = 0;
break;
case 'update':
@ -117,7 +118,8 @@ switch ($activeTab) {
$width = (int) get_parameter('width');
$height = (int) get_parameter('height');
$visualConsoleName = (string) get_parameter('name');
$is_favourite = (int) get_parameter('is_favourite_sent');
// ACL for the new visual console
//$vconsole_read_new = check_acl ($config['id_user'], $idGroup, "VR");
$vconsole_write_new = check_acl ($config['id_user'], $idGroup, "VW");
@ -137,7 +139,8 @@ switch ($activeTab) {
'background' => $background,
'background_color' => $background_color,
'width' => $width,
'height' => $height
'height' => $height,
'is_favourite' => $is_favourite
);
$error = $_FILES['background_image']['error'];
@ -268,6 +271,7 @@ switch ($activeTab) {
$background_color = $visualConsole['background_color'];
$width = $visualConsole['width'];
$height = $visualConsole['height'];
$is_favourite = $visualConsole['is_favourite'];
break;
}
break;

View File

@ -0,0 +1,123 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2018 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
global $config;
require_once ($config['homedir'] . '/include/functions_visual_map.php');
// ACL for the general permission
$vconsoles_read = check_acl ($config['id_user'], 0, "VR");
$vconsoles_write = check_acl ($config['id_user'], 0, "VW");
$vconsoles_manage = check_acl ($config['id_user'], 0, "VM");
if (!$vconsoles_read && !$vconsoles_write && !$vconsoles_manage) {
db_pandora_audit("ACL Violation",
"Trying to access map builder");
require ("general/noaccess.php");
exit;
}
$buttons['map_builder'] = array('active' => false,
'text' => '<a href="index.php?sec=network&sec2=godmode/reporting/map_builder">' .
html_print_image ("images/visual_console.png", true, array ("title" => __('Visual Console'))) .'</a>');
if (!defined('METACONSOLE')) {
ui_print_page_header(
__('Reporting') .' &raquo; ' . __('Visual Favourite Console'),
"images/op_reporting.png", false, "map_builder", false, $buttons);
}
$search = (string) get_parameter("search","");
$ag_group = (int) get_parameter("ag_group",0);
$recursion = (int) get_parameter("recursion",0);
if(!is_metaconsole()){
echo "<form method='post'
action='index.php?sec=network&amp;sec2=godmode/reporting/visual_console_favorite'>";
} else {
echo "<form method='post'
action='index.php?sec=screen&sec2=screens/screens&action=visualmap'>";
}
echo "<ul class='form_flex'><li class='first_elements'>";
echo "<ul><li>";
echo __('Search') . '&nbsp;';
html_print_input_text ("search", $search, '', 50);
echo "</li><li>";
echo __('Group') . '&nbsp;';
$own_info = get_user_info($config['id_user']);
if (!$own_info['is_admin'] && !check_acl ($config['id_user'], 0, "AW"))
$return_all_group = false;
else
$return_all_group = true;
html_print_select_groups(false, "AR", $return_all_group, "ag_group",
$ag_group, 'this.form.submit();', '', 0, false,
false, true, '', false
);
echo "</li></ul></li><li class='second_elements'><ul><li>";
echo __('Group Recursion');
html_print_checkbox ("recursion", 1, $recursion, false, false, 'this.form.submit()');
echo "</li><li>";
echo "<input name='search_visual_console' type='submit' class='sub search' value='".__('Search')."'>";
echo "</li></ul></li></ul>";
echo "</form>";
$returnAllGroups = 0;
$filters = array();
if(!empty($search)){
$filters['name'] = io_safe_input($search);
}
if ($ag_group > 0) {
$ag_groups = array();
$ag_groups = (array)$ag_group;
if ($recursion) {
$ag_groups = groups_get_id_recursive($ag_group, true);
}
}
elseif($own_info['is_admin']){
$returnAllGroups = 1;
}
if($ag_group){
$filters['group'] = array_flip($ag_groups);
}
$favorite_array = visual_map_get_user_layouts ($config['id_user'],false,$filters,$returnAllGroups,true);
echo "<div id='is_favourite'>";
if($favorite_array == false){
ui_print_error_message(__('No data to show'));
}
else{
echo "<ul class='container'>";
foreach( $favorite_array as $favorite_k => $favourite_v ){
echo "<a href='index.php?sec=network&sec2=operation/visual_console/render_view&id=" . $favourite_v["id"] .
"' title='Visual console". $favourite_v["name"] ."' alt='". $favourite_v["name"] ."'><li>";
echo "<div class='icon_img'>";
echo html_print_image ("images/groups_small/" . groups_get_icon($favourite_v["id_group"]).".png",
true,
array ("style" => '')
);
echo "</div>";
echo "<div class='text'>";
echo $favourite_v["name"];
echo "</div>";
echo "</li></a>";
}
echo "</ul>";
}
echo "</div>";
?>

View File

@ -561,6 +561,41 @@ html_print_table ($table_chars);
echo "</fieldset>";
//----------------------------------------------------------------------
//----------------------------------------------------------------------
// Visual Consoles
//----------------------------------------------------------------------
$table_vc = new stdClass();
$table_vc->width = '100%';
$table_vc->class = "databox filters";
$table_vc->style[0] = 'font-weight: bold';
$table_vc->size[0] = '50%';
$table_vc->data = array ();
$vc_favourite_view_array[0] = 'Classic view';
$vc_favourite_view_array[1] = 'View of favorites';
$table_vc->data[$row][0] = __('Type of view of visual consoles') .
ui_print_help_tip(__('Allows you to directly display the list of favorite visual consoles'), true);
$table_vc->data[$row][1] = html_print_select($vc_favourite_view_array, 'vc_favourite_view', $config["vc_favourite_view"], '', '', 0, true);
$row++;
$table_vc->data[$row][0] = __('Number of favorite visual consoles to show in the menu') .
ui_print_help_tip(__('If the number is 0 it will not show the pull-down menu and maximum 25 favorite consoles'), true);
//$table_vc->data[$row][1] = html_print_input_text ('vc_menu_items', $config["vc_menu_items"], '', 5, 5, true);
$table_vc->data[$row][1] = "<input type ='number' value=".$config["vc_menu_items"]." size='5' name='vc_menu_items' min='0' max='25'>";
$row++;
if (empty($config["vc_line_thickness"])) $config["vc_line_thickness"] = 2;
$table_vc->data[$row][0] = __('Default line thickness for the Visual Console') .
ui_print_help_tip(__('This interval will affect to the lines between elements on the Visual Console'), true);
$table_vc->data[$row][1] = html_print_input_text ('vc_line_thickness', $config["vc_line_thickness"], '', 5, 5, true);
echo "<fieldset>";
echo "<legend>" . __('Visual consoles configuration') . "</legend>";
html_print_table ($table_vc);
echo "</fieldset>";
//----------------------------------------------------------------------
// OTHER CONFIGURATION
//----------------------------------------------------------------------
@ -571,11 +606,6 @@ $table_other->style[0] = 'font-weight: bold;';
$table_other->size[0] = '50%';
$table_other->data = array ();
if (empty($config["vc_line_thickness"])) $config["vc_line_thickness"] = 2;
$table_other->data[$row][0] = __('Default line thickness for the Visual Console') . ui_print_help_tip(__('This interval will affect to the lines between elements on the Visual Console'), true);
$table_other->data[$row][1] = html_print_input_text ('vc_line_thickness', $config["vc_line_thickness"], '', 5, 5, true);
$row++;
// Enrique (27/01/2017) New feature: Show report info on top of reports
$table_other->data[$row][0] = __('Show report info with description') .
ui_print_help_tip(

View File

@ -526,8 +526,13 @@ function config_update_config () {
if (!config_update_value ('vc_refr', get_parameter('vc_refr')))
$error_update[] = __('Default interval for refresh on Visual Console');
if (!config_update_value ('vc_favourite_view', (int) get_parameter('vc_favourite_view', 0)))
$error_update[] = __('Default line favourite_view for the Visual Console');
if (!config_update_value ('vc_menu_items', (int) get_parameter('vc_menu_items', 10)))
$error_update[] = __('Default line menu items for the Visual Console');
if (!config_update_value ('vc_line_thickness', (int) get_parameter('vc_line_thickness')))
$error_update[] = __('Default line thickness for the Visual Console');
if (!config_update_value ('agent_size_text_small', get_parameter('agent_size_text_small')))
$error_update[] = __('Agent size text');
if (!config_update_value ('agent_size_text_medium', get_parameter('agent_size_text_medium')))

View File

@ -379,7 +379,7 @@ function menu_print_menu (&$menu) {
$display .= "top: " . $top . "px;'";
}
//Add submenu2 to submenu string
$submenu_output .= "<ul id='sub" . str_replace(' ','_',$sub["id"]) . "' class=submenu2 $display>";
$submenu_output .= "<ul id='sub" . str_replace(' ','_',$sub["id"]) . "' class=submenu2>";
$submenu_output .= $submenu2_list;
$submenu_output .= "</ul>";
}

View File

@ -3364,7 +3364,7 @@ function visual_map_print_visual_map ($id_layout, $show_links = true,
*
* @return array A list of layouts the user can see.
*/
function visual_map_get_user_layouts ($id_user = 0, $only_names = false, $filter = false, $returnAllGroup = true) {
function visual_map_get_user_layouts ($id_user = 0, $only_names = false, $filter = false, $returnAllGroup = true, $favourite = false) {
if (! is_array ($filter)){
$filter = array ();
} else {
@ -3373,7 +3373,20 @@ function visual_map_get_user_layouts ($id_user = 0, $only_names = false, $filter
unset($filter['name']);
}
}
if($favourite){
if (empty($where)){
$where = "";
}
if ($where != '') {
$where .= ' AND ';
}
$where .= "is_favourite = 1";
}
if ($returnAllGroup) {
$groups = users_get_groups ($id_user, 'VR');
} else {

View File

@ -4368,3 +4368,84 @@ div#footer_help{
fill: none;
transition: all 2s ease-in-out;
}
#is_favourite ul.container{
display: flex;
flex-direction: row;
flex-flow: row wrap;
align-content: center;
justify-content: center;
}
#is_favourite ul.container a {
text-decoration: none;
}
#is_favourite ul.container a:hover li {
background: #E2E2E2;
}
#is_favourite ul.container a li{
min-width: 250px;
height: 80px;
margin: 10px;
display: flex;
flex-direction: row;
align-items: center;
background: #f9faf9;
}
#is_favourite ul.container a li div.icon_img{
width: 30%;
text-align: center;
}
#is_favourite ul.container a li div.text{
min-width: 50%;
font-family: Verdana;
font-size: 18px;
color: #3F3F3F;
text-align: center;
}
form ul.form_flex{
display: flex;
flex-direction: row;
flex-flow: row wrap;
align-content: center;
justify-content: space-around;
border: 1px solid #e2e2e2;
border-radius: 5px;
padding: 20px;
background: #f9faf9;
}
form ul.form_flex li{
flex: auto;
display: flex;
justify-content: center;
align-items: center;
}
form ul.form_flex li.first_elements{
min-width: 550px;
}
form ul.form_flex li.second_elements{
min-width: 300px;
}
form ul.form_flex li ul{
display: flex;
flex-direction: row;
justify-content: space-around;
}
form ul.form_flex li ul{
flex-basis: 100%;
}
form ul.form_flex li ul li{
height: 50px;
width: 100%;
}

View File

@ -19,6 +19,7 @@ if (! isset ($config['id_user'])) {
}
require_once ('include/functions_menu.php');
include_once ($config["homedir"] . '/include/functions_visual_map.php');
enterprise_include ('operation/menu.php');
@ -125,57 +126,89 @@ if (check_acl ($config['id_user'], 0, "MR") || check_acl ($config['id_user'], 0,
enterprise_hook ('services_menu');
if (check_acl ($config['id_user'], 0, "VR") || check_acl ($config['id_user'], 0, "VW") || check_acl ($config['id_user'], 0, "VM")) {
//Visual console
$sub["godmode/reporting/map_builder"]["text"] = __('Visual console');
$sub["godmode/reporting/map_builder"]["id"] = 'Visual console';
//Set godomode path
$sub["godmode/reporting/map_builder"]["subsecs"] = array(
"godmode/reporting/map_builder",
"godmode/reporting/visual_console_builder");
$layouts = db_get_all_rows_in_table ('tlayout', 'name');
$sub2 = array ();
if ($layouts === false) {
$layouts = array ();
if (check_acl ($config['id_user'], 0, "VR") || check_acl ($config['id_user'], 0, "VW") || check_acl ($config['id_user'], 0, "VM")) {
if(!isset($config['vc_favourite_view']) || $config['vc_favourite_view'] == 0){
//Visual console
$sub["godmode/reporting/map_builder"]["text"] = __('Visual console');
$sub["godmode/reporting/map_builder"]["id"] = 'Visual console';
}
else {
else{
//Visual console favorite
$sub["godmode/reporting/visual_console_favorite"]["text"] = __('Visual console');
$sub["godmode/reporting/visual_console_favorite"]["id"] = 'Visual console';
}
if($config['vc_menu_items'] != 0){
//Set godomode path
if(!isset($config['vc_favourite_view']) || $config['vc_favourite_view'] == 0){
$sub["godmode/reporting/map_builder"]["subsecs"] = array(
"godmode/reporting/map_builder",
"godmode/reporting/visual_console_builder");
}
else{
$sub["godmode/reporting/visual_console_favorite"]["subsecs"] = array(
"godmode/reporting/map_builder",
"godmode/reporting/visual_console_builder");
}
//$layouts = db_get_all_rows_in_table ('tlayout', 'name');
$own_info = get_user_info($config['id_user']);
$returnAllGroups = 0;
if($own_info['is_admin']){
$returnAllGroups = 1;
}
$layouts = visual_map_get_user_layouts ($config['id_user'],false,false,$returnAllGroups,true);
$id = (int) get_parameter ('id', -1);
$firstLetterNameVisualToShow = array('_', ',', '[', '(');
foreach ($layouts as $layout) {
if (!check_acl ($config['id_user'], 0, "VR") && ! check_acl ($config['id_user'], 0, "VW") && ! check_acl ($config['id_user'], 0, "VM")) {
continue;
$sub2 = array ();
if ($layouts === false) {
$layouts = array ();
}
else {
$id = (int) get_parameter ('id', -1);
$break_max_console = false;
$max = $config['vc_menu_items'];
$i=0;
foreach ($layouts as $layout) {
$i++;
if ($i > $max) {
$break_max_console = true;
break;
}
$name = io_safe_output($layout['name']);
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["text"] = mb_substr ($name, 0, 19);
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["id"] = mb_substr ($name, 0, 19);
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["title"] = $name;
if (!empty($config['vc_refr'])) {
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["refr"] = $config['vc_refr'];
}
elseif (((int)get_parameter('refr', 0)) > 0) {
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["refr"] = (int)get_parameter('refr', 0);
}
else {
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["refr"] = 0;
}
}
$name = io_safe_output($layout['name']);
if (empty($name)) {
$firstLetter = '';
}
else {
$firstLetter = $name[0];
if($break_max_console){
$sub2["godmode/reporting/visual_console_favorite"]["text"] = __('Show more') . " >";
$sub2["godmode/reporting/visual_console_favorite"]["id"] = "visual_favourite_console";
$sub2["godmode/reporting/visual_console_favorite"]["title"] = "show_more";
$sub2["godmode/reporting/visual_console_favorite"]["refr"] = 0;
}
if (!in_array($firstLetter, $firstLetterNameVisualToShow)) {
continue;
if (!empty($sub2)){
if(!isset($config['vc_favourite_view']) || $config['vc_favourite_view'] == 0){
$sub["godmode/reporting/map_builder"]["sub2"] = $sub2;
}
else{
$sub["godmode/reporting/visual_console_favorite"]["sub2"] = $sub2;
}
}
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["text"] = mb_substr ($name, 0, 19);
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["id"] = mb_substr ($name, 0, 19);
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["title"] = $name;
if (!empty($config['vc_refr'])) {
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["refr"] = $config['vc_refr'];
}
elseif (((int)get_parameter('refr', 0)) > 0) {
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["refr"] = (int)get_parameter('refr', 0);
}
else {
$sub2["operation/visual_console/render_view&amp;id=".$layout["id"]]["refr"] = 0;
}
}
if (!empty($sub2))
$sub["godmode/reporting/map_builder"]["sub2"] = $sub2;
}
}
}

View File

@ -43,7 +43,7 @@ ob_start ('ui_process_page_head');
// Enterprise main
enterprise_include ('index.php');
require ('include/functions_visual_map.php');
require_once ('include/functions_visual_map.php');
$hash = get_parameter ('hash');
$id_layout = (int) get_parameter ('id_layout');

View File

@ -16,7 +16,7 @@
global $config;
// Login check
require ($config['homedir'] . '/include/functions_visual_map.php');
require_once ($config['homedir'] . '/include/functions_visual_map.php');
check_login ();

View File

@ -16,7 +16,7 @@
global $config;
// Login check
require ($config['homedir'] . '/include/functions_visual_map.php');
require_once ($config['homedir'] . '/include/functions_visual_map.php');
check_login ();

View File

@ -1334,6 +1334,7 @@ CREATE TABLE IF NOT EXISTS `tlayout` (
`height` INTEGER UNSIGNED NOT NULL default 0,
`width` INTEGER UNSIGNED NOT NULL default 0,
`background_color` varchar(50) NOT NULL default '#FFF',
`is_favourite` INTEGER UNSIGNED NOT NULL default 0,
PRIMARY KEY(`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;