From 902e8589f38357b1a3cdc6e04542d2169986da74 Mon Sep 17 00:00:00 2001 From: samucarc Date: Tue, 29 Jan 2019 15:30:04 +0100 Subject: [PATCH 01/33] Apply a policy into an agent with CLI Former-commit-id: 87037688b1dd3a551c0585319ec545c855484a97 --- pandora_server/util/pandora_manage.pl | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 05547a779f..2dd9ee14c4 100644 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -196,7 +196,7 @@ sub help_screen{ print "\nINCIDENTS:\n\n" unless $param ne ''; help_screen_line('--create_incident', " <description> <origin> <status> <priority 0 for Informative, \n\t 1 for Low, 2 for Medium, 3 for Serious, 4 for Very serious or 5 for Maintenance>\n\t <group> [<owner>]", 'Create incidents'); print "\nPOLICIES:\n\n" unless $param ne ''; - help_screen_line('--apply_policy', '<policy_name>', 'Force apply a policy'); + help_screen_line('--apply_policy', '<id_policy> [<id_agent> <return> <name agent>]', 'Force apply a policy'); help_screen_line('--apply_all_policies', '', 'Force apply to all the policies'); help_screen_line('--add_agent_to_policy', '<agent_name> <policy_name>', 'Add an agent to a policy'); help_screen_line('--remove_agent_from_policy', '<policy_id> <agent_id>', 'Delete an agent to a policy'); @@ -3509,19 +3509,11 @@ sub cli_delete_data($) { ############################################################################## sub cli_apply_policy() { - my $policy_name = @ARGV[2]; - - my $policy_id = enterprise_hook('get_policy_id',[$dbh, safe_input($policy_name)]); - exist_check($policy_id,'policy',$policy_name); - - my $ret = enterprise_hook('pandora_add_policy_queue', [$dbh, $conf, $policy_id, 'apply']); - - if($ret == -1) { - print_log "[ERROR] Operation 'apply' cannot be added to policy '$policy_name' because is duplicated in queue or incompatible with others operations\n\n"; - exit; - } - - print_log "[INFO] Added operation 'apply' to policy '$policy_name'\n\n"; + my ($id_policy, $id_agent, $name, $return) = @ARGV[2..5]; + + # Call the API. + my $result = api_call(\%conf, 'set', 'apply_policy', $id_policy, $id_agent, "$name|$return"); + print "\n$result\n"; } ############################################################################## @@ -5918,7 +5910,7 @@ sub pandora_manage_main ($$$) { cli_delete_data($ltotal); } elsif ($param eq '--apply_policy') { - param_check($ltotal, 1); + param_check($ltotal, 4, 3); cli_apply_policy(); } elsif ($param eq '--disable_policy_alerts') { From 526311d1c6d5d7fd816fe95dd47a3ed438822643 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Mon, 25 Feb 2019 11:54:46 +0100 Subject: [PATCH 02/33] new header and menu Former-commit-id: 0748bc89d30e8ae4723026848d493d15d82af9cd --- pandora_console/general/footer.php | 8 +- pandora_console/general/header.php | 609 ++--- pandora_console/general/main_menu.php | 532 ++-- pandora_console/godmode/menu.php | 1 + .../godmode/setup/setup_visuals.php | 93 +- pandora_console/images/builder.menu_gray.png | Bin 0 -> 330 bytes pandora_console/images/builder.menu_white.png | Bin 0 -> 294 bytes .../images/button_classic_menu.png | Bin 0 -> 745 bytes .../images/button_collapse_menu.png | Bin 0 -> 759 bytes pandora_console/images/clippy_icon_gray.png | Bin 0 -> 462 bytes .../pandora_logo_green_collapsed.png | Bin 0 -> 2468 bytes .../custom_logo/pandora_logo_head_green.png | Bin 0 -> 5461 bytes .../images/extensions.menu_gray.png | Bin 0 -> 416 bytes .../images/extensions.menu_white.png | Bin 0 -> 311 bytes .../images/gm_alerts.menu_gray.png | Bin 0 -> 298 bytes .../images/gm_alerts.menu_white.png | Bin 0 -> 265 bytes .../images/gm_configuration.menu_gray.png | Bin 0 -> 366 bytes .../images/gm_configuration.menu_white.png | Bin 0 -> 276 bytes .../images/gm_events.menu_gray.png | Bin 0 -> 321 bytes .../images/gm_events.menu_white.png | Bin 0 -> 281 bytes .../images/gm_resources.menu_gray.png | Bin 0 -> 311 bytes .../images/gm_resources.menu_white.png | Bin 0 -> 285 bytes .../images/gm_servers.menu_gray.png | Bin 0 -> 335 bytes .../images/gm_servers.menu_white.png | Bin 0 -> 310 bytes pandora_console/images/gm_setup.menu_gray.png | Bin 0 -> 426 bytes .../images/gm_setup.menu_white.png | Bin 0 -> 322 bytes pandora_console/images/gm_users.menu_gray.png | Bin 0 -> 304 bytes .../images/gm_users.menu_white.png | Bin 0 -> 305 bytes pandora_console/images/header_alert_gray.png | Bin 0 -> 458 bytes pandora_console/images/header_chat_gray.png | Bin 0 -> 313 bytes pandora_console/images/header_down_gray.png | Bin 0 -> 364 bytes pandora_console/images/header_email.png | Bin 1375 -> 471 bytes pandora_console/images/header_email_old.png | Bin 0 -> 1375 bytes pandora_console/images/header_help_gray.png | Bin 0 -> 498 bytes pandora_console/images/header_logout_gray.png | Bin 0 -> 347 bytes pandora_console/images/header_ready_gray.png | Bin 0 -> 273 bytes .../images/header_refresh_disabled_gray.png | Bin 0 -> 485 bytes .../images/header_refresh_gray.png | Bin 0 -> 490 bytes .../images/header_user_admin_green.png | Bin 0 -> 665 bytes pandora_console/images/header_user_green.png | Bin 0 -> 531 bytes .../images/header_warning_gray.png | Bin 0 -> 226 bytes pandora_console/images/input_zoom_gray.png | Bin 0 -> 416 bytes pandora_console/images/links.menu_gray.png | Bin 0 -> 387 bytes pandora_console/images/links.menu_white.png | Bin 0 -> 356 bytes .../images/op_events.menu_gray.png | Bin 0 -> 274 bytes .../images/op_events.menu_white.png | Bin 0 -> 252 bytes .../images/op_monitoring.menu_gray.png | Bin 0 -> 387 bytes .../images/op_monitoring.menu_white.png | Bin 0 -> 342 bytes .../images/op_network.menu_gray.png | Bin 0 -> 433 bytes .../images/op_network.menu_white.png | Bin 0 -> 355 bytes .../images/op_reporting.menu_gray.png | Bin 0 -> 241 bytes .../images/op_reporting.menu_white.png | Bin 0 -> 237 bytes .../images/op_workspace.menu_gray.png | Bin 0 -> 339 bytes .../images/op_workspace.menu_white.png | Bin 0 -> 300 bytes pandora_console/images/qrcode_icon_gray.png | Bin 0 -> 599 bytes pandora_console/images/to_top_menu.png | Bin 0 -> 323 bytes .../images/um_messages.menu_gray.png | Bin 0 -> 428 bytes .../images/um_messages.menu_white.png | Bin 0 -> 352 bytes .../fonts/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2 | Bin 0 -> 14720 bytes .../fonts/mem5YaGs126MiZpBA-UNirkOUuhp.woff2 | Bin 0 -> 14544 bytes .../fonts/mem8YaGs126MiZpBA-UFVZ0b.woff2 | Bin 0 -> 14048 bytes pandora_console/include/functions_config.php | 10 +- pandora_console/include/functions_menu.php | 2 +- pandora_console/include/styles/menu.css | 420 ++- pandora_console/include/styles/pandora.css | 2409 ++++++++++------- pandora_console/index.php | 5 +- 66 files changed, 2417 insertions(+), 1672 deletions(-) create mode 100644 pandora_console/images/builder.menu_gray.png create mode 100644 pandora_console/images/builder.menu_white.png create mode 100644 pandora_console/images/button_classic_menu.png create mode 100644 pandora_console/images/button_collapse_menu.png create mode 100644 pandora_console/images/clippy_icon_gray.png create mode 100644 pandora_console/images/custom_logo/pandora_logo_green_collapsed.png create mode 100644 pandora_console/images/custom_logo/pandora_logo_head_green.png create mode 100644 pandora_console/images/extensions.menu_gray.png create mode 100644 pandora_console/images/extensions.menu_white.png create mode 100644 pandora_console/images/gm_alerts.menu_gray.png create mode 100644 pandora_console/images/gm_alerts.menu_white.png create mode 100644 pandora_console/images/gm_configuration.menu_gray.png create mode 100644 pandora_console/images/gm_configuration.menu_white.png create mode 100644 pandora_console/images/gm_events.menu_gray.png create mode 100644 pandora_console/images/gm_events.menu_white.png create mode 100644 pandora_console/images/gm_resources.menu_gray.png create mode 100644 pandora_console/images/gm_resources.menu_white.png create mode 100644 pandora_console/images/gm_servers.menu_gray.png create mode 100644 pandora_console/images/gm_servers.menu_white.png create mode 100644 pandora_console/images/gm_setup.menu_gray.png create mode 100644 pandora_console/images/gm_setup.menu_white.png create mode 100644 pandora_console/images/gm_users.menu_gray.png create mode 100644 pandora_console/images/gm_users.menu_white.png create mode 100644 pandora_console/images/header_alert_gray.png create mode 100644 pandora_console/images/header_chat_gray.png create mode 100644 pandora_console/images/header_down_gray.png create mode 100644 pandora_console/images/header_email_old.png create mode 100644 pandora_console/images/header_help_gray.png create mode 100644 pandora_console/images/header_logout_gray.png create mode 100644 pandora_console/images/header_ready_gray.png create mode 100644 pandora_console/images/header_refresh_disabled_gray.png create mode 100644 pandora_console/images/header_refresh_gray.png create mode 100644 pandora_console/images/header_user_admin_green.png create mode 100644 pandora_console/images/header_user_green.png create mode 100644 pandora_console/images/header_warning_gray.png create mode 100644 pandora_console/images/input_zoom_gray.png create mode 100644 pandora_console/images/links.menu_gray.png create mode 100644 pandora_console/images/links.menu_white.png create mode 100644 pandora_console/images/op_events.menu_gray.png create mode 100644 pandora_console/images/op_events.menu_white.png create mode 100644 pandora_console/images/op_monitoring.menu_gray.png create mode 100644 pandora_console/images/op_monitoring.menu_white.png create mode 100644 pandora_console/images/op_network.menu_gray.png create mode 100644 pandora_console/images/op_network.menu_white.png create mode 100644 pandora_console/images/op_reporting.menu_gray.png create mode 100644 pandora_console/images/op_reporting.menu_white.png create mode 100644 pandora_console/images/op_workspace.menu_gray.png create mode 100644 pandora_console/images/op_workspace.menu_white.png create mode 100644 pandora_console/images/qrcode_icon_gray.png create mode 100644 pandora_console/images/to_top_menu.png create mode 100644 pandora_console/images/um_messages.menu_gray.png create mode 100644 pandora_console/images/um_messages.menu_white.png create mode 100755 pandora_console/include/fonts/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2 create mode 100755 pandora_console/include/fonts/mem5YaGs126MiZpBA-UNirkOUuhp.woff2 create mode 100755 pandora_console/include/fonts/mem8YaGs126MiZpBA-UFVZ0b.woff2 diff --git a/pandora_console/general/footer.php b/pandora_console/general/footer.php index a9a251d177..b847b93f48 100644 --- a/pandora_console/general/footer.php +++ b/pandora_console/general/footer.php @@ -26,7 +26,7 @@ if (!$config['MR']) { $config['MR'] = 0; } -echo '<a class="white_bold footer" target="_blank" href="'.$config['homeurl'].$license_file.'">'; +echo '<a class="footer" target="_blank" href="'.$config['homeurl'].$license_file.'">'; require_once $config['homedir'].'/include/functions_update_manager.php'; @@ -40,9 +40,9 @@ if ($current_package == 0) { echo sprintf(__('%s %s - Build %s - MR %s', get_product_name(), $pandora_version, $build_package_version, $config['MR'])); -echo '</a><br />'; -echo '<a class="white footer">'.__('Page generated at').' '.date($config['date_format']); -echo '</a><br /><span style="color:#eff">® '.get_copyright_notice().'</span>'; +echo '</a> '; +echo '<a class="footer">'.__('Page generated at').' '.date($config['date_format']); +echo '</a><br /><span>® '.get_copyright_notice().'</span>'; if (isset($config['debug'])) { $cache_info = []; diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php index 846f20677b..c75775de10 100644 --- a/pandora_console/general/header.php +++ b/pandora_console/general/header.php @@ -19,359 +19,306 @@ require_once 'include/functions_servers.php'; config_check(); ?> -<table width="100%" cellpadding="0" cellspacing="0" style="margin:0px; padding:0px; margin-top: 0px; height: 100%" border="0"> - <tr> - <td style="width:90%;"> - <a href="index.php?sec=main"> - <?php - $custom_logo = 'images/custom_logo/'.$config['custom_logo']; - if (!defined('PANDORA_ENTERPRISE')) { - $logo_title = get_product_name().' Opensource'; - $custom_logo = 'images/custom_logo/pandora_logo_head_3.png'; +<div id="header_table"> + <div id="header_table_inner"> + <?php + // ======= Alerts =============================================== + $check_minor_release_available = false; + $pandora_management = check_acl($config['id_user'], 0, 'PM'); + + $check_minor_release_available = db_check_minor_relase_available(); + + if ($check_minor_release_available) { + if (users_is_admin($config['id_user'])) { + if ($config['language'] == 'es') { + set_pandora_error_for_header('Hay una o mas revisiones menores en espera para ser actualizadas. <a style="font-size:8pt;font-style:italic;" target="blank" href="http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Actualizacion#Versi.C3.B3n_7.0NG_.28_Rolling_Release_.29">'.__('Sobre actualización de revisión menor').'</a>', 'Revisión/es menor/es disponible/s'); } else { - if (file_exists(ENTERPRISE_DIR.'/'.$custom_logo)) { - $custom_logo = ENTERPRISE_DIR.'/'.$custom_logo; - } - - $logo_title = get_product_name().' Enterprise'; + set_pandora_error_for_header('There are one or more minor releases waiting for update. <a style="font-size:8pt;font-style:italic;" target="blank" href="http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Anexo_Upgrade#Version_7.0NG_.28_Rolling_Release_.29">'.__('About minor release update').'</a>', 'minor release/s available'); } - - echo html_print_image( - $custom_logo, - true, - [ - 'alt' => $logo_title, - 'border' => '0', - ] - ); - ?> - </a> - </td> - <td style="min-width:200px;"> - <?php - $table = new stdClass(); - $table->id = 'header_table'; - $table->class = 'none'; - $table->cellpadding = 0; - $table->cellspacing = 0; - $table->head = []; - $table->data = []; - $table->style[0] = $table->style['clippy'] = $table->style[1] = $table->style[3] = $table->style[4] = $table->style[5] = $table->style[6] = $table->style[8] = $table->style[9] = $table->style['qr'] = 'width: 22px; text-align:center; height: 22px; padding-right: 9px;padding-left: 9px;'; - $table->style[7] = 'width: 20px; padding-right: 9px;'; - $table->style['searchbar'] = 'width: 180px; min-width: 180px;'; - $table->style[11] = 'padding-left: 10px; padding-right: 5px;width: 16px;'; - $table->width = '100%'; - $table->styleTable = 'margin: auto; margin-top: 0px;'; - $table->rowclass[0] = ''; - - $acl_head_search = true; - if ($config['acl_enterprise'] == 1 && !users_is_admin()) { - $acl_head_search = db_get_sql( - "SELECT sec FROM tusuario - INNER JOIN tusuario_perfil ON tusuario.id_user = tusuario_perfil.id_usuario - INNER JOIN tprofile_view ON tprofile_view.id_profile = tusuario_perfil.id_perfil - WHERE tusuario.id_user = '".$config['id_user']."' AND (sec = '*' OR sec = 'head_search')" - ); } + } - if ($acl_head_search) { - $table->data[0][11] = ui_print_help_tip(__('Blank characters are used as AND conditions'), true); + echo '<div id="alert_messages" style="display: none"></div>'; - // Search bar - $search_bar = '<form method="get" style="display: inline;" name="quicksearch" action="">'; - if (!isset($config['search_keywords'])) { - $search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>'; - } else { - if (strlen($config['search_keywords']) == 0) { - $search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>'; - } else { - $search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = false; </script>'; - } - } + if ($config['alert_cnt'] > 0) { + $maintenance_link = 'javascript:'; + $maintenance_title = __('System alerts detected - Please fix as soon as possible'); + $maintenance_class = $maintenance_id = 'show_systemalert_dialog white'; - $search_bar .= '<input type="text" id="keywords" name="keywords"'; - if (!isset($config['search_keywords'])) { - $search_bar .= "value='".__('Enter keywords to search')."'"; - } else if (strlen($config['search_keywords']) == 0) { - $search_bar .= "value='".__('Enter keywords to search')."'"; - } else { - $search_bar .= "value='".$config['search_keywords']."'"; - } - - $search_bar .= 'onfocus="javascript: if (fieldKeyWordEmpty) $(\'#keywords\').val(\'\');" - onkeyup="javascript: fieldKeyWordEmpty = false;" - style="margin-top:5px;" class="search_input" />'; - - // $search_bar .= 'onClick="javascript: document.quicksearch.submit()"'; - $search_bar .= "<input type='hidden' name='head_search_keywords' value='abc' />"; - $search_bar .= '</form>'; - - $table->data[0]['searchbar'] = $search_bar; - } - - // Servers check - $servers = []; - $servers['all'] = (int) db_get_value('COUNT(id_server)', 'tserver'); - $servers['up'] = (int) servers_check_status(); - $servers['down'] = ($servers['all'] - $servers['up']); - if ($servers['up'] == 0) { - // All Servers down or no servers at all - $servers_check_img = html_print_image('images/header_down.png', true, ['alt' => 'cross', 'class' => 'bot', 'title' => __('All systems').': '.__('Down')]); - } else if ($servers['down'] != 0) { - // Some servers down - $servers_check_img = html_print_image('images/header_warning.png', true, ['alt' => 'error', 'class' => 'bot', 'title' => $servers['down'].' '.__('servers down')]); + $maintenance_link_open_txt = '<a href="'.$maintenance_link.'" title="'.$maintenance_title.'" class="'.$maintenance_class.'" id="show_systemalert_dialog">'; + $maintenance_link_open_img = '<a href="'.$maintenance_link.'" title="'.$maintenance_title.'" class="'.$maintenance_class.'">'; + $maintenance_link_close = '</a>'; + if (!$pandora_management) { + $maintenance_img = ''; } else { - // All servers up - $servers_check_img = html_print_image('images/header_ready.png', true, ['alt' => 'ok', 'class' => 'bot', 'title' => __('All systems').': '.__('Ready')]); - } - - unset($servers); - // Since this is the header, we don't like to trickle down variables. - $servers_link_open = '<a class="white" href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60">'; - $servers_link_close = '</a>'; - - if ($config['show_qr_code_header'] == 0) { - $show_qr_code_header = 'display: none;'; - } else { - $show_qr_code_header = 'display: inline;'; - } - - $table->data[0]['qr'] = '<div style="'.$show_qr_code_header.'" id="qr_code_container" style="">'.'<a href="javascript: show_dialog_qrcode();">'.html_print_image( - 'images/qrcode_icon.png', + $maintenance_img = $maintenance_link_open_img.html_print_image( + 'images/header_alert_gray.png', true, [ - 'alt' => __('QR Code of the page'), - 'title' => __('QR Code of the page'), + 'title' => __( + 'You have %d warning(s)', + $config['alert_cnt'] + ), + // 'id' => 'yougotalert', + 'class' => 'bot', ] - ).'</a>'.'</div>'; + ).'<p><span>'.$config['alert_cnt'].'</span></p>'.$maintenance_link_close; + } + } else { + if (!$pandora_management) { + $maintenance_img = ''; + } else { + $maintenance_img = html_print_image('images/header_ready_gray.png', true, ['title' => __('There are not warnings'), 'id' => 'yougotalert', 'class' => 'bot']); + } + } - echo "<div style='display: none;' id='qrcode_container' title='".__('QR code of the page')."'>"; - echo "<div id='qrcode_container_image'></div>"; - echo '</div>'; - ?> - <script type='text/javascript'> - $(document).ready(function() { - $( "#qrcode_container" ).dialog({ - autoOpen: false, - modal: true - }); - }); - </script> - <?php - if ($config['tutorial_mode'] !== 'expert' && !$config['disable_help']) { - $table->data[0]['clippy'] = '<a href="javascript: show_clippy();">'.html_print_image( - 'images/clippy_icon.png', - true, - [ - 'id' => 'clippy', - 'class' => 'clippy', - 'alt' => __('%s assistant', get_product_name()), - 'title' => __( - '%s assistant', - get_product_name() - ), - ] - ).'</a>'; - } + $header_alert = '<div id="header_alert">'.$maintenance_img.'</div>'; - $table->data[0][0] = $servers_link_open.$servers_check_img.$servers_link_close; + // Messages + $msg_cnt = messages_get_count($config['id_user']); + if ($msg_cnt > 0) { + echo '<div id="dialog_messages" style="display: none"></div>'; + + $header_message = '<div id="header_message"><a href="ajax.php?page=operation/messages/message_list" title="'.__('Message overview').'" id="show_messages_dialog">'; + $header_message .= html_print_image('images/header_email.png', true, ['title' => __('You have %d unread message(s)', $msg_cnt), 'id' => 'yougotmail', 'class' => 'bot', 'style' => 'width:24px;']); + $header_message .= '<p><span>'.$msg_cnt.'</span></p></a></div>'; + } + // Chat messages + $header_chat = "<div id='header_chat'><span id='icon_new_messages_chat' style='display: none;'>"; + $header_chat .= "<a href='index.php?sec=workspace&sec2=operation/users/webchat'>"; + $header_chat .= html_print_image('images/header_chat_gray.png', true, ['title' => __('New chat message')]); + $header_chat .= '</a></span></div>'; - // ======= Autorefresh code ============================= - $autorefresh_txt = ''; - $autorefresh_additional = ''; + // Search + $acl_head_search = true; + if ($config['acl_enterprise'] == 1 && !users_is_admin()) { + $acl_head_search = db_get_sql( + "SELECT sec FROM tusuario + INNER JOIN tusuario_perfil ON tusuario.id_user = tusuario_perfil.id_usuario + INNER JOIN tprofile_view ON tprofile_view.id_profile = tusuario_perfil.id_perfil + WHERE tusuario.id_user = '".$config['id_user']."' AND (sec = '*' OR sec = 'head_search')" + ); + } - $ignored_params = [ - 'agent_config' => false, - 'code' => false, - ]; - - if (!isset($_GET['sec2'])) { - $_GET['sec2'] = ''; - } - - if (!isset($_GET['refr'])) { - $_GET['refr'] = null; - } - - $select = db_process_sql("SELECT autorefresh_white_list,time_autorefresh FROM tusuario WHERE id_user = '".$config['id_user']."'"); - $autorefresh_list = json_decode($select[0]['autorefresh_white_list']); - - if ($autorefresh_list !== null && array_search($_GET['sec2'], $autorefresh_list) !== false) { - $do_refresh = true; - if ($_GET['sec2'] == 'operation/agentes/pandora_networkmap') { - if ((!isset($_GET['tab'])) || ($_GET['tab'] != 'view')) { - $do_refresh = false; - } - } - - if ($do_refresh) { - $autorefresh_img = html_print_image('images/header_refresh.png', true, ['class' => 'bot', 'alt' => 'lightning', 'title' => __('Configure autorefresh')]); - - if ($_GET['refr']) { - $autorefresh_txt .= ' (<span id="refrcounter">'.date('i:s', $config['refr']).'</span>)'; - } - - $ignored_params['refr'] = ''; - $values = get_refresh_time_array(); - $autorefresh_additional = '<span id="combo_refr" style="display: none;">'; - $autorefresh_additional .= html_print_select($values, 'ref', '', '', __('Select'), '0', true, false, false); - $autorefresh_additional .= '</span>'; - unset($values); - - $autorefresh_link_open_img = '<a class="white autorefresh" href="'.ui_get_url_refresh($ignored_params).'">'; - - if ($_GET['refr']) { - $autorefresh_link_open_txt = '<a class="white autorefresh autorefresh_txt" href="'.ui_get_url_refresh($ignored_params).'">'; - } else { - $autorefresh_link_open_txt = '<a>'; - } - - $autorefresh_link_close = '</a>'; - } else { - $autorefresh_img = html_print_image('images/header_refresh_disabled.png', true, ['class' => 'bot autorefresh_disabled', 'alt' => 'lightning', 'title' => __('Disabled autorefresh')]); - - $ignored_params['refr'] = false; - - $autorefresh_link_open_img = ''; - $autorefresh_link_open_txt = ''; - $autorefresh_link_close = ''; - } + if ($acl_head_search) { + // Search bar + $search_bar = '<form method="get" style="display: inline;" name="quicksearch" action="">'; + if (!isset($config['search_keywords'])) { + $search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>'; + } else { + if (strlen($config['search_keywords']) == 0) { + $search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>'; } else { - $autorefresh_img = html_print_image('images/header_refresh_disabled.png', true, ['class' => 'bot autorefresh_disabled', 'alt' => 'lightning', 'title' => __('Disabled autorefresh')]); - - $ignored_params['refr'] = false; - - $autorefresh_link_open_img = ''; - $autorefresh_link_open_txt = ''; - $autorefresh_link_close = ''; + $search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = false; </script>'; } - - $table->data[0][1] = $autorefresh_link_open_img.$autorefresh_img.$autorefresh_link_close; - $table->data[0][2] = $autorefresh_link_open_txt.$autorefresh_txt.$autorefresh_link_close.$autorefresh_additional; - // ====================================================== - $check_minor_release_available = false; - $pandora_management = check_acl($config['id_user'], 0, 'PM'); - - $check_minor_release_available = db_check_minor_relase_available(); - - if ($check_minor_release_available) { - if (users_is_admin($config['id_user'])) { - if ($config['language'] == 'es') { - set_pandora_error_for_header('Hay una o mas revisiones menores en espera para ser actualizadas. <a style="font-size:8pt;font-style:italic;" target="blank" href="http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Actualizacion#Versi.C3.B3n_7.0NG_.28_Rolling_Release_.29">'.__('Sobre actualización de revisión menor').'</a>', 'Revisión/es menor/es disponible/s'); - } else { - set_pandora_error_for_header('There are one or more minor releases waiting for update. <a style="font-size:8pt;font-style:italic;" target="blank" href="http://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Anexo_Upgrade#Version_7.0NG_.28_Rolling_Release_.29">'.__('About minor release update').'</a>', 'minor release/s available'); - } - } - } - - echo '<div id="alert_messages" style="display: none"></div>'; - - if ($config['alert_cnt'] > 0) { - $maintenance_link = 'javascript:'; - $maintenance_title = __('System alerts detected - Please fix as soon as possible'); - $maintenance_class = $maintenance_id = 'show_systemalert_dialog white'; - - $maintenance_link_open_txt = '<a href="'.$maintenance_link.'" title="'.$maintenance_title.'" class="'.$maintenance_class.'" id="show_systemalert_dialog">'; - $maintenance_link_open_img = '<a href="'.$maintenance_link.'" title="'.$maintenance_title.'" class="'.$maintenance_class.'">'; - $maintenance_link_close = '</a>'; - if (!$pandora_management) { - $maintenance_img = ''; - } else { - $maintenance_img = $maintenance_link_open_img.html_print_image( - 'images/header_yellow.png', - true, - [ - 'title' => __( - 'You have %d warning(s)', - $config['alert_cnt'] - ), - 'id' => 'yougotalert', - 'class' => 'bot', - ] - ).$maintenance_link_close; - } - } else { - if (!$pandora_management) { - $maintenance_img = ''; - } else { - $maintenance_img = html_print_image('images/header_ready.png', true, ['title' => __('There are not warnings'), 'id' => 'yougotalert', 'class' => 'bot']); - } - } - - $table->data[0][3] = $maintenance_img; - - // Main help icon - if (!$config['disable_help']) { - $table->data[0][4] = '<a href="#" class="modalpopup" id="helpmodal">'.html_print_image( - 'images/header_help.png', - true, - [ - 'title' => __('Main help'), - 'id' => 'helpmodal', - 'class' => 'modalpopup', - ] - ).'</a>'; - } - - // Logout - $table->data[0][5] = '<a class="white" href="'.ui_get_full_url('index.php?bye=bye').'">'; - $table->data[0][5] .= html_print_image('images/header_logout.png', true, ['alt' => __('Logout'), 'class' => 'bot', 'title' => __('Logout')]); - $table->data[0][5] .= '</a>'; - - // User - if (is_user_admin($config['id_user']) == 1) { - $table->data[0][6] = html_print_image('images/header_user_admin.png', true, ['title' => __('Edit my user'), 'class' => 'bot', 'alt' => 'user']); - } else { - $table->data[0][6] = html_print_image('images/header_user.png', true, ['title' => __('Edit my user'), 'class' => 'bot', 'alt' => 'user']); - } - - $table->data[0][6] = '<a href="index.php?sec=workspace&sec2=operation/users/user_edit">'.$table->data[0][6].'</a>'; - - $table->data[0][7] = '<a href="index.php?sec=workspace&sec2=operation/users/user_edit" class="white_bold"> ('.$config['id_user'].')</a>'; - - // Chat messages - $table->data[0][8] = "<span id='icon_new_messages_chat' style='display: none;'>"; - $table->data[0][8] .= "<a href='index.php?sec=workspace&sec2=operation/users/webchat'>"; - $table->data[0][8] .= html_print_image('images/header_chat.png', true, ['title' => __('New chat message')]); - $table->data[0][8] .= '</a>'; - $table->data[0][8] .= '</span>'; - - // Messages - $msg_cnt = messages_get_count($config['id_user']); - if ($msg_cnt > 0) { - echo '<div id="dialog_messages" style="display: none"></div>'; - - $table->data[0][9] = '<a href="ajax.php?page=operation/messages/message_list" title="'.__('Message overview').'" id="show_messages_dialog">'; - $table->data[0][9] .= html_print_image('images/header_email.png', true, ['title' => __('You have %d unread message(s)', $msg_cnt), 'id' => 'yougotmail', 'class' => 'bot', 'style' => 'width:24px;']); - $table->data[0][9] .= '</a>'; - } - - - - html_print_table($table); - - unset($table); - ?> - </td> - <!-- - <td style="text-align:center"> - <?php - echo "<a href='index.php?sec=main'>"; - if (isset($config['custom_logo'])) { - echo html_print_image('images/custom_logo/'.$config['custom_logo'], true, ['height' => '60', 'width' => '139', 'alt' => 'Logo']); } - echo '</a>'; - ?> - </td> - --> - </tr> -</table> + $search_bar .= '<input type="text" id="keywords" name="keywords"'; + if (!isset($config['search_keywords'])) { + $search_bar .= "value='".__('Enter keywords to search')."'"; + } else if (strlen($config['search_keywords']) == 0) { + $search_bar .= "value='".__('Enter keywords to search')."'"; + } else { + $search_bar .= "value='".$config['search_keywords']."'"; + } + + $search_bar .= 'onfocus="javascript: if (fieldKeyWordEmpty) $(\'#keywords\').val(\'\');" + onkeyup="javascript: fieldKeyWordEmpty = false;" + style="margin-top:5px;" class="search_input" />'; + + // $search_bar .= 'onClick="javascript: document.quicksearch.submit()"'; + $search_bar .= "<input type='hidden' name='head_search_keywords' value='abc' />"; + $search_bar .= '</form>'; + + $header_searchbar = '<div id="header_searchbar">'.ui_print_help_tip(__('Blank characters are used as AND conditions'), true); + $header_searchbar .= $search_bar.'</div>'; + } + + + // clippy + if ($config['tutorial_mode'] !== 'expert' && !$config['disable_help']) { + $header_clippy = '<div id="header_clippy"><a href="javascript: show_clippy();">'.html_print_image( + 'images/clippy_icon_gray.png', + true, + [ + 'id' => 'clippy', + 'class' => 'clippy', + 'alt' => __('%s assistant', get_product_name()), + 'title' => __( + '%s assistant', + get_product_name() + ), + ] + ).'</a></div>'; + } + + + // Servers check + $servers = []; + $servers['all'] = (int) db_get_value('COUNT(id_server)', 'tserver'); + $servers['up'] = (int) servers_check_status(); + $servers['down'] = ($servers['all'] - $servers['up']); + if ($servers['up'] == 0) { + // All Servers down or no servers at all + $servers_check_img = html_print_image('images/header_down_gray.png', true, ['alt' => 'cross', 'class' => 'bot', 'title' => __('All systems').': '.__('Down')]); + } else if ($servers['down'] != 0) { + // Some servers down + $servers_check_img = html_print_image('images/header_warning_gray.png', true, ['alt' => 'error', 'class' => 'bot', 'title' => $servers['down'].' '.__('servers down')]); + } else { + // All servers up + $servers_check_img = html_print_image('images/header_ready_gray.png', true, ['alt' => 'ok', 'class' => 'bot', 'title' => __('All systems').': '.__('Ready')]); + } + + unset($servers); + // Since this is the header, we don't like to trickle down variables. + $servers_link_open = '<a class="white" href="index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60">'; + $servers_link_close = '</a>'; + + $header_server = '<div id="header_server">'.$servers_link_open.$servers_check_img.$servers_link_close.'</div>'; + + + // Main help icon + if (!$config['disable_help']) { + $header_help = '<div id="header_help"><a href="#" class="modalpopup" id="helpmodal">'.html_print_image( + 'images/header_help_gray.png', + true, + [ + 'title' => __('Main help'), + 'id' => 'helpmodal', + 'class' => 'modalpopup', + ] + ).'</a></div>'; + } + + + // ======= Autorefresh code ============================= + $autorefresh_txt = ''; + $autorefresh_additional = ''; + + $ignored_params = [ + 'agent_config' => false, + 'code' => false, + ]; + + if (!isset($_GET['sec2'])) { + $_GET['sec2'] = ''; + } + + if (!isset($_GET['refr'])) { + $_GET['refr'] = null; + } + + $select = db_process_sql("SELECT autorefresh_white_list,time_autorefresh FROM tusuario WHERE id_user = '".$config['id_user']."'"); + $autorefresh_list = json_decode($select[0]['autorefresh_white_list']); + + if ($autorefresh_list !== null && array_search($_GET['sec2'], $autorefresh_list) !== false) { + $do_refresh = true; + if ($_GET['sec2'] == 'operation/agentes/pandora_networkmap') { + if ((!isset($_GET['tab'])) || ($_GET['tab'] != 'view')) { + $do_refresh = false; + } + } + + if ($do_refresh) { + $autorefresh_img = html_print_image('images/header_refresh_gray.png', true, ['class' => 'bot', 'alt' => 'lightning', 'title' => __('Configure autorefresh')]); + + if ($_GET['refr']) { + $autorefresh_txt .= ' (<span id="refrcounter">'.date('i:s', $config['refr']).'</span>)'; + } + + $ignored_params['refr'] = ''; + $values = get_refresh_time_array(); + $autorefresh_additional = '<span id="combo_refr" style="display: none;">'; + $autorefresh_additional .= html_print_select($values, 'ref', '', '', __('Select'), '0', true, false, false); + $autorefresh_additional .= '</span>'; + unset($values); + + $autorefresh_link_open_img = '<a class="white autorefresh" href="'.ui_get_url_refresh($ignored_params).'">'; + + if ($_GET['refr']) { + $autorefresh_link_open_txt = '<a class="autorefresh autorefresh_txt" href="'.ui_get_url_refresh($ignored_params).'">'; + } else { + $autorefresh_link_open_txt = '<a>'; + } + + $autorefresh_link_close = '</a>'; + } else { + $autorefresh_img = html_print_image('images/header_refresh_disabled_gray.png', true, ['class' => 'bot autorefresh_disabled', 'alt' => 'lightning', 'title' => __('Disabled autorefresh')]); + + $ignored_params['refr'] = false; + + $autorefresh_link_open_img = ''; + $autorefresh_link_open_txt = ''; + $autorefresh_link_close = ''; + } + } else { + $autorefresh_img = html_print_image('images/header_refresh_disabled_gray.png', true, ['class' => 'bot autorefresh_disabled', 'alt' => 'lightning', 'title' => __('Disabled autorefresh')]); + + $ignored_params['refr'] = false; + + $autorefresh_link_open_img = ''; + $autorefresh_link_open_txt = ''; + $autorefresh_link_close = ''; + } + + $header_autorefresh = '<div id="header_autorefresh">'.$autorefresh_link_open_img.$autorefresh_img.$autorefresh_link_close.'</div>'; + $header_autorefresh_counter = '<div id="header_autorefresh_counter">'.$autorefresh_link_open_txt.$autorefresh_txt.$autorefresh_link_close.$autorefresh_additional.'</div>'; + + + // qr + if ($config['show_qr_code_header'] == 0) { + $show_qr_code_header = 'display: none;'; + } else { + $show_qr_code_header = 'display: inline;'; + } + + $header_qr = '<div id="header_qr"><div style="'.$show_qr_code_header.'" id="qr_code_container"><a href="javascript: show_dialog_qrcode();">'.html_print_image( + 'images/qrcode_icon_gray.png', + true, + [ + 'alt' => __('QR Code of the page'), + 'title' => __('QR Code of the page'), + ] + ).'</a></div></div>'; + + echo "<div style='display: none;' id='qrcode_container' title='".__('QR code of the page')."'>"; + echo "<div id='qrcode_container_image'></div>"; + echo '</div>'; + ?> + <script type='text/javascript'> + $(document).ready(function() { + $( "#qrcode_container" ).dialog({ + autoOpen: false, + modal: true + }); + }); + </script> + <?php + // User + if (is_user_admin($config['id_user']) == 1) { + $header_user = html_print_image('images/header_user_admin_green.png', true, ['title' => __('Edit my user'), 'class' => 'bot', 'alt' => 'user']); + } else { + $header_user = html_print_image('images/header_user_green.png', true, ['title' => __('Edit my user'), 'class' => 'bot', 'alt' => 'user']); + } + + $header_user = '<div id="header_user"><a href="index.php?sec=workspace&sec2=operation/users/user_edit">'.$header_user.'<span> ('.$config['id_user'].')</span></a></div>'; + + // Logout + $header_logout = '<div id="header_logout"><a class="white" href="'.ui_get_full_url('index.php?bye=bye').'">'; + $header_logout .= html_print_image('images/header_logout_gray.png', true, ['alt' => __('Logout'), 'class' => 'bot', 'title' => __('Logout')]); + $header_logout .= '</a></div>'; + + + echo '<div class="header_left">'.$header_alert, $header_message, $header_chat.'</div><div class="header_center">'.$header_searchbar, $header_clippy, $header_help, $header_server, $header_autorefresh, $header_autorefresh_counter, $header_qr.'</div><div class="header_right">'.$header_user, $header_logout.'</div>'; + ?> + </div> <!--div que cierra #table_header_inner --> +</div> <!--div que cierra #table_header --> + <script type="text/javascript"> /* <![CDATA[ */ @@ -440,7 +387,7 @@ config_check(); }); function blinkmail(){ - $("#yougotmail").delay(100).fadeTo(300,0.2).delay(100).fadeTo(300,1, blinkmail); + //$("#yougotmail").delay(100).fadeTo(300,0.2).delay(100).fadeTo(300,1, blinkmail); } function blinkalert(){ $("#yougotalert").delay(100).fadeTo(300,0.2).delay(100).fadeTo(300,1, blinkalert); diff --git a/pandora_console/general/main_menu.php b/pandora_console/general/main_menu.php index 612a03aa77..d7f86bd788 100644 --- a/pandora_console/general/main_menu.php +++ b/pandora_console/general/main_menu.php @@ -16,16 +16,121 @@ if (! isset($config['id_user'])) { exit(); } +?> +<script type="text/javascript" language="javascript"> + +/* + Cambiar $config['classic_menu'] + ¿¿¿donde??? ¿donde la repeticion? + */ + +var type_menu = "<?php echo $config['classic_menu']; ?>"; + +if(type_menu){ + console.log('es clasico, mantenlo'); +} +else{ + console.log('es colapsado, mantenlo'); +} + +//Asignar por defecto colapsado !!! IMPORTANTE!!!!!!!!!!!!!!!!!!!!!!!!! + +$(document).ready(function(){ + var variable_boton = localStorage.getItem("variable"); + document.getElementById("menu_type").innerHTML = variable_boton; + + if ($('#menu_type').text() == 'colapsado' || $('#menu_type').text() == '') { + if($('#menu_type').text() == ''){ + localStorage.setItem("variable", "colapsado"); + document.getElementById("menu_type").innerHTML = localStorage.variable; + } + + $('#menu_full').removeClass('menu_full_classic').addClass('menu_full_collapsed'); + /* $('.logo_full').removeClass("logo_show").addClass("logo_hide"); + $('.logo_icon').removeClass('logo_hide').addClass('logo_show'); */ + $('.logo_full').css('display','none'); + $('.logo_icon').css('display','block'); + $('div#title_menu').removeClass('title_menu_classic').addClass('title_menu_collapsed'); + $('div#page').removeClass('page_classic').addClass('page_collapsed'); + $('#header_table').removeClass('header_table_classic').addClass('header_table_collapsed'); + $('#button_collapse').removeClass('button_classic').addClass('button_collapsed'); + $('ul.submenu').css('left', '59px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed');//PROBLEMA Y TB SBMENU NO HIDDEN + $('#top_btn').css('left', '0px'); + } + else if ($('#menu_type').text() == 'clasico') { + $('#menu_full').removeClass('menu_full_collapsed').addClass('menu_full_classic'); + /* $('.logo_icon').removeClass('logo_show').addClass('logo_hide'); + $('.logo_full').removeClass("logo_hide").addClass("logo_show");*/ + $('.logo_icon').css('display','none'); + $('.logo_full').css('display','block'); + $('div#title_menu').removeClass('title_menu_collapsed').addClass('title_menu_classic'); + $('div#page').removeClass('page_collapsed').addClass('page_classic'); + $('#header_table').removeClass('header_table_collapsed').addClass('header_table_classic'); + $('#button_collapse').removeClass('button_collapsed').addClass('button_classic'); + $('ul.submenu').css('left', '214px'); + $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu"); + $('#top_btn').css('left', '77.5px'); + } + else{ + console.log('else no ha elegido aun, default-else'); + localStorage.setItem("variable", "colapsado"); + document.getElementById("menu_type").innerHTML = localStorage.variable; + } + +}); + + + + + + + + // Set the height of the menu. + $(window).on('load', function (){ + $("#menu_full").height($("#container").height()); + }); + + // When the user scrolls down 400px from the top of the document, show the button. + window.onscroll = function() {scrollFunction()}; + + function scrollFunction() { + if (document.body.scrollTop > 400 || document.documentElement.scrollTop > 400) { + document.getElementById("top_btn").style.display = "block"; + } else { + document.getElementById("top_btn").style.display = "none"; + } + } + + // When the user clicks on the button, scroll to the top of the document. + function topFunction() { + document.body.scrollTop = 0; // For Safari. + document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera. + } + + +</script> +<?php $autohidden_menu = 0; if (isset($config['autohidden_menu']) && $config['autohidden_menu']) { $autohidden_menu = 1; } -$menu_container_id = ''; - // Menu container prepared to autohide menu -echo '<div id="'.$menu_container_id.'">'; +echo '<div id="menu_full">'; + + +echo '<div class="logo_green"><a href="index.php?sec=main">'; +if (isset($config['custom_logo'])) { + echo html_print_image('images/custom_logo/'.$config['custom_logo'], true, ['border' => '0', 'width' => '215', 'alt' => 'Logo', 'class' => 'logo_full']); +} + +if (isset($config['custom_logo_collapsed'])) { + echo html_print_image('images/custom_logo/'.$config['custom_logo_collapsed'], true, ['border' => '0', 'width' => '60', 'alt' => 'Logo', 'class' => 'logo_icon']); +} + +echo '</a></div>'; // echo '<div class="tit bg titop">:: '.__('Operation').' ::</div>'; require 'operation/menu.php'; @@ -45,6 +150,15 @@ if (check_acl($config['id_user'], 0, 'AW') require 'godmode/menu.php'; +echo '<div id="button_collapse" class="button_collapse"></div>'; +echo '<div id="menu_type" class="invisible"></div>'; +echo '<button onclick="topFunction()" id="top_btn" title="Go to top"></button>'; +/* + echo '<form method="post"><button type="button" id="button_collapse" class="button_collapse">BOTON</button>'; + html_print_input_hidden('button_collapse', 1); + echo '</form>'; +*/ + // require ("links_menu.php"); echo '</div>'; // menu_container @@ -64,6 +178,66 @@ if (isset($config['fixed_header'])) { <script type="text/javascript" language="javascript"> /* <![CDATA[ */ + + +//var classic_menu; +//$(document).ready(function(){ +$('#button_collapse').on('click', function() { + +/* + var elem = document.getElementById('button_collapse'); +elem.className = elem.className.replace('button_collapse', 'cambiar'); +*/ + if($('#menu_full').hasClass('menu_full_classic')){ + localStorage.setItem("variable", "colapsado"); + //$('#button_collapse').css('color','pink'); + document.getElementById("menu_type").innerHTML = localStorage.variable; + $('ul.submenu').css('left', '59px');//hacer que esto se haga aqui + $('#top_btn').css('left', '0px'); + } + else if($('#menu_full').hasClass('menu_full_collapsed')){ + localStorage.setItem("variable", "clasico"); + //$('#button_collapse').css('color','blue'); + document.getElementById("menu_type").innerHTML = localStorage.variable; + $('ul.submenu').css('left', '214px');//hacer que esto se haga aqui + $('#top_btn').css('left', '77.5px'); + } + else{ + console.log('else'); + } + + /* $('.logo_full').toggleClass("logo_show logo_hide"); + $('.logo_icon').toggleClass('logo_hide logo_show');*/ + $('.logo_full').toggle(); + $('.logo_icon').toggle(); + $('#menu_full').toggleClass('menu_full_classic menu_full_collapsed'); + $('#button_collapse').toggleClass('button_classic button_collapsed'); + $('div#title_menu').toggleClass('title_menu_classic title_menu_collapsed'); + $('div#page').toggleClass('page_classic page_collapsed'); + $('#header_table').toggleClass('header_table_classic header_table_collapsed'); + $('li.menu_icon').toggleClass("no_hidden_menu menu_icon_collapsed"); + + + + console.log('entra click'); + console.log(localStorage.variable); +/* +if ($('#button_collapse').text() == 'clasico') { + classic_menu = true; +} +else { + classic_menu = false; +} +console.log('aqui comprueba click, y si el menu no ha cambiado, no deberia recargar todo'); +console.log(classic_menu); +*/ + + +}); + +//}); + + var autohidden_menu = <?php echo $autohidden_menu; ?>; var fixed_menu = <?php echo json_encode((bool) $config_fixed_menu); ?>; var fixed_header = <?php echo json_encode((bool) $config_fixed_header); ?>; @@ -71,18 +245,26 @@ var id_user = "<?php echo $config['id_user']; ?>"; var cookie_name = id_user + '-pandora_menu_state'; var cookie_name_encoded = btoa(cookie_name); var click_display = "<?php echo $config['click_display']; ?>"; -var classic_menu = parseInt("<?php echo $config['classic_menu']; ?>"); +//var classic_menu = parseInt("<?php echo $config['classic_menu']; ?>"); -if ((isNaN(classic_menu)) || (classic_menu == 0)) { - classic_menu = false; -} -else { + +//if ((isNaN(classic_menu)) || (classic_menu == 0)) { +//f(localStorage.variable == 'clasico'){ +/* +if ($('#button_collapse').text() == 'clasico') { classic_menu = true; } - +else { + classic_menu = false; +} +console.log('aqui comprueba si es classic_menu'); +console.log(classic_menu); +*/ +/* if (classic_menu) { autohidden_menu = 1; } +*/ var menuState = $.cookie(cookie_name_encoded); if (!menuState) { @@ -110,8 +292,28 @@ function close_submenus () { } $(document).ready( function() { + +// repeticion de if + +var classic_menu; +if ($('#menu_type').text() == 'clasico') { + classic_menu = true; + <?php $config['classic_menu'] = true; ?> +} +else { + classic_menu = false; + <?php $config['classic_menu'] = false; ?> +} + + + +console.log('aqui comprueba repeticion '); +console.log(classic_menu); +// fin repeticion de if + + //Daniel maya 02/06/2016 Fixed menu position--INI - if (fixed_menu) { + /* if (fixed_menu) { $('div#menu') .css('position', 'fixed') .css('z-index', '9000') @@ -126,201 +328,137 @@ $(document).ready( function() { .css('z-index', '9000') .css('top','80px') $('#menu_tab_frame_view').css('margin-top','20px') - } - //Daniel maya 02/06/2016 Fixed menu position--END - /* - $("img.toggle").click (function (e) { - //In case the links gets activated, we don't want to follow link - e.preventDefault(); - - var menuItem = $(this).parent(); - var submenu = menuItem.children("ul"); + }*/ - if (submenu.is(":visible")) { - submenu.slideUp(); - - if (typeof menuState[menuItem.attr('id')] != 'undefined') - delete menuState[menuItem.attr('id')]; - } - else { - submenu.slideDown(); + //console.log(click_display); - menuState[menuItem.attr('id')] = 1; - } - - $.cookie(cookie_name_encoded, JSON.stringify(menuState), {expires: 7}); - }); - //Cerrar aqui los comentarios cuando esté el menu terminado - if (fixed_menu) { - $('div#menu') - .css('position', 'fixed') - .css('z-index', '9000') - .css('left', '0') - .css('top', $('div#head').innerHeight() + 'px') - .css('height', '100%') - .css('overflow', 'hidden') - .hover(function (e) { - if (!autohidden_menu) { - $(this).css('overflow', 'auto').children('div').css('width', 'auto'); - } - }, function (e) { - if (!autohidden_menu) { - $(this).css('overflow', 'hidden').children('div').css('width', '100%'); - } - }) - .children('div') - .css('margin-bottom', $('div#head').innerHeight() + 'px'); - - if (!fixed_header) { - $(window).scroll(function () { - if ($(this).scrollTop() <= $('div#head').innerHeight()) { - $('div#menu').css('top', $('div#head').innerHeight() - $(this).scrollTop() + 'px' ); - } else { - $('div#menu').css('top', '0'); - } - }); - } - } - - function show_menu () { - $('#menu_container').animate({"left": "+=80px"}, 200, function () { - if (fixed_menu) { - $('#menu_container').parent().css('overflow', 'auto'); - } - }); - //show_menu_pretty(); - } - - function show_menu_pretty() { - open_submenus(); - $('div.menu ul li').css('background-position', ''); - $('ul.submenu li a, li.menu_icon a, li.links a, div.menu>ul>li>img.toggle').show(); - $('.titop').css('color', 'white'); - $('.bg3').css('color', 'white'); - $('.bg4').css('color', 'white'); - } - - function hide_menu () { - if (fixed_menu) { - $('#menu_container').parent().css('overflow', 'hidden'); - } - $('#menu_container').animate({"left": "-=80px"}, 100); - //hide_menu_pretty(); - } - - function hide_menu_pretty() { - close_submenus(); - $('div.menu li').css('background-position', '85px 5px'); - $('ul.submenu li a, li.menu_icon a, li.links a, div.menu>ul>li>img.toggle').hide(); - $('.titop').css('color', $('.titop').css('background-color')); - $('.bg3').css('color', $('.bg3').css('background-color')); - $('.bg4').css('color', $('.bg4').css('background-color')); - } - */ - if (autohidden_menu) { - - //handlerIn, handlerOut); - //openTime = 0; - //handsIn = 0; - - //$('#main').css('margin-left', '50px'); - //hide_menu_pretty(); - /* - $('#menu').hover(function() { - handsIn = 1; - if (openTime == 0) { - show_menu(); - openTime = new Date().getTime(); - } - }).mouseleave(function() { - handsIn = 0; - setTimeout(function() { - openedTime = new Date().getTime() - openTime; - if(openedTime > 3000 && handsIn == 0) { - hide_menu(); - openTime = 0; - } - }, 3500); - }); - */ + // if (autohidden_menu) { handsInMenu = 0; openTimeMenu = 0; if (classic_menu) { - $('div#title_menu').show(); + //$('div#title_menu').show(); handsInMenu = 1; openTimeMenu = new Date().getTime(); - $('#menu').css('width', '145px'); + /*$('#menu').css('width', '145px'); $('#menu').css('position', 'block'); $('div#menu').css('top', '80px'); - $('li.menu_icon').addClass( " no_hidden_menu" ); - $('ul.submenu').css('left', '144px'); - - $('#menu').mouseleave(function() { + $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ + /*$('ul.submenu').css('left', '214px');*/ + /* $('#menu_full').css('width','215px'); + $('.button_collapse').css('width','215px'); + $('div#page').addClass('page_classic'); + $('#header_table').addClass('header_table_classic'); */ + console.log('a (es clasico)'); + /*$('#menu').mouseleave(function() { handsInMenu = 0; setTimeout(function() { openedMenu = new Date().getTime() - openTimeMenu; if(openedMenu > 1000 && handsInMenu == 0) { - $('#menu').css('width', '145px'); - $('#menu').css('position', 'block'); - $('li.menu_icon').addClass( " no_hidden_menu" ); - $('ul.submenu').css('left', '144px'); - } + /* $('#menu').css('width', '145px'); + $('#menu').css('position', 'block');*/ + /* console.log('a'); + console.log(classic_menu); + /* $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ + /* $('ul.submenu').css('left', '214px'); + /* $('#menu_full').css('width','215px'); + $('.button_collapse').css('width','215px'); + $('div#page').addClass('page_classic'); + $('#header_table').addClass('header_table_classic');*/ + /* } }, 2500); - }); + });*/ } else { + //NO ES CLASSIC MENU if(!click_display){ $('#menu').mouseenter(function() { - $('div#title_menu').show(); + // $('div#title_menu').show(); handsInMenu = 1; openTimeMenu = new Date().getTime(); - $('#menu').css('width', '145px'); - $('li.menu_icon').addClass( " no_hidden_menu" ); - $('li.menu_icon').find('li').addClass( " no_hidden_menu" ); - $('ul.submenu').css('left', '144px'); + /*$('#menu').css('width', '145px');*/ + console.log('b (collapsed)'); + /* $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ + $('li.menu_icon').find('li').addClass("no_hidden_menu"); + /*$('ul.submenu').css('left', '214px');*/ + /*$('#menu_full').css('width','215px'); + $('.button_collapse').css('width','215px'); + $('div#page').addClass('page_classic'); + $('#header_table').addClass('header_table_classic'); */ }).mouseleave(function() { handsInMenu = 0; setTimeout(function() { openedMenu = new Date().getTime() - openTimeMenu; if(openedMenu > 1000 && handsInMenu == 0) { - $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass( " no_hidden_menu"); + console.log('c (collapsed)'); + /* $('#menu').css('width', '45px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed');*/ $('li.menu_icon').find('li').removeClass( " no_hidden_menu" ); - $('ul.submenu').css('left', '44px'); - $('div#title_menu').hide(); + /* $('ul.submenu').css('left', '44px');*/ + //$('div#title_menu').hide(); } }, 2500); }); }else{ $(document).ready(function() { $('#menu').on("click", function() { - $('div#title_menu').show(); + //$('div#title_menu').show(); handsInMenu = 1; openTimeMenu = new Date().getTime(); - $('#menu').css('width', '145px'); - $('li.menu_icon').addClass( " no_hidden_menu" ); - $('li.menu_icon').find('li').addClass( " no_hidden_menu" ); - $('ul.submenu').css('left', '144px'); - }).mouseleave(function() { + /* $('#menu').css('width', '145px');*/ + console.log('d (collapsed)'); + /* $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ + $('li.menu_icon').find('li').addClass("no_hidden_menu"); + /* $('ul.submenu').css('left', '44px');*/ + /* $('#menu_full').css('width','215px'); + $('.button_collapse').css('width','215px'); + $('div#page').addClass('page_classic'); + $('#header_table').addClass('header_table_classic'); */ + }) + .mouseleave(function() { handsInMenu = 0; setTimeout(function() { openedMenu = new Date().getTime() - openTimeMenu; if(openedMenu > 1000 && handsInMenu == 0) { - $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass( " no_hidden_menu"); + console.log('e (collapsed)'); + /* $('#menu').css('width', '45px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed');*/ $('li.menu_icon').find('li').removeClass( " no_hidden_menu" ); - $('ul.submenu').css('left', '44px'); - $('div#title_menu').hide(); + /* $('ul.submenu').css('left', '44px');*/ + //$('div#title_menu').hide(); } }, 5500); }); }); } } - } + /* } else { $('div#title_menu').hide(); + if(!click_display){ + $('#menu').mouseenter(function() { + handsInMenu = 1; + openTimeMenu = new Date().getTime(); + $('ul.submenu').css('left', '44px'); + }).mouseleave(function() { + handsInMenu = 0; + setTimeout(function() { + openedMenu = new Date().getTime() - openTimeMenu; + if(openedMenu > 1000 && handsInMenu == 0) { + console.log('f'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); + $('li.menu_icon').find('li').removeClass( " no_hidden_menu" ); + $('ul.submenu').css('left', '44px'); + } + }, 2500); + }); + } } + } + } + } + } + } + }*/ }); /* ]]> */ </script> @@ -348,7 +486,7 @@ $(document).ready( function() { opened = new Date().getTime() - openTime; if(opened > 3000 && handsIn == 0) { openTime = 4000; - $("ul#sub"+table_hover[0].id).hide(); + $("ul#sub"+table_noHover[0].id).hide(); //table_hover } }, 2500); }); @@ -371,7 +509,7 @@ $(document).ready( function() { opened = new Date().getTime() - openTime; if(opened > 5000 && handsIn == 0) { openTime = 6000; - $("ul#sub"+table_hover[0].id).hide(); + $("ul#sub"+table_noHover[0].id).hide(); //table_hover } }, 5500); }); @@ -389,7 +527,7 @@ $(document).ready( function() { }); } -- $('.has_submenu').mouseenter(function() { + $('.has_submenu').mouseenter(function() { table_hover2 = $(this); handsIn2 = 1; openTime2 = new Date().getTime(); @@ -410,7 +548,9 @@ $(document).ready( function() { }); $(document).ready(function() { - if (!classic_menu) { + + + // if (!classic_menu) { //Daniel maya 02/06/2016 Display menu with click --INI if(!click_display){ $('#container').click(function() { @@ -419,10 +559,11 @@ $(document).ready( function() { $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass( " no_hidden_menu"); - $('ul.submenu').css('left', '44px'); - $('div#title_menu').hide(); + /* $('#menu').css('width', '45px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); + $('ul.submenu').css('left', '44px');*/ + //$('div#title_menu').hide(); + console.log('m (collapsed)'); }); }else{ $('#main').click(function() { @@ -431,14 +572,15 @@ $(document).ready( function() { $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass( " no_hidden_menu"); - $('ul.submenu').css('left', '44px'); - $('div#title_menu').hide(); + /*$('#menu').css('width', '45px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); + $('ul.submenu').css('left', '44px');*/ + // $('div#title_menu').hide(); + console.log('n (collapsed)'); }); } //Daniel maya 02/06/2016 Display menu with click --END - } + /* } else { if(!click_display){ $('#container').click(function() { @@ -447,8 +589,13 @@ $(document).ready( function() { $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('#menu').css('width', '145px'); - $('ul.submenu').css('left', '144px'); + /*$('#menu').css('width', '145px');*/ + /* $('ul.submenu').css('left', '214px'); + $('#menu_full').css('width','215px'); + $('.button_collapse').css('width','215px'); + $('div#page').addClass('page_classic'); + $('#header_table').addClass('header_table_classic'); */ + /* console.log('o (es clasico)'); }); }else{ $('#main').click(function() { @@ -457,20 +604,26 @@ $(document).ready( function() { $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('#menu').css('width', '145px'); - $('ul.submenu').css('left', '144px'); + /*$('#menu').css('width', '145px');*/ + /* $('ul.submenu').css('left', '214px'); + $('#menu_full').css('width','215px'); + $('.button_collapse').css('width','215px'); + $('div#page').addClass('page_classic'); + $('#header_table').addClass('header_table_classic'); */ + /* console.log('p (es clasico)'); }); } - } + }*/ - if (classic_menu) { + // if (classic_menu) { $('div.menu>ul>li>ul>li>a').click(function() { openTime = 4000; if( typeof(table_hover) != 'undefined') $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('ul.submenu').css('left', '144px'); + /* $('ul.submenu').css('left', '214px');*/ + console.log('q (es clasico)'); }); $('div.menu>ul>li>ul>li>ul>li>a').click(function() { @@ -479,9 +632,10 @@ $(document).ready( function() { $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('ul.submenu').css('left', '144px'); + /*$('ul.submenu').css('left', '214px');*/ + console.log('r (es clasico)'); }); - } + /* } else { $('div.menu>ul>li>ul>li>a').click(function() { openTime = 4000; @@ -489,10 +643,11 @@ $(document).ready( function() { $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass( " no_hidden_menu"); - $('ul.submenu').css('left', '44px'); - $('div#title_menu').hide(); + /*$('#menu').css('width', '45px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); + $('ul.submenu').css('left', '44px');*/ + //$('div#title_menu').hide(); + /* console.log('s (no es clasico)'); }); $('div.menu>ul>li>ul>li>ul>li>a').click(function() { @@ -501,12 +656,13 @@ $(document).ready( function() { $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass( " no_hidden_menu"); - $('ul.submenu').css('left', '44px'); - $('div#title_menu').hide(); + /* $('#menu').css('width', '45px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); + $('ul.submenu').css('left', '44px');*/ + // $('div#title_menu').hide(); + /* console.log('t (no es clasico)'); }); - } + }*/ }); diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php index 69ec49cfce..47d298cc84 100644 --- a/pandora_console/godmode/menu.php +++ b/pandora_console/godmode/menu.php @@ -54,6 +54,7 @@ if (check_acl($config['id_user'], 0, 'AW')) { } } +$menu_godmode['nuevo_texto']['text'] = __('nuevo_texto'); if (!empty($sub)) { $menu_godmode['gagente']['text'] = __('Resources'); $menu_godmode['gagente']['sec2'] = 'godmode/agentes/modificar_agente'; diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php index 36d1db123e..b2f5f91c5f 100755 --- a/pandora_console/godmode/setup/setup_visuals.php +++ b/pandora_console/godmode/setup/setup_visuals.php @@ -227,45 +227,65 @@ $table_styles->data[$row][1] = html_print_select( $table_styles->data[$row][1] .= ' '.html_print_button(__('View'), 'login_background_preview', false, '', 'class="sub camera logo_preview"', true); $row++; -$table_styles->data[$row][0] = __('Custom logo (header)').ui_print_help_icon('custom_logo', true); -if (enterprise_installed()) { - $ent_files = list_files('enterprise/images/custom_logo', 'png', 1, 0); - $open_files = list_files('images/custom_logo', 'png', 1, 0); - $table_styles->data[$row][1] = html_print_select( - array_merge($ent_files, $open_files), - 'custom_logo', - $config['custom_logo'], - '', - '', - '', - true, - false, - true, - '', - $open, - 'width:240px' - ); -} else { - $table_styles->data[$row][1] = html_print_select( - list_files('images/custom_logo', 'png', 1, 0), - 'custom_logo', - $config['custom_logo'], - '', - '', - '', - true, - false, - true, - '', - $open, - 'width:240px' - ); +/** + * Print a select for the custom logos. + * + * @param string $name This is the name for the select + * @param string $logo This is the option in $config (path) + * @return string Print the select + */ +function logo_custom_enterprise($name, $logo) +{ + if (enterprise_installed()) { + $ent_files = list_files('enterprise/images/custom_logo', 'png', 1, 0); + $open_files = list_files('images/custom_logo', 'png', 1, 0); + + $select = html_print_select( + array_merge($ent_files, $open_files), + $name, + $logo, + '', + '', + '', + true, + false, + true, + '', + $open, + 'width:240px' + ); + return $select; + } else { + $select = html_print_select( + list_files('images/custom_logo', 'png', 1, 0), + $name, + $logo, + '', + '', + '', + true, + false, + true, + '', + $open, + 'width:240px' + ); + return $select; + } } + +$table_styles->data[$row][0] = __('Custom logo (header)').ui_print_help_icon('custom_logo', true); +$table_styles->data[$row][1] = logo_custom_enterprise('custom_logo', $config['custom_logo']); $table_styles->data[$row][1] .= ' '.html_print_button(__('View'), 'custom_logo_preview', $open, '', 'class="sub camera logo_preview"', true, false, $open, 'visualmodal'); $row++; +$table_styles->data[$row][0] = __('Custom logo collapsed (header)').ui_print_help_icon('custom_logo_collapsed', true); +$table_styles->data[$row][1] = logo_custom_enterprise('custom_logo_collapsed', $config['custom_logo_collapsed']); +$table_styles->data[$row][1] .= ' '.html_print_button(__('View'), 'custom_logo_collapsed_preview', $open, '', 'class="sub camera logo_preview"', true, false, $open, 'visualmodal'); +$row++; + $table_styles->data[$row][0] = __('Custom logo (header white background)'); if (enterprise_installed()) { $ent_files = list_files('enterprise/images/custom_logo', 'png', 1, 0); @@ -1234,7 +1254,7 @@ html_print_submit_button(__('Update'), 'update_button', false, 'class="sub upd"' echo '</div>'; echo '</form>'; -ui_require_css_file('color-picker','include/styles/js/'); +ui_require_css_file('color-picker', 'include/styles/js/'); ui_require_jquery_file('colorpicker'); @@ -1470,6 +1490,11 @@ $(".logo_preview").click (function(e) { icon_path = homeUrlEnt + "images/custom_logo/" + icon_name; options.grayed = true; break; + case 'button-custom_logo_collapsed_preview': + icon_name = $("select#custom_logo_collapsed option:selected").val(); + icon_path = homeUrlEnt + "images/custom_logo/" + icon_name; + options.grayed = true; + break; case 'button-custom_logo_white_bg_preview': icon_name = $("select#custom_logo_white_bg option:selected").val(); icon_path = homeUrlEnt + "images/custom_logo/" + icon_name; diff --git a/pandora_console/images/builder.menu_gray.png b/pandora_console/images/builder.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3b0b6ff3ac42c9a5aa5e755ee2c0530a81ad85 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GZ#-QbLn>}1r8qDNi|dv%1pQukhua~B<H%o!90t*7h9lgK zKb-4gp0K9u?Wy2VVzFZ=RJw40SAkEM`KJRz$MeG$KX|Gbj<6SW96Z9>u+QK?nt(^5 zvPkosw;gKx1ytBX&0DJYpBS-;rGz@LDl|)Vd=%H%(6}zM<zu7<hw_9(VS_^)8M~NF zt~tD62;z0+Qx4#<aJcz8vC%`v;oB@m6R{r?7m3S$5Kb1*NK|#;WjV^GVIX?pinPGv zt*suKWsC+2j$4>46OS}ZIc^subVG!3medo5uX4;gFY=$x-oT)KdjWTVPD6^qMFxcf Z4DOZA>o0rNN&x-M;OXk;vd$@?2>`Y+ZzTW# literal 0 HcmV?d00001 diff --git a/pandora_console/images/builder.menu_white.png b/pandora_console/images/builder.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..f08ba661e9b3b11b696ea142b9cfc73256b1d62a GIT binary patch literal 294 zcmV+>0oneEP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy$Vo&&RCwC7Q_&5AFcf?>{?ic{p(Atz zMsWm2aD(auj({7$2yUQGP#?*?_)<Y?8!x#u9Oc5@Yl#$Mj6S|G;(1hBfad5M5~D5L znVo#QqjFeg$T7MxuPd79b}=T4EwcwbG>u;Eb%^J){(sE~?+#+Lujq)3F~^UN5KH28 zznbc@=LtyO%jQ{0prbiVp;6;a(d3jGlEY>ZS7XSDcE<W(p18<)ZA&^5Ow4CZ*;V+f skw-i#9lu;kDZJQd0<AL4#!G+!0M6>+%KT$H#{d8T07*qoM6N<$f-8D@U;qFB literal 0 HcmV?d00001 diff --git a/pandora_console/images/button_classic_menu.png b/pandora_console/images/button_classic_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..edbe81cd69727b27b095c669dc874fc01ed1784a GIT binary patch literal 745 zcmV<F0v7#=P)<h;3K|Lk000e1NJLTq001KZ001Kh1^@s69@(>50000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!i%CR5RCwCFSlw;HKnx}~LAn7<K#+KE zn4ok5$OMH6fC&l{Kqr7s0K6l?2F(V|2Cc8ME8|{*FPCD;LRByJcb|XGcTvkz`u+Y8 zeiG0}&^9Vbj(P+=oKB~MkL^eaz&d;Z9fQUm_6yJz=n{YxL0|xcbvyx`l`J79NF-BN zpa9Uk78n3xL$St?aHBiWcML;OvVj!z37O<_0nOmMiy92(#ae`9p`}{@n<2Y=LjxC} zs07GXyBj4a$+8nr<oIaM7}<bMeb~6c(iTHVfO=p%{{sdW?-}|HEX-OB3;5YHKo{`Q zqyHJUZo+_A`lb~IU#(HlaSc4rXx~Z#Hs)8%U?2HlAM~nn1lE7CKW#p3YUI$Fg{xyz zftY#WRij8&?tJab5ZWgj)XRRuG-fE53S(I)AZ!&RqaQF>%2Yi&ZRLal!YbNP=eD6U zqQky>(jCeW_ct_n`jQ-cOCt~v_t!P-V9V<^x4M9M!?US!1tz4Kl>i!gu#=dE8|)M- zk|go?Hf{_IJ5FLTZfGSpEIjQ7fF!rZ1c#(fFlh8{K=2s)opTHh&l2T57?J*tM%4P# z9f3%H2RgMsS>iq1>NiaQ5tD-LaUH6r6<aq`*a~Gt`g!B0_LB973C<f;5(EV7r>;rC zVD~HpJL?;j^^7Ax9Uw6d=X`!DTm$);?b_ap1`W@@GS{wr$PS#baHTls#{UGQKz}VK z7^Hl_0a*iz9Ma^-*^z6x=0+*+Pc-)~qya_w&croWf1?zJwvLmR-?j6S@93^Qbc_pG z*@hy;?&f%Vh!xXXTJbbuSzR{qK10`uk>}~2W6RhCzt2?Ulcm3lY$f<hZ#4ybx$^2k b-vSH(2%b_QXdsSQ00000NkvXXu0mjfgfc~W literal 0 HcmV?d00001 diff --git a/pandora_console/images/button_collapse_menu.png b/pandora_console/images/button_collapse_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a51124392418138ec0fabdefdb0a1a33259f9d GIT binary patch literal 759 zcmV<T0to$yP)<h;3K|Lk000e1NJLTq001KZ001Kh1^@s69@(>50000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!nMp)JRCwCFn9*^<FbqJGOptESPEd2l zf5QZ&6BH%@CZKEp6Tk+c6F~pDgAK?A%?Oox5~r$8kQ*1@>43wwo+V3`ohE^;-|r9M z!+|`3+>>ytNIpRJhr?kXGIweOK!p>K5l9{|e+{w%Sprzy2?iig@f2j<(1k6*O<U>* z6ac;b2?jvW6{VUSC*6X)lN;)W1r#99WJ%dhAY&MJGQ-fmSSyz-tmal=bF!{n(7*?j zHh`4Y)fk~1EzY$8rJg}MVUZ2UEW{dDtW=T<8K?(ySHEDW^HJ=P4RjnQksIjQ37`|` z=<$D<=r<K0XujDW6pc_BNL$pr(EQk(?3;=_aux%6p?d^DXkUCc7=JBNkHTFKxE0tk z6B#vKK``pt`qTUy`pLQM;--<HTy_M(y=HOoLVSPyhM`dA=-CG55g&+Y(^C{}Idh}y zG7<X;W!8TOY0x*!==9~bzafa$_n3)rt}HH!2$INzhg;<bjIox90^+fb%K`^Fb>PjC zcr6cw*%AcjhaDXwF<O-g_uLzNjLB*sfLsKi!V6=WG$s%oLl?JaR6J|STLDRZADN2v z=YX(`0VMV9`PBXtN5Wm;k)R8*6IF4w!9{10;~qGgR-)fLFmd@TR2qg#Ju7)?FU4e2 zT5VULHmek>QrKKz$fVLb>(I?8fUq<eU#W%Hs(z|{1^H2|3hzaO$n|ed`^&3CXW+3g zbwTxP{!bt^)x(Jw#^d{f!qs&IDX8Yv_omu%qtxNbcc_Ir_AME9uCBTE8>O14^hAcd zYgY~9_^v(llnXCSIVd%(?u~8_xuIGsTAoJGs>>MfGkl$RwVdwi$z(-EShx3?mi>h0 pe<W);`sBBoTD)8Z-M_vB7ywNqQ340(xkms1002ovPDHLkV1gpZR>c4S literal 0 HcmV?d00001 diff --git a/pandora_console/images/clippy_icon_gray.png b/pandora_console/images/clippy_icon_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ac2b967adfbc7dc57b9aca3b8ce9c8614a9a56 GIT binary patch literal 462 zcmV;<0WtoGP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUza7jc#RCwC7l|53!Fc5_;ksi2#xq;nL zxCl3Z6A(%&Lgf-DT_rgIp`#0&AZ}dalG5BD+<<+a=gh_vGLdZW%p3hg{&uBZDJJl+ zG)>Q>nTT#h5vNP)G0U<|vv%YG2XHNd6M%A2NJr3uj%u?V;4h*JM9eYlPNFaMH`Z|j zGr|CRX5?!%x75MlD6M1kW6=^I86ScpKVJyQWe3-6-`IwP&-cJzIgFf>EU;WvP2;Ey z-%yeDsG^XL0I0AtnOliw3Vy}koXYf6MO?9uN_tSor{Ty~ZjX!_Tb~k8spCSzW9gm~ z9J5TPT=Hp-gm1UruJZ%y5lB4pg)<jWiG0X-%%@|*^*5L|o^XAm+m`b^s@I#2@VV$$ zefrTpLel}hb9?_YGbDV+!4UARgQ4KH0|DR`u7-d&{|8U(_YQ9y0F(~_ZyexCM}+nY z-<N}uuVByz9ClI^#dne<KhnSCaly&Gz~6%&>`#CJ02A)$4MG*|L;wH)07*qoM6N<$ Ef>j;O2><{9 literal 0 HcmV?d00001 diff --git a/pandora_console/images/custom_logo/pandora_logo_green_collapsed.png b/pandora_console/images/custom_logo/pandora_logo_green_collapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..73f77dec8f7a6839e9ee0c97f8c1eccc23595c29 GIT binary patch literal 2468 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 ZjR*UV)OCG&_^bNf<l*K?DRbSl<9~;j9yI^} literal 0 HcmV?d00001 diff --git a/pandora_console/images/custom_logo/pandora_logo_head_green.png b/pandora_console/images/custom_logo/pandora_logo_head_green.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f4e1deacb53fe8c26b93815110950b20ccabe5 GIT binary patch literal 5461 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 Du9FHp literal 0 HcmV?d00001 diff --git a/pandora_console/images/extensions.menu_gray.png b/pandora_console/images/extensions.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..173ee9e19506effa3daead67e89588e23d54dc4e GIT binary patch literal 416 zcmV;R0bl-!P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzLP<nHRCwByl+lgCFbsy%hygl6*`RDt zHlUBZpz8#v6O@~vx(SNz<sM-J*x<TB8G#Y7(QnR|I<2r|StQPfo!@EVBKGzDlTl#r z_q*-g%~%qFd{F4{lOZL+uGlLmwB$MYk=Cmbh>~(76$XEaI3S+ME2(y&AR7uNb&wO* zl-R4BR`zJURO<(?4(34xH@Gu$Qa%g_UqO?goeOUo?ewVXK9|Q8HENUFsSu@tUtE3+ z!nw7_!Cv)#<SG;_gMw+$HmmqazG6ia^qE4fT2z>5<<;)&94Yu<fYvfoQ4pqClxYkl z&9V3g3Z~f^qmWI(ys9Jy;p7!W5lfYte<1ZFSg}$m=0pIfSp|R63CycfpAV3n-%uU2 z@w5o6HC2OJ7hLp>4lgIZ4zIiNQxLQ{GE`Pt>S<VkZ_Zox5MTfZ?UohQ7-~HL0000< KMNUMnLSTYj=d)b^ literal 0 HcmV?d00001 diff --git a/pandora_console/images/extensions.menu_white.png b/pandora_console/images/extensions.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..7618eb6c23273420ea493c4d67ba1ca96889cd06 GIT binary patch literal 311 zcmV-70m%M|P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy*-1n}RCwB)Qc)2EAqX{s5sY92BWwht zY=etngp05dHo`_Q0;e;$s~n)S%<v(|gZID~!2rM&55=u{Yo$2CW4Qu$xe9(_E=d5s z_yN2*^k!dn+7jGIVV%U2KcAK(@qKs@pp$ka)9x5c_0i~LfzAy!`)81APbZRsi;2PC zGHS<e3)e#T27aI%uIFx%t0f!E8r{`fvI0<8DRy`UTSpgWXQ5p)r^y_QTr8`J&?rjN zB&3x&O{QR2oP+{Dksxc^8tzKbQ`Bkz(YAvu)a`|(TOsxnU;tv4+y@`X@Q?ri002ov JPDHLkV1oG$d#C^a literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_alerts.menu_gray.png b/pandora_console/images/gm_alerts.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..39c96d566eb33326020be8c436f2966ec605c5d1 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GXFOdTLn>}1r5s>Z(~G*tzl5uy!m%zUMagb!PX&)BL(u1m zEnExP>J&~XEMR1F$g&mCP6*^TQW40w!MKNwk(V*kj{gW#MGd3T8K4kzildr|>sJ<@ z#D-JfAD0MTFjZiEFWJG~bmC#_8zpA8OAX9=>nCPSVAN}7k<ei9;R#_fG3=P{viFa~ zMSkD2zdd=>1Fl#zO+LW7!7)XuX<}+bf{fEk7A`pl!(E9L#sBMd4)r?RmiFk~${caT qY=ZFLMh_`@hr^GU^o}wx0=>T5QY4{z(Ji3A7(8A5T-G@yGywoUW@2vu literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_alerts.menu_white.png b/pandora_console/images/gm_alerts.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..6eae2f3b317a6b50b0039edba14cc58d310fb5ee GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gt36#DLn>}1B^+S>_y7O>|ME=Fj3;n6%o6^$xQR(YOyMX4 zv%<dr^41mnNBE9NEMf@l;cs{%${}g;-@Y)xc2}I6inGJNdVePaE+ZqOx`x6T6I6IS zdibYoSad{zIfjkXAb??p#0r*-Bmw)*s-J~RpMC%D$*k~|ZHiRW#MFoei76|XIF|}* zR4^Pp@ql^Zn<ie93Bf&YjwelEv}EIKFjBw55U^3G!Qa-QfssLMR@`cqh^ak5XES)Z L`njxgN@xNAcXwMM literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_configuration.menu_gray.png b/pandora_console/images/gm_configuration.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..f791bed3e225f01323931d56a67ed4667cd9c50f GIT binary patch literal 366 zcmV-!0g?WRP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz5J^NqRCwBylhF-=Fc5|*6R?50L04b` z!=o?i2I>Up1jGptUwqUJa074yMqmX0BY%^o0a`Bk103AnuiRBdR@|SjGcH@GgR0Yh z_l*K0cAlkBLr18FaT#i)+ysinsD=`zGLU_|L?|qvqe-Bs6+i2nL+I9opdg75B~I}= z)TrY&<eyw|ZJc6l7V#NXyce^4f}kYnv=Li;n|R+*n#9R$`(Y+qN}&fwz(mh{>oZeh zNoNGaB!k{GljjtR_j3bjk3dQyO_R(bYupB?xgY2u>q*v55_!n%F4u-kg$&!sv5DM< z#34ownTZX@W|+S?^mLDy3FV6SKNT&Ek!=nOEH<*ta?)L7rv3s90ONja(4?%5Z~y=R M07*qoM6N<$f(pQvzyJUM literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_configuration.menu_white.png b/pandora_console/images/gm_configuration.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..a82ece6578589b10638973881e1512b0fb469cb8 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G+dN$yLn>}1B{(qs|Nmc~;n80Q8~F}di4&|2XW1P7{Ih2| zvwT@1<B_a4?2lMXHnOQSUlY#0P`84cXF(04!oL2L3zbQ{v-q!mkb5PR;+$}xL84ja zpD^2VM?KYJ8`xyn?zk5zUTm{;*t=8ytSVQ)tct@0DvYzF%I2@&P`I?=`xL3L29Y)q z$u>R>Gap9Hn`_dQt|_>=9piR5CD>u_(CV;mLi;BDpv5H$x|RusIkqN@&Af~p1`OG2 WK80pQlq~@IfWgz%&t;ucLK6V@q+vh+ literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_events.menu_gray.png b/pandora_console/images/gm_events.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..aee937f912409d601bd62a3f7fc618d9dbe38221 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gk3C%+Ln>}1r8qDPi|d9n1buG2!O+2aVTttT$4b%?8yLiN zk`$O_BsMg&S{#v_v7zJUV<VOqv)GqNq%=6^Dl^M9oK;{Cifv95Fj%lr@>Ao4><v3P zW^Y#$D&pN1aaioaM~CT6NBAFoRx;EJYG{kL)r_-dIBKz2{>3h~oWzqIzU&@`v$!1? z^EgUlZ3N<39&tM~^FQ#u8F98PZF<#;#03f;+{<hY*&1Vv88fUq%35}PW7w2kpz2W) zz+uW_DI+g1IdkGc<^_rxlA?E2kL+48;e^4FYyk}!vw*`3+}MN|92yuI_Fr*I-qCMm Q1oSS0r>mdKI;Vst0H#ZB)&Kwi literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_events.menu_white.png b/pandora_console/images/gm_events.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..43e8c157c86bf713a8734cb810fb1904109e3263 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GyFFbTLn>}1B{(qu|NlRn;n81*KmY92G7=QT7)06s9Oo4& zc$s`iDXri6Et8wuG4>@pGVE8bJD4h9W-vd*S!RR8r+E_B7qm}g6f+g}<dR;|eJ#20 zVr|9_Qvq4O0N?*B1^==ykVyaH9Q({+&1tC(tQICl&zK7tcO~k$u-$h7TJoq$A*{iz z%U<q!a;e}6Q>Kg}z9T7uB>@~fv-vX~{%E*ju**N^lH!v^PFWHq3@?`QUNKlPaY_uM bKmx<uiQ19pHruTSdV|5!)z4*}Q$iB}SMz37 literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_resources.menu_gray.png b/pandora_console/images/gm_resources.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..7733a069d1db39115aed0623b66d53b48773ed39 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GH$7b(Ln>}1B`gq1a1o!eBV#A?gjxJYxLCf#F(e)Tv*QH6 z1REo-CPUEQfOm{GZ5#|688;>NWa!=GKcXNl)Hq4{gC+Y4xhJn!W+eJ#_~o|T+Rzv< zgW;+Q(@NHW>1WefX035>sW@OFf8f!k{|gcl8rjw`8?rH)S|%Cuu*_H?`gbv#Alrh7 z*&IjMJ45OlU+i(?Vo+;m$@s*$Tsful>je{5FMaV26P7cnj+5&d&QAE<$ff?suwA}` zdqGaYzLX=AB|8}voW&mSC@)B43z+_pnZKdUrlF95iHG6Fc8^=U-fsVao@DTJ^>bP0 Hl+XkKZU$`{ literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_resources.menu_white.png b/pandora_console/images/gm_resources.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..130b63ce3d7dd0680693de4a3da73f447d83982a GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G`#oJ8Ln>}1B`gsA@&EsRW`X<v{UzqGCo#^jb2D+~Y6!8P zQq9m`tH8|D@PkRf+Q`VL&Y_%>V-Ncy2BjD~`Pru(gqR%eFdSi1VPQVA;cJhB6Qjm5 zhaR^D;(Q5)Z|p538ovDde}tJmhpq8U!lJO8ekm7;4GbS$6zn{f{NmnnYC7kJ7w*#| z_|Gb_sYoy}G3sP|;$I*sG{r;xkzu=h2ls+EE(u-t8}$DRFbi!EQ}$?+bck)^w_(`z fgt3QNAc3L(7<=Tk=JbA`R~S59{an^LB{Ts55`<r! literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_servers.menu_gray.png b/pandora_console/images/gm_servers.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..b4df2425e4d6dd5e81f1019fdd878b581a4ee355 GIT binary patch literal 335 zcmV-V0kHmwP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy@kvBMRCwBylgkZ)KoEu(LjjaR2Wkg+ z^x~rep#ro5wE~G3uXF%(uq9Z6cHlqBVAjpfGX4pfFgtwgyb=@8_5L`+lqRgpVY9A$ zXA*$iV0I?12C%&d0%QTx8J(7Z_2WzG9TLcL&`U@=<DXHi2qF<+$8`#6#W6pc3Bg$; zr99+Jh2S;<qO-XQg!)*nl@aQsyAcA9Ftxxr{gYbbcEpoar#5!Qos+55q^{9=boiiD z4yOpRoLa91NnL9vMnGL`szdG#rj^zv3WB!Y6j!m?3W0K-qc@(x@fYwH&YBD{P{TK= hCra|<*sneU3;-mVMgT`V;|c%(002ovPDHLkV1frBhzkG! literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_servers.menu_white.png b/pandora_console/images/gm_servers.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..c2604ad7da1fad4433b65e0f8b109987e938d57c GIT binary patch literal 310 zcmV-60m=S}P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy*hxe|RCwB?R8bAXAP{9_0yYPgfP+;+ z9c&Uh2X#;horF3Vb%29eU<%kHp$Q?}am`-xez?0=-rW_YDhMIWfyS&PK;jbGSXv@| zkfYCQb)gl54!oWS#8}E<g(5uopstYwd|9Lkmlvi3rgnHHl2=A3#%>}Zw8Eu6P(x87 zYe<}!X-!A0y+BLEoY>kv6<D-?Sp!D!je=1Lp_%Jj#-5T+ZEdW8xY@A}rdUje5BS4E zz`fYwC%0QQA(M9H3vSu@fb${yO*ZZs>A;WR35hvfUi%YZ0RL+Q#!w*dhX4Qo07*qo IM6N<$g1GK_kpKVy literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_setup.menu_gray.png b/pandora_console/images/gm_setup.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..339fb5684f4c80a6ab414f091469192113dddf61 GIT binary patch literal 426 zcmV;b0agBqP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzOi4sRRCwByRKanBKny$>7eEQn0ja=H zLCiCs5LaNkg4B=-?8zt3*cF5hOe%nMKnYoSRvG0ugRPkz#QC(WPJ51AAl}|TUht@a z9LP4$PXpKGJ;(dOuZdkamOud{z?LME?*+&^AhiXHD?~pg-=Jto(wu8TGK`2QIfdjS z^V;l5sLsYw+tr9j)OlY?+;qsk5@hWk5f66n?hher+3qgp1P&7gE#XIE2J(2B8pzht zcVP1xzdZ;fpOP1QU-+lQ`h|Jp?df?|)q?)mn$g}9JxCf=bOv4nigFG@-M$LgAf=GY z)IRZCO?*|`DXyskDly~<_~v3wKiMc|+LQf7<Xu)dr>`3f>1Y`pe-;I9{(0u$#fX(2 zvYe4z7hjRc>^w6Ll&>u}C@gRJ8|hU#%~;NvaYTe7@kPeMomp=<y_Uln#jgMZ0G=0h UnEoW-5&!@I07*qoM6N<$f{e(u<^TWy literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_setup.menu_white.png b/pandora_console/images/gm_setup.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..79ee9cd95f4fdd44c80493f5033e030ed48d06c2 GIT binary patch literal 322 zcmV-I0lof-P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy<Vi$9RCwB)QvngfAPj`N2|z+6AfXcK zV3p80sFO;V1m*w<%mETIa>uqb_pEe(mpceac#_8$03w=;g<`pw6MoNUrWYl6qc7I# zbH!ryrD8)*p;Z*hm0hGg97<%$lUOJEjeCnh61QhM2FG~R*ng14KxWijjR^YFekyN3 zz}(4vS14#EpqDy^dpq*krH*ka=FNFLt+fw5F*<nK1kTe(PmSJ41n?wX%-eeFTkcn} zK7$)lc<$8ER@vm%cZnTB97Q}VG5|3KHIUHr>j#mv3IBMikW#S&Vq}I3%6SPe08F9j UjorF>N&o-=07*qoM6N<$f*G}fHUIzs literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_users.menu_gray.png b/pandora_console/images/gm_users.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bd6a2d21f71735e1107674abf4d182e51cf144 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gmpok@Ln>}1r7$#gc284hSXsgL>A;~sJ5I3r1n`{@U^e10 zY_M!#_58qeA;mq&hw)d6eb3n=4yp&5j+-$mgz_KZ3|PqOaEGJhEBhoKrlvX-XNLt0 z9gc14Nx?nmvpHS50?m6qNR~8s7~WxXWUf*Yuy+t*+o;a;RHVa*Ba1_$_6++Y2Zgeh zM-D4))UA+e+8EX_<<$9RA*~>-w1#6b_Em2ZjWy)F%^cYIj<if<5}dfi;X?L-DW^T& yzEHPbFRAc6O{i-k_X###mCK6a2~~_tJPZ#n=<6J~Gfx-jI|ffzKbLh*2~7as4Qdzw literal 0 HcmV?d00001 diff --git a/pandora_console/images/gm_users.menu_white.png b/pandora_console/images/gm_users.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..83a8134a9b33ef931aa3168b5ca68216986352c7 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gmpxq^Ln>}1B{DSq|Nmc|VPyr|rvpxIZpT=C0{Bh{FdOk0 zHdr>WdVXNKkm4TX!}u%3zUS-_2h{^D$ITcO-myRW9>9~t{UGRk)A31l3Vsfc#2E}v zEO40=(~`zvXK2+bC?KN{#IxP;g2P;nBm5Iu9N%<0Sh6l+lFs7LsBJK@aAKBVv2!?T z&u~?O>GB<Rr;T9^Q%;?47SamRN^6k1(=S(jgQx5GB;E^+%!Y|e99&d11$dMf+?QM_ z`&WfAMO;$hd74nyMD7!8x+<3y#S^L+nRpnE<T;;s$>L%P^d5t!tDnm{r-UW|Rv>3C literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_alert_gray.png b/pandora_console/images/header_alert_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..13a2172a920f6bdb95d523ac8577a5c79adc39f1 GIT binary patch literal 458 zcmV;*0X6=KP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzY)M2xRCwC7RXc9NKon%13-}1+22O7& zPMHdG19O8=xr``XaRf-2DsTeaxHl)jH^4VY=1H>>k=V}*WTmHt_1l?!pV>8&z^Lmw z#Z<y(u$0RqY~M7^HniUazza+p*wo=Nz~&(8T^NZ6Tuyx;_zw02AR{KAu$JEr@Xb^a zFfAvhWZ_B${3=E`z~@mD!5hK1zC81rL^mZ_G{H0H)g(Nu&rCy5Fzg|Oeo^35Rb+OE zW~d3YBl}N+Hd+T1msP83u)Tv3Sk)dC*u5)FiKj(-1;NqPs@Dk0P+mPXD7^$!qg8Np z4XBrviY~4aut4wp`|*cPvWi~2BCyx8oW9kfbB|bt!)|^NaG_*jmpABP&i1Y>iNTLG zZ%_H~;(I(IwUF^0k(955;Ox3b?xFBR+3(shn23<SSRX0=g54%*t?Zg_f6QgKyeQl^ z<}<;^n1*-=Idok&=6U|fI;8}bXYw^hj6VVl0C;kN|Aaw_!2kdN07*qoM6N<$g30*G Av;Y7A literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_chat_gray.png b/pandora_console/images/header_chat_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..54ebc23bdc62a064dff5fbecbb211465079551eb GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XZhN{ohE&{2N|1QfuyN0x7zU5;%!N!-&)#D=(y0@0n76?~ zpu;}kWWj{RuNy1uPB5`6=)HOK=8l8!b7p5Ym$T_iLR=vwmPQOSH4nJF_K@3}aHT1b zTS2U5!B$rB1y2RHGM+fYz2H!ulE8X)F~5H-HOyK9`VQPi%o&<J>rGgvU(i_)B(lO$ z@C0XrR|5050A|^Rf9h7;>aEc6WU=g+cw&)w$fJ4eKbf>l<U2$g*=!V+OrI&i-6v=J z>)^3tZNgEV5e-dKZ~SVWl48ZE*{60v<z%ChxYWUBb_Ny+2EzceUY(n(?*hHa;OXk; Jvd$@?2>@aFaC-m% literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_down_gray.png b/pandora_console/images/header_down_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..0cfebc477a6a175c6fd68c08a5210f4b9239642c GIT binary patch literal 364 zcmV-y0h9iTP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz4oO5oRCwB~mN627Fc3wv@dB2XmX;iV zLXO}K@CKyf3{)IJEj<MlJ>I}0P+Gci))@u~+1<#@4uORC7|16;UDug0rp0<<xu$7G zlei(%^E}sCf*-L;tPVT3iSP^VDq^;l?)<xDDH4L0lT)J?IIJO6vH<tYGf=08bp)Rd zC^+vV0RLPIlR+xU8r&biY_LcYgZ~I55)OP(z>#p_K|w?^aN(<h6^W5d0$@zRkc2gj zZA?IbLHp?dMTq|Qhyt_4NWuuxgi@OwM$p7xl6cU>Um^hwTp|H2oGXD8I7b4sKv!CL zL~^y-RV<MBVwU>-CeQN+HV)KrO8IT+`~HQzJ2rQI!N<D21sDK_0NXEaTu06T0000< KMNUMnLSTYcypo>) literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_email.png b/pandora_console/images/header_email.png index 0d45c72d468f3d3bb72b2b08b9068a5b36849994..c5d41054a28cd528dc885974bcdf5390c2be345e 100644 GIT binary patch delta 444 zcmV;t0Ym=Z3fBW6iBL{Q4GJ0x0000DNk~Le0000O0000O2nGNE0N{5$_>mzee*t+( zL_t(|+U!)zZG%7%1>^$UL6Q#a3SugV-2qe(IB`sJ<U|Q16@(5*D#)e+QvxOA4SFL@ z5awfXiIkC^XYjJ`?R*x``|IXwkY(8xZnqL|ljnKU36Qu1jw>Jj12}E)laRauzE>i@ z0V1FffqSNOLN*2BPsG(Vtk^Fle|`dDmiriJ&FDq-9WO>#kV_S6-~dS3Tk%2fy^vxh zHY5wkyMrl*HdySJ02UnF9uQw(V>yF7;gC3zJG<V`Ktx(*B2y5JiEypBL@u@&+NdHV zh}gW4|LdJ8*t2dNb#0b_5sE>k&94!MT&g)Gl}z6lM=()ed%MM-4Y}BXf7vY;;Knn_ zVq$Ba_nOU^NH9WPlQ2dZUImEngqY8c!=NJ3EP)|%)04(dN>8L55(zGldwSBTdtgM` zA(4ItU*<Ntxi{H}IEw800=Jx)lqYvfzePqQWh{J+&y-4jgWgv9Tt9HyUVPU68Sas) mYnb#yCN1^;ZOVQG7yxf560A6H_8$5G0000<MNUMnLSTZwcfOwh literal 1375 zcmaJ>ZA=?w9Dk0M0v#_MGuzz8IF6a1z`a3-y|na7TWph+G(fg)M#Is&!UgVScLx+c zU~3$fNiz1q_>yQq7c)O-rin2bBx7!g%sDqr7NaJzY!TuxtIITuL8(_pnIFVUF8BQZ z`Tc(X*XKrqEiV+A_m}|yMSh>BRsTMvzoq#m0HB&5zZ=nwr!{X#Ym*|{0Hbig#Y&wV z>=&3Wu9aih!Q)prI{=0Qe0xX>1rAYRNkEwl28{}`&IZ8ljLJ;7htuFru8S8PNOI}| z0`sf`Ibsdq0ol!U^S&X4Ya4254-fT(Z7kw!gzZsE7Z5m&fulmNs8Ue}vaU<%=ZqUe z;B|=B<3JuK6$%7lx1?~e6~$}A_(1|bSdS9*xUJq+1Cuy`V+4ue4YdSLSsN&vfHxjQ zkEXB@s@2oH5lgomNVlfR6ow5944?ybsHAjZgw1Bda1tZQS{+fV4vHERtrgYEtb&JA z!wN5Jyd=UIMW$2g(;SGN>EjXvc~e$YH`=5(42v={Mxc16q%1HH_<yJ%Y@$`Im3xx! ze+sMZgEEJ;a;ns)g!REiDl?&E%B^sWCMoTb)SK;Muv^k3wOf*5cbgR@-~bcm#f)d2 z5eQIzQPmhR%=tYIMAtxho~2watJOogaGMJ!3BpS@*}Qdb;(5|*B^!u39M5t+Qn*jx zL@mo@pKysSxtV1UWIeKnQ}}+4ZB`@!UN4&Bx6H-n-BNFZ%Wj#At$9l>rYD1CM*FW( zXI=XKWR9DQs~elE&x!iJEBa#h)7DS)yY;=_<7$uo+_{=gI}L@n>-Us%c=h4+M2*2h z%f-He@stywITji>H4&C`u|x^|XL8O7!I6h+si{gDOun7yT^K&wzq=p22pJdBYpHFK z>A?pP=hZKzxnl6rJRs+nl5-tnHxI?YSI;GiX6%KnWwH5u%gZH~lkt|hlD1j!*VRYP zSJrC4azUa2{8UIcIHF7U-kVujN><#1ls&QYwE5hz>gwuWfQ3FVb-L<AamXGYTdDZ< z#0Y9hrcV{*#GsY(KkQn;#OrH@4~=K;+ixtS^+NIw&l;_7LRF!BGXk$bmc3wk?}g!% z`Q)(g+tt<O2TpuCCtkY96zB2Acg-iSZ=<i7XKrn0m;YXTt0H&=jEk2SdOo<c9iB-X z_SJO6f5@SG>B*ycw;-tKt_eoL?WOc+9{dGFPw(G7zQWx9I_9ltyfo+j?U8F=aGyaf zt9t*Usq@-m@Uz^pv9Vo~7opNSdACo|^M;A29Y0pqadhWvaZ|Zv#}1W^&p#`#8i=#g zKBM`j;doB4^7GtTmyzs%ZcMyEpD#bN>mySyjK{4_!pC{f)U&y>BNK6BRSHTNCf^y2 f-@P(28vh0Ws%(FAqy5g#%rDRHZSj2C)bZ*+t|r?f diff --git a/pandora_console/images/header_email_old.png b/pandora_console/images/header_email_old.png new file mode 100644 index 0000000000000000000000000000000000000000..0d45c72d468f3d3bb72b2b08b9068a5b36849994 GIT binary patch literal 1375 zcmaJ>ZA=?w9Dk0M0v#_MGuzz8IF6a1z`a3-y|na7TWph+G(fg)M#Is&!UgVScLx+c zU~3$fNiz1q_>yQq7c)O-rin2bBx7!g%sDqr7NaJzY!TuxtIITuL8(_pnIFVUF8BQZ z`Tc(X*XKrqEiV+A_m}|yMSh>BRsTMvzoq#m0HB&5zZ=nwr!{X#Ym*|{0Hbig#Y&wV z>=&3Wu9aih!Q)prI{=0Qe0xX>1rAYRNkEwl28{}`&IZ8ljLJ;7htuFru8S8PNOI}| z0`sf`Ibsdq0ol!U^S&X4Ya4254-fT(Z7kw!gzZsE7Z5m&fulmNs8Ue}vaU<%=ZqUe z;B|=B<3JuK6$%7lx1?~e6~$}A_(1|bSdS9*xUJq+1Cuy`V+4ue4YdSLSsN&vfHxjQ zkEXB@s@2oH5lgomNVlfR6ow5944?ybsHAjZgw1Bda1tZQS{+fV4vHERtrgYEtb&JA z!wN5Jyd=UIMW$2g(;SGN>EjXvc~e$YH`=5(42v={Mxc16q%1HH_<yJ%Y@$`Im3xx! ze+sMZgEEJ;a;ns)g!REiDl?&E%B^sWCMoTb)SK;Muv^k3wOf*5cbgR@-~bcm#f)d2 z5eQIzQPmhR%=tYIMAtxho~2watJOogaGMJ!3BpS@*}Qdb;(5|*B^!u39M5t+Qn*jx zL@mo@pKysSxtV1UWIeKnQ}}+4ZB`@!UN4&Bx6H-n-BNFZ%Wj#At$9l>rYD1CM*FW( zXI=XKWR9DQs~elE&x!iJEBa#h)7DS)yY;=_<7$uo+_{=gI}L@n>-Us%c=h4+M2*2h z%f-He@stywITji>H4&C`u|x^|XL8O7!I6h+si{gDOun7yT^K&wzq=p22pJdBYpHFK z>A?pP=hZKzxnl6rJRs+nl5-tnHxI?YSI;GiX6%KnWwH5u%gZH~lkt|hlD1j!*VRYP zSJrC4azUa2{8UIcIHF7U-kVujN><#1ls&QYwE5hz>gwuWfQ3FVb-L<AamXGYTdDZ< z#0Y9hrcV{*#GsY(KkQn;#OrH@4~=K;+ixtS^+NIw&l;_7LRF!BGXk$bmc3wk?}g!% z`Q)(g+tt<O2TpuCCtkY96zB2Acg-iSZ=<i7XKrn0m;YXTt0H&=jEk2SdOo<c9iB-X z_SJO6f5@SG>B*ycw;-tKt_eoL?WOc+9{dGFPw(G7zQWx9I_9ltyfo+j?U8F=aGyaf zt9t*Usq@-m@Uz^pv9Vo~7opNSdACo|^M;A29Y0pqadhWvaZ|Zv#}1W^&p#`#8i=#g zKBM`j;doB4^7GtTmyzs%ZcMyEpD#bN>mySyjK{4_!pC{f)U&y>BNK6BRSHTNCf^y2 f-@P(28vh0Ws%(FAqy5g#%rDRHZSj2C)bZ*+t|r?f literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_help_gray.png b/pandora_console/images/header_help_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..faa7815a3218b3d92270ff2017c6b318c6d10771 GIT binary patch literal 498 zcmV<O0S*3%P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzlu1NERCwCFRxxhEKoGPqc>qr!KX94C z67T~`I_wuDu3QpISCAKAs<i$=ps<wken6h!HdQi<=Ax71vrS}JX=LNuo!y(e+r#%- zEKSof9uY7B0${|U3edn2$g?c_baD7C#5-VWebyxQm?*Hu4nW+L$ZsHzNNxi6K!M<@ z<|j$!z|ty2lH|?=2-;B+AxrAcEmBI%hBFh%;y($j%7uIeC+%Heh!@G;ndEmSzNPu; zzvPZ253(kTV@C6&jT{6g;2W4XjWaf}ITfpyMbd4W({Ie5fy<8^vN@&_qqwMIuWi%k z7L@ANz_vrJJ)hA%50O~Wr7@ChdoD*oi6)BE)%AVukm<#xf2|O6(gVd6uX<Lt0-k#M z3g<|9S2krbU4i?oj51oWw+v$BI<Ku_%k|i}hBCu-lmzB*EeA|sHbSm=fXvB@dhCoY zd7dfH!R|$-y>8gBTsE_OUCnOALgJgW>pSC6mZc8EP@35zu)zBlzI|M9;k;QF&bsfF oso4aFxiW8Z=@0$4<wt-405+_^tQ(RaumAu607*qoM6N<$f_L}iuK)l5 literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_logout_gray.png b/pandora_console/images/header_logout_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..f15b5d91951103209b1c2f17fe8ea0752dbf1caa GIT binary patch literal 347 zcmV-h0i^zkP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy{YgYYRCwBAWPpP5@^S$nRRF~PKy1K( z8zgpib}nEb60jf{z8`Av10X(tN6!NW5&#R7u7?`F0O-0z1}Xw3D4hUu8MO^Zwg41F z8yIK+n2^{XX>9>b01Gt?0j9$BKuQ6K9f9%qffhd42u+3ip-G;)7C<vzA~s8?76-U2 zVZjrw4M57C47)xcS>lM#2mBOzN&&AAfL<;nBQ=3a1P7=uz$uDqaR4=ZK9b=Vs20h% z45wx)ipOR+)p9Zr1VZEO15JtwYzEV<uwz2X9R9Sl094r+08>K&wJl)8Qt4lSR{FRq tpbh9Lg`fpUmh=O00JI9FO0xwZzyMMsSZD|w>v#YF002ovPDHLkV1h5Wd8z;a literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_ready_gray.png b/pandora_console/images/header_ready_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..9aadb340d5eb710fa94188b3205ba9a20ea3de15 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XHha1_hE&{2N|0b>W;}KJw5Wr`k+emP4>=uP*$K>FzKb>B z@N?yE!;2?A@H@QWNHVx|>chEn=eR>QGR%J{676uJpi4*LSivS;g=+;nSRHuZFZ|=Q z;1KH-BN^M7Tn#2pybHP>o)8mJ>P+0)B6HZWLDEIWw(3h$Z|_-W1!D#+Ifh5gM>Gv( zlqYRW`RX!b{Ru;vY^_6K^Co0l*mO)_oc2KJcEK94gpDmZhdozWxG|n(aA;s;NZV4O UtI~G=7SQ<&p00i_>zopr0NX2Oo&W#< literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_refresh_disabled_gray.png b/pandora_console/images/header_refresh_disabled_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..abe7de6bea740fe624a4ef70fb02847b77cda588 GIT binary patch literal 485 zcmV<B0UG{^P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzhe<?1RCwC7RohX+Fc5SyF2EgND!?7! zRFF^sPyz9mKQsCCUtEFR0q!8C0^9+n0!#(4H>@&3krW=v&FpAopKez==`M-_Sy`5A z;LZFVpIDS(xCL?`Gky<157bpvjTjT+o6Q`7#jyca{4_GyE9Vy^O*!9jTmzRRwC{kb z_f*pXTPzqHLWE?)z{*kzIwsJ9i`^h_=Q+NdyLe*I)aDl($D)EST&gvb+}v66GFo#0 zf`$vc%71G!2AA!<NFot@5e2k4M|E53D6lDlB`}3L8l1=@kNlA2lnDxDiF%lGjUc3{ zt9u|gn<;|cR!9C}S0=#_Sa?R!UrEO8DFT*lRRp_p<zS<~so0|=(R#qBmtfDD6$@ai z{LN}ATYI)7yan!m(46FPO+ex52dNfZ9JjU#=}_Kim3VS?G&p}~(~%9QJ<)J-3OXwD zE&^$R@4y3hG;t>bzh4_oMg$bPa$nOIr%cK=$abu>ORCH@zn)jI_FVuQL9fo7idy1N b_9?&sQ6P)B9xYC>00000NkvXXu0mjfESbt> literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_refresh_gray.png b/pandora_console/images/header_refresh_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..35c8893b01b4f38ec603fec0a62d7e680080985a GIT binary patch literal 490 zcmV<G0Tup<P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzj7da6RCwC7Rm*Y0Fc6hJzC$iPlM3Qg z5L`i^0!#%V6%Z;&I<Px1bl?u+RDg5!C8mSCWu6#~@NXEgGjC*TR&Q6U{V3%~!Z6H% zPkTQYIJCg>3PgmK3Mhd?UDp}+rk2iGybj_ymK2zAOUMe~1WZUYH;lalZ}J0!aqkU4 zzQH0_ZGat+;ZW70Cmt`Tn{&J94G|7~VA;~+WgD>}3Bw{G+H@%eR=hQN4Dx2+UAHu# zthc#-177#Yy~h#cqb0DeyLL%##{L^Psym3!@JQP29XT5Te@u1d8^!VC$mxpVz8L7t zfLp|VLtoubCbogdv4PXs0IpQ9Ex5`^-J_aI9l*$gL(f-cU-BH+lkNx=oPO?|2S$A; zhH;FfOwnEIJOF7zC0pVlBSxFwLwDIV4`#-<5FVtvjv!Cj&!iKt$JT*l!&6@Y%8l8> z5;}C%=Dn5~oYRYyF&0bWm;Wz(pQ)aFApYtdIA-oL3u0+phM~mLD;dJ9uf+!~jjGXx ga8P@Gv-}G%0Hphl5kmO=9{>OV07*qoM6N<$f{=jLf&c&j literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_user_admin_green.png b/pandora_console/images/header_user_admin_green.png new file mode 100644 index 0000000000000000000000000000000000000000..82a225f790faa0c7a0426007e588afaddd722bad GIT binary patch literal 665 zcmV;K0%rY*P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!J4r-ARCwB~Ry|JwK@gqWVAO(yN)sxK zg%(D!w9%u{PV^TDjnPW@0e+yJjZ#^1v^JilHo!0Nw4*Rmk!XdXki^CrGK=fFdmP3| zCKvX0-@JJ{Glv5qc6zs%!bc8$4c*mV*U<y?>e0qiV8d`Mz-fG3FsP5-U@!?p?<sf| zeT#z?O@SN(c!9w^^b#IwMac4)Go}3})&RJ<!i@5`(Kkq?ny)g(J#?<Z>-k>+m^m@Y zXa^~qf+Yb@1!HMz=w+FSqcD6y-`1Gtm{pjO_Lo{FH|WbmRPg#Sr{-&icVM_>)gO%E z@jXIJ(RT*^&q|~SNhbJG{bAKIiZK>tvLiUfhGlOm0-kNpE%l4wrU@+d9Vr0rbq(v3 zg-Zbv=$${Z50i<y8$`&SU<5qt{Rw8DFfgF?%Lw2_Q-Mg?1T#%r4wr{9SDVZrab0i) zWkbr%3u8Z|0sEay04`UJ$*Pw1j-m6_3Z(w33T9cCt!=RW{p_w>!%}h+=B6@(bp%RS z&d}(otFwqE;ua4#$$|hXYqR?|hwG0p9iM~Eg)<EDL(K>Ej56$UQa(qUoRq~jf5{Gr zB?f@i**$2!)gUpM><8+6wBfzihTdlv?wjZIyT$V-;Bj4&mmgCu)MM>xDkDXbZ_O~! z#8@0AVsUuwHlgu+l~TsKr&gBGs^)~{8rXGE7zC2+$)$~B5UnTjQ9k;TkxMLP7Sr+h zz9bZgq$Bo^?OO^M{i7f9w<WE0e5AiEUjhsOp?C1fKHvJS00000NkvXXu0mjf`xY`< literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_user_green.png b/pandora_console/images/header_user_green.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2eae96e5595f39a2aa2a4a44894f47f981e744 GIT binary patch literal 531 zcmV+u0_^>XP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzwMj%lRCwB~R?$(zFbqw643H7R0$iAY z@Wp4^37Sqoy8vxifOLW;6EuAC)pP=KEC3^P1SIbH&SzxDq3BMRiz7ch$&!^g^2qbs zO-hfF^o}&QKKG;pY5Vl>F}N^d2XID@7l3x8CxB@n{?5(|(ixnsB}cIUz5;kdTG6Jj zfG9VJl<l`p2V}elqa_)3LaI#ZOvYrx`}SC0{&E23%;etM$kD7E0W>BUQhOxb=}2OO z;V0?bVqSukPdN9r70H40mWe8?ZxC8%ZC*s<QkXBmXmF0vm66};=>MeRjBv^n4z(Mr zmMH=(j%1+_;>lr~2H?4DUb$Zsnr3j+caQ_J&4qQ2B4-B)>G_ZBeQDzEj+Dn{n1JUz zKLz%Qz<}550PwX`AUbUdOf$#k-57JT$%GX53Kdj%%B}ISA8Ej!PG*1{RU=93SU(G$ zZ&o1pSF6CX*R3r`;#wyl*Eha;dh;&g8*zrqO|wXFeIGn&csKVLmtCpT7h5+cM={4F zd-SlE%Cthk95HxmY2a)T-X+qA183q42$~JPp`XG@9ta#h^gX{VnRO;Xzb)Sa3;^BP VyAS;NNc8{!002ovPDHLkV1mpd?C$^o literal 0 HcmV?d00001 diff --git a/pandora_console/images/header_warning_gray.png b/pandora_console/images/header_warning_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..ca9954d54f66e5df51f0781d6ef2a1e47b7f40ff GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XT0C7GLn>}1B`7dXnLb^cVI!kv)eH#_=I4$Q8J)~)bp#Xw zZBL3B^h6nC9bCb>SWJLTe8Csywm=8n10GJfY^zQ(Ex5xvckW#N6={qsR<&G9+ragl zSwLDSnRDYx4aT)*!VaH!Lv;>3yTpHGO9FF{9K&<=gbz9ks=64qs(EAvHZV9eFfz#K W%Wn4&-*^q^9tKZWKbLh*2~7agqe&$I literal 0 HcmV?d00001 diff --git a/pandora_console/images/input_zoom_gray.png b/pandora_console/images/input_zoom_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..002e397e8a9f54b4ee2f4a5526d9c41475fba7c5 GIT binary patch literal 416 zcmV;R0bl-!P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzLP<nHRCwB)Q?ZT0KoGn$$%hv^!E`|2 z0wDX0rvsCbQUOrGKNa8(9)};{0xV%VAad*yepVWz^~tsjBdzYdcb?sy-Lu9+9LEWk z6>I@>bmy=PmKH@(n+{k-5MlX+&FOm3oaftsEbk;D$&EkBr5!GpUXVR3p=*uvOBd0N zQ6=?_=>f|=!=${KE_1@etz?3OwHZKFRb?2468sbPf$zWOETFK0of(H8W|U}W!0tS> zCPQF3qNAgBPa?-|yn;K|7Lif&G8R*=wI-4@=Q_<1Sg_1e6J^}*$1t$V5;XP2PN`AC zOG6|wYv24lwusn;W(d!?e1N&0Os=Xqb>Cb2;?z1`%GsSMHHp-FlfCG(Y^K|KQJs2I zepVvEi9}aEsVA8o&?92x+8<U1Y>`>>COon{c$bLUESu-@FTeoQPIx}(h_w>{0000< KMNUMnLSTZFrL`#l literal 0 HcmV?d00001 diff --git a/pandora_console/images/links.menu_gray.png b/pandora_console/images/links.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..c390e9a268e0e03d8968a3bc1040eb9b735aa10e GIT binary patch literal 387 zcmV-}0et?6P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzB}qg<RCwB)RLKp(Fc6F*3ZMg^15*J| z0pZDqqk@P^5ET&k@FX2T384Z~LP}s3jnRrDUSVmpPVAk%CUFVZ?s)3M<bda^8aU*O z`86>tM-p+q09_zBj%n8*D`G?`?U{B6r-=aj0Z;*ZX4_7LOBt+O+<>482iQw#v+!ui z$kXv7eUjCx%xGy}7qY!DThDzfQB9}Sm-CQGbaD;^GO0VCXV!6B#&5|$s<;6K0yi%r zk_m~F*HfbWwLF71oOa<N&F<1c8s2Dm;7t0r<=HSbL=Hp9-lQSruNf$h5lOUV!24vG zp}=<{L?e;~g6c0pN+W@i`$G3fO<Pboi$>sZXD?nlQ<8ap>{cSJvs(49;cupNR^=+4 hO-T?0`6PY_FaY<XY}^%+regpA002ovPDHLkV1g9Tox}hD literal 0 HcmV?d00001 diff --git a/pandora_console/images/links.menu_white.png b/pandora_console/images/links.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..71af1a2cd2bc62fcbeb8547a0390b5807eb9091a GIT binary patch literal 356 zcmV-q0h|7bP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz21!IgRCwB)RDlhGFc74~0oXuB=mvHJ z8389CZr}!v08ZctumL&&Y=9e-f4Lek#lC!Uc~and|Glq@5Z2n1QbEvI>IpZcR1-;q zNHk%vQ`CTq{2!tYM0&1}(1I+LkYsB+gN)-UA-eFF0kv(2Ck|{<Q{u8To_`Yc_{rB) zgWO0;OVDVBi8h9E$4`l+Cqe~W#gkBx&t4xQr;HMpx1X7EEi^V|k~5K2lCs$XX6`Y( zGw>O=B#i|-yF<tpJ())51Z71?Q4SxK$Uf7us(KetbbyZ>!DG{rqDOa(Nx3rYvJv_k zYU8;v2GLM^u9*(7Sj!eZl9Y*F9pN8m$oGhi0t^6s6&eS0Nnh^(0000<MNUMnLSTXc Cn~XmI literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_events.menu_gray.png b/pandora_console/images/op_events.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..4073f154b0b78084485f0546ac3ce105fdebde73 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GTRdGHLn>}1r5s>X(~FX0SaR+0gt9aJ-8Kz62aYsI|9C90 zzafu9v00{|Lp(`1<;X)_Muo3(-B%bFWXo)PnW%Kpw0Fmx{?iJ~GV3fIRylrKvV$#N z;_q>>Xoo+HQrQxW=bDZRFbnPJzMicRE#7dbWeP+3k#z10rN1vG6)<0jZd}4*#;n;n zF{D|HA@*}aP_x~GVqQ%)UzT0Zn3u9O^2~7X5Hw^H6)NIQ{I3&r&tXke0|PU|wjP6> Ux)x95f$nGUboFyt=akR{0Eru6ivR!s literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_events.menu_white.png b/pandora_console/images/op_events.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..b2cadf90ea5baeaa8cc4c088f9670b01270f4027 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G^E_P~Ln>}1B^+S<_y52A2YK^?1O+h$(euX>PgJr6F$5g0 z&D!C{(60E~v(%Si<+{W}ig^vLZy1!7A2SBUZkc~&L*kLd3-vmO#2bDvcd+eRBM>`@ zwOf%*r9yoDc98{{8TLmn_N%YCHd!irhl8RiPZR^s6Ly{_3@YpQvM(*G$?7b<=&~T& y&R_!f0zIV{Qc1BP9uu<{=w&H{={htpGDIw3KHh!s`dXk%89ZJ6T-G@yGywnvC|TwJ literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_monitoring.menu_gray.png b/pandora_console/images/op_monitoring.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..3d1bc0e007ff5c9ea0c991c89a200719b517ec64 GIT binary patch literal 387 zcmV-}0et?6P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzB}qg<RCwB~RKan=Fc7pg6rd8I0!#&Q z2jC~4j9met0$K<aIPl>KR1i}EPywU^N?^sT;7}yt2RE}LjjY>SuTDx6Pt2FA62lP4 z0nOzL&;Z-X=lI9XNgV={SOeW89%rBc;lVB_N5!v)<l94J_UxJSAQDR4*r4h(qO3-4 zCKc6zjXP}A^d=PRn@5xvA{qcQ;K(r)mE!4y4Anfj=7sq~Lo^C}Y*<9|=wp$q$j2Sk zBrQ~FC8}>ciZagoB({xN00+6b15BCJr7s!BTuL{F((sDET*=N?tgyGo$jX1f#A(2@ zASsz+<{ws(jIWrX981sIB4uZvTHLRTxWG?sg6{8Gv#aEF=)ih$zan64T9W<iX!`=Z h?HNhm^{`z97yvBVT5m$}iP-=E002ovPDHLkV1iV5raS-u literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_monitoring.menu_white.png b/pandora_console/images/op_monitoring.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed3c1a0a4cec99c3d7e1ecdca0495b8efb3616b GIT binary patch literal 342 zcmV-c0jd6pP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy_(?=TRCwB~RDlh`AP_{-0XjmRKsJyK z&<${dI)NkT28|Qc4b%<XKsTsPfQR`;(!fKamt1Jzx!ylKLPX%4vtSPn?u&uutjGaD z8oawae2fx|ix~Edpp7|+p{I2YDilhk(}Fd4=F;>UlI%5!vR%LqyfUS2yoSVwNd!E= z8q_4n!FZt+<HnHKGb5xWvv?&pqQF%xgTJ35j>Z#N1a<Q6*5EA+uD~sAYN#%XMjcuQ zH{gy&L!+kD#f(m^qYVe}H5M>%<T0m>OV9?cKV_&U>9kxyX|$2KW9~w_Nz*1TWUfU@ oph}z86*ui)pOIf5wzmKS03!Av5#0#xeE<Le07*qoM6N<$f*xm!f&c&j literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_network.menu_gray.png b/pandora_console/images/op_network.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..62d9a30161267836edb6b2ed8e465af6aadc56ff GIT binary patch literal 433 zcmV;i0Z#sjP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzQ%OWYRCwB)RNGC%KoG=M3P?II9heTF z0>~#nD6YV{3J4Y0R1n~Y&$t7e3hWZxLEHh%pgC!=?ktOwR+sE!c6V;q$<;s4>&NFB zR|m-;^-78_DYoU)W4jP5R}9ZSm4ZUR+lAH8?`TwQBEv~Q1iV94J#?AL*h4p}`e#<a zV2EQJyGSOPcDO1?1KAnVNHe6={{q2{jZFe&SIQVVjX=h!A&rn2JLeEc3@DocTE`3_ zpne8uh#6J^-5Bxh#gXT-6AcdS*6D=kT(9*O$UY_6b9o<XjYHNVfI-&~zUoHR95qM& z_+;)65S$Joy0FNqqL8hcJjx4)_jitz#SbD4hncnDPS%ij{l0<!;K@Fj9c#>HdwmUO z652xVlyGl&8hmSZ06RE;<GvVuKJ%ibog=3OWHlQSERqZ9+{|2!(Op~c31Q0*YH91q b{t;jRBGY~hy%?^c00000NkvXXu0mjfzpuC% literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_network.menu_white.png b/pandora_console/images/op_network.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..cf778daeb5631737df759fb97a13fe29f84826e0 GIT binary patch literal 355 zcmV-p0i6DcP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz1xZ9fRCwB?Q~?o#Fbr&`fH|lHBp?9^ z%mFySK_wu8Ibc)JIbaUJLDp{Rmgd?Hw%p}_B>kkx2O)kG04S`^@Dl9}#_D3V+5uDn z5pL*rfXw9F<Q=2?z^Y2LDLmk`AlK3Uu#1h}!WtU{8z2;C>+$Kd-cq)Pw2ZzwE{BM% z%;dRBDc7w)Dg#uc95J9<2I#&AXidbr1ZUDqgMDjbjV{qSFrI*?1&Iwg#GHmZ2=fh{ z7)e%g5YH2psPxG%VsnISc*geIijY;(1Xu}%9P|Ofr}t)mVq4a?ngT5e7B9S+xIz$X zv>ShC^@5{4N)-EkLR**N)hhn@p^aEgFtLXK0|3+f+&A+qi*x`0002ovPDHLkV1na0 BlG*?O literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_reporting.menu_gray.png b/pandora_console/images/op_reporting.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..b568d4c1b287b3705eeb29787815e4b8cd418c15 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GlRaG=Ln>}1r7$#gc28qxSXsmN=|KCR9VZ;bG>$WL$VzB1 z=w#HmFL=q`ah2!G$+{WL5gR<T7&KWmzB68Uz<xyHREw()W5;*rLZ*%Dl9Lt)Etut~ zvqXcf?S8$+X9j~eGVDiOzj>_7kcn!vHCZHYxxR7JaYva)KX{wcqGBY!Gi=nm#ov?H mwWo}6er^kwnE<0e0>hbnwZCgNmG1^RkHOQ`&t;ucLK6U|vsK3c literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_reporting.menu_white.png b/pandora_console/images/op_reporting.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..a764bc3a7ab6f63662aabc7a2ee16b20883d053a GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G{hlt4Ar-fhQW%>4|Nqa<u(F2j(*brjw_^@s8pjzrWF<5h zd@^d>-Gmqd{xZ&R6DyhAcrSz@h%4Y7^MYUOPj+yy2sKpLi>Oa{ZMv#eu$JdnKf~|L zXG&sBpS~%)Uiju%qRfpFLyqVKd55ItO~)N&9{u2DdbXB1V^%?A)Aa>^J8r0*&ldl1 i(``ipvmgT_8$)5R*5CXGYL!5zF?hQAxvX<aXaWHHe^g5V literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_workspace.menu_gray.png b/pandora_console/images/op_workspace.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..13d2f5d2cdcb382f0290301f57b6313b7e111527 GIT binary patch literal 339 zcmV-Z0j&OsP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy^+`lQRCwByRKX3xFbr&&pd)02Za|rU z=E(=q31}xM8vqlu@Zm`}XxN}kKt^B$&XSQTNFv9QWz|W}XJ48$3E261+aa`Y1-J0a ze!Dri_ND=l8sX?zIsvTtO)dh2T2H=45hVh`#sVP=6j4$}Qxa)TAk5&6U_56m)=kWe zDpqQ4R6vVV!+dBqBY)DNVkZ9p?>M&tvnj-gB+uEufQH%J;Ux>vc^R>+uZS6Iuo_&9 z%1E)6zSgoxpj@Jw#H<g<L;^jXKzz}x5QJ3hL#<UppoaedHxRSZT+w^$v9FiDN2DM< lZ0lM2LG1wKul<hz0|4e3K^dA&h)Mte002ovPDHLkV1hKLiWL9= literal 0 HcmV?d00001 diff --git a/pandora_console/images/op_workspace.menu_white.png b/pandora_console/images/op_workspace.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..fec51f589ef6d3aae53725bdaf41623cbe9bb264 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G=R92;Ln>}1B^+S>_y7NVh9lqqJ2Q0TB`An8n2P>6&iBjH z^u^!$I}VJow!(bQG7VE0<f=Q2IXLtT0=OAsx5~F~e>XX60#i`WK?aRGJR4S~A53D< z$ob~Hv(MoT1Mg&ZhdqoP&z%onm^g9bM<%=JXWYNBndn+F6f(>zKQH`=Pg8**d=2Xa z3H5I~c!U%#Dlj{}?1=clFx`>e!{mk1K8F4NDGvMF)kNp8SqfwZFd442YH)aW+@M9U vKT#pQ+2n^Zr##Ce)&nAc8Dec68W<Upq6>{v*Ix((`i#NT)z4*}Q$iB}F9K<O literal 0 HcmV?d00001 diff --git a/pandora_console/images/qrcode_icon_gray.png b/pandora_console/images/qrcode_icon_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..c2408753f02148c13adb38046bb34c23735ad474 GIT binary patch literal 599 zcmV-d0;v6oP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz`AI}URCwB)RXc9OFbuU*A0Qn&)!n)^ z2M7@R1U*7>g-jU}kD1)Hn{$GqC$K#P=$PI>y@AJWDOo%M3@h1A1qiYwK9PL<DBf%~ zWfVoTsDG?!E?I8B-{-tRIL4F%xI===vjM@W$kD|t>##S3YZLh*%VK*<m+ffTn(dlq zL9@YsLD-!Kd*(GUn<*_kI|7}eD+WB{aUyId`x7I#f`w&t{irc7;+YsB2iJqv3zf=Z z8A4eXR6yX0mMWAHYye$c%eTSiK2Tx;YR5t=Cm9DCTBTqS!2a=I8~tx&ed!vbV5S3? za7^BCQ4Z_75e4d`&{7j9vB-g%ol+DEuFs1mK?|^lTLrH0FU3^{to2en@d!PGh8$UQ zHdN)FG_DlpA`5Tk^Ep%W4PJSE5G}9A<I&OCE#f1+=Yc7s{YQo2{X5Xi9>xmOUL9mr zXwm?6H<koQb&$&uUC~!Wvp_snDjtQdgCbC9nX2R#){9XVQzCr}Q4*u{vw?PPT^Cw% zRnaLtYPfA6IbLkLULkF{<*xf&$17JWFMMe_wcRxBi3exMJrqgjEmXe}MNeRb)AfB4 z$mg|3fv$EJFoN-)%E->PYu5u_nl#N+g$qTEq4X=UZ|I1p@odu9DcZd4dd%C~`Q*r( l21?~6?9{9H8>b%u1^|EX$&#sJ3DN)n002ovPDHLkV1n?L1ib(N literal 0 HcmV?d00001 diff --git a/pandora_console/images/to_top_menu.png b/pandora_console/images/to_top_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..79e82d11f3be8461a9491637a7104ef58e64765d GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^x**KK1|+Sd9?b$$k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xo_e}ChE&{obK@;<vw{HIgCwg4<&r6V4>)!;&Mslu-I;eq z@WsR%NB(W7;kc9iInGJpArt@i{%k$<p0<odooZH^>s0x+Ub~lClx%oR=R>H#hm`%v zR?-sE|CoC?`5BTADj$$2;QztM{=MP1>GJl*_6GBvzdlG9u-LG!;j(86YkbZS-uj#+ zym2~%c<Xc)@y6>6>8;mU(i^iI_z#*M^ekX05Qz~}=CTm5+tnh;DZ?=T`!BiXn!odB zz4-bs@xANaXQKLVxvI6^)!a>g{7g#6DC)xey6!j0%#%Q_o0YNXzw}?R1O~Sie~a&I SeI5w(FoUP7pUXO@geCwBg@70U literal 0 HcmV?d00001 diff --git a/pandora_console/images/um_messages.menu_gray.png b/pandora_console/images/um_messages.menu_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..955957ff1f77b2acbbf6d3009301afb4c383a652 GIT binary patch literal 428 zcmV;d0aN~oP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzPDw;TRCwB?RMAbtKn%S^9e@pJHedse z3EF(}Lwggz2DB4YnIOPVKT9TPM#u)e5pILlM(>d2Izbhdtc&dUo&9WI;S6cM_G>y8 zq)X-cChcBdo<DR<p#VG`E$Q4%OC${h*k1u5i`LyHA!k>rOf2CaYto8>_~MFm3tx*^ zH_HYCpvR3dUxut7;ZLM@h^>l|lC}h}0l)(tJMdPMeIOhEzm_GI=#H*?BX~QKdH@|5 znEU}5XIXGY=aEdf^#`M5F6jy9DcefPi2#{Tkk7pAz+KEX2^7S4i-0llVxC-Xe=>&B z|1m#F0sfTME8{z6XG$8n@J-UfbJSs{R^%K2m@str@Z~bu-x#yk6)5L~_C~d5yriF^ z6b4+WWsXFAH4{W1jb&XLFMyW%ch|7R!QC!Ayu*K=kvfB10T~aQ7eps?*nHS70t^6* WOoJ>re2{AZ0000<MNUMnLSTZSEwQcu literal 0 HcmV?d00001 diff --git a/pandora_console/images/um_messages.menu_white.png b/pandora_console/images/um_messages.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..5c4a899c240822b5058448789a6697a98edd423d GIT binary patch literal 352 zcmV-m0iXVfP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz0!c(cRCwB~R0|QpFbr)`fP~_p5+-2| zs018P3n&;U00*4|BrpfXK}nAUa{a6uNABM3lBH?#l17Mvgb)ni8ghv?BU%DZ9pDk# z5`8)`lf_ywrA%rv0D6EzUj?x2f5!ur%5ij<U1rf9;i=5Ik}M0L@nF16qix7aEOf^t zy!nJ=3g&n>#Y`rBg)@&?DsJO}91Eh7OfvpbZh0V1tZVf>^%Lx7wO|y!rM!JV`Udn7 z6QOxH0?v&`aDu}JrjNY+4oM_JEw-6+bw~enWQ-)z;1f%m@Jn(7TmVnhw}3sMXFijZ yawk^sQWO3ENBiR%(M$FcEjFJ_bak=41Q-BJ#bJMoa}c}$0000<MNUMnLSTZ{VTj`Z literal 0 HcmV?d00001 diff --git a/pandora_console/include/fonts/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2 b/pandora_console/include/fonts/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..2b04b15bb70adf99751f55d58b3b9fce20e25c05 GIT binary patch literal 14720 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 O^B1H?f>QMf0002;l5*z& literal 0 HcmV?d00001 diff --git a/pandora_console/include/fonts/mem5YaGs126MiZpBA-UNirkOUuhp.woff2 b/pandora_console/include/fonts/mem5YaGs126MiZpBA-UNirkOUuhp.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..a0965b7a8990500590bc11075cb66bb6161b49de GIT binary patch literal 14544 zcmV;>I4{R{Pew8T0RR91065S95dZ)H0BlSE061*`0RR9100000000000000000000 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%0AuLVnv;ceTnshgiq z$R2uNhrbi=<p~rZNQhvet_u?(TqJ^MQDVe;Ck|1(1W6JNx*<ifRB29qFzk^YckOy+ zPp^9@2He-D->e*+#!VOvI`@J;=2&7wY>Z9%tXr|l8U9iK{QJyc;gS5%(79Cj?+hpZ zK)dk$Ul`!l22B|nj^iVhf2(=$@5yI}Z~~f-l7j>Jov@gu2F0C5G;NneC$8yS=)Bg+ zt!eGi)fFMSqP0b1qr4$?r=zX)XQJkFs&dhf`YTn}>eVOe3_s=!UxMpYxX!o*?i$B^ zwe(AStL47R;Ivj3UG(i`G|bXnMtedqni7phEv_;6guAZ4(;`}fYij<e8I1x2BLgRp z@hEx;T|@V<2Ew)p`*8_h^>W#GTrUOBzUvTP-v;~^NZD|+ys-rVZXX$2+op%{W$X1z umypt-!${Ty+F>c$Ysq(bO-QkhkK^(4$0sN82%~-s7)pVBjJKQz0000R?+d&D literal 0 HcmV?d00001 diff --git a/pandora_console/include/fonts/mem8YaGs126MiZpBA-UFVZ0b.woff2 b/pandora_console/include/fonts/mem8YaGs126MiZpBA-UFVZ0b.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..c8050c25f8c907611553a7f8131f60dd10ad766a GIT binary patch literal 14048 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 S;!94Je$jcs3Lw8Xr*8q*m{%hJ literal 0 HcmV?d00001 diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index f0163384ba..8520038f49 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -836,6 +836,10 @@ function config_update_config() $error_update[] = __('Custom logo'); } + if (!config_update_value('custom_logo_collapsed', (string) get_parameter('custom_logo_collapsed'))) { + $error_update[] = __('Custom logo collapsed'); + } + if (!config_update_value('custom_logo_white_bg', (string) get_parameter('custom_logo_white_bg'))) { $error_update[] = __('Custom logo white background'); } @@ -1750,7 +1754,11 @@ function config_process_config() } if (!isset($config['custom_logo'])) { - config_update_value('custom_logo', 'pandora_logo_head_4.png'); + config_update_value('custom_logo', 'pandora_logo_head_green.png'); + } + + if (!isset($config['custom_logo_collapsed'])) { + config_update_value('custom_logo_collapsed', 'pandora_logo_green_collapsed.png'); } if (!isset($config['custom_logo_white_bg'])) { diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index bef097c7c5..cd8ca9bbd4 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -377,7 +377,7 @@ function menu_print_menu(&$menu) $length = strlen(__($main['text'])); $padding_top = ( $length >= 18) ? 6 : 12; - $output .= '<div id="title_menu" style="color:#FFF; padding-top:'.$padding_top.'px; display:none;">'.$main['text'].'</div>'; + $output .= '<div id="title_menu" style="padding-top:'.$padding_top.'px; display:none;">'.$main['text'].'</div>'; // Add the notification ball if defined if (isset($main['notification'])) { $output .= '<div class="notification_ball">'.$main['notification'].'</div>'; diff --git a/pandora_console/include/styles/menu.css b/pandora_console/include/styles/menu.css index c591e749af..cf8e88bae7 100644 --- a/pandora_console/include/styles/menu.css +++ b/pandora_console/include/styles/menu.css @@ -16,6 +16,11 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +.operation .menu_icon ul.submenu > li, +.godmode .menu_icon ul.submenu > li { + background-color: #282828; +} + .menu { border-width: 0px 0px 0px 0px; border-style: none; @@ -34,8 +39,8 @@ } .menu li a { - color: #FFFFFF; - text-decoration:none; + color: #ffffff; + text-decoration: none; } li:hover ul { @@ -43,10 +48,12 @@ li:hover ul { } .submenu_text { - padding: 10.5px; - margin-left: 0px; - width: 100%; - color: #fff; + padding: 10.5px; + margin-left: 0px; + width: 100%; + color: #91a2a7; + font-family: "Open Sans", sans-serif; + font-size: 10pt; } .menu li.subselected a { @@ -61,7 +68,7 @@ li:hover ul { margin: 0px 0px 0px 0px; position: absolute; z-index: 999; - left: 44px; + /*left: 44px;*/ min-height: 35px; height: 35px; width: 180px; @@ -78,9 +85,10 @@ li:hover ul { height: 35px; width: 180px; font-weight: normal !important; + background-color: #202020; } .sub_subMenu.selected { - font-weight: bold !important; + font-weight: 600 !important; } .submenu2 li a { @@ -117,6 +125,18 @@ li:hover ul { margin-bottom: 0px !important; box-shadow: inset 4px 0 #80ba27 !important; } +.selected.submenu_selected { + background-color: #202020 !important; +} + +li.submenu_selected.selected { + background-color: #202020 !important; + font-weight: 600; +} + +li.sub_subMenu.selected { + background-color: #161616 !important; +} .menu .menu_icon, .menu li.links { @@ -132,21 +152,21 @@ li:hover ul { /* Icons specified here */ #icon_oper-networkconsole { - background: url(../../images/op_network.menu.png) no-repeat 50% 50%; + background: url(../../images/op_network.menu_gray.png) no-repeat; } #icon_oper-agents { border-top-right-radius: 5px; border-right-style: solid; border-right-width: 0px; - background: url(../../images/op_monitoring.menu.png) no-repeat 50% 50%; + background: url(../../images/op_monitoring.menu_gray.png) no-repeat; } #icon_oper-events { - background: url(../../images/op_events.menu.png) no-repeat 50% 50%; + background: url(../../images/op_events.menu_gray.png) no-repeat; } /* users */ #icon_oper-users { - background: url(../../images/op_workspace.menu.png) no-repeat 50% 50%; + background: url(../../images/op_workspace.menu_gray.png) no-repeat; } /* trap console */ #icon_oper-snmpc, @@ -154,7 +174,7 @@ li:hover ul { background: url(../../images/op_snmp.menu.png) no-repeat 50% 50%; } #icon_oper-reporting { - background: url(../../images/op_reporting.menu.png) no-repeat 50% 50%; + background: url(../../images/op_reporting.menu_gray.png) no-repeat; } #icon_oper-gismaps { background: url(../../images/op_gis.menu.png) no-repeat 50% 50%; @@ -163,45 +183,43 @@ li:hover ul { background: url(../../images/op_netflow.menu.png) no-repeat 50% 50%; } #icon_oper-extensions { - background: url(../../images/extensions.menu.png) no-repeat 50% 50%; + background: url(../../images/extensions.menu_gray.png) no-repeat; } /* Godmode images */ #icon_god-resources { - background: url(../../images/gm_resources.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_resources.menu_gray.png) no-repeat; } #icon_god-configuration { - background: url(../../images/gm_configuration.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_configuration.menu_gray.png) no-repeat; } #icon_god-alerts { - background: url(../../images/gm_alerts.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_alerts.menu_gray.png) no-repeat; } #icon_god-users { - background: url(../../images/gm_users.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_users.menu_gray.png) no-repeat; } #icon_god-reporting { background: url(../../images/reporting_edit.menu.png) no-repeat 50% 50%; } #icon_god-servers { - background: url(../../images/gm_servers.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_servers.menu_gray.png) no-repeat; } #icon_god-setup { - background: url(../../images/gm_setup.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_setup.menu_gray.png) no-repeat; } #icon_god-events { - background: url(../../images/gm_events.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_events.menu_gray.png) no-repeat; } #icon_god-extensions { - background: url(../../images/builder.menu.png) no-repeat 50% 50%; + background: url(../../images/builder.menu_gray.png) no-repeat; } #icon_god-links { - border-top: 4px solid #777 !important; - border-color: #777; - background: url(../../images/links.menu.png) no-repeat 50% 50%; + background: url(../../images/links.menu_gray.png) no-repeat; } #icon_god-um_messages { border-color: #777; - background: url(../../images/um_messages.menu.png) no-repeat 50% 50%; + background: url(../../images/um_messages.menu_gray.png) no-repeat; } #menu_container { @@ -258,95 +276,90 @@ ul li a:hover { } /* Hover Styles */ /*li ul li a { padding: 2px 5px; } Sub Menu Styles */ - - /* * --------------------------------------------------------------------- * - MAIN LEFT MENU and SUBMENU - * --------------------------------------------------------------------- */ -.menu li.selected { - font-weight: bold; + +.menu_icon { + transition-property: background-color; + transition-duration: 0.5s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color; + -webkit-transition-duration: 0.5s; + -webkit-transition-timing-function: ease-out; + -moz-transition-property: background-color; + -moz-transition-duration: 0.5s; + -moz-transition-timing-function: ease-out; + -o-transition-property: background-color; + -o-transition-duration: 0.5s; + -o-transition-timing-function: ease-out; } -.menu_icon{ - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; +.menu_icon:hover { + transition-property: background-color; + transition-duration: 0.5s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color; + -webkit-transition-duration: 0.5s; + -webkit-transition-timing-function: ease-out; + -moz-transition-property: background-color; + -moz-transition-duration: 0.5s; + -moz-transition-timing-function: ease-out; + -o-transition-property: background-color; + -o-transition-duration: 0.5s; + -o-transition-timing-function: ease-out; + background-color: #282828 !important; } - -.menu_icon:hover{ - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; - background-color: #585858 !important; +.submenu_not_selected:hover { + transition-property: background-color; + transition-duration: 0.5s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color; + -webkit-transition-duration: 0.5s; + -webkit-transition-timing-function: ease-out; + -moz-transition-property: background-color; + -moz-transition-duration: 0.5s; + -moz-transition-timing-function: ease-out; + -o-transition-property: background-color; + -o-transition-duration: 0.5s; + -o-transition-timing-function: ease-out; + background-color: #202020 !important; } -.submenu_not_selected:hover{ - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; - background-color: #585858 !important; +.submenu_selected:hover { + background-color: #202020 !important; } -.submenu_selected:hover{ - background-color: #585858 !important; +.sub_subMenu { + transition-property: background-color; + transition-duration: 0.5s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color; + -webkit-transition-duration: 0.5s; + -webkit-transition-timing-function: ease-out; + -moz-transition-property: background-color; + -moz-transition-duration: 0.5s; + -moz-transition-timing-function: ease-out; + -o-transition-property: background-color; + -o-transition-duration: 0.5s; } -.sub_subMenu{ - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; -} -.sub_subMenu:hover{ - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - background-color: #585858 !important; +.sub_subMenu:hover { + transition-property: background-color; + transition-duration: 0.5s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color; + -webkit-transition-duration: 0.5s; + -webkit-transition-timing-function: ease-out; + -moz-transition-property: background-color; + -moz-transition-duration: 0.5s; + -moz-transition-timing-function: ease-out; + -o-transition-property: background-color; + -o-transition-duration: 0.5s; + background-color: #161616 !important; } .menu li.selected { - box-shadow: inset 4px 0 #80BA27; + box-shadow: inset 4px 0 #80ba27; } /* creo que no se usan .is_submenu2 li { @@ -358,35 +371,192 @@ ul li a:hover { } */ .operation { - background-color: #333 !important; - border-top-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; + background-color: #343434 !important; + border-top-right-radius: 5px; + border-right-style: solid; + border-right-width: 0px; + padding-top: 20px !important; } -.operation .selected { - background-color: #585858 !important; +.operation .selected, +.godmode .selected { + background-color: #282828 !important; } -.menu li, .menu .li.not_selected { - border-radius: 0px 0px 0px 0px; - display: block; - min-height: 35px; - border-bottom: 0px none #424242; - vertical-align: middle; +.operation .selected #title_menu, +.godmode .selected #title_menu { + color: #fff !important; + font-weight: 600; } -.godmode, .menu_icon ul li{ - background-color: #222; -} -.operation .menu_icon ul li{ - background-color: #333; +.menu li, +.menu .li.not_selected { + border-radius: 0px 0px 0px 0px; + display: block; + min-height: 35px; + border-bottom: 0px none #424242; + vertical-align: middle; } -.godmode{ - border-top: 4px solid #777 !important; - padding-bottom: 4px !important; - border-bottom-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; -} \ No newline at end of file +.godmode { + padding-bottom: 4px !important; + background-color: #343434; +} + +/* Menu icons active */ +.selected#icon_oper-networkconsole { + background: url(../../images/op_network.menu_white.png) no-repeat; +} +.selected#icon_oper-agents { + background: url(../../images/op_monitoring.menu_white.png) no-repeat; +} +.selected#icon_oper-events { + background: url(../../images/op_events.menu_white.png) no-repeat; +} +.selected#icon_oper-users { + background: url(../../images/op_workspace.menu_white.png) no-repeat; +} +.selected#icon_oper-reporting { + background: url(../../images/op_reporting.menu_white.png) no-repeat; +} +.selected#icon_oper-extensions { + background: url(../../images/extensions.menu_white.png) no-repeat; +} +.selected#icon_god-resources { + background: url(../../images/gm_resources.menu_white.png) no-repeat; +} +.selected#icon_god-configuration { + background: url(../../images/gm_configuration.menu_white.png) no-repeat; +} +.selected#icon_god-alerts { + background: url(../../images/gm_alerts.menu_white.png) no-repeat; +} +.selected#icon_god-users { + background: url(../../images/gm_users.menu_white.png) no-repeat; +} +.selected#icon_god-servers { + background: url(../../images/gm_servers.menu_white.png) no-repeat; +} +.selected#icon_god-setup { + background: url(../../images/gm_setup.menu_white.png) no-repeat; +} +.selected#icon_god-events { + background: url(../../images/gm_events.menu_white.png) no-repeat; +} +.selected#icon_god-extensions { + background: url(../../images/builder.menu_white.png) no-repeat; +} +.selected#icon_god-links { + background: url(../../images/links.menu_white.png) no-repeat; +} +.selected#icon_god-um_messages { + background: url(../../images/um_messages.menu_white.png) no-repeat; +} + +#menu_full { + /*height: 100%; Lo he quitado para que no ocupe todo el alto y fixed */ + width: 60px; /* It is changed for classic menu (215px)*/ + position: absolute; /*Fixed: Lo he quitado para que no ocupe todo el alto y fixed */ + z-index: 1; + top: 0; + left: 0; + background-color: #343434; + border-bottom: solid 5px #343434; + min-height: 943px; + /* padding-bottom: 40px; Lo he quitado para que no ocupe todo el alto y fixed */ + /*overflow-x: hidden;*/ +} + +.button_collapse { + height: 55px; + background-color: #4d4d4d; + /* bottom: 0; Lo he quitado para que no ocupe todo el alto y fixed + position: fixed;*/ + width: 60px; /* It is changed for classic menu (215px)*/ + text-align: center; + color: #fff; + cursor: pointer; + background-repeat: no-repeat; + background-position: center; + margin-top: 15px; +} + +.logo_green { + height: 60px; + display: flex; + justify-content: center; + align-items: center; +} + +.operation > li.menu_icon.no_hidden_menu, +.godmode > li.menu_icon.no_hidden_menu { + display: flex; + justify-content: flex-end; + align-items: center; +} + +.operation > li.menu_icon, +.godmode > li.menu_icon { + padding-top: 3px; + padding-bottom: 3px; +} + +.operation div, +.operation a, +.godmode div, +.godmode a { + font-family: "Open Sans", sans-serif; +} + +.menu_full_classic, +.button_classic { + width: 215px !important; + background-image: url(../../images/button_collapse_menu.png); + background-repeat: no-repeat; + background-position: center; +} + +.menu_full_collapsed, +.button_collapsed { + width: 60px !important; + background-image: url(../../images/button_classic_menu.png); + background-repeat: no-repeat; + background-position: center; +} + +#top_btn { + display: none; + position: fixed; + bottom: 100px; + left: 0px; + border: none; + outline: none; + background: url("../../images/to_top_menu.png") no-repeat center; + background-color: #82b92e; + width: 60px; + height: 60px; + /* Estos borrarles despues xk sera img */ + color: white; + cursor: pointer; + font-size: 17px; + border-radius: 5px; +} + +#top_btn:hover { + background-color: #4d4d4d; + /* border: 2px solid #fff;*/ +} + +@media screen and (max-height: 845px) { + .operation > li.menu_icon, + .godmode > li.menu_icon { + padding-top: 1px; + padding-bottom: 1px; + } + .operation { + padding-top: 10px !important; + } + .button_collapse { + margin-top: 10px; + } +} diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 5a4717b82f..f23bd48efe 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -1,51 +1,119 @@ -/* -Author: The Pandora FMS team -Name: Default theme -Description: The default Pandora FMS theme layout - -// Pandora FMS - http://pandorafms.com -// ========================================================== -// Copyright (c) 2004-2019 Artica Soluciones Tecnológicas S.L - -// 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; 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. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -/* Tree view styles */ -/*@import url(tree.css); -@import url(fixed-bottom-box.css);*/ +/** + * + * Name: Default theme + * + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 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. + * ============================================================================ + */ /* * --------------------------------------------------------------------- * - GENERAL STYLES - * --------------------------------------------------------------------- */ +/* latin-ext */ @font-face { - font-family: 'Nunito'; + font-family: "Open Sans"; font-style: normal; font-weight: 400; - src: local('Nunito-Regular'), url(../../fonts/nunito.woff) format('woff'); + src: local("Open Sans Regular"), local("OpenSans-Regular"), + url(../fonts/mem8YaGs126MiZpBA-UFW50bbck.woff2) format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 400; + src: local("Open Sans Regular"), local("OpenSans-Regular"), + url(../fonts/mem8YaGs126MiZpBA-UFVZ0b.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 600; + src: local("Open Sans SemiBold"), local("OpenSans-SemiBold"), + url(../fonts/mem5YaGs126MiZpBA-UNirkOXOhpOqc.woff2) format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 600; + src: local("Open Sans SemiBold"), local("OpenSans-SemiBold"), + url(../fonts/mem5YaGs126MiZpBA-UNirkOUuhp.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 700; + src: local("Open Sans Bold"), local("OpenSans-Bold"), + url(../fonts/mem5YaGs126MiZpBA-UN7rgOXOhpOqc.woff2) format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 700; + src: local("Open Sans Bold"), local("OpenSans-Bold"), + url(../fonts/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; } @font-face { - font-family: 'lato-thin'; - src: url('../../fonts/Lato-Hairline.ttf'); + font-family: "Nunito"; + font-style: normal; + font-weight: 400; + src: local("Nunito-Regular"), url(../../fonts/nunito.woff) format("woff"); } @font-face { - font-family: 'lato-bolder'; - src: url('../../fonts/Lato-Light.ttf'); + font-family: "lato-thin"; + src: url("../../fonts/Lato-Hairline.ttf"); } @font-face { - font-family: 'lato-boldest'; - src: url('../../fonts/Lato-Regular.ttf'); + font-family: "lato-bolder"; + src: url("../../fonts/Lato-Light.ttf"); +} +@font-face { + font-family: "lato-boldest"; + src: url("../../fonts/Lato-Regular.ttf"); } * { font-family: verdana, sans-serif; @@ -59,8 +127,9 @@ body { background-color: #fff; margin: 0 auto; } -input, textarea { - border: 1px solid #ddd; +input, +textarea { + border: 1px solid #ddd; } textarea { padding: 5px; @@ -128,330 +197,312 @@ a:hover { color: #373737; text-decoration: underline; } -a:focus, input:focus, button:focus { - outline-width: 0; - outline: 0; +a:focus, +input:focus, +button:focus { + outline: 0; + outline-width: 0; } th > label { - padding-top: 7px; + padding-top: 7px; } input:disabled { - background-color: #DDD !important; + background-color: #ddd !important; } textarea:disabled { - background-color: #DDD !important; + background-color: #ddd !important; } select:disabled { - background-color: #DDD !important; + background-color: #ddd !important; } ul { - list-style-type: none; - padding-left: 0; - margin-left: 0; + list-style-type: none; + padding-left: 0; + margin-left: 0; } -code, pre { - font-family: courier, serif; +code, +pre { + font-family: courier, serif; } fieldset { - background-color:#F9FAF9; - border: 1px solid #E2E2E2; - padding:0.5em; - margin-bottom:20px; - position:relative; + background-color: #f9faf9; + border: 1px solid #e2e2e2; + padding: 0.5em; + margin-bottom: 20px; + position: relative; } fieldset legend { - font-size:1.1em; - font-weight:bold; - line-height: 20px; - color: #3F3F3F; + font-size: 1.1em; + font-weight: bold; + line-height: 20px; + color: #3f3f3f; } -td input[type=checkbox]{ +td input[type="checkbox"] { padding: 10px; margin-top: 2px; display: table-cell; } -input[type=image] { - border:0px; - background-color: transparent !important; +input[type="image"] { + border: 0px; + background-color: transparent !important; } -table, img { - border: 0px; +table, +img { + border: 0px; } -table pre{ - white-space: pre-wrap; +table pre { + white-space: pre-wrap; } -tr:first-child>th { - background-color: #373737; +tr:first-child > th { + background-color: #373737; } th { - color: #fff; - background-color: #666; - font-size: 7.5pt; - letter-spacing: 0.3pt; + color: #fff; + background-color: #666; + font-size: 7.5pt; + letter-spacing: 0.3pt; } /* --- Font ttf --- */ -@font-face -{ - font-family: 'DejaVuSerif-BoldFont'; - src: url('../fonts/DejaVuSerif-Bold.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerif-BoldFont"; + src: url("../fonts/DejaVuSerif-Bold.ttf") format("truetype"); } -.DejaVuSerif-Bold{ - font-family: DejaVuSerif-BoldFont; +.DejaVuSerif-Bold { + font-family: DejaVuSerif-BoldFont; } -@font-face -{ - font-family: 'DejaVuSerif-BoldItalicFont'; - src: url('../fonts/DejaVuSerif-BoldItalic.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerif-BoldItalicFont"; + src: url("../fonts/DejaVuSerif-BoldItalic.ttf") format("truetype"); } -.DejaVuSerif-BoldItalic{ - font-family: DejaVuSerif-BoldItalicFont; +.DejaVuSerif-BoldItalic { + font-family: DejaVuSerif-BoldItalicFont; } -@font-face -{ - font-family: 'DejaVuSerif-ItalicFont'; - src: url('../fonts/DejaVuSerif-Italic.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerif-ItalicFont"; + src: url("../fonts/DejaVuSerif-Italic.ttf") format("truetype"); } -.DejaVuSerif-Italic{ - font-family: DejaVuSerif-ItalicFont; +.DejaVuSerif-Italic { + font-family: DejaVuSerif-ItalicFont; } -@font-face -{ - font-family: 'DejaVuSerifFont'; - src: url('../fonts/DejaVuSerif.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerifFont"; + src: url("../fonts/DejaVuSerif.ttf") format("truetype"); } -.DejaVuSerif{ - font-family: DejaVuSerifFont; +.DejaVuSerif { + font-family: DejaVuSerifFont; } -@font-face -{ - font-family: 'DejaVuSerifCondensed-BoldFont'; - src: url('../fonts/DejaVuSerifCondensed-Bold.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerifCondensed-BoldFont"; + src: url("../fonts/DejaVuSerifCondensed-Bold.ttf") format("truetype"); } -.DejaVuSerifCondensed-Bold{ - font-family: DejaVuSerifCondensed-BoldFont; +.DejaVuSerifCondensed-Bold { + font-family: DejaVuSerifCondensed-BoldFont; } -@font-face -{ - font-family: 'DejaVuSerifCondensed-BoldItalicFont'; - src: url('../fonts/DejaVuSerifCondensed-BoldItalic.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerifCondensed-BoldItalicFont"; + src: url("../fonts/DejaVuSerifCondensed-BoldItalic.ttf") format("truetype"); } -.DejaVuSerifCondensed-BoldItalic{ - font-family: DejaVuSerifCondensed-BoldItalicFont; +.DejaVuSerifCondensed-BoldItalic { + font-family: DejaVuSerifCondensed-BoldItalicFont; } -@font-face -{ - font-family: 'DejaVuSerifCondensed-ItalicFont'; - src: url('../fonts/DejaVuSerifCondensed-Italic.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerifCondensed-ItalicFont"; + src: url("../fonts/DejaVuSerifCondensed-Italic.ttf") format("truetype"); } -.DejaVuSerifCondensed-Italic{ - font-family: DejaVuSerifCondensed-ItalicFont; +.DejaVuSerifCondensed-Italic { + font-family: DejaVuSerifCondensed-ItalicFont; } -@font-face -{ - font-family: 'DejaVuSerifCondensedFont'; - src: url('../fonts/DejaVuSerifCondensed.ttf') format('truetype'); +@font-face { + font-family: "DejaVuSerifCondensedFont"; + src: url("../fonts/DejaVuSerifCondensed.ttf") format("truetype"); } -.DejaVuSerifCondensed{ - font-family: DejaVuSerifCondensedFont; +.DejaVuSerifCondensed { + font-family: DejaVuSerifCondensedFont; } -@font-face -{ - font-family: 'FreeSansFont'; - src: url('../fonts/FreeSans.ttf') format('truetype'); +@font-face { + font-family: "FreeSansFont"; + src: url("../fonts/FreeSans.ttf") format("truetype"); } -.FreeSans{ - font-family: FreeSansFont; +.FreeSans { + font-family: FreeSansFont; } -@font-face -{ - font-family: 'FreeSansBoldFont'; - src: url('../fonts/FreeSansBold.ttf') format('truetype'); +@font-face { + font-family: "FreeSansBoldFont"; + src: url("../fonts/FreeSansBold.ttf") format("truetype"); } -.FreeSansBold{ - font-family: FreeSansBoldFont; +.FreeSansBold { + font-family: FreeSansBoldFont; } -@font-face -{ - font-family: 'smallfontFont'; - src: url('../fonts/smallfont.ttf') format('truetype'); +@font-face { + font-family: "smallfontFont"; + src: url("../fonts/smallfont.ttf") format("truetype"); } -.smallfont{ - font-family: smallfontFont; +.smallfont { + font-family: smallfontFont; } -@font-face -{ - font-family: 'unicodeFont'; - src: url('../fonts/unicode.ttf') format('truetype'); +@font-face { + font-family: "unicodeFont"; + src: url("../fonts/unicode.ttf") format("truetype"); } -@font-face -{ - font-family: 'roboto'; - src: url('../../fonts/roboto.woff2') format('woff2'); +@font-face { + font-family: "roboto"; + src: url("../../fonts/roboto.woff2") format("woff2"); } -@font-face -{ - font-family: 'opensans'; - src: url('../../fonts/opensans.woff2') format('woff2'); +@font-face { + font-family: "opensans"; + src: url("../../fonts/opensans.woff2") format("woff2"); } -@font-face -{ - font-family: 'lato'; - src: url('../../fonts/lato.woff2') format('woff2'); +@font-face { + font-family: "lato"; + src: url("../../fonts/lato.woff2") format("woff2"); } -@font-face -{ - font-family: 'leaguegothic'; - src: url('../../fonts/leaguegothic.woff') format('woff'); +@font-face { + font-family: "leaguegothic"; + src: url("../../fonts/leaguegothic.woff") format("woff"); } -.unicode{ - font-family: unicodeFont; +.unicode { + font-family: unicodeFont; } /* * --------------------------------------------------------------------- - * - GLOBAL STYLES - + * - GLOBAL STYLES - * --------------------------------------------------------------------- */ div#page { - background: #FFF; - background-image: none; - clear: both; - width: auto; + background: #fff; + background-image: none; + clear: both; + width: auto; + margin-top: 20px !important; + padding-left: 60px; /* It is changed for classic menu (215px)*/ + margin-right: 30px; + margin-left: 30px; } body.pure { - background-color: #fff; + background-color: #fff; } div#container { - margin: 0 auto; - min-width: 960px; - text-align: left; - height: 100%; - background: #FFF; - width: 100%; + margin: 0 auto; + min-width: 960px; + text-align: left; + height: 100%; + background: #fff; + width: 100%; } div#main { - width: auto; - margin: 0px 0% 0px 0%; - float: left; - position: relative; - min-height: 850px; - margin-left:60px; - max-width: 93%; - min-width: 93%; + width: auto; + margin: 0 auto; + position: relative; + min-height: 850px; + max-width: 100%; + min-width: 93%; } textarea.conf_editor { - padding: 5px; - width: 650px; - height: 350px; + padding: 5px; + width: 650px; + height: 350px; } textarea.conf_error { - background-image: url(../../images/err.png); - background-repeat: no-repeat; - background-position: top right; -} - -input.button { - font-family: Arial,Sans-serif; - border: 4px solid #ccc; - background: #fff; - padding: 2px 3px; - margin: 10px 15px; + background-image: url(../../images/err.png); + background-repeat: no-repeat; + background-position: top right; } a.white_bold { - color: #eee; - text-decoration: none; - font-weight: bold; + color: #eee; + text-decoration: none; + font-weight: bold; } a.white { - color: #eee; - text-decoration: none; + color: #eee; + text-decoration: none; } p.center { - text-align: center; + text-align: center; } .img_help { - cursor: help; + cursor: help; } #loading { - position:fixed; - width: 200px; - margin-left: 30%; - text-align:center; - top: 50%; - background-color: #999999; - padding: 20px; + position: fixed; + width: 200px; + margin-left: 30%; + text-align: center; + top: 50%; + background-color: #999999; + padding: 20px; } -.tactical_set legend{ - text-align:left; - color: #3F3F3F; +.tactical_set legend { + text-align: left; + color: #3f3f3f; } -.tactical_set{ - background: #FFF; - border: 1px solid #E2E2E2; - margin-left: auto; - margin-right: auto; - width: auto; +.tactical_set { + background: #fff; + border: 1px solid #e2e2e2; + margin-left: auto; + margin-right: auto; + width: auto; } /* --- Botones --- */ input.sub { - font-weight: normal; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - font-size: 8pt; - background-color: #333 !important; - background-repeat: no-repeat !important; - background-position: 92% 3px !important; - color: white !important; - padding: 3px 3px 5px 12px; - border-color: #333; + font-weight: normal; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + font-size: 8pt; + background-color: #333 !important; + background-repeat: no-repeat !important; + background-position: 92% 3px !important; + color: white !important; + padding: 3px 3px 5px 12px; + border-color: #333; } input.sub[disabled] { - color: #B4B4B4 !important; - background-color: #F3F3F3 !important; - border-color: #B6B6B6; - cursor: default; + color: #b4b4b4 !important; + background-color: #f3f3f3 !important; + border-color: #b6b6b6; + cursor: default; } /* @@ -460,43 +511,43 @@ input.sub[disabled] { * --------------------------------------------------------------------- */ #noaccess { - position: relative; - margin-top:25px; - left: 15px; - padding-top: 5px; - background-color: #FFFFFF; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; + position: relative; + margin-top: 25px; + left: 15px; + padding-top: 5px; + background-color: #ffffff; + border-top-left-radius: 2px; + border-top-right-radius: 2px; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; } #noaccess-title { - color: #FFF; - font-weight: bold; - padding-top: 5px; - margin-left: 5px; - background: none repeat scroll 0% 0% #82B92E; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - text-align: center; + color: #fff; + font-weight: bold; + padding-top: 5px; + margin-left: 5px; + background: none repeat scroll 0% 0% #82b92e; + border-top-left-radius: 2px; + border-top-right-radius: 2px; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + text-align: center; } #noaccess-text { - font-size: 12px; - text-align: justify; - padding-top: 25px; - padding-right: 50px; - float:right; + font-size: 12px; + text-align: justify; + padding-top: 25px; + padding-right: 50px; + float: right; } #noaccess-image { - position: relative; - left: 10px; - top: 10px; - float:left; + position: relative; + left: 10px; + top: 10px; + float: left; } /*div#activity{ @@ -523,61 +574,62 @@ div#db_ftxt { padding-top: 10px; }*/ - /* * --------------------------------------------------------------------- * - HELP DIALOG - login_help_dialog.php and pandora_help.php - * --------------------------------------------------------------------- */ div#main_help { - width: 100%; + width: 100%; } -div#main_help div.databox, .license_databox { - background: F3F3F3; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - border: 0px; - padding-left: 25px; - padding-right: 25px; - margin-top: 10px; - -moz-box-shadow: -1px 1px 6px #aaa; - -webkit-box-shadow: -1px 1px 6px #aaa; - box-shadow: -1px 1px 6px #aaa; - +div#main_help div.databox, +.license_databox { + background: F3F3F3; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + border: 0px; + padding-left: 25px; + padding-right: 25px; + margin-top: 10px; + -moz-box-shadow: -1px 1px 6px #aaa; + -webkit-box-shadow: -1px 1px 6px #aaa; + box-shadow: -1px 1px 6px #aaa; } -div#main_help div.databox h1{ - padding-bottom: 0px; - margin-bottom: 0px; - font-weight: bold; - font-family: sans-serif, verdana; +div#main_help div.databox h1 { + padding-bottom: 0px; + margin-bottom: 0px; + font-weight: bold; + font-family: sans-serif, verdana; } -div#main_help div.databox h3, div#main_help div.databox h2 { - color: #6EB432; - font-family: sans-serif, verdana; +div#main_help div.databox h3, +div#main_help div.databox h2 { + color: #6eb432; + font-family: sans-serif, verdana; } div#main_help div.databox h3 { - font-size: 12px; + font-size: 12px; } -div#main_help a.footer, div#main_help span { - color: #999; +div#main_help a.footer, +div#main_help span { + color: #999; } -div#main_help div.databox hr{ - width:100%; - border: 0px; - height: 1px; - background-color: #222; - margin: 0px; +div#main_help div.databox hr { + width: 100%; + border: 0px; + height: 1px; + background-color: #222; + margin: 0px; } -div#main_help div.databox p{ - line-height: 15px; - text-align: justify; +div#main_help div.databox p { + line-height: 15px; + text-align: justify; } /* @@ -585,21 +637,27 @@ div#main_help div.databox p{ * - FOOTER - * --------------------------------------------------------------------- */ -a.footer, a.footer span{ - font-size: 9px; - color: white; +a.footer, +a.footer span { + font-size: 9px; + color: white; } div#foot { - font-size: 6pt !important; - border-top: solid 2px #222; - padding-top: 8px; - padding-bottom: 5px; - text-align: center; - background: #333333; - height: 30px; - clear: both; - width: auto; + padding-top: 8px; + padding-bottom: 5px; + text-align: center; + background: #343434; + height: 30px; + clear: both; + width: auto; +} + +div#foot a, +div#foot span { + font-family: "Open Sans", sans-serif; + font-size: 8.5pt; + color: #91a2a7; } /* @@ -608,48 +666,46 @@ div#foot { * --------------------------------------------------------------------- */ div#menu_container { - -moz-border-top-right-radius: 6px; - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - z-index: 1010; - width: 40px; - height: 100%; + -moz-border-top-right-radius: 6px; + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + z-index: 1010; + width: 40px; + height: 100%; } div#menu { - width: 45px; - float: left; - z-index: 2000; - position: absolute; + width: 45px; + float: left; + z-index: 2000; + /*position: absolute; Lo he quitado para que no ocupe todo el alto y fixed */ } div#head { - font-size: 8pt; - width: 100%; - height: 60px; - padding-top: 0px; - margin-bottom: 20px; - border-bottom-style: solid; - border-bottom-width: 3px; - border-color: #82B92E; - min-width: 882px; - background-color: #333; - color: white; + font-size: 8pt; + width: 100%; + height: 60px; + padding-top: 0px; + margin: 0 auto; + border-bottom: 1px solid #91a2a7; + min-width: 882px; + background-color: #fff; + color: #000; + z-index: 2; } .fixed_header { - z-index: 9999; - position: fixed; - left: 0; - top: 0; - width: 100%; + z-index: 9999; + position: fixed; + left: 0; + top: 0; + width: 100%; } #ver { - margin-bottom: 25px; + margin-bottom: 25px; } - /*.databox_error { width: 657px !important; height: 400px; @@ -670,27 +726,42 @@ input.datos { background-color: #050505; }*/ - /* * --------------------------------------------------------------------- * - VISUAL MAPS - * --------------------------------------------------------------------- */ -input.vs_button_ghost{ - background-color: transparent !important; - border: 1px solid #82b92e; - color: #82b92e !important; - text-align: center; - padding: 4px 12px; - font-weight: bold; +input.vs_button_ghost { + background-color: transparent !important; + border: 1px solid #82b92e; + color: #82b92e !important; + text-align: center; + padding: 4px 12px; + font-weight: bold; } -input.next, input.upd, input.ok, input.wand, input.delete, input.cog, -input.target, input.search, input.copy, input.add, input.graph, -input.percentile, input.binary, input.camera, input.config, -input.cancel, input.default, input.filter, input.pdf,input.spinn { - padding-right: 30px; - height: 23px; +input.next, +input.upd, +input.ok, +input.wand, +input.delete, +input.cog, +input.target, +input.search, +input.copy, +input.add, +input.graph, +input.percentile, +input.binary, +input.camera, +input.config, +input.cancel, +input.default, +input.filter, +input.pdf, +input.spinn { + padding-right: 30px; + height: 23px; } input.next { @@ -906,13 +977,6 @@ input.group_item_min[disabled] { background: #fefefe url(../../images/group_green.disabled.png) no-repeat center !important; } -input.color_cloud_min { - background: #fefefe url(../../images/color_cloud_item.png) no-repeat center !important; -} -input.color_cloud_min[disabled] { - background: #fefefe url(../../images/color_cloud_item.disabled.png) no-repeat - center !important; -} div#cont { position: fixed; @@ -925,7 +989,6 @@ div#cont { background-color: #80BA27 !important; }*/ - /*tr.datos, tr.datost, tr.datosb , tr.datos_id, tr.datosf9 { #background-color: #eaeaea; @@ -948,12 +1011,13 @@ tr.datos2b:hover, tr.datos2_id:hover, tr.datos2f9:hover { * --------------------------------------------------------------------- */ .agent_reporting { - margin: 5px; - padding: 5px; + margin: 5px; + padding: 5px; } -.report_table, .agent_reporting { - border: #CCC outset 3px; +.report_table, +.agent_reporting { + border: #ccc outset 3px; } td.datos3, @@ -976,14 +1040,10 @@ td.datos4 * { /* user list php */ tr.disabled_row_user * { - color: grey; + color: grey; } /* global syles */ -.bg { /* op menu */ - background: #82b92e; -} - .bg { /* op menu */ background: #82b92e; @@ -1178,23 +1238,22 @@ div.title_line { -khtml-opacity: 0.5; } - /* * --------------------------------------------------------------------- * - RIGHT MENU SECTION - * --------------------------------------------------------------------- */ -#menu_tab_frame, +#menu_tab_frame, #menu_tab_frame_view { - display: block !important; - border-bottom: 1px solid #80BA27; - max-height: 31px; - min-height: 31px; - width: 100%; - padding-right: 0px; - margin-left: 0px !important; - margin-bottom: 20px; - height: 31px; + display: block !important; + border-bottom: 2px solid #82b92e; + max-height: 31px; + min-height: 31px; + width: 100%; + padding-right: 0px; + margin-left: 0px !important; + margin-bottom: 20px; + height: 31px; } #menu_tab { @@ -1223,7 +1282,7 @@ div.title_line { } #menu_tab li.nomn_high a { - color: #fff; + color: #fff; } #menu_tab .mn li a { display: block; @@ -1231,71 +1290,68 @@ div.title_line { padding: 0px; margin: 0px; } -#menu_tab li.nomn:hover a, #menu_tab li:hover ul a:hover { - color: #fff; +#menu_tab li.nomn:hover a, +#menu_tab li:hover ul a:hover { + color: #fff; } -#menu_tab li.nomn { +#menu_tab li.nomn, +#menu_tab li.nomn_high { min-width: 30px; height: 28px; + margin-top: 0; } -#menu_tab li.nomn_high { - min-width: 30px; - height: 28px; -} - /* --- Submenu --- */ ul.subsubmenu { - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - -moz-border-bottom-right-radius: 5px; - -moz-border-bottom-left-radius: 5px; - -webkit-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + -moz-border-bottom-right-radius: 5px; + -moz-border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; - background: #ECECEC !important; + background: #ececec !important; } -ul.subsubmenu li{ - background-color: #ECECEC; - font-weight: bold; - text-decoration: none; - font-size: 14px; - border-color: #E2E2E2; - border-style: solid; - border-width: 1px; +ul.subsubmenu li { + background-color: #ececec; + font-weight: bold; + text-decoration: none; + font-size: 14px; + border-color: #e2e2e2; + border-style: solid; + border-width: 1px; } -ul.subsubmenu li a{ - padding: 0px 10px 5px; +ul.subsubmenu li a { + padding: 0px 10px 5px; } -.subsubmenu{ - position: absolute; - float: right; - z-index: 9999; - display: none; - margin-top: 5px !important ; - left: 0px !important; +.subsubmenu { + position: absolute; + float: right; + z-index: 9999; + display: none; + margin-top: 5px !important ; + left: 0px !important; } -.subsubmenu li{ - margin-top: 0px !important ; +.subsubmenu li { + margin-top: 0px !important ; } div#agent_wizard_subtabs { - position: absolute; - margin-left: 0px; - display: none; - padding-bottom: 3px; - z-index: 1000; + position: absolute; + margin-left: 0px; + display: none; + padding-bottom: 3px; + z-index: 1000; } .agent_wizard_tab:hover { - cursor: default; + cursor: default; } - /* * --------------------------------------------------------------------- * - SECTION TITLE LEFT (green background) - @@ -1367,7 +1423,6 @@ div#agent_wizard_subtabs { font-weight: bold; } - /* span.users { background: url(../../images/group.png) no-repeat; @@ -1458,19 +1513,20 @@ span.rmess, span.nrmess { * - TABLES - * --------------------------------------------------------------------- */ -.databox, .databox_color, .databox_frame { - margin-bottom: 5px; - margin-top: 0px; - margin-left: 0px; - border: 1px solid #e2e2e2; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - +.databox, +.databox_color, +.databox_frame { + margin-bottom: 5px; + margin-top: 0px; + margin-left: 0px; + border: 1px solid #e2e2e2; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; } -.databox_color{ - padding-top: 5px; - background-color: #fafafa; +.databox_color { + padding-top: 5px; + background-color: #fafafa; } table.databox { @@ -1493,8 +1549,7 @@ table.databox { } .databox > thead > tr > th, -.databox > tbody > tr > th, -.databox > thead > tr > th a { +.databox > tbody > tr > th { padding: 9px 7px; font-weight: normal; color: #fff; @@ -1546,7 +1601,6 @@ table.databox { color: #333; } - /* For use in Netflow */ /* table.databox_grid { @@ -1566,18 +1620,18 @@ table.databox_grid > td { */ /* events */ -table.alternate tr:nth-child(odd) td{ - background-color: #ffffff; +table.alternate tr:nth-child(odd) td { + background-color: #ffffff; } table.alternate tr:nth-child(even) td { background-color: #e4e5e4; } table.rounded_cells td { - padding: 4px 4px 4px 10px; - -moz-border-radius: 6px !important; - -webkit-border-radius: 6px !important; - border-radius: 6px !important; + padding: 4px 4px 4px 10px; + -moz-border-radius: 6px !important; + -webkit-border-radius: 6px !important; + border-radius: 6px !important; } /*#head_l { @@ -1633,15 +1687,15 @@ div#logo_text3 { /* end of classes for event priorities */ div#main_pure { - background-color: #fefefe; - text-align: left; - margin-bottom: 25px; - margin-top: 30px; - margin-left: 10px; - margin-right: 10px; - height: 1000px; - width: 98%; - position: static; + background-color: #fefefe; + text-align: left; + margin-bottom: 25px; + margin-top: 30px; + margin-left: 10px; + margin-right: 10px; + height: 1000px; + width: 98%; + position: static; } /*#table-agent-configuration radio { margin-right: 40px; @@ -1663,8 +1717,6 @@ div#main_pure { width: 300px; }*/ - - /* IE 7 Hack */ #editor { *margin-top: 10px !important; @@ -1707,9 +1759,9 @@ span.actions { .actions { min-width: 200px !important; } -select#template, +select#template, select#action { - width: 250px; + width: 250px; } /*#label-checkbox-matches_value, #label-checkbox-copy_modules, @@ -1719,8 +1771,8 @@ select#action { }*/ /* Modules */ -table#simple{ - padding: 30px; +table#simple { + padding: 30px; } table#simple select#id_module_type, table#alert_search select#id_agent, @@ -1961,20 +2013,135 @@ div#pandora_logo_header { float: left; } -#header_table img { +/* + * --------------------------------------------------------------------- + * - HEADER - + * --------------------------------------------------------------------- + */ +#header_table { + margin: 0px; + padding: 0px; margin-top: 0px; + padding-left: 90px; /* It is changed for classic menu */ + padding-right: 30px; +} + +#header_table_inner { + height: 60px; + /*width: 100%;*/ + display: flex; + align-items: center; + justify-content: space-between; +} + +#header_table_inner a, +#header_table_inner span { + font-family: "Open Sans", sans-serif; +} + +.header_left { + display: flex; + justify-content: flex-start; + align-items: center; +} + +.header_center { + display: flex; + justify-content: center; + align-items: center; +} + +.header_right { + display: flex; + justify-content: flex-end; + align-items: center; +} + +.header_left > div, +.header_center > div { + padding-right: 15px; +} + +.header_right > div { + padding-left: 15px; +} + +#header_table_inner > div { + /* border: solid 1px pink;*/ +} + +#header_table_inner > div > div { + /* border: solid 1px fuchsia;*/ +} + +#header_table_inner td a, +#header_table_inner td span { + color: #777; +} + +.header_left img, +.header_center img, +.header_right img { + vertical-align: middle; +} + +#header_user img, +#header_autorefresh { + padding-right: 5px; +} + +#header_alert, +#header_message { + padding-right: 0px; +} + +#header_alert p, +#header_message p { + border-radius: 50%; + padding: 0; + margin: 0; + width: 15px; + position: relative; + height: 15px; + top: -5px; + text-align: center; + display: inline-block; + vertical-align: super; +} + +#header_alert p { + background-color: #ec4e1b; + left: -12px; +} + +#header_message p { + background-color: #82b92e; + left: -9px; +} + +#header_alert span, +#header_message span { + color: #fff; + font-size: 7pt; + font-weight: 600; + font-family: "Open Sans", sans-serif; +} + +@media screen and (max-width: 1024px) { + #header_user span, + #header_searchbar a.tip img { + display: none; + } } .autorefresh_disabled { cursor: not-allowed !important; } -a.autorefresh { - padding-right: 8px; -} - +a.autorefresh_txt, #refrcounter { - color: white; + color: #1c1c1c; + font-size: 8.5pt; } #combo_refr select { @@ -2015,15 +2182,15 @@ div.warn { } ol.steps { - margin-bottom: 70px; + margin-bottom: 70px; } div#steps_clean { - display:none; + display: none; } div#events_list { - float: left; - width: 100%; + float: left; + width: 100%; } /*span#logo_text1 { font: bolder 3em Arial, Sans-serif; @@ -2055,86 +2222,60 @@ div#logo_text3 { vertical-align: middle; } - - /* TABLAS */ /* Cells divs to set individual styles with the table objects */ -div.cellBold { - width: 100%; - height: 100%; +td.cellBold { font-weight: bold; } -div.cellRight { - width: 100%; - height: 100%; +td.cellRight { text-align: right; } -div.cellCenter { - width: 100%; - height: 100%; +td.cellCenter { text-align: center; } -div.cellWhite { - width: 100%; - height: 100%; +td.cellWhite { background: #fff; color: #111; } -div.cellNormal { - width: 100%; - height: 100%; +td.cellNormal { background: #6eb432; color: #fff; } -div.cellCritical { - width: 100%; - height: 100%; +td.cellCritical { background: #f85858; color: #fff; } -div.cellWarning { - width: 100%; - height: 100%; +td.cellWarning { background: #ffea59; color: #111; } -div.cellUnknown { - width: 100%; - height: 100%; +td.cellUnknown { background: #aaaaaa; color: #ffffff; } -div.cellNotInit { - width: 100%; - height: 100%; +td.cellNotInit { background: #3ba0ff; color: #ffffff; } -div.cellAlert { - width: 100%; - height: 100%; +td.cellAlert { background: #ff8800; color: #111; } -div.cellBorder1 { - width: 100%; - height: 100%; +td.cellBorder1 { border: 1px solid #666; } -div.cellBig { - width: 100%; - height: 100%; +td.cellBig { font-size: 18px; } @@ -2164,15 +2305,15 @@ div.cellBig { /* Standard styles for status colos (groups, events, backgrounds...) */ .opacity_cell { - filter:alpha(opacity=80); /* For IE8 and earlier */ - -moz-opacity: 0.8; - opacity: 0.8; - -khtml-opacity: 0.8; + filter: alpha(opacity=80); /* For IE8 and earlier */ + -moz-opacity: 0.8; + opacity: 0.8; + -khtml-opacity: 0.8; } -tr.group_view_data, +tr.group_view_data, .group_view_data { - color: #3F3F3F; + color: #3f3f3f; } tr.group_view_crit, @@ -2181,10 +2322,10 @@ tr.group_view_crit, color: #fff; } -tr.group_view_ok, +tr.group_view_ok, .group_view_ok { - background-color: #80BA27; - color: #fff; + background-color: #80ba27; + color: #fff; } tr.group_view_not_init, @@ -2291,14 +2432,16 @@ td.datos_orangef9 { padding: 5px 5px 5px 5px; } - /* global */ -input#text-id_parent.ac_input, input, textarea, select { - background-color: #ffffff !important; - border: 1px solid #cbcbcb; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; +input#text-id_parent.ac_input, +input, +textarea, +select { + background-color: #ffffff !important; + border: 1px solid #cbcbcb; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } /* plugins */ @@ -2306,130 +2449,325 @@ span#plugin_description { font-size: 9px; } - /* * --------------------------------------------------------------------- * - TINYMCE - * --------------------------------------------------------------------- */ #tinymce { - text-align: left; - padding-top:20px; + text-align: left; + padding-top: 20px; } -.visual_font_size_4pt, .visual_font_size_4pt > em, .visual_font_size_4pt > strong, .visual_font_size_4pt > strong > span, .visual_font_size_4pt > span, .visual_font_size_4pt > strong > em, .visual_font_size_4pt > em > strong, .visual_font_size_4pt em span, .visual_font_size_4pt span em { - font-size: 4pt !important; - line-height: 4pt; +.visual_font_size_4pt, +.visual_font_size_4pt > em, +.visual_font_size_4pt > strong, +.visual_font_size_4pt > strong > span, +.visual_font_size_4pt > span, +.visual_font_size_4pt > strong > em, +.visual_font_size_4pt > em > strong, +.visual_font_size_4pt em span, +.visual_font_size_4pt span em { + font-size: 4pt !important; + line-height: 4pt; } -.visual_font_size_6pt, .visual_font_size_6pt > em, .visual_font_size_6pt > strong, .visual_font_size_6pt > strong > span, .visual_font_size_6pt > span, .visual_font_size_6pt > strong > em, .visual_font_size_6pt > em > strong, .visual_font_size_6pt em span, .visual_font_size_6pt span em { - font-size: 6pt !important; - line-height: 6pt; +.visual_font_size_6pt, +.visual_font_size_6pt > em, +.visual_font_size_6pt > strong, +.visual_font_size_6pt > strong > span, +.visual_font_size_6pt > span, +.visual_font_size_6pt > strong > em, +.visual_font_size_6pt > em > strong, +.visual_font_size_6pt em span, +.visual_font_size_6pt span em { + font-size: 6pt !important; + line-height: 6pt; } -.visual_font_size_8pt, .visual_font_size_8pt > em, .visual_font_size_8pt > strong, .visual_font_size_8pt > strong > span , .visual_font_size_8pt > span, .visual_font_size_8pt > strong > em, .visual_font_size_8pt > em > strong, .visual_font_size_8pt em span, .visual_font_size_8pt span em { - font-size: 8pt !important; - line-height: 8pt; +.visual_font_size_8pt, +.visual_font_size_8pt > em, +.visual_font_size_8pt > strong, +.visual_font_size_8pt > strong > span, +.visual_font_size_8pt > span, +.visual_font_size_8pt > strong > em, +.visual_font_size_8pt > em > strong, +.visual_font_size_8pt em span, +.visual_font_size_8pt span em { + font-size: 8pt !important; + line-height: 8pt; } -.visual_font_size_10pt, .visual_font_size_10pt > em, .visual_font_size_10pt > strong, .visual_font_size_10pt > strong > span , .visual_font_size_10pt > span, .visual_font_size_10pt > strong > em, .visual_font_size_10pt > em > strong, .visual_font_size_10pt em span, .visual_font_size_10pt span em { - font-size: 10pt !important; - line-height: 10pt; +.visual_font_size_10pt, +.visual_font_size_10pt > em, +.visual_font_size_10pt > strong, +.visual_font_size_10pt > strong > span, +.visual_font_size_10pt > span, +.visual_font_size_10pt > strong > em, +.visual_font_size_10pt > em > strong, +.visual_font_size_10pt em span, +.visual_font_size_10pt span em { + font-size: 10pt !important; + line-height: 10pt; } -.visual_font_size_12pt, .visual_font_size_12pt > em, .visual_font_size_12pt > strong, .visual_font_size_12pt > strong > span , .visual_font_size_12pt > span, .visual_font_size_12pt > strong > em, .visual_font_size_12pt > em > strong, .visual_font_size_12pt em span, .visual_font_size_12pt span em { - font-size: 12pt !important; - line-height: 12pt; +.visual_font_size_12pt, +.visual_font_size_12pt > em, +.visual_font_size_12pt > strong, +.visual_font_size_12pt > strong > span, +.visual_font_size_12pt > span, +.visual_font_size_12pt > strong > em, +.visual_font_size_12pt > em > strong, +.visual_font_size_12pt em span, +.visual_font_size_12pt span em { + font-size: 12pt !important; + line-height: 12pt; } -.visual_font_size_14pt, .visual_font_size_14pt > em , .visual_font_size_14pt > strong, .visual_font_size_14pt > strong > span, .visual_font_size_14pt > span, .visual_font_size_14pt > strong > em, .visual_font_size_14pt > em > strong, .visual_font_size_14pt em span, .visual_font_size_14pt span em { - font-size: 14pt !important; - line-height: 14pt; +.visual_font_size_14pt, +.visual_font_size_14pt > em, +.visual_font_size_14pt > strong, +.visual_font_size_14pt > strong > span, +.visual_font_size_14pt > span, +.visual_font_size_14pt > strong > em, +.visual_font_size_14pt > em > strong, +.visual_font_size_14pt em span, +.visual_font_size_14pt span em { + font-size: 14pt !important; + line-height: 14pt; } -.visual_font_size_18pt, .visual_font_size_18pt > em , .visual_font_size_18pt > strong, .visual_font_size_18pt > strong > span, .visual_font_size_18pt > span, .visual_font_size_18pt > strong > em, .visual_font_size_18pt > em > strong, .visual_font_size_18pt em span, .visual_font_size_18pt span em { - font-size: 18pt !important; - line-height: 18pt; +.visual_font_size_18pt, +.visual_font_size_18pt > em, +.visual_font_size_18pt > strong, +.visual_font_size_18pt > strong > span, +.visual_font_size_18pt > span, +.visual_font_size_18pt > strong > em, +.visual_font_size_18pt > em > strong, +.visual_font_size_18pt em span, +.visual_font_size_18pt span em { + font-size: 18pt !important; + line-height: 18pt; } -.visual_font_size_24pt, .visual_font_size_24pt > em, .visual_font_size_24pt > strong, .visual_font_size_24pt > strong > span , .visual_font_size_24pt > span, .visual_font_size_24pt > strong > em, .visual_font_size_24pt > em > strong, .visual_font_size_24pt em span, .visual_font_size_24pt span em { - font-size: 24pt !important; - line-height: 24pt; +.visual_font_size_24pt, +.visual_font_size_24pt > em, +.visual_font_size_24pt > strong, +.visual_font_size_24pt > strong > span, +.visual_font_size_24pt > span, +.visual_font_size_24pt > strong > em, +.visual_font_size_24pt > em > strong, +.visual_font_size_24pt em span, +.visual_font_size_24pt span em { + font-size: 24pt !important; + line-height: 24pt; } -.visual_font_size_28pt, .visual_font_size_28pt > em, .visual_font_size_28pt > strong, .visual_font_size_28pt > strong > span , .visual_font_size_28pt > span, .visual_font_size_28pt > strong > em, .visual_font_size_28pt > em > strong, .visual_font_size_28pt em span, .visual_font_size_28pt span em { - font-size: 28pt !important; - line-height: 28pt; +.visual_font_size_28pt, +.visual_font_size_28pt > em, +.visual_font_size_28pt > strong, +.visual_font_size_28pt > strong > span, +.visual_font_size_28pt > span, +.visual_font_size_28pt > strong > em, +.visual_font_size_28pt > em > strong, +.visual_font_size_28pt em span, +.visual_font_size_28pt span em { + font-size: 28pt !important; + line-height: 28pt; } -.visual_font_size_36pt, .visual_font_size_36pt > em, .visual_font_size_36pt > strong, .visual_font_size_36pt > strong > span, .visual_font_size_36pt > span, .visual_font_size_36pt > strong > em, .visual_font_size_36pt > em > strong, .visual_font_size_36pt em span, .visual_font_size_36pt span em { - font-size: 36pt !important; - line-height: 36pt; +.visual_font_size_36pt, +.visual_font_size_36pt > em, +.visual_font_size_36pt > strong, +.visual_font_size_36pt > strong > span, +.visual_font_size_36pt > span, +.visual_font_size_36pt > strong > em, +.visual_font_size_36pt > em > strong, +.visual_font_size_36pt em span, +.visual_font_size_36pt span em { + font-size: 36pt !important; + line-height: 36pt; } -.visual_font_size_48pt, .visual_font_size_48pt > em, .visual_font_size_48pt > strong, .visual_font_size_48pt > strong > span, .visual_font_size_48pt > span, .visual_font_size_48pt > strong > em, .visual_font_size_48pt > em > strong, .visual_font_size_48pt em span, .visual_font_size_48pt span em { - font-size: 48pt !important; - line-height: 48pt; +.visual_font_size_48pt, +.visual_font_size_48pt > em, +.visual_font_size_48pt > strong, +.visual_font_size_48pt > strong > span, +.visual_font_size_48pt > span, +.visual_font_size_48pt > strong > em, +.visual_font_size_48pt > em > strong, +.visual_font_size_48pt em span, +.visual_font_size_48pt span em { + font-size: 48pt !important; + line-height: 48pt; } -.visual_font_size_60pt, .visual_font_size_60pt > em, .visual_font_size_60pt > strong, .visual_font_size_60pt > strong > span, .visual_font_size_60pt > span, .visual_font_size_60pt > strong > em, .visual_font_size_60pt > em > strong, .visual_font_size_60pt em span, .visual_font_size_60pt span em { - font-size: 60pt !important; - line-height: 60pt; +.visual_font_size_60pt, +.visual_font_size_60pt > em, +.visual_font_size_60pt > strong, +.visual_font_size_60pt > strong > span, +.visual_font_size_60pt > span, +.visual_font_size_60pt > strong > em, +.visual_font_size_60pt > em > strong, +.visual_font_size_60pt em span, +.visual_font_size_60pt span em { + font-size: 60pt !important; + line-height: 60pt; } -.visual_font_size_72pt, .visual_font_size_72pt > em, .visual_font_size_72pt > strong, .visual_font_size_72pt > strong > span, .visual_font_size_72pt > span, .visual_font_size_72pt > strong > em, .visual_font_size_72pt > em > strong, .visual_font_size_72pt em span, .visual_font_size_72pt span em { - font-size: 72pt !important; - line-height: 72pt; +.visual_font_size_72pt, +.visual_font_size_72pt > em, +.visual_font_size_72pt > strong, +.visual_font_size_72pt > strong > span, +.visual_font_size_72pt > span, +.visual_font_size_72pt > strong > em, +.visual_font_size_72pt > em > strong, +.visual_font_size_72pt em span, +.visual_font_size_72pt span em { + font-size: 72pt !important; + line-height: 72pt; } -.visual_font_size_84pt, .visual_font_size_84pt > em, .visual_font_size_84pt > strong, .visual_font_size_84pt > strong > span, .visual_font_size_84pt > span, .visual_font_size_84pt > strong > em, .visual_font_size_84pt > em > strong, .visual_font_size_84pt em span, .visual_font_size_84pt span em { - font-size: 84pt !important; - line-height: 84pt; +.visual_font_size_84pt, +.visual_font_size_84pt > em, +.visual_font_size_84pt > strong, +.visual_font_size_84pt > strong > span, +.visual_font_size_84pt > span, +.visual_font_size_84pt > strong > em, +.visual_font_size_84pt > em > strong, +.visual_font_size_84pt em span, +.visual_font_size_84pt span em { + font-size: 84pt !important; + line-height: 84pt; } -.visual_font_size_96pt, .visual_font_size_96pt > em, .visual_font_size_96pt > strong, .visual_font_size_96pt > strong > span, .visual_font_size_96pt > span, .visual_font_size_96pt > strong > em, .visual_font_size_96pt > em > strong, .visual_font_size_96pt em span, .visual_font_size_96pt span em { - font-size: 96pt !important; - line-height: 96pt; +.visual_font_size_96pt, +.visual_font_size_96pt > em, +.visual_font_size_96pt > strong, +.visual_font_size_96pt > strong > span, +.visual_font_size_96pt > span, +.visual_font_size_96pt > strong > em, +.visual_font_size_96pt > em > strong, +.visual_font_size_96pt em span, +.visual_font_size_96pt span em { + font-size: 96pt !important; + line-height: 96pt; } -.visual_font_size_116pt, .visual_font_size_116pt > em, .visual_font_size_116pt > strong, .visual_font_size_116pt > strong > span, .visual_font_size_116pt > span, .visual_font_size_116pt > strong > em, .visual_font_size_116pt > em > strong, .visual_font_size_116pt em span, .visual_font_size_116pt span em { - font-size: 116pt !important; - line-height: 116pt; +.visual_font_size_116pt, +.visual_font_size_116pt > em, +.visual_font_size_116pt > strong, +.visual_font_size_116pt > strong > span, +.visual_font_size_116pt > span, +.visual_font_size_116pt > strong > em, +.visual_font_size_116pt > em > strong, +.visual_font_size_116pt em span, +.visual_font_size_116pt span em { + font-size: 116pt !important; + line-height: 116pt; } -.visual_font_size_128pt, .visual_font_size_128pt > em, .visual_font_size_128pt > strong, .visual_font_size_128pt > strong > span, .visual_font_size_128pt > span, .visual_font_size_128pt > strong > em, .visual_font_size_128pt > em > strong, .visual_font_size_128pt em span, .visual_font_size_128pt span em { - font-size: 128pt !important; - line-height: 128pt; +.visual_font_size_128pt, +.visual_font_size_128pt > em, +.visual_font_size_128pt > strong, +.visual_font_size_128pt > strong > span, +.visual_font_size_128pt > span, +.visual_font_size_128pt > strong > em, +.visual_font_size_128pt > em > strong, +.visual_font_size_128pt em span, +.visual_font_size_128pt span em { + font-size: 128pt !important; + line-height: 128pt; } -.visual_font_size_140pt, .visual_font_size_140pt > em, .visual_font_size_140pt > strong, .visual_font_size_140pt > strong > span, .visual_font_size_140pt > span, .visual_font_size_140pt > strong > em, .visual_font_size_140pt > em > strong, .visual_font_size_140pt em span, .visual_font_size_140pt span em { - font-size: 140pt !important; - line-height: 140pt; +.visual_font_size_140pt, +.visual_font_size_140pt > em, +.visual_font_size_140pt > strong, +.visual_font_size_140pt > strong > span, +.visual_font_size_140pt > span, +.visual_font_size_140pt > strong > em, +.visual_font_size_140pt > em > strong, +.visual_font_size_140pt em span, +.visual_font_size_140pt span em { + font-size: 140pt !important; + line-height: 140pt; } -.visual_font_size_154pt, .visual_font_size_154pt > em, .visual_font_size_154pt > strong, .visual_font_size_154pt > strong > span, .visual_font_size_154pt > span, .visual_font_size_154pt > strong > em, .visual_font_size_154pt > em > strong, .visual_font_size_154pt em span, .visual_font_size_154pt span em { - font-size: 154pt !important; - line-height: 154pt; +.visual_font_size_154pt, +.visual_font_size_154pt > em, +.visual_font_size_154pt > strong, +.visual_font_size_154pt > strong > span, +.visual_font_size_154pt > span, +.visual_font_size_154pt > strong > em, +.visual_font_size_154pt > em > strong, +.visual_font_size_154pt em span, +.visual_font_size_154pt span em { + font-size: 154pt !important; + line-height: 154pt; } -.visual_font_size_196pt, .visual_font_size_196pt > em, .visual_font_size_196pt > strong, .visual_font_size_196pt > strong > span, .visual_font_size_196pt > span, .visual_font_size_196pt > strong > em, .visual_font_size_196pt > em > strong, .visual_font_size_196pt em span, .visual_font_size_196pt span em { - font-size: 196pt !important; - line-height: 196pt; +.visual_font_size_196pt, +.visual_font_size_196pt > em, +.visual_font_size_196pt > strong, +.visual_font_size_196pt > strong > span, +.visual_font_size_196pt > span, +.visual_font_size_196pt > strong > em, +.visual_font_size_196pt > em > strong, +.visual_font_size_196pt em span, +.visual_font_size_196pt span em { + font-size: 196pt !important; + line-height: 196pt; } - - -.resize_visual_font_size_8pt, .resize_visual_font_size_8pt > em, .resize_visual_font_size_8pt > strong, .resize_visual_font_size_8pt > strong > span, .resize_visual_font_size_8pt > span, .resize_visual_font_size_8pt > strong > em, .resize_visual_font_size_8pt > em > strong, .visual_font_size_8pt em span, .visual_font_size_8pt span em { - font-size: 4pt !important; - line-height: 4pt; +.resize_visual_font_size_8pt, +.resize_visual_font_size_8pt > em, +.resize_visual_font_size_8pt > strong, +.resize_visual_font_size_8pt > strong > span, +.resize_visual_font_size_8pt > span, +.resize_visual_font_size_8pt > strong > em, +.resize_visual_font_size_8pt > em > strong, +.visual_font_size_8pt em span, +.visual_font_size_8pt span em { + font-size: 4pt !important; + line-height: 4pt; } -.resize_visual_font_size_14pt, .resize_visual_font_size_14pt > em , .resize_visual_font_size_14pt > strong, .resize_visual_font_size_14pt > strong > span, .resize_visual_font_size_14pt > span, .resize_visual_font_size_14pt > strong > em, .resize_visual_font_size_14pt > em > strong, .visual_font_size_14pt em span, .visual_font_size_14pt span em { - font-size: 7pt !important; - line-height: 7pt; +.resize_visual_font_size_14pt, +.resize_visual_font_size_14pt > em, +.resize_visual_font_size_14pt > strong, +.resize_visual_font_size_14pt > strong > span, +.resize_visual_font_size_14pt > span, +.resize_visual_font_size_14pt > strong > em, +.resize_visual_font_size_14pt > em > strong, +.visual_font_size_14pt em span, +.visual_font_size_14pt span em { + font-size: 7pt !important; + line-height: 7pt; } -.resize_visual_font_size_24pt, .resize_visual_font_size_24pt > em, .resize_visual_font_size_24pt > strong, .resize_visual_font_size_24pt > strong > span, .resize_visual_font_size_24pt > span, .resize_visual_font_size_24pt > strong > em, .resize_visual_font_size_24pt > em > strong, .visual_font_size_14pt em span, .visual_font_size_14pt span em { - font-size: 12pt !important; - line-height: 12pt; - +.resize_visual_font_size_24pt, +.resize_visual_font_size_24pt > em, +.resize_visual_font_size_24pt > strong, +.resize_visual_font_size_24pt > strong > span, +.resize_visual_font_size_24pt > span, +.resize_visual_font_size_24pt > strong > em, +.resize_visual_font_size_24pt > em > strong, +.visual_font_size_14pt em span, +.visual_font_size_14pt span em { + font-size: 12pt !important; + line-height: 12pt; } -.resize_visual_font_size_36pt, .resize_visual_font_size_36pt > em, .resize_visual_font_size_36pt > strong, .resize_visual_font_size_36pt > strong > span, .resize_visual_font_size_36pt > span, .resize_visual_font_size_36pt > strong > em, .resize_visual_font_size_36pt > em > strong, .visual_font_size_36pt em span, .visual_font_size_36pt span em { - font-size: 18pt !important; - line-height: 18pt; +.resize_visual_font_size_36pt, +.resize_visual_font_size_36pt > em, +.resize_visual_font_size_36pt > strong, +.resize_visual_font_size_36pt > strong > span, +.resize_visual_font_size_36pt > span, +.resize_visual_font_size_36pt > strong > em, +.resize_visual_font_size_36pt > em > strong, +.visual_font_size_36pt em span, +.visual_font_size_36pt span em { + font-size: 18pt !important; + line-height: 18pt; } -.resize_visual_font_size_72pt, .resize_visual_font_size_72pt > em, .resize_visual_font_size_72pt > strong, .resize_visual_font_size_72pt > strong > span, .resize_visual_font_size_72pt > span, .resize_visual_font_size_72pt > strong > em, .resize_visual_font_size_72pt > em > strong, .visual_font_size_72pt em span, .visual_font_size_72pt span em { - font-size: 36pt !important; - line-height: 36pt; +.resize_visual_font_size_72pt, +.resize_visual_font_size_72pt > em, +.resize_visual_font_size_72pt > strong, +.resize_visual_font_size_72pt > strong > span, +.resize_visual_font_size_72pt > span, +.resize_visual_font_size_72pt > strong > em, +.resize_visual_font_size_72pt > em > strong, +.visual_font_size_72pt em span, +.visual_font_size_72pt span em { + font-size: 36pt !important; + line-height: 36pt; } - /* * --------------------------------------------------------------------- * - LEFT SIDEBAR IN GRAPHS POPUP - stat_win.php - @@ -2550,16 +2888,26 @@ a.tip > img { * --------------------------------------------------------------------- */ input.search_input { - background: white url("../../images/input_zoom.png") no-repeat right; + background-image: url("../../images/input_zoom_gray.png"); + background-position: center right 10px; + background-repeat: no-repeat; + background-size: 17px; + background-color: #f2f6f7 !important; padding: 0px; - padding-left: 5px; margin: 0; - width: 80%; - height: 19px; + width: 200px; + height: 35px; margin-bottom: 5px; margin-left: 2px; - padding-right: 25px; + padding-left: 15px; + padding-right: 40px; color: #999; + font-family: "Open Sans", sans-serif; + border-top-left-radius: 50px; + border-bottom-left-radius: 50px; + border-top-right-radius: 50px; + border-bottom-right-radius: 50px; + border-color: transparent; } /*.vertical_fields td input, .vertical_fields td select { @@ -2574,25 +2922,25 @@ a[id^="tgl_ctrl_"] > b > img { /* Images forced title */ div.forced_title_layer { - display: block; - text-decoration: none; - position: absolute; - z-index: 100000; - border: 1px solid #708090; - background-color: #666; - color: #FFF; - padding: 4px 5px; - font-weight: bold; - font-size: small; - font-size: 11px; - /* IE 8 */ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=9)"; - /* Netscape */ - -moz-opacity: 0.9; - opacity: 0.9; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; + display: block; + text-decoration: none; + position: absolute; + z-index: 100000; + border: 1px solid #708090; + background-color: #666; + color: #fff; + padding: 4px 5px; + font-weight: bold; + font-size: small; + font-size: 11px; + /* IE 8 */ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=9)"; + /* Netscape */ + -moz-opacity: 0.9; + opacity: 0.9; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; } /* Graphs styles */ @@ -2627,22 +2975,21 @@ div.nodata_container { } #snmp_data { - width: 40%; - position: absolute; - top:0; - right:20px; + width: 40%; + position: absolute; + top: 0; + right: 20px; } #rmf_data { - width: 40%; - height: 80%; - position: absolute; - top:0; - right:20px; - overflow: auto; + width: 40%; + height: 80%; + position: absolute; + top: 0; + right: 20px; + overflow: auto; } - /* service map */ #container_servicemap_legend { position: absolute; @@ -2858,7 +3205,6 @@ table#policy_modules td * { vertical-align: middle; } - /*.saml_button { float: left; position: fixed; @@ -2870,15 +3216,15 @@ table#policy_modules td * { * - TACTICAL VIEW y TABLAS - * --------------------------------------------------------------------- */ -.status_tactical{ - width: 100%; - margin-left: auto; - margin-right: auto; - background-color: #fff !important; - padding: 10px; - border: 1px solid #e2e2e2; - margin-top: 5%; - text-align: left; +.status_tactical { + width: 100%; + margin-left: auto; + margin-right: auto; + background-color: #fff !important; + padding: 10px; + border: 1px solid #e2e2e2; + margin-top: 5%; + text-align: left; } .status_tactical img { @@ -2943,36 +3289,38 @@ div.div_groups_status { } #title_menu { - color: #fff; + color: #91a2a7; float: right; - width: 70%; + width: 65%; letter-spacing: 0pt; - font-size: 8pt; + font-size: 10pt; white-space: pre-wrap; + padding-top: 0 !important; /* está inline */ + font-family: "Open Sans", sans-serif; } .no_hidden_menu { - background-position: 11% 50% !important; + background-position: 18% 50% !important; } #menu_tab li.nomn, #menu_tab li.nomn_high { - background-color: #ececec; + /*background-color: #ececec;*/ padding-right: 3px; padding-left: 3px; font-weight: bold; text-decoration: none; font-size: 14px; - border-color: #e2e2e2; - border-style: solid; - border-width: 1px; - margin-top: -10px; + border-left: 2px solid #e2e2e2; + margin-top: 0; + min-width: 30px; + height: 28px; } #menu_tab li.nomn_high, #menu_tab li.nomn_high span { color: #fff; - background-color: #fff; + background-color: #ececec; } #menu_tab li.nomn img, @@ -2986,9 +3334,9 @@ div.div_groups_status { background: none !important ; } -.agents_modules_table{ - border: 1px solid #e2e2e2; - border-spacing: 0px; +.agents_modules_table { + border: 1px solid #e2e2e2; + border-spacing: 0px; } .agents_modules_table td { border: 1px solid #e2e2e2; @@ -3052,7 +3400,6 @@ div.div_groups_status { text-align: left !important; } - .green_title { background-color: #82b92e; font-weight: normal; @@ -3144,18 +3491,18 @@ div.div_groups_status { } .vertical_range { - padding: 0; - -webkit-transform: rotate(270deg); + padding: 0; + -webkit-transform: rotate(270deg); -moz-transform: rotate(270deg); transform: rotate(270deg); - width: 200px; - height: 20px; - position: relative; - background: transparent !important; - border: 0px !important; + width: 200px; + height: 20px; + position: relative; + background: transparent !important; + border: 0px !important; - left: -92px; - top: 93px; + left: -92px; + top: 93px; } @media screen and (-webkit-min-device-pixel-ratio: 0) { @@ -3280,20 +3627,18 @@ div#vc-controls div.vc-refr > div { display: inline; } div#vc-controls img.vc-qr { - margin-top: 6px; - margin-left: 8px; - margin-right: 8px; + margin-top: 6px; + margin-left: 8px; + margin-right: 8px; } -div.simple_value > span.text > p, -div.simple_value > span.text > p > span > strong, -div.simple_value > span.text > p > strong, -div.simple_value > a > span.text p -{ - font-family: monospace !important; - white-space: pre; +div.simple_value > span.text > p, +div.simple_value > span.text > p > span > strong, +div.simple_value > span.text > p > strong, +div.simple_value > a > span.text p { + font-family: monospace !important; + white-space: pre; } - /* * --------------------------------------------------------------------- * - EVENTS - @@ -3301,7 +3646,7 @@ div.simple_value > a > span.text p */ /* Image open dialog in group events by agents*/ #open_agent_groups { - cursor: pointer; + cursor: pointer; } /* @@ -3309,266 +3654,267 @@ div.simple_value > a > span.text p * - modal window and edit user - * --------------------------------------------------------------------- */ -#alert_messages{ - -moz-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - z-index:3; - position:fixed; - width:750px; - max-width:750px; - top: 20%; - background:white; - opacity: 0; - transition: opacity 0.5s; - -webkit-transition: opacity 0.5s; +#alert_messages { + -moz-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + z-index: 3; + position: fixed; + width: 750px; + max-width: 750px; + top: 20%; + background: white; + opacity: 0; + transition: opacity 0.5s; + -webkit-transition: opacity 0.5s; } -.modalheader{ - text-align:center; - width:100%; - height:37px; - left:0px; - background-color:#82b92e; +.modalheader { + text-align: center; + width: 100%; + height: 37px; + left: 0px; + background-color: #82b92e; } -.modalheadertext{ - color:white; - position:relative; - font-family:Nunito; - font-size:13pt; - top:8px; +.modalheadertext { + color: white; + position: relative; + font-family: "Nunito", sans-serif; + font-size: 13pt; + top: 8px; } -.modalheaderh1{ - text-align:center; - width:100%; - height:26px; - left:0px; - padding-top:10px; - background-color:#82b92e; - color:white; - position:relative; - font-family:Nunito; - font-size:11pt; +.modalheaderh1 { + text-align: center; + width: 100%; + height: 26px; + left: 0px; + padding-top: 10px; + background-color: #82b92e; + color: white; + position: relative; + font-family: "Nunito", sans-serif; + font-size: 11pt; } -.modalclosex{ - cursor:pointer; - display:inline; - float:right; - margin-right:10px; - margin-top:10px; +.modalclosex { + cursor: pointer; + display: inline; + float: right; + margin-right: 10px; + margin-top: 10px; } -.modalclosex:hover{ - cursor:pointer; - display:inline; - float:right; - margin-right:10px; - margin-top:10px; +.modalclosex:hover { + cursor: pointer; + display: inline; + float: right; + margin-right: 10px; + margin-top: 10px; } -.modalcontent{ - color:black; - background:white; +.modalcontent { + color: black; + background: white; } -.modalcontentimg{ - float:left; - margin-left:30px; - margin-top:30px; - margin-bottom:30px; +.modalcontentimg { + float: left; + margin-left: 30px; + margin-top: 30px; + margin-bottom: 30px; } -.modalcontenttext{ - float:left; - text-align:justify; - color:black; - font-size: 9.5pt; - line-height:13pt; - margin-top:30px; - width:430px; - margin-left:30px; +.modalcontenttext { + float: left; + text-align: justify; + color: black; + font-size: 9.5pt; + line-height: 13pt; + margin-top: 30px; + width: 430px; + margin-left: 30px; } -.modalokbutton{ - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - cursor:pointer; - text-align:center; - margin-right:45px; - float:right; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - margin-bottom:30px; - border-radius: 3px; - width:90px; - height:30px; - background-color:white; - border: 1px solid #82b92e; +.modalokbutton { + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + cursor: pointer; + text-align: center; + margin-right: 45px; + float: right; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + margin-bottom: 30px; + border-radius: 3px; + width: 90px; + height: 30px; + background-color: white; + border: 1px solid #82b92e; } -.modalokbuttontext{ - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color:#82b92e; - font-family:Nunito; - font-size:10pt; - position:relative; - top:6px; +.modalokbuttontext { + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + color: #82b92e; + font-family: "Nunito", sans-serif; + font-size: 10pt; + position: relative; + top: 6px; } .modalokbutton:hover { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - background-color:#82b92e; + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + background-color: #82b92e; } .modalokbutton:hover .modalokbuttontext { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color:white; + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + color: white; } -.modaldeletebutton{ - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - cursor:pointer; - text-align:center; - margin-left:45px; - float:left; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - margin-bottom:30px; - border-radius: 3px; - width:90px; - height:30px; - background-color:white; - border: 1px solid #FA5858; +.modaldeletebutton { + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + cursor: pointer; + text-align: center; + margin-left: 45px; + float: left; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + margin-bottom: 30px; + border-radius: 3px; + width: 90px; + height: 30px; + background-color: white; + border: 1px solid #fa5858; } -.modaldeletebuttontext{ - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color:#FA5858; - font-family:Nunito; - font-size:10pt; - position:relative;top:6px; +.modaldeletebuttontext { + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + color: #fa5858; + font-family: "Nunito", sans-serif; + font-size: 10pt; + position: relative; + top: 6px; } .modaldeletebutton:hover .modaldeletebuttontext { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color:white; + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + color: white; } .modaldeletebutton:hover { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - background-color:#FA5858; + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + background-color: #fa5858; } -.modalgobutton{ - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - cursor:pointer; - text-align:center; - margin-right:15px; - margin-bottom:30px; - float:right; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - width:240px; - height:30px; - background-color:white; - border: 1px solid #82b92e; +.modalgobutton { + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + cursor: pointer; + text-align: center; + margin-right: 15px; + margin-bottom: 30px; + float: right; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + width: 240px; + height: 30px; + background-color: white; + border: 1px solid #82b92e; } -.modalgobuttontext{ - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color:#82b92e; - font-family:Nunito; - font-size:10pt; - position:relative; - top:6px; +.modalgobuttontext { + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + color: #82b92e; + font-family: "Nunito", sans-serif; + font-size: 10pt; + position: relative; + top: 6px; } .modalgobutton:hover { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - background-color:#82b92e; + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + background-color: #82b92e; } .modalgobutton:hover .modalgobuttontext { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color:white; + transition-property: background-color, color; + transition-duration: 1s; + transition-timing-function: ease-out; + -webkit-transition-property: background-color, color; + -webkit-transition-duration: 1s; + -o-transition-property: background-color, color; + -o-transition-duration: 1s; + color: white; } /* update manager online */ -#opacidad{ - opacity:0; - transition: opacity 3s; - -webkit-transition: opacity 3s; - z-index:1; - width:100%; - height:100%; - position:absolute; - left:0px; - top:0px; +#opacidad { + opacity: 0; + transition: opacity 3s; + -webkit-transition: opacity 3s; + z-index: 1; + width: 100%; + height: 100%; + position: absolute; + left: 0px; + top: 0px; } .textodialogo { @@ -3578,98 +3924,99 @@ div.simple_value > a > span.text p font-size: 9pt; } -.cargatextodialogo{ - max-width:58.5%; - width:58.5%; - min-width:58.5%; - float:left; - margin-left: 0px; - font-size:18pt; - padding:20px; - text-align:center; +.cargatextodialogo { + max-width: 58.5%; + width: 58.5%; + min-width: 58.5%; + float: left; + margin-left: 0px; + font-size: 18pt; + padding: 20px; + text-align: center; } -.cargatextodialogo p, .cargatextodialogo b, .cargatextodialogo a{ - font-size:18pt; +.cargatextodialogo p, +.cargatextodialogo b, +.cargatextodialogo a { + font-size: 18pt; } - /* global */ -.readonly{ - background-color: #dedede !important; +.readonly { + background-color: #dedede !important; } .input_error { - border: 1px solid red; + border: 1px solid red; } -#toolbox > input{ - border-width:0px 1px 0px 0px; - border-color: lightgray; +#toolbox > input { + border-width: 0px 1px 0px 0px; + border-color: lightgray; } -#toolbox > input.service_min{ - border-width:0px 0px 0px 0px; +#toolbox > input.service_min { + border-width: 0px 0px 0px 0px; } -#toolbox > input.grid_min{ - border-width:0px 0px 0px 0px; +#toolbox > input.grid_min { + border-width: 0px 0px 0px 0px; } #filter_event_status, #filter_event_severity, #filter_event_type { - width:50%; + width: 50%; } -.rowPair:hover, .rowOdd:hover{ - background-color: #eee; +.rowPair:hover, +.rowOdd:hover { + background-color: #eee; } -.databox.data > tbody > tr:hover{ - background-color: #eee; +.databox.data > tbody > tr:hover { + background-color: #eee; } -.checkselected{ - background-color: #eee; +.checkselected { + background-color: #eee; } -.tag-wrapper{ - padding: 0 10px 0 0; - overflow: auto; +.tag-wrapper { + padding: 0 10px 0 0; + overflow: auto; } -.pandora-tag{ - float:left; - margin-bottom:18px; - padding:1px 6px 1px 0; +.pandora-tag { + float: left; + margin-bottom: 18px; + padding: 1px 6px 1px 0; } -.pandora-tag-title{ - color: white; - background-color: #373737; - font-weight: bold; - padding: 6px 6px 6px 10px; - border: #373737; - border-width: 1px; - border-top-style: solid; - border-top-left-radius: 12px; - border-left-style: solid; - border-bottom-left-radius: 12px; - border-bottom-style: solid; +.pandora-tag-title { + color: white; + background-color: #373737; + font-weight: bold; + padding: 6px 6px 6px 10px; + border: #373737; + border-width: 1px; + border-top-style: solid; + border-top-left-radius: 12px; + border-left-style: solid; + border-bottom-left-radius: 12px; + border-bottom-style: solid; } -.pandora-tag-value{ - color: #373737; - font-weight: bold; - padding: 6px 10px 6px 6px; - border: #373737; - border-width: 1px; - border-top-style: solid; - border-top-right-radius: 12px; - border-right-style: solid; - border-bottom-right-radius: 12px; - border-bottom-style: solid; +.pandora-tag-value { + color: #373737; + font-weight: bold; + padding: 6px 10px 6px 6px; + border: #373737; + border-width: 1px; + border-top-style: solid; + border-top-right-radius: 12px; + border-right-style: solid; + border-bottom-right-radius: 12px; + border-bottom-style: solid; } - /* * --------------------------------------------------------------------- * - HELP MODAL WINDOWS - pandora_help.php - @@ -3718,7 +4065,6 @@ div#footer_help { padding: 10px; } - /* EVENTS - /ajax/events.php */ /*view-agents lastest events for this agent*/ #div_all_events_24h { @@ -3730,8 +4076,8 @@ div#footer_help { * - REPORTS - graph_container.php - * --------------------------------------------------------------------- */ -.graph_conteiner_inside > .parent_graph{ - width: 100% !important; +.graph_conteiner_inside > .parent_graph { + width: 100% !important; } .graph_conteiner_inside > .parent_graph > .menu_graph { @@ -3755,15 +4101,15 @@ div#footer_help { * - WUX VIEW - * --------------------------------------------------------------------- */ -#mssg_error_div{ - color: red; - font-size: 12px; +#mssg_error_div { + color: red; + font-size: 12px; } -.wux_global_result_container{ - width: 100%; - margin-top: 30px; - margin-bottom: 30px; +.wux_global_result_container { + width: 100%; + margin-top: 30px; + margin-bottom: 30px; } .wux_global_result_title { @@ -3965,10 +4311,9 @@ form ul.form_flex li ul li { cursor: pointer; } - /* snmp */ #snmp_data { - background: #f9faf9; + background: #f9faf9; } #snmp_data .databox { border: 0px; @@ -3981,7 +4326,6 @@ form ul.form_flex li ul li { width: auto !important; } - /* dialog */ .pandora_confirm_dialog .ui-dialog-buttonset { display: flex; @@ -4032,12 +4376,12 @@ tr:first-child > td > a.up_arrow { } /* system group status */ -.group_modules_status_box>tbody>tr>td{ - border-bottom: 1px solid #e2e2e2; - border-collapse: collapse; - border-spacing:0; - width: 10%; - height: 20px; +.group_modules_status_box > tbody > tr > td { + border-bottom: 1px solid #e2e2e2; + border-collapse: collapse; + border-spacing: 0; + width: 10%; + height: 20px; } .group_modules_status_div { @@ -4051,10 +4395,10 @@ tr:first-child > td > a.up_arrow { } /* extensions -> module groups */ -.tooltip_counters h3{ - font-size: 12pt; - padding-bottom: 10px !important; - text-align: center; +.tooltip_counters h3 { + font-size: 12pt; + padding-bottom: 10px !important; + text-align: center; } .tooltip_counters li { @@ -4083,9 +4427,104 @@ div#dialog_messages table th:last-child { text-align: right; } +/* checkbox type toogle switch */ +.toogle_switch { + position: relative; + display: inline-block; + width: 47px; + height: 24px; +} + +.toogle_switch input { + opacity: 0; + width: 0; + height: 0; +} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: 0.7s; + transition: 0.7s; + border-radius: 34px; +} + +.slider:before { + position: absolute; + content: ""; + height: 16px; + width: 16px; + left: 4px; + bottom: 4px; + background-color: white; + -webkit-transition: 0.7s; + transition: 0.7s; + border-radius: 50%; +} + +input:checked + .slider { + background-color: #82b92e; +} + +input:focus + .slider { + box-shadow: 0 0 1px #82b92e; +} + +input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(26px); + background-color: rgb(197, 235, 192); +} /* jQuery dialog */ .no-close .ui-dialog-titlebar-close { display: none; } /* jQuery dialog */ + +/* + * --------------------------------------------------------------------- + * - STYLES TO CHANGE CLASSIC MENU AND COLLAPSED MENU - + * --------------------------------------------------------------------- + */ +.page_classic { + padding-left: 215px !important; +} + +.page_collapsed { + padding-left: 60px !important; +} + +.header_table_classic { + padding-left: 245px !important; +} + +.header_table_collapsed { + padding-left: 90px !important; +} + +.title_menu_classic { + display: block !important; +} + +.title_menu_collapsed { + display: none !important; +} + +.logo_show { + display: block !important; +} + +.logo_hide { + display: none !important; +} + +.menu_icon_collapsed { + background-position: 50% 50% !important; +} diff --git a/pandora_console/index.php b/pandora_console/index.php index ad4b93465a..b68424d805 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1029,11 +1029,11 @@ if ($config['pure'] == 0) { echo '</div><div id="menu">'; include 'general/main_menu.php'; echo '</div>'; - echo '<div style="padding-left:100px;" id="page">'; + echo '<div id="page">'; } else { echo '<div id="container"><div id="head">'; include 'general/header.php'; - echo '</div><div id="page" style="margin-top:20px;"><div id="menu">'; + echo '</div><div id="page"><div id="menu">'; include 'general/main_menu.php'; echo '</div>'; } @@ -1363,4 +1363,3 @@ require 'include/php_to_js_values.php'; if (__PAN_XHPROF__ === 1) { pandora_xhprof_display_result('node_index'); } - From 6ec148c59c7980e4b9c792b59480ab3589ad29d3 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Mon, 25 Feb 2019 12:28:41 +0100 Subject: [PATCH 03/33] new header and menu Former-commit-id: 4375597f0b77ccc577fa486c409e214a7ba00362 --- pandora_console/include/styles/menu.css | 21 --------------------- pandora_console/include/styles/pandora.css | 18 +----------------- 2 files changed, 1 insertion(+), 38 deletions(-) diff --git a/pandora_console/include/styles/menu.css b/pandora_console/include/styles/menu.css index d9ba90e604..cf8e88bae7 100644 --- a/pandora_console/include/styles/menu.css +++ b/pandora_console/include/styles/menu.css @@ -51,13 +51,9 @@ li:hover ul { padding: 10.5px; margin-left: 0px; width: 100%; -<<<<<<< HEAD color: #91a2a7; font-family: "Open Sans", sans-serif; font-size: 10pt; -======= - color: #fff; ->>>>>>> 01fee147745dfd638487449f20211abd8e83b71e } .menu li.subselected a { @@ -285,12 +281,6 @@ ul li a:hover { * - MAIN LEFT MENU and SUBMENU - * --------------------------------------------------------------------- */ -<<<<<<< HEAD -======= -.menu li.selected { - font-weight: bold; -} ->>>>>>> 01fee147745dfd638487449f20211abd8e83b71e .menu_icon { transition-property: background-color; @@ -320,11 +310,7 @@ ul li a:hover { -o-transition-property: background-color; -o-transition-duration: 0.5s; -o-transition-timing-function: ease-out; -<<<<<<< HEAD background-color: #282828 !important; -======= - background-color: #585858 !important; ->>>>>>> 01fee147745dfd638487449f20211abd8e83b71e } .submenu_not_selected:hover { transition-property: background-color; @@ -339,17 +325,10 @@ ul li a:hover { -o-transition-property: background-color; -o-transition-duration: 0.5s; -o-transition-timing-function: ease-out; -<<<<<<< HEAD background-color: #202020 !important; } .submenu_selected:hover { background-color: #202020 !important; -======= - background-color: #585858 !important; -} -.submenu_selected:hover { - background-color: #585858 !important; ->>>>>>> 01fee147745dfd638487449f20211abd8e83b71e } .sub_subMenu { transition-property: background-color; diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index bcd011188d..e8e2632188 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -441,14 +441,6 @@ textarea.conf_error { background-position: top right; } -input.button { - font-family: Arial, Sans-serif; - border: 4px solid #ccc; - background: #fff; - padding: 2px 3px; - margin: 10px 15px; -} - a.white_bold { color: #eee; text-decoration: none; @@ -1562,9 +1554,6 @@ table.databox { font-weight: normal; color: #fff; } -.databox > td { - #border-bottom: 1px solid #e2e2e2; -} .databox > th * { color: #fff; @@ -2192,9 +2181,6 @@ div.warn { min-height: 35px !important; } -ol.steps { - margin-bottom: 70px; -} div#steps_clean { display: none; } @@ -2990,6 +2976,7 @@ div.nodata_container { position: absolute; top: 0; right: 20px; + background: #f9faf9; } #rmf_data { @@ -4323,9 +4310,6 @@ form ul.form_flex li ul li { } /* snmp */ -#snmp_data { - background: #f9faf9; -} #snmp_data .databox { border: 0px; } From b7cc25314da49d96b8f6e243f7c763b76df2d572 Mon Sep 17 00:00:00 2001 From: manuel <manuel.montes@artica.es> Date: Mon, 25 Feb 2019 16:20:05 +0100 Subject: [PATCH 04/33] Unified sizes of the checkbox switch Former-commit-id: 392fdf006c81fb5586349b8a4b4544e0c07aa903 --- pandora_console/include/styles/pandora.css | 27 +++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 7cc134c76a..51c7ab8fc5 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -4488,8 +4488,8 @@ ul.ui-front li a.ui-menu-item-wrapper:hover { .toogle_switch { position: relative; display: inline-block; - width: 47px; - height: 24px; + width: 30px; + height: 17px; } .toogle_switch input { @@ -4506,21 +4506,21 @@ ul.ui-front li a.ui-menu-item-wrapper:hover { right: 0; bottom: 0; background-color: #ccc; - -webkit-transition: 0.7s; - transition: 0.7s; + -webkit-transition: 0.4s; + transition: 0.4s; border-radius: 34px; } .slider:before { position: absolute; content: ""; - height: 16px; - width: 16px; - left: 4px; - bottom: 4px; + height: 13px; + width: 13px; + left: 2px; + bottom: 2px; background-color: white; - -webkit-transition: 0.7s; - transition: 0.7s; + -webkit-transition: 0.4s; + transition: 0.4s; border-radius: 50%; } @@ -4533,10 +4533,9 @@ input:focus + .slider { } input:checked + .slider:before { - -webkit-transform: translateX(26px); - -ms-transform: translateX(26px); - transform: translateX(26px); - background-color: rgb(197, 235, 192); + -webkit-transform: translateX(13px); + -ms-transform: translateX(13px); + transform: translateX(13px); } /* jQuery dialog */ From 3e87c8e93127e1e121dc6b2c4c5ebda44e3e63d1 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 26 Feb 2019 10:43:59 +0100 Subject: [PATCH 05/33] new header and menu Former-commit-id: 975b72219cb07e0d4f9b332607e554bd65ea7cc3 --- pandora_console/general/footer.php | 25 +- pandora_console/general/header.php | 1 + pandora_console/general/main_menu.php | 52 +-- pandora_console/godmode/menu.php | 19 +- pandora_console/include/functions_config.php | 423 ++++++------------- pandora_console/include/functions_menu.php | 4 +- pandora_console/include/styles/menu.css | 96 ++++- pandora_console/include/styles/pandora.css | 329 ++++++++++++++- 8 files changed, 589 insertions(+), 360 deletions(-) diff --git a/pandora_console/general/footer.php b/pandora_console/general/footer.php index b847b93f48..48d0613c98 100644 --- a/pandora_console/general/footer.php +++ b/pandora_console/general/footer.php @@ -1,16 +1,19 @@ <?php -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2011 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; 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. +/** + * Pandora FMS - http://pandorafms.com + * ================================================== + * Copyright (c) 2005-2011 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; 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. + */ + if (isset($_SERVER['REQUEST_TIME'])) { $time = $_SERVER['REQUEST_TIME']; } else { diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php index c75775de10..f18cb4ce7c 100644 --- a/pandora_console/general/header.php +++ b/pandora_console/general/header.php @@ -13,6 +13,7 @@ // GNU General Public License for more details. require_once 'include/functions_messages.php'; require_once 'include/functions_servers.php'; +require_once 'include/functions_notifications.php'; // Check permissions // Global errors/warnings checking. diff --git a/pandora_console/general/main_menu.php b/pandora_console/general/main_menu.php index bbbec3f4b7..d20ce9335e 100644 --- a/pandora_console/general/main_menu.php +++ b/pandora_console/general/main_menu.php @@ -23,26 +23,30 @@ if (! isset($config['id_user'])) { Cambiar $config['classic_menu'] ¿¿¿donde??? ¿donde la repeticion? */ - -var type_menu = "<?php echo $config['classic_menu']; ?>"; +/* +var type_menu = " +<?php +// echo $config['classic_menu']; +?> +"; if(type_menu){ console.log('es clasico, mantenlo'); } else{ - console.log('es colapsado, mantenlo'); + console.log('es collapsed, mantenlo'); } - -//Asignar por defecto colapsado !!! IMPORTANTE!!!!!!!!!!!!!!!!!!!!!!!!! +*/ +//Asignar por defecto collapsed !!! IMPORTANTE!!!!!!!!!!!!!!!!!!!!!!!!! $(document).ready(function(){ - var variable_boton = localStorage.getItem("variable"); - document.getElementById("menu_type").innerHTML = variable_boton; + var menuType_value = localStorage.getItem("menuType"); + document.getElementById("menu_type").innerHTML = menuType_value; - if ($('#menu_type').text() == 'colapsado' || $('#menu_type').text() == '') { + if ($('#menu_type').text() == 'collapsed' || $('#menu_type').text() == '') { if($('#menu_type').text() == ''){ - localStorage.setItem("variable", "colapsado"); - document.getElementById("menu_type").innerHTML = localStorage.variable; + localStorage.setItem("menuType", "collapsed"); + document.getElementById("menu_type").innerHTML = localStorage.menuType; } $('#menu_full').removeClass('menu_full_classic').addClass('menu_full_collapsed'); @@ -58,7 +62,7 @@ $(document).ready(function(){ $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed');//PROBLEMA Y TB SBMENU NO HIDDEN $('#top_btn').css('left', '0px'); } - else if ($('#menu_type').text() == 'clasico') { + else if ($('#menu_type').text() == 'classic') { $('#menu_full').removeClass('menu_full_collapsed').addClass('menu_full_classic'); /* $('.logo_icon').removeClass('logo_show').addClass('logo_hide'); $('.logo_full').removeClass("logo_hide").addClass("logo_show");*/ @@ -74,8 +78,8 @@ $(document).ready(function(){ } else{ console.log('else no ha elegido aun, default-else'); - localStorage.setItem("variable", "colapsado"); - document.getElementById("menu_type").innerHTML = localStorage.variable; + localStorage.setItem("menuType", "collapsed"); + document.getElementById("menu_type").innerHTML = localStorage.menuType; } }); @@ -95,11 +99,11 @@ $(document).ready(function(){ window.onscroll = function() {scrollFunction()}; function scrollFunction() { - if (document.body.scrollTop > 400 || document.documentElement.scrollTop > 400) { + /* if (document.body.scrollTop > 400 || document.documentElement.scrollTop > 400) { document.getElementById("top_btn").style.display = "block"; } else { document.getElementById("top_btn").style.display = "none"; - } + }*/ } // When the user clicks on the button, scroll to the top of the document. @@ -189,16 +193,16 @@ $('#button_collapse').on('click', function() { elem.className = elem.className.replace('button_collapse', 'cambiar'); */ if($('#menu_full').hasClass('menu_full_classic')){ - localStorage.setItem("variable", "colapsado"); + localStorage.setItem("menuType", "collapsed"); //$('#button_collapse').css('color','pink'); - document.getElementById("menu_type").innerHTML = localStorage.variable; + document.getElementById("menu_type").innerHTML = localStorage.menuType; $('ul.submenu').css('left', '59px');//hacer que esto se haga aqui $('#top_btn').css('left', '0px'); } else if($('#menu_full').hasClass('menu_full_collapsed')){ - localStorage.setItem("variable", "clasico"); + localStorage.setItem("menuType", "classic"); //$('#button_collapse').css('color','blue'); - document.getElementById("menu_type").innerHTML = localStorage.variable; + document.getElementById("menu_type").innerHTML = localStorage.menuType; $('ul.submenu').css('left', '214px');//hacer que esto se haga aqui $('#top_btn').css('left', '77.5px'); } @@ -220,9 +224,9 @@ elem.className = elem.className.replace('button_collapse', 'cambiar'); console.log('entra click'); - console.log(localStorage.variable); + console.log(localStorage.menuType); /* -if ($('#button_collapse').text() == 'clasico') { +if ($('#button_collapse').text() == 'classic') { classic_menu = true; } else { @@ -249,9 +253,9 @@ var click_display = "<?php echo $config['click_display']; ?>"; //if ((isNaN(classic_menu)) || (classic_menu == 0)) { -//f(localStorage.variable == 'clasico'){ +//f(localStorage.menuType == 'classic'){ /* -if ($('#button_collapse').text() == 'clasico') { +if ($('#button_collapse').text() == 'classic') { classic_menu = true; } else { @@ -296,7 +300,7 @@ $(document).ready( function() { // repeticion de if var classic_menu; -if ($('#menu_type').text() == 'clasico') { +if ($('#menu_type').text() == 'classic') { classic_menu = true; <?php $config['classic_menu'] = true; ?> } diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php index 47d298cc84..3596fa5875 100644 --- a/pandora_console/godmode/menu.php +++ b/pandora_console/godmode/menu.php @@ -21,6 +21,21 @@ require_once 'include/functions_menu.php'; $menu_godmode = []; $menu_godmode['class'] = 'godmode'; + +if (check_acl($config['id_user'], 0, 'PM')) { + $sub = []; + $sub['godmode/servers/discovery']['text'] = __('Discover'); + $sub['godmode/servers/discovery']['id'] = 'Discover'; + $sub['godmode/servers/discovery']['subsecs'] = ['godmode/servers/discovery']; + + // Add to menu. + $menu_godmode['discover']['text'] = __('Discovery'); + $menu_godmode['discover']['sec2'] = 'godmode/servers/discovery'; + $menu_godmode['discover']['id'] = 'god-discovery'; + $menu_godmode['discover']['sub'] = $sub; +} + + $sub = []; if (check_acl($config['id_user'], 0, 'AW') || check_acl($config['id_user'], 0, 'AD')) { $sub['godmode/agentes/modificar_agente']['text'] = __('Manage agents'); @@ -54,7 +69,6 @@ if (check_acl($config['id_user'], 0, 'AW')) { } } -$menu_godmode['nuevo_texto']['text'] = __('nuevo_texto'); if (!empty($sub)) { $menu_godmode['gagente']['text'] = __('Resources'); $menu_godmode['gagente']['sec2'] = 'godmode/agentes/modificar_agente'; @@ -270,6 +284,9 @@ if (check_acl($config['id_user'], 0, 'PM')) { $sub2['godmode/setup/setup&section=ehorus']['text'] = __('eHorus'); $sub2['godmode/setup/setup&section=ehorus']['refr'] = 0; + $sub2['godmode/setup/setup&section=notifications']['text'] = __('Notifications'); + $sub2['godmode/setup/setup&section=notifications']['refr'] = 0; + if ($config['activate_gis']) { $sub2['godmode/setup/gis']['text'] = __('Map conections GIS'); } diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 5074cf5219..5f0cb20ae6 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -1,26 +1,39 @@ <?php -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation; 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. - /** - * @package Include + * Extension to self monitor Pandora FMS Console + * + * @category Config + * @package Pandora FMS * @subpackage Config + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 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. + * ============================================================================ */ + // Config functions. + /** * Creates a single config value in the database. * - * @param string Config token to create. - * @param string Value to set. + * @param string $token Config token to create. + * @param string $value Value to set. * * @return boolean Config id if success. False on failure. */ @@ -41,15 +54,15 @@ function config_create_value($token, $value) * * If the config token doesn't exists, it's created. * - * @param string Config token to update. - * @param string New value to set. + * @param string $token Config token to update. + * @param string $value New value to set. * * @return boolean True if success. False on failure. */ function config_update_value($token, $value) { global $config; - // Include functions_io to can call __() function + // Include functions_io to can call __() function. include_once $config['homedir'].'/include/functions_io.php'; if ($token == 'list_ACL_IPs_for_API') { @@ -73,7 +86,7 @@ function config_update_value($token, $value) return (bool) config_create_value($token, io_safe_input($value)); } - // If it has not changed + // If it has not changed. if ($config[$token] == $value) { return true; } @@ -97,15 +110,17 @@ function config_update_value($token, $value) /** * Updates all config values in case setup page was invoked + * + * @return boolean */ function config_update_config() { global $config; - // Include functions_io to can call __() function + // Include functions_io to can call __() function. include_once $config['homedir'].'/include/functions_io.php'; - // If user is not even log it, don't try this + // If user is not even log it, don't try this. if (! isset($config['id_user'])) { $config['error_config_update_config'] = []; $config['error_config_update_config']['correct'] = false; @@ -127,7 +142,7 @@ function config_update_config() if ($update_config) { db_pandora_audit('Setup', 'Setup has changed'); } else { - // Do none + // Do nothing. return false; } @@ -137,8 +152,8 @@ function config_update_config() switch ($sec2) { case 'godmode/setup/setup': $section_setup = get_parameter('section'); - // MAIN SETUP - // Setup now is divided in different tabs + // MAIN SETUP. + // Setup now is divided in different tabs. switch ($section_setup) { case 'general': if (!config_update_value('language', (string) get_parameter('language'))) { @@ -165,7 +180,7 @@ function config_update_config() $error_update[] = __('Automatic check for updates'); } - if (!config_update_value('cert_path', get_parameter('cert_path'))) { + if (!config_update_value('cert_path', (bool) get_parameter('cert_path'))) { $error_update[] = __('SSL cert path'); } @@ -228,7 +243,7 @@ function config_update_config() $error_update[] = __('Sound for Monitor warning'); } - // Update of Pandora FMS license + // Update of Pandora FMS license. $update_manager_installed = db_get_value('value', 'tconfig', 'token', 'update_manager_installed'); if ($update_manager_installed == 1) { @@ -472,7 +487,7 @@ function config_update_config() break; case 'auth': - // AUTHENTICATION SETUP + // AUTHENTICATION SETUP. if (!config_update_value('auth', get_parameter('auth'))) { $error_update[] = __('Authentication method'); } @@ -639,9 +654,10 @@ function config_update_config() break; case 'perf': - // PERFORMANCE SETUP + // PERFORMANCE SETUP. if (!config_update_value('event_purge', get_parameter('event_purge'))) { - $error_update[] = $check_metaconsole_events_history = get_parameter('metaconsole_events_history', -1); + $check_metaconsole_events_history = get_parameter('metaconsole_events_history', -1); + $error_update[] = $check_metaconsole_events_history; } if ($check_metaconsole_events_history != -1) { @@ -746,7 +762,7 @@ function config_update_config() break; case 'vis': - // VISUAL STYLES SETUP + // VISUAL STYLES SETUP. if (!config_update_value('date_format', (string) get_parameter('date_format'))) { $error_update[] = __('Date format string'); } @@ -1064,12 +1080,12 @@ function config_update_config() $error_update[] = __('Display text when proc modules have state critical'); } - // Daniel maya 02/06/2016 Display menu with click --INI + // Daniel maya 02/06/2016 Display menu with click --INI. if (!config_update_value('click_display', (bool) get_parameter('click_display', false))) { $error_update[] = __('Display lateral menus with left click'); } - // Daniel maya 02/06/2016 Display menu with click --END + // Daniel maya 02/06/2016 Display menu with click --END. if (isset($config['enterprise_installed']) && $config['enterprise_installed'] == 1) { if (!config_update_value('service_label_font_size', get_parameter('service_label_font_size', false))) { $error_update[] = __('Service label font size'); @@ -1140,7 +1156,7 @@ function config_update_config() // -------------------------------------------------- $interval_values = get_parameter('interval_values'); - // Add new interval value if is provided + // Add new interval value if is provided. $interval_value = (float) get_parameter('interval_value', 0); if ($interval_value > 0) { @@ -1158,7 +1174,7 @@ function config_update_config() } } - // Delete interval value if is required + // Delete interval value if is required. $interval_to_delete = (float) get_parameter('interval_to_delete'); if ($interval_to_delete > 0) { $interval_values_array = explode(',', $interval_values); @@ -1180,7 +1196,7 @@ function config_update_config() $error_update[] = __('Custom report info'); } - // Juanma (06/05/2014) New feature: Custom front page for reports + // Juanma (06/05/2014) New feature: Custom front page for reports. if (!config_update_value('custom_report_front', get_parameter('custom_report_front'))) { $error_update[] = __('Custom report front'); } @@ -1341,7 +1357,15 @@ function config_update_config() $error_update[] = __('eHorus id custom field'); } break; + + default: + // Ignore. + break; } + + default: + // Ignore. + break; } if (count($error_update) > 0) { @@ -1363,7 +1387,9 @@ function config_update_config() /** - * Process config variables + * Process config variables. + * + * @return void */ function config_process_config() { @@ -1381,7 +1407,7 @@ function config_process_config() $is_windows = true; } - // Compatibility fix + // Compatibility fix. foreach ($configs as $c) { $config[$c['token']] = $c['value']; } @@ -1438,18 +1464,18 @@ function config_process_config() if (!isset($config['prominent_time'])) { // Prominent time tells us what to show prominently when a timestamp is - // displayed. The comparation (... days ago) or the timestamp (full date) + // displayed. The comparation (... days ago) or the timestamp (full date). config_update_value('prominent_time', 'comparation'); } if (!isset($config['timesource'])) { - // Timesource says where time comes from (system or mysql) + // Timesource says where time comes from (system or mysql). config_update_value('timesource', 'system'); } if (!isset($config['https'])) { // Sets whether or not we want to enforce https. We don't want to go to a - // potentially unexisting config by default + // potentially unexisting config by default. config_update_value('https', false); } @@ -1458,7 +1484,7 @@ function config_process_config() } if (!isset($config['cert_path'])) { - // Sets name and path of ssl path for use in application + // Sets name and path of ssl path for use in application. config_update_value('cert_path', '/etc/ssl/certs/pandorafms.pem'); } @@ -1470,7 +1496,7 @@ function config_process_config() config_update_value('status_images_set', 'default'); } - // Load user session + // Load user session. if (isset($_SESSION['id_usuario'])) { $config['id_user'] = $_SESSION['id_usuario']; } @@ -1677,9 +1703,9 @@ function config_process_config() config_update_value('unique_ip', 0); } - /* - *Parse the ACL IP list for access API - */ + /* + * Parse the ACL IP list for access API + */ $temp_list_ACL_IPs_for_API = []; if (isset($config['list_ACL_IPs_for_API'])) { if (!empty($config['list_ACL_IPs_for_API'])) { @@ -1695,7 +1721,7 @@ function config_process_config() // the first time make a conenction and disable itself // Not Managed here ! // if (!isset ($config["autoupdate"])) { - // config_update_value ('autoupdate', true); + // config_update_value ('autoupdate', true);. // } include_once $config['homedir'].'/include/auth/mysql.php'; include_once $config['homedir'].'/include/functions_io.php'; @@ -2295,7 +2321,7 @@ function config_process_config() } if (defined('METACONSOLE')) { - // Customizable sections (Metaconsole) + // Customizable sections (Metaconsole). enterprise_include_once('include/functions_enterprise.php'); $customizable_sections = enterprise_hook('enterprise_get_customizable_sections'); @@ -2317,15 +2343,15 @@ function config_process_config() ) { $isFunctionSkins = enterprise_include_once('include/functions_skins.php'); if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) { - // Try to update user table in order to refresh skin inmediatly + // Try to update user table in order to refresh skin inmediatly. $is_user_updating = get_parameter('sec2', ''); if ($is_user_updating == 'operation/users/user_edit') { $id = get_parameter_get('id', $config['id_user']); - // ID given as parameter + // ID given as parameter. $user_info = get_user_info($id); - // If current user is editing himself or if the user has UM (User Management) rights on any groups the user is part of AND the authorization scheme allows for users/admins to update info + // If current user is editing himself or if the user has UM (User Management) rights on any groups the user is part of AND the authorization scheme allows for users/admins to update info. if (($config['id_user'] == $id || check_acl($config['id_user'], users_get_groups($id), 'UM')) && $config['user_can_update_info']) { $view_mode = false; } else { @@ -2339,7 +2365,7 @@ function config_process_config() } if (!is_metaconsole()) { - // Skins are available only in console mode + // Skins are available only in console mode. if (isset($config['id_user'])) { $relative_path = enterprise_hook('skins_set_image_skin_path', [$config['id_user']]); } else { @@ -2469,12 +2495,12 @@ function config_process_config() config_update_value('render_proc_fail', __('Fail')); } - // Daniel maya 02/06/2016 Display menu with click --INI + // Daniel maya 02/06/2016 Display menu with click --INI. if (!isset($config['click_display'])) { config_update_value('click_display', 1); } - // Daniel maya 02/06/2016 Display menu with click --END + // Daniel maya 02/06/2016 Display menu with click --END. if (isset($config['enterprise_installed']) && $config['enterprise_installed'] == 1) { if (!isset($config['service_label_font_size'])) { config_update_value('service_label_font_size', 20); @@ -2501,7 +2527,7 @@ function config_process_config() config_update_value('custom_report_info', 1); } - // Juanma (06/05/2014) New feature: Custom front page for reports + // Juanma (06/05/2014) New feature: Custom front page for reports. if (!isset($config['custom_report_front'])) { config_update_value('custom_report_front', 0); } @@ -2611,7 +2637,7 @@ function config_process_config() config_update_value('instance_registered', 0); } - // eHorus + // Ehorus. if (!isset($config['ehorus_enabled'])) { config_update_value('ehorus_enabled', 0); } @@ -2646,285 +2672,77 @@ function config_process_config() } } - // Finally, check if any value was overwritten in a form + // Finally, check if any value was overwritten in a form. config_update_config(); } +/** + * Start supervisor. + * + * @return void + */ function config_check() { global $config; - // At this first version I'm passing errors using session variables, because the error management - // is done by an AJAX request. Better solutions could be implemented in the future :-) - if (license_free() && users_is_admin($config['id_user'])) { - $login = get_parameter('login', false); - // Registration advice - if ((!isset($config['instance_registered']) || ($config['instance_registered'] != 1)) && ($login === false)) { - set_pandora_error_for_header( - __('Click <a style="font-weight:bold; text-decoration:underline" href="javascript: force_run_register();"> here</a> to start the registration process'), - __('This instance is not registered in the Update manager') - ); - } + include_once __DIR__.'/class/ConsoleSupervisor.php'; - // Newsletter advice - $newsletter = db_get_value('middlename', 'tusuario', 'id_user', $config['id_user']); - if ($newsletter != 1 && $login === false) { - set_pandora_error_for_header( - __('Click <a style="font-weight:bold; text-decoration:underline" href="javascript: force_run_newsletter();"> here</a> to start the newsletter subscription process'), - __('Not subscribed to the newsletter') - ); - } + // Enterprise customers launch supervisor using discovery task. + if (enterprise_installed() === false) { + $supervisor = new ConsoleSupervisor(false); + $supervisor->run(); + } else if ($config['cron_last_run'] == 0 + || (get_system_time() - $config['cron_last_run']) > 3600 + ) { + $supervisor = new ConsoleSupervisor(false); + $supervisor->runBasic(); } - // Check default password for "admin" - $is_admin = db_get_value('is_admin', 'tusuario', 'id_user', $config['id_user']); - if ($is_admin) { - $hashpass = db_get_sql( - "SELECT password - FROM tusuario WHERE id_user = 'admin'" - ); - if ($hashpass == '1da7ee7d45b96d0e1f45ee4ee23da560') { - set_pandora_error_for_header( - __('Default password for "Admin" user has not been changed.'), - __('Please change the default password because is a common vulnerability reported.') - ); - } - } - - if (isset($config['license_expired'])) { - set_pandora_error_for_header( - __('You can not get updates until you renew the license.'), - __('This license has expired.') - ); - } - - if (!is_writable('attachment')) { - set_pandora_error_for_header( - __('Please check that the web server has write rights on the {HOMEDIR}/attachment directory'), - __('Attachment directory is not writable by HTTP Server') - ); - } - - // Get remote file dir. - $remote_config = io_safe_output( - db_get_value_filter( - 'value', - 'tconfig', - ['token' => 'remote_config'] - ) - ); - - if (enterprise_installed()) { - if (!is_readable($remote_config)) { - set_pandora_error_for_header( - __('Remote configuration directory is not readble for the console').' - '.$remote_config - ); - } - - $remote_config_conf = $remote_config.'/conf'; - if (!is_writable($remote_config_conf)) { - set_pandora_error_for_header( - __('Remote configuration directory is not writtable for the console').' - '.$remote_config.'/conf' - ); - } - - $remote_config_col = $remote_config.'/collections'; - if (!is_writable($remote_config_col)) { - set_pandora_error_for_header( - __('Remote configuration directory is not writtable for the console').' - '.$remote_config.'/collections' - ); - } - } - - // Check attachment directory (too much files?) - $filecount = count(glob($config['homedir'].'/attachment/*')); - // N temporal files of trash should be enough for most people. - if ($filecount > $config['num_files_attachment']) { - set_pandora_error_for_header( - __('There are too much files in attachment directory. This is not fatal, but you should consider cleaning up your attachment directory manually')." ( $filecount ".__('files').' )', - __('Too much files in your tempora/attachment directory') - ); - } - - // Check database maintance - $db_maintance = db_get_value_filter( - 'value', - 'tconfig', - ['token' => 'db_maintance'] - ); - - // If never was executed, it means we are in the first Pandora FMS execution. Set current timestamp - if (empty($db_maintance)) { - config_update_value('db_maintance', date('U')); - } - - $last_maintance = (date('U') - $db_maintance); - - // ~ about 50 hr - if ($last_maintance > 190000) { - set_pandora_error_for_header( - __('Your database is not maintained correctly. It seems that more than 48hrs have passed without proper maintenance. Please review documents of %s on how to perform this maintenance process (DB Tool) and enable it as soon as possible.', get_product_name()), - __('Database maintance problem') - ); - } - - $fontpath = io_safe_output(db_get_value_filter('value', 'tconfig', ['token' => 'fontpath'])); - if (($fontpath == '') or (!file_exists($fontpath))) { - set_pandora_error_for_header( - __('Your defined font doesnt exist or is not defined. Please check font parameters in your config'), - __('Default font doesnt exist') - ); - } - - if ($config['event_storm_protection']) { - set_pandora_error_for_header( - __('You need to restart server after altering this configuration setting.'), - __('Event storm protection is activated. No events will be generated during this mode.') - ); - } - - global $develop_bypass; - - if ($develop_bypass == 1) { - set_pandora_error_for_header( - __('Your %s has the "develop_bypass" mode enabled. This is a developer mode and should be disabled in a production system. This value is written in the main index.php file', get_product_name()), - __('Developer mode is enabled') - ); - } - - if (isset($_SESSION['new_update'])) { - if (!empty($_SESSION['return_installation_open'])) { - if (!$_SESSION['return_installation_open']['return']) { - foreach ($_SESSION['return_installation_open']['text'] as $message) { - set_pandora_error_for_header( - $message, - __('Error first setup Open update') - ); - } - } - } - - if ($_SESSION['new_update'] == 'new') { - set_pandora_error_for_header( - __('There is a new update available. Please<a style="font-weight:bold;" href="index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online"> go to Administration:Setup:Update Manager</a> for more details.'), - __('New %s Console update', get_product_name()) - ); - } - } - - // PHP configuration values - $PHPupload_max_filesize = config_return_in_bytes(ini_get('upload_max_filesize')); - $PHPmax_input_time = ini_get('max_input_time'); - $PHPmemory_limit = config_return_in_bytes(ini_get('memory_limit')); - $PHPmax_execution_time = ini_get('max_execution_time'); - $PHPsafe_mode = ini_get('safe_mode'); - $PHPdisable_functions = ini_get('disable_functions'); - - if ($PHPsafe_mode === '1') { - set_pandora_error_for_header( - __('To disable, change it on your PHP configuration file (php.ini) and put safe_mode = Off (Dont forget restart apache process after changes)'), - sprintf(__('PHP safe mode is enabled. Some features may not properly work.')) - ); - } - - if ($PHPmax_input_time !== '-1') { - set_pandora_error_for_header( - sprintf(__('Recommended value is %s'), '-1 ('.__('Unlimited').')').'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'), - sprintf(__("Not recommended '%s' value in PHP configuration"), 'max_input_time') - ); - } - - if ($PHPmax_execution_time !== '0') { - set_pandora_error_for_header( - sprintf(__('Recommended value is: %s'), '0 ('.__('Unlimited').')').'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'), - sprintf(__("Not recommended '%s' value in PHP configuration"), 'max_execution_time') - ); - } - - $PHPupload_max_filesize_min = config_return_in_bytes('800M'); - - if ($PHPupload_max_filesize < $PHPupload_max_filesize_min) { - set_pandora_error_for_header( - sprintf(__('Recommended value is: %s'), sprintf(__('%s or greater'), '800M')).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'), - sprintf(__("Not recommended '%s' value in PHP configuration"), 'upload_max_filesize') - ); - } - - $PHPmemory_limit_min = config_return_in_bytes('500M'); - - if ($PHPmemory_limit < $PHPmemory_limit_min && $PHPmemory_limit !== '-1') { - set_pandora_error_for_header( - sprintf(__('Recommended value is: %s'), sprintf(__('%s or greater'), '500M')).'<br><br>'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator'), - sprintf(__("Not recommended '%s' value in PHP configuration"), 'memory_limit') - ); - } - - if (preg_match('/system/', $PHPdisable_functions) or preg_match('/exec/', $PHPdisable_functions)) { - set_pandora_error_for_header( - __('Variable disable_functions containts functions system() or exec(), in PHP configuration file (php.ini)').'<br /><br />'.__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'), - __('Problems with disable functions in PHP.INI') - ); - } - - $result_ejecution = exec('"'.io_safe_output($config['phantomjs_bin']).'/phantomjs" --version'); - if (!isset($result_ejecution) || $result_ejecution == '') { - if ($config['language'] == 'es') { - set_pandora_error_for_header( - __('To be able to create images of the graphs for PDFs, please install the phantom.js extension. For that, it is necessary to follow these steps:').'<a target="blank" href="https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Configuracion#Phantomjs">Click here</a>', - __('phantomjs is not installed') - ); - } else { - set_pandora_error_for_header( - __('To be able to create images of the graphs for PDFs, please install the phantom.js extension. For that, it is necessary to follow these steps:').'<a target="blank" href="https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Configuration#Phantomjs">Click here</a>', - __('phantomjs is not installed') - ); - } - } - - $php_version = phpversion(); - $php_version_array = explode('.', $php_version); - if ($php_version_array[0] < 7) { - if ($config['language'] == 'es') { - $url_help = 'https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Instalaci%C3%B3n_y_actualizaci%C3%B3n_PHP_7'; - } else { - $url_help = 'https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:_PHP_7'; - } - - set_pandora_error_for_header( - __('For a correct operation of PandoraFMS, PHP must be updated to version 7.0 or higher.').'<br>'.__('Otherwise, functionalities will be lost.').'<br>'."<ol><li style='color: #676767'>".__('Report download in PDF format').'</li>'."<li style='color: #676767'>".__('Emails Sending').'</li>'."<li style='color: #676767'>".__('Metaconsole Collections').'</li>'."<li style='color: #676767'>".'...'.'</li>'.'</ol>'.'<a target="blank" href="'.$url_help.'">'.__('Access Help').'</a>', - __('PHP UPDATE REQUIRED') - ); - } } +/** + * Return in bytes + * + * @param string $val Value to convert. + * + * @return integer + */ function config_return_in_bytes($val) { $val = trim($val); $last = strtolower($val[(strlen($val) - 1)]); switch ($last) { - // The 'G' modifier is available since PHP 5.1.0 + // The 'G' modifier is available since PHP 5.1.0. case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; + default: + // Ignore. + break; } return $val; } +/** + * Undocumented function + * + * @return void + */ function config_user_set_custom_config() { global $config; $userinfo = get_user_info($config['id_user']); - // Refresh the last_connect info in the user table - // if last update was more than 5 minutes ago + // Refresh the last_connect info in the user table. + // if last update was more than 5 minutes ago. if ($userinfo['last_connect'] < (time() - SECONDS_1MINUTE)) { update_user($config['id_user'], ['last_connect' => time()]); } @@ -2933,7 +2751,7 @@ function config_user_set_custom_config() $config['block_size'] = $userinfo['block_size']; } - // Each user could have it's own timezone) + // Each user could have it's own timezone). if (isset($userinfo['timezone'])) { if ($userinfo['timezone'] != '') { date_default_timezone_set($userinfo['timezone']); @@ -2946,6 +2764,11 @@ function config_user_set_custom_config() } +/** + * Undocumented function + * + * @return void + */ function config_prepare_session() { global $config; @@ -2958,10 +2781,10 @@ function config_prepare_session() } if ($user_sesion_time == 0) { - // Change the session timeout value to session_timeout minutes // 8*60*60 = 8 hours + // Change the session timeout value to session_timeout minutes // 8*60*60 = 8 hours. $sessionCookieExpireTime = $config['session_timeout']; } else { - // Change the session timeout value to session_timeout minutes // 8*60*60 = 8 hours + // Change the session timeout value to session_timeout minutes // 8*60*60 = 8 hours. $sessionCookieExpireTime = $user_sesion_time; } @@ -2971,7 +2794,7 @@ function config_prepare_session() $sessionCookieExpireTime *= 60; } - // Reset the expiration time upon page load //session_name() is default name of session PHPSESSID + // Reset the expiration time upon page load //session_name() is default name of session PHPSESSID. if (isset($_COOKIE[session_name()])) { setcookie(session_name(), $_COOKIE[session_name()], (time() + $sessionCookieExpireTime), '/'); } diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index d118dbd87f..d6384595a8 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -737,12 +737,12 @@ function menu_calculate_top($level1, $level2, $level3=false) // Positionate in the middle if ($total > 12 && (($total < 18) || (($level1 - $comp) <= 4))) { - return - ( floor($comp / 2) * 35); + return - ( floor($comp / 2) * 39); } // Positionate in the bottom if ($total >= 18) { - return (- $comp * 35); + return (- $comp * 39); } // return 0 by default diff --git a/pandora_console/include/styles/menu.css b/pandora_console/include/styles/menu.css index cf8e88bae7..63b9c3a0db 100644 --- a/pandora_console/include/styles/menu.css +++ b/pandora_console/include/styles/menu.css @@ -70,7 +70,7 @@ li:hover ul { z-index: 999; /*left: 44px;*/ min-height: 35px; - height: 35px; + /*height: 35px;*/ width: 180px; } @@ -82,7 +82,7 @@ li:hover ul { .sub_subMenu { min-height: 35px !important; - height: 35px; + /*height: 35px;*/ width: 180px; font-weight: normal !important; background-color: #202020; @@ -187,6 +187,9 @@ li.sub_subMenu.selected { } /* Godmode images */ +#icon_god-discovery { + background: url(../../images/gm_discovery.menu.png) no-repeat 50% 50%; +} #icon_god-resources { background: url(../../images/gm_resources.menu_gray.png) no-repeat; } @@ -454,24 +457,24 @@ ul li a:hover { } #menu_full { - /*height: 100%; Lo he quitado para que no ocupe todo el alto y fixed */ + /*height: 100%; /*Lo he quitado para que no ocupe todo el alto y fixed */ width: 60px; /* It is changed for classic menu (215px)*/ - position: absolute; /*Fixed: Lo he quitado para que no ocupe todo el alto y fixed */ + position: fixed; /*Fixed: Lo he quitado para que no ocupe todo el alto y fixed */ /*absolute*/ z-index: 1; top: 0; left: 0; background-color: #343434; - border-bottom: solid 5px #343434; - min-height: 943px; - /* padding-bottom: 40px; Lo he quitado para que no ocupe todo el alto y fixed */ + border-bottom: solid 3px #343434; + /*min-height: 943px;*/ + padding-bottom: 40px; /*Lo he quitado para que no ocupe todo el alto y fixed */ /*overflow-x: hidden;*/ } .button_collapse { height: 55px; background-color: #4d4d4d; - /* bottom: 0; Lo he quitado para que no ocupe todo el alto y fixed - position: fixed;*/ + /*bottom: 0; /* Lo he quitado para que no ocupe todo el alto y fixed*/ + /*position: fixed; /*coemntar tb*/ width: 60px; /* It is changed for classic menu (215px)*/ text-align: center; color: #fff; @@ -497,8 +500,8 @@ ul li a:hover { .operation > li.menu_icon, .godmode > li.menu_icon { - padding-top: 3px; - padding-bottom: 3px; + padding-top: 2px; /* 3px */ + padding-bottom: 2px; } .operation div, @@ -511,14 +514,21 @@ ul li a:hover { .menu_full_classic, .button_classic { width: 215px !important; - background-image: url(../../images/button_collapse_menu.png); - background-repeat: no-repeat; - background-position: center; } .menu_full_collapsed, .button_collapsed { width: 60px !important; +} + +.button_classic { + width: 215px !important; + background-image: url(../../images/button_collapse_menu.png); + background-repeat: no-repeat; + background-position: center; +} + +.button_collapsed { background-image: url(../../images/button_classic_menu.png); background-repeat: no-repeat; background-position: center; @@ -547,7 +557,7 @@ ul li a:hover { /* border: 2px solid #fff;*/ } -@media screen and (max-height: 845px) { +@media screen and (max-height: 600px) { .operation > li.menu_icon, .godmode > li.menu_icon { padding-top: 1px; @@ -558,5 +568,61 @@ ul li a:hover { } .button_collapse { margin-top: 10px; + background-color: green; + } + .menu li, + .menu .li.not_selected { + min-height: 25px !important; + } + .button_collapse { + height: 45px; + } + .submenu_text { + /* padding: 7.5px;*/ + } +} + +@media screen and (min-height: 601px) and (max-height: 700px) { + .operation > li.menu_icon, + .godmode > li.menu_icon { + padding-top: 1px; + padding-bottom: 2px; + } + .operation { + padding-top: 10px !important; + } + .button_collapse { + margin-top: 10px; + background-color: red; + } + .menu li, + .menu .li.not_selected { + min-height: 25px !important; + } + .button_collapse { + height: 48px; + } + .submenu_text { + /*padding: 7.5px;*/ + } +} + +@media screen and (min-height: 701px) and (max-height: 845px) { + .operation { + padding-top: 10px !important; + } + .button_collapse { + margin-top: 10px; + background-color: blue; + } + .menu li, + .menu .li.not_selected { + min-height: 28px !important; + } + .button_collapse { + height: 50px; + } + .submenu_text { + /*padding: 7.5px;*/ } } diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index e8e2632188..b35c00584e 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -678,7 +678,7 @@ div#menu { width: 45px; float: left; z-index: 2000; - /*position: absolute; Lo he quitado para que no ocupe todo el alto y fixed */ + position: absolute; /*Lo he quitado para que no ocupe todo el alto y fixed */ } div#head { @@ -978,6 +978,14 @@ input.group_item_min[disabled] { center !important; } +input.color_cloud_min { + background: #fefefe url(../../images/color_cloud_item.png) no-repeat center !important; +} +input.color_cloud_min[disabled] { + background: #fefefe url(../../images/color_cloud_item.disabled.png) no-repeat + center !important; +} + div#cont { position: fixed; max-height: 320px; @@ -1549,7 +1557,8 @@ table.databox { } .databox > thead > tr > th, -.databox > tbody > tr > th { +.databox > tbody > tr > th, +.databox > thead > tr > th a { padding: 9px 7px; font-weight: normal; color: #fff; @@ -4422,7 +4431,177 @@ div#dialog_messages table th:last-child { text-align: right; } -/* checkbox type toogle switch */ +/* + * --------------------------------------------------------------------- + * - Notifications + * --------------------------------------------------------------------- + */ + +.notification-ball { + border: white solid 2px; + border-radius: 50px; + width: 18px; + height: 18px; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.notification-ball-no-messages { + background-color: #82b92e; + cursor: pointer; +} +.notification-ball-new-messages { + background-color: #fc4444; +} + +#notification-wrapper { + background: white; + border: #a5a5a5 solid 1px; + z-index: 900000; + position: absolute; + width: 400px; + margin-top: -5px; + border-radius: 5px; +} +#notification-wrapper::before { + content: ""; + display: block; + position: absolute; + width: 0px; + height: 0; + border-color: transparent; + border-width: 12px; + border-style: solid; + bottom: 100%; + left: 78%; + left: calc(78% - 2px); + margin-left: -12px; + border-bottom-color: white; +} +#notification-wrapper-inner { + max-height: 400px; + overflow: auto; +} +#notification-wrapper-shadow { + height: 100%; + width: 100%; + background: #111; + position: fixed; + z-index: 9009; + top: 0; + opacity: 0.3; +} +.notification-item { + background: whitesmoke; + height: 100px; + margin: 7px; + border: #e4e4e4 solid 1px; + display: flex; + flex-flow: row nowrap; + align-items: center; + padding: 5px; +} +.notification-item:hover { + border: #ccc solid 1px; +} +.notification-item > * { + padding-left: 15px; + pointer-events: none; +} + +.notification-item:hover { + text-decoration: none; +} + +.notification-info { + width: 87%; + display: flex; + flex-flow: column nowrap; + overflow: hidden; + max-height: 83px; + line-height: 1.4em; +} +.notification-item img { + max-width: 100%; + max-height: 100%; +} +.notification-title { + margin: 0; +} +.notification-subtitle { + margin: 0; + color: #373737; +} + +.global-config-notification-title { + display: flex; + flex-direction: row; + align-items: center; +} + +.global-config-notification-title h2 { + margin-left: 10px; +} + +.global-config-notification-checkboxes :first-child { + font-weight: bold; +} + +.global-config-notification-selectors { + display: flex; + flex-direction: row; + margin-bottom: 10px; +} + +.global-config-notification-selectors h4 { + margin: 0; +} + +.global-config-notification-single-selector, +.global_config_notifications_dialog_add select { + display: flex; + width: 100%; + padding: 0 10px; +} + +.global-config-notification-single-selector :first-child, +.global-config-notification-single-selector :first-child select { + width: 99%; +} + +.global-config-notification-single-selector :last-child, +.global_config_notifications_dialog_add_wrapper { + flex-direction: column; + display: flex; + justify-content: flex-end; +} + +.global_config_notifications_dialog_add { + display: flex; + flex-direction: row; + margin: 8px; +} + +.global_config_notifications_two_ways_form_arrows { + display: flex; + flex-flow: column; + justify-content: center; + margin: 0 5px; +} + +.global_config_notifications_two_ways_form_arrows img { + margin: 15px 0; +} + +/* jQuery dialog */ +.no-close .ui-dialog-titlebar-close { + display: none; +} +/* jQuery dialog */ + +/* --- SWITCH --- */ .toogle_switch { position: relative; display: inline-block; @@ -4477,11 +4656,147 @@ input:checked + .slider:before { background-color: rgb(197, 235, 192); } -/* jQuery dialog */ -.no-close .ui-dialog-titlebar-close { - display: none; +.p-switch { + position: relative; + display: inline-block; + width: 30px; + height: 17px; } -/* jQuery dialog */ + +.p-switch input { + opacity: 0; + width: 0; + height: 0; +} + +.p-slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 34px; +} + +.p-slider:before { + position: absolute; + content: ""; + height: 13px; + width: 13px; + left: 2px; + bottom: 2px; + background-color: white; + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 50%; +} + +input:checked + .p-slider { + background-color: #82b92e; +} + +input:focus + .p-slider { + box-shadow: 0 0 1px #82b92e; +} + +input:checked + .p-slider:before { + -webkit-transform: translateX(13px); + -ms-transform: translateX(13px); + transform: translateX(13px); +} + +/* --- END SWITCH --- */ + +/* --- TOAST --- */ +#notifications-toasts-wrapper { + position: fixed; + right: 20px; + top: 70px; + width: 270px; + height: 100%; + z-index: 6; + pointer-events: none; +} + +.snackbar { + max-width: 270px; + background-color: #333; + color: #fff; + text-align: center; + /* border-radius: 2px; */ + padding: 16px; + margin: 10px; + border-radius: 4px; + visibility: hidden; + pointer-events: all; +} + +.snackbar.show { + visibility: visible; + -webkit-animation: fadein 0.5s, fadeout 0.5s 7.5s; + animation: fadein 0.5s, fadeout 0.5s 7.5s; +} + +.snackbar p, +.snackbar h3 { + text-align: left; + margin: 0; + pointer-events: none; +} +.snackbar h3 { + color: white; + margin-bottom: 10px; +} + +@-webkit-keyframes fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@keyframes fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@-webkit-keyframes fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} + +@keyframes fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} + +/* --- END TOAST --- */ /* * --------------------------------------------------------------------- From 875d7ecabae5bde85035443d9ab3e8f9b10e6d4b Mon Sep 17 00:00:00 2001 From: manuel <manuel.montes@artica.es> Date: Tue, 26 Feb 2019 12:04:18 +0100 Subject: [PATCH 06/33] Unified sizes of the checkbox switch Former-commit-id: f6f8eca748f67fdf1e4a98256c3ca590b61328ac --- pandora_console/godmode/setup/performance.php | 6 +- pandora_console/godmode/setup/setup_auth.php | 8 +- .../godmode/setup/setup_general.php | 26 +- .../godmode/setup/setup_visuals.php | 32 +- pandora_console/include/functions_html.php | 61 +- pandora_console/install.php | 1105 ----------------- 6 files changed, 87 insertions(+), 1151 deletions(-) delete mode 100644 pandora_console/install.php diff --git a/pandora_console/godmode/setup/performance.php b/pandora_console/godmode/setup/performance.php index e51f6ff7a9..0bbf28001f 100644 --- a/pandora_console/godmode/setup/performance.php +++ b/pandora_console/godmode/setup/performance.php @@ -582,7 +582,7 @@ $table_other->data[3][1] = html_print_input_text( ); $table_other->data[5][0] = __('Use realtime statistics'); -$table_other->data[5][1] = html_print_checkbox_toogle_switch( +$table_other->data[5][1] = html_print_checkbox_switch( 'realtimestats', 1, $config['realtimestats'], @@ -604,7 +604,7 @@ $table_other->data[6][1] = html_print_input_text( ); $table_other->data[7][0] = __('Use agent access graph').ui_print_help_icon('agent_access', true); -$table_other->data[7][1] = html_print_checkbox_toogle_switch('agentaccess', 1, $config['agentaccess'], true); +$table_other->data[7][1] = html_print_checkbox_switch('agentaccess', 1, $config['agentaccess'], true); $table_other->data[8][0] = __('Max. recommended number of files in attachment directory'); $table_other->data[8][0] .= ui_print_help_tip( @@ -621,7 +621,7 @@ $table_other->data[8][1] = html_print_input_text( ); $table_other->data[9][0] = __('Delete not init modules'); -$table_other->data[9][1] = html_print_checkbox_toogle_switch('delete_notinit', 1, $config['delete_notinit'], true); +$table_other->data[9][1] = html_print_checkbox_switch('delete_notinit', 1, $config['delete_notinit'], true); $table_other->data[10][0] = __('Big Operation Step to purge old data'); $table_other->data[10][0] .= ui_print_help_tip( diff --git a/pandora_console/godmode/setup/setup_auth.php b/pandora_console/godmode/setup/setup_auth.php index 3ff5cb305b..cdb75816cc 100644 --- a/pandora_console/godmode/setup/setup_auth.php +++ b/pandora_console/godmode/setup/setup_auth.php @@ -44,14 +44,14 @@ if (is_ajax()) { // Fallback to local authentication $row = []; $row['name'] = __('Fallback to local authentication').ui_print_help_tip(__('Enable this option if you want to fallback to local authentication when remote (ldap etc...) authentication failed.'), true); - $row['control'] = html_print_checkbox_toogle_switch('fallback_local_auth', 1, $config['fallback_local_auth'], true); + $row['control'] = html_print_checkbox_switch('fallback_local_auth', 1, $config['fallback_local_auth'], true); $table->data['fallback_local_auth'] = $row; if (enterprise_installed()) { // Autocreate remote users $row = []; $row['name'] = __('Autocreate remote users'); - $row['control'] = html_print_checkbox_toogle_switch_extended('autocreate_remote_users', 1, $config['autocreate_remote_users'], false, '', '', true).'  '; + $row['control'] = html_print_checkbox_switch_extended('autocreate_remote_users', 1, $config['autocreate_remote_users'], false, '', '', true).'  '; $table->data['autocreate_remote_users'] = $row; add_enterprise_auth_autocreate_profiles($table, $type_auth); @@ -89,7 +89,7 @@ if (is_ajax()) { // Start TLS $row = []; $row['name'] = __('Start TLS'); - $row['control'] = html_print_checkbox_toogle_switch('ldap_start_tls', 1, $config['ldap_start_tls'], true); + $row['control'] = html_print_checkbox_switch('ldap_start_tls', 1, $config['ldap_start_tls'], true); $table->data['ldap_start_tls'] = $row; // Base DN @@ -135,7 +135,7 @@ if (is_ajax()) { $row = []; $row['name'] = __('Double authentication').ui_print_help_tip(__('If this option is enabled, the users can use double authentication with their accounts'), true); $row['control'] = html_print_input_hidden('double_auth_enabled', 0); - $row['control'] .= html_print_checkbox_toogle_switch('double_auth_enabled', 1, $config['double_auth_enabled'], true); + $row['control'] .= html_print_checkbox_switch('double_auth_enabled', 1, $config['double_auth_enabled'], true); $table->data['double_auth_enabled'] = $row; // Session timeout diff --git a/pandora_console/godmode/setup/setup_general.php b/pandora_console/godmode/setup/setup_general.php index 82899cde6b..8f07d3d88d 100644 --- a/pandora_console/godmode/setup/setup_general.php +++ b/pandora_console/godmode/setup/setup_general.php @@ -82,17 +82,17 @@ $sources['sql'] = __('Database'); $table->data[9][1] = html_print_select($sources, 'timesource', $config['timesource'], '', '', '', true); $table->data[10][0] = __('Automatic check for updates'); -$table->data[10][1] = html_print_checkbox_toogle_switch('autoupdate', 1, $config['autoupdate'], true); +$table->data[10][1] = html_print_checkbox_switch('autoupdate', 1, $config['autoupdate'], true); echo "<div id='dialog' title='".__('Enforce https Information')."' style='display:none;'>"; echo "<p style='text-align: center;'>".__('If SSL is not properly configured you will lose access to ').get_product_name().__(' Console').'</p>'; echo '</div>'; $table->data[11][0] = __('Enforce https'); -$table->data[11][1] = html_print_checkbox_toogle_switch_extended('https', 1, $config['https'], false, '', '', true); +$table->data[11][1] = html_print_checkbox_switch_extended('https', 1, $config['https'], false, '', '', true); $table->data[12][0] = __('Use cert of SSL'); -$table->data[12][1] = html_print_checkbox_toogle_switch_extended('use_cert', 1, $config['use_cert'], false, '', '', true); +$table->data[12][1] = html_print_checkbox_switch_extended('use_cert', 1, $config['use_cert'], false, '', '', true); $table->rowstyle[13] = 'display: none;'; $table->data[13][0] = __('Path of SSL Cert.').ui_print_help_tip(__('Path where you put your cert and name of this cert. Remember your cert only in .pem extension.'), true); @@ -114,7 +114,7 @@ $table->data[16][0] = __('API password').ui_print_help_tip(__('Please be careful $table->data[16][1] = html_print_input_password('api_password', io_output_password($config['api_password']), '', 25, 255, true); $table->data[17][0] = __('Enable GIS features'); -$table->data[17][1] = html_print_checkbox_toogle_switch('activate_gis', 1, $config['activate_gis'], true); +$table->data[17][1] = html_print_checkbox_switch('activate_gis', 1, $config['activate_gis'], true); $table->data[19][0] = __('Enable Netflow'); $rbt_disabled = false; @@ -123,7 +123,7 @@ if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { $table->data[19][0] .= ui_print_help_tip(__('Not supported in Windows systems'), true); } -$table->data[19][1] = html_print_checkbox_toogle_switch_extended('activate_netflow', 1, $config['activate_netflow'], $rbt_disabled, '', '', true); +$table->data[19][1] = html_print_checkbox_switch_extended('activate_netflow', 1, $config['activate_netflow'], $rbt_disabled, '', '', true); $zone_name = [ @@ -202,15 +202,15 @@ $table->data[28][1] = html_print_input_text('public_url', $config['public_url'], $table->data[29][0] = __('Referer security'); $table->data[29][0] .= ui_print_help_tip(__("If enabled, actively checks if the user comes from %s's URL", get_product_name()), true); -$table->data[29][1] = html_print_checkbox_toogle_switch('referer_security', 1, $config['referer_security'], true); +$table->data[29][1] = html_print_checkbox_switch('referer_security', 1, $config['referer_security'], true); $table->data[30][0] = __('Event storm protection'); $table->data[30][0] .= ui_print_help_tip(__('If set to yes no events or alerts will be generated, but agents will continue receiving data.'), true); -$table->data[30][1] = html_print_checkbox_toogle_switch('event_storm_protection', 1, $config['event_storm_protection'], true); +$table->data[30][1] = html_print_checkbox_switch('event_storm_protection', 1, $config['event_storm_protection'], true); $table->data[31][0] = __('Command Snapshot').ui_print_help_tip(__('The string modules with several lines show as command output'), true); -$table->data[31][1] = html_print_checkbox_toogle_switch('command_snapshot', 1, $config['command_snapshot'], true); +$table->data[31][1] = html_print_checkbox_switch('command_snapshot', 1, $config['command_snapshot'], true); $table->data[32][0] = __('Server logs directory').ui_print_help_tip(__('Directory where the server logs are stored.'), true); $table->data[32][1] = html_print_input_text( @@ -250,7 +250,7 @@ $table->data['tutorial_mode'][1] = html_print_select( $config['past_planned_downtimes'] = isset($config['past_planned_downtimes']) ? $config['past_planned_downtimes'] : 1; $table->data[34][0] = __('Allow create planned downtimes in the past').ui_print_help_tip(__('The planned downtimes created in the past will affect the SLA reports'), true); -$table->data[34][1] = html_print_checkbox_toogle_switch('past_planned_downtimes', 1, $config['past_planned_downtimes'], true); +$table->data[34][1] = html_print_checkbox_switch('past_planned_downtimes', 1, $config['past_planned_downtimes'], true); $table->data[35][0] = __('Limit for bulk operations').ui_print_help_tip(__('Your PHP environment is set to 1000 max_input_vars. This parameter should have the same value or lower.', ini_get('max_input_vars')), true); $table->data[35][1] = html_print_input_text( @@ -263,7 +263,7 @@ $table->data[35][1] = html_print_input_text( ); $table->data[36][0] = __('Include agents manually disabled'); -$table->data[36][1] = html_print_checkbox_toogle_switch('include_agents', 1, $config['include_agents'], true); +$table->data[36][1] = html_print_checkbox_switch('include_agents', 1, $config['include_agents'], true); $table->data[37][0] = __('Audit log directory').ui_print_help_tip(__('Directory where audit log is stored.'), true); $table->data[37][1] = html_print_input_text('auditdir', io_safe_output($config['auditdir']), '', 30, 100, true); @@ -339,9 +339,9 @@ $(document).ready (function () { $("#timezone").attr("hidden", false); }); - if ($("input[name=use_cert]").is(':checked')) { - $('#setup_general-13').show(); - } + if ($("input[name=use_cert]").is(':checked')) { + $('#setup_general-13').show(); + } $("input[name=use_cert]").change(function () { if( $(this).is(":checked") ) diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php index 8d18cf40d7..85047cd488 100755 --- a/pandora_console/godmode/setup/setup_visuals.php +++ b/pandora_console/godmode/setup/setup_visuals.php @@ -75,7 +75,7 @@ $table_behaviour->data[$row][1] = html_print_select($values, 'vc_refr', $config[ $row++; $table_behaviour->data[$row][0] = __('Paginated module view'); -$table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch( +$table_behaviour->data[$row][1] = html_print_checkbox_switch( 'paginate_module', 1, $config['paginate_module'], @@ -84,7 +84,7 @@ $table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch( $row++; $table_behaviour->data[$row][0] = __('Display data of proc modules in other format'); -$table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch( +$table_behaviour->data[$row][1] = html_print_checkbox_switch( 'render_proc', 1, $config['render_proc'], @@ -102,7 +102,7 @@ $row++; // Daniel maya 02/06/2016 Display menu with click --INI $table_behaviour->data[$row][0] = __('Click to display lateral menus').ui_print_help_tip(__('When enabled, the lateral menus are shown when left clicking them, instead of hovering over them'), true); -$table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch( +$table_behaviour->data[$row][1] = html_print_checkbox_switch( 'click_display', 1, $config['click_display'], @@ -121,7 +121,7 @@ if (enterprise_installed()) { } $table_behaviour->data[$row][0] = __('Classic menu mode').ui_print_help_tip(__('Text menu options always visible, don\'t hide'), true); -$table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch( +$table_behaviour->data[$row][1] = html_print_checkbox_switch( 'classic_menu', 1, $config['classic_menu'], @@ -491,7 +491,7 @@ if (enterprise_installed()) { if (enterprise_installed()) { $table_styles->data[$row][0] = __('Disable logo in graphs'); - $table_styles->data[$row][1] = html_print_checkbox_toogle_switch( + $table_styles->data[$row][1] = html_print_checkbox_switch( 'fixed_graph', 1, $config['fixed_graph'], @@ -507,7 +507,7 @@ if (enterprise_installed()) { */ $table_styles->data[$row][0] = __('Disable helps'); -$table_styles->data[$row][1] = html_print_checkbox_toogle_switch( +$table_styles->data[$row][1] = html_print_checkbox_switch( 'disable_help', 1, $config['disable_help'], @@ -516,7 +516,7 @@ $table_styles->data[$row][1] = html_print_checkbox_toogle_switch( $row++; $table_styles->data[$row][0] = __('Fixed header'); -$table_styles->data[$row][1] = html_print_checkbox_toogle_switch( +$table_styles->data[$row][1] = html_print_checkbox_switch( 'fixed_header', 1, $config['fixed_header'], @@ -525,7 +525,7 @@ $table_styles->data[$row][1] = html_print_checkbox_toogle_switch( $row++; $table_styles->data[$row][0] = __('Fixed menu'); -$table_styles->data[$row][1] = html_print_checkbox_toogle_switch( +$table_styles->data[$row][1] = html_print_checkbox_switch( 'fixed_menu', 1, $config['fixed_menu'], @@ -535,7 +535,7 @@ $row++; // For 5.1 Autohidden menu feature $table_styles->data['autohidden'][0] = __('Autohidden menu'); -$table_styles->data['autohidden'][1] = html_print_checkbox_toogle_switch( +$table_styles->data['autohidden'][1] = html_print_checkbox_switch( 'autohidden_menu', 1, $config['autohidden_menu'], @@ -543,7 +543,7 @@ $table_styles->data['autohidden'][1] = html_print_checkbox_toogle_switch( ); $table_styles->data[$row][0] = __('Visual effects and animation'); -$table_styles->data[$row][1] = html_print_checkbox_toogle_switch( +$table_styles->data[$row][1] = html_print_checkbox_switch( 'visual_animation', 1, $config['visual_animation'], @@ -567,7 +567,7 @@ $table_gis->size[0] = '50%'; $table_gis->data = []; $table_gis->data[$row][0] = __('GIS Labels').ui_print_help_tip(__('This enabling this, you get a label with agent name in GIS maps. If you have lots of agents in the map, will be unreadable. Disabled by default.'), true); -$table_gis->data[$row][1] = html_print_checkbox_toogle_switch( +$table_gis->data[$row][1] = html_print_checkbox_switch( 'gis_label', 1, $config['gis_label'], @@ -680,7 +680,7 @@ $table_font->data[$row][1] = html_print_input_text( $row++; $table_font->data[$row][0] = __('Show unit along with value in reports').ui_print_help_tip(__('This enabling this, max, min and avg values will be shown with units.'), true); -$table_font->data[$row][1] = html_print_checkbox_toogle_switch( +$table_font->data[$row][1] = html_print_checkbox_switch( 'simple_module_value', 1, $config['simple_module_value'], @@ -778,7 +778,7 @@ $table_chars->data[$row][1] = html_print_input_text( $row++; $table_chars->data[$row][0] = __('Use round corners'); -$table_chars->data[$row][1] = html_print_checkbox_toogle_switch( +$table_chars->data[$row][1] = html_print_checkbox_switch( 'round_corner', 1, $config['round_corner'], @@ -947,7 +947,7 @@ $table_other->data[$row][0] = __('Show report info with description').ui_print_h __('Custom report description info. It will be applied to all reports and templates by default.'), true ); -$table_other->data[$row][1] = html_print_checkbox_toogle_switch( +$table_other->data[$row][1] = html_print_checkbox_switch( 'custom_report_info', 1, $config['custom_report_info'], @@ -1061,7 +1061,7 @@ $table_other->data['custom_report_front-footer'][1] = html_print_textarea( $table_other->data[$row][0] = __('Show QR Code icon in the header'); -$table_other->data[$row][1] = html_print_checkbox_toogle_switch( +$table_other->data[$row][1] = html_print_checkbox_switch( 'show_qr_code_header', 1, $config['show_qr_code_header'], @@ -1099,7 +1099,7 @@ $table_other->data[$row][0] .= ui_print_help_tip( __('Show the group name instead the group icon.'), true ); -$table_other->data[$row][1] = html_print_checkbox_toogle_switch( +$table_other->data[$row][1] = html_print_checkbox_switch( 'show_group_name', 1, $config['show_group_name'], diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index 701042448f..cb100db256 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -20,19 +20,19 @@ if (!isset($config)) { $working_dir = getcwd(); $working_dir = str_replace('\\', '/', $working_dir); - // Windows compatibility + // Windows compatibility. $levels = substr_count($working_dir, '/'); for ($i = 0; $i < $levels; $i++) { if (file_exists(str_repeat('../', $i).'config.php')) { include_once str_repeat('../', $i).'config.php'; break; - // Skip config.php loading after load the first one + // Skip config.php loading after load the first one. } else if (file_exists(str_repeat('../', $i).'include/config.php')) { // For path from the enterprise structure dirs. include_once str_repeat('../', $i).'include/config.php'; break; - // Skip config.php loading after load the first one + // Skip config.php loading after load the first one. } } } else { @@ -2307,7 +2307,7 @@ function html_print_checkbox($name, $value, $checked=false, $return=false, $disa /** - * Render a checkbox button input toogle switch type. Extended version, use html_print_checkbox_toogle_switch() to simplify. + * Render a checkbox button input switch type. Extended version, use html_print_checkbox_switch() to simplify. * * @param string Input name. * @param string Input value. @@ -2321,7 +2321,7 @@ function html_print_checkbox($name, $value, $checked=false, $return=false, $disa */ -function html_print_checkbox_toogle_switch_extended($name, $value, $checked, $disabled, $script, $attributes, $return=false, $id='') +function html_print_checkbox_switch_extended($name, $value, $checked, $disabled, $script, $attributes, $return=false, $id='') { static $idcounter = []; @@ -2334,7 +2334,7 @@ function html_print_checkbox_toogle_switch_extended($name, $value, $checked, $di $id_aux = preg_replace('/[^a-z0-9\:\;\-\_]/i', '', $name.($idcounter[$name] ? $idcounter[$name] : '')); - $output = '<label class="toogle_switch"><input name="'.$name.'" type="checkbox" value="'.$value.'" '.($checked ? 'checked="checked"' : ''); + $output = '<label class="p-switch"><input name="'.$name.'" type="checkbox" value="'.$value.'" '.($checked ? 'checked="checked"' : ''); if ($id == '') { $output .= ' id="checkbox-'.$id_aux.'"'; } else { @@ -2350,7 +2350,7 @@ function html_print_checkbox_toogle_switch_extended($name, $value, $checked, $di } $output .= ' '.$attributes; - $output .= ' /><span class="slider"></span></label>'; + $output .= ' /><span class="p-slider"></span></label>'; $output .= "\n"; if ($return === false) { @@ -2362,7 +2362,7 @@ function html_print_checkbox_toogle_switch_extended($name, $value, $checked, $di /** - * Render a checkbox button input toogle switch type. + * Render a checkbox button input switch type. * * @param string Input name. * @param string Input value. @@ -2374,9 +2374,9 @@ function html_print_checkbox_toogle_switch_extended($name, $value, $checked, $di */ -function html_print_checkbox_toogle_switch($name, $value, $checked=false, $return=false, $disabled=false, $script='', $disabled_hidden=false) +function html_print_checkbox_switch($name, $value, $checked=false, $return=false, $disabled=false, $script='', $disabled_hidden=false) { - $output = html_print_checkbox_toogle_switch_extended($name, $value, (bool) $checked, $disabled, $script, '', true); + $output = html_print_checkbox_switch_extended($name, $value, (bool) $checked, $disabled, $script, '', true); if (!$disabled_hidden) { $output .= html_print_input_hidden($name.'_sent', 1, true); } @@ -3073,3 +3073,44 @@ function html_print_csrf_error() ); return true; } + + +/** + * Print an swith button + * + * @param array $atributes. Valid params: + * name: Usefull to handle in forms + * value: If is checked or not + * disabled: Disabled. Cannot be pressed. + * id: Optional id for the switch. + * class: Additional classes (string). + * @return string with HTML of button + */ +function html_print_switch($attributes=[]) +{ + $html_expand = ''; + + // Check the load values on status. + $html_expand .= (bool) $attributes['value'] ? ' checked' : ''; + $html_expand .= (bool) $attributes['disabled'] ? ' disabled' : ''; + + // Only load the valid attributes. + $valid_attrs = [ + 'id', + 'class', + 'name', + 'onclick', + ]; + foreach ($valid_attrs as $va) { + if (!isset($attributes[$va])) { + continue; + } + + $html_expand .= ' '.$va.'="'.$attributes[$va].'"'; + } + + return "<label class='p-switch'> + <input type='checkbox' $html_expand> + <span class='p-slider'></span> + </label>"; +} diff --git a/pandora_console/install.php b/pandora_console/install.php deleted file mode 100644 index fa60433a98..0000000000 --- a/pandora_console/install.php +++ /dev/null @@ -1,1105 +0,0 @@ -<?php -/** - * Extension to manage a list of gateways and the node address where they should - * point to. - * - * @category Extensions - * @package Pandora FMS - * @subpackage Community - * @version 1.0.0 - * @license See below - * - * ______ ___ _______ _______ ________ - * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| - * | __/| _ | | _ || _ | _| _ | | ___| |__ | - * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| - * - * ============================================================================ - * Copyright (c) 2005-2019 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. - * ============================================================================ - */ - -?> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> - <head> - <title>Pandora FMS - Installation Wizard - - - - - - - - - - - - - - - -
- -
- - - -'; - echo " $label "; - echo ''; - if (!extension_loaded($ext)) { - echo ""; - return 1; - } else { - echo ""; - return 0; - } - - echo ''; -} - -function check_include($ext, $label) -{ - echo ''; - echo " $label "; - echo ''; - if (!include $ext) { - echo ""; - return 1; - } else { - echo ""; - return 0; - } - - echo ''; -} - - -function check_exists($file, $label) -{ - echo ''; - echo " $label "; - echo ''; - if (!file_exists($file)) { - echo " "; - return 1; - } else { - echo " "; - return 0; - } - - echo ''; -} - - -function check_generic($ok, $label) -{ - echo ""; - if ($ok == 0) { - echo " "; - echo ''; - echo " $label "; - echo ''; - echo ''; - return 1; - } else { - echo " "; - echo ''; - echo " $label "; - echo ''; - echo ''; - return 0; - } -} - - -function check_writable($fullpath, $label) -{ - echo ""; - if (file_exists($fullpath)) { - if (is_writable($fullpath)) { - echo " "; - echo ''; - echo " $label "; - echo ''; - echo ''; - return 0; - } else { - echo " "; - echo ''; - echo " $label "; - echo ''; - echo ''; - return 1; - } - } else { - echo " "; - echo ''; - echo " $label "; - echo ''; - echo ''; - return 1; - } -} - - -function check_variable($var, $value, $label, $mode) -{ - echo ''; - echo " $label "; - echo ''; - if ($mode == 1) { - if ($var >= $value) { - echo " "; - return 0; - } else { - echo " "; - return 1; - } - } else if ($var == $value) { - echo " "; - return 0; - } else { - echo " "; - return 1; - } - - echo ''; -} - - -function parse_mysql_dump($url) -{ - if (file_exists($url)) { - $file_content = file($url); - $query = ''; - foreach ($file_content as $sql_line) { - if (trim($sql_line) != '' && strpos($sql_line, '-- ') === false) { - $query .= $sql_line; - if (preg_match("/;[\040]*\$/", $sql_line)) { - if (!$result = mysql_query($query)) { - echo mysql_error(); - // Uncomment for debug - echo "
$query
"; - return 0; - } - - $query = ''; - } - } - } - - return 1; - } else { - return 0; - } -} - - -function parse_mysqli_dump($connection, $url) -{ - if (file_exists($url)) { - $file_content = file($url); - $query = ''; - foreach ($file_content as $sql_line) { - if (trim($sql_line) != '' && strpos($sql_line, '-- ') === false) { - $query .= $sql_line; - if (preg_match("/;[\040]*\$/", $sql_line)) { - if (!$result = mysqli_query($connection, $query)) { - echo mysqli_error(); - // Uncomment for debug - echo "
$query
"; - return 0; - } - - $query = ''; - } - } - } - - return 1; - } else { - return 0; - } -} - - -function random_name($size) -{ - $temp = ''; - for ($a = 0; $a < $size; $a++) { - $temp = $temp.chr(rand(122, 97)); - } - - return $temp; -} - - -function print_logo_status($step, $step_total) -{ - global $banner; - - $header = " -
-
-
- $banner -
-
"; - $header .= " -
- Install step $step of $step_total -
"; - - return $header; -} - - -// -// This function adjusts path settings in pandora db for FreeBSD. -// -// All packages and configuration files except operating system's base files -// are installed under /usr/local in FreeBSD. So, path settings in pandora db -// for some programs should be changed from the Linux default. -// -function adjust_paths_for_freebsd($engine, $connection=false) -{ - $adjust_sql = [ - "update trecon_script set script = REPLACE(script,'/usr/share','/usr/local/share');", - "update tconfig set value = REPLACE(value,'/usr/bin','/usr/local/bin') where token='netflow_daemon' OR token='netflow_nfdump' OR token='netflow_nfexpire';", - "update talert_commands set command = REPLACE(command,'/usr/bin','/usr/local/bin');", - "update talert_commands set command = REPLACE(command,'/usr/share', '/usr/local/share');", - "update tplugin set execute = REPLACE(execute,'/usr/share','/usr/local/share');", - "update tevent_response set target = REPLACE(target,'/usr/share','/usr/local/share');", - "insert into tconfig (token, value) VALUES ('graphviz_bin_dir', '/usr/local/bin');", - ]; - - for ($i = 0; $i < count($adjust_sql); $i++) { - switch ($engine) { - case 'mysql': - $result = mysql_query($adjust_sql[$i]); - break; - - case 'mysqli': - $result = mysqli_query($connection, $adjust_sql[$i]); - break; - - case 'oracle': - // Delete the last semicolon from current query - $query = substr($adjust_sql[$i], 0, (strlen($adjust_sql[$i]) - 1)); - $sql = oci_parse($connection, $query); - $result = oci_execute($sql); - break; - - case 'pgsql': - pg_send_query($connection, $adjust_sql[$i]); - $result = pg_get_result($connection); - break; - } - - if (!$result) { - return 0; - } - } - - return 1; -} - - -function install_step1() -{ - global $banner; - - echo " -
-
- ".print_logo_status(1, 6)." -
-

Welcome to Pandora FMS installation Wizard

-

This wizard helps you to quick install Pandora FMS console and main database in your system.

-

In four steps, this installer will check all dependencies and will create your configuration, ready to use.

-

For more information, please refer to documentation.
- Pandora FMS Development Team

- "; - if (file_exists('include/config.php')) { - echo "
Warning: You already have a config.php file. - Configuration and database would be overwritten if you continued.
"; - } - - echo '
'; - echo ''; - $writable = check_writable('include', 'Checking if ./include is writable'); - if (file_exists('include/config.php')) { - $writable += check_writable('include/config.php', 'Checking if include/config.php is writable'); - } - - echo '
'; - - echo "
Warning: This installer will overwrite and destroy - your existing Pandora FMS configuration and Database. Before continue, - please be sure that you have no valuable Pandora FMS data in your Database.
-
"; - - echo "
Upgrade: - If you want to upgrade from Pandora FMS 4.x to 5.0 version, please use the migration tool inside /extras directory in this setup. -
"; - - echo '
'; - - if ($writable == 0) { - echo "
"; - echo ""; - echo '
'; - } else { - echo "
ERROR:You need to setup permissions to be able to write in ./include directory
"; - } - - echo '
'; - - echo "
"; - echo " -
-
- Pandora FMS is an OpenSource Software project registered at - SourceForge -
-
"; -} - - -function install_step1_licence() -{ - echo " -
-
- ".print_logo_status(2, 6)." -
-

GPL2 Licence terms agreement

-

Pandora FMS is an OpenSource software project licensed under the GPL2 licence. Pandora FMS includes, as well, another software also licensed under LGPL and BSD licenses. Before continue, you must accept the licence terms.. -

For more information, please refer to our website at http://pandorafms.org and contact us if you have any kind of question about the usage of Pandora FMS

-

If you dont accept the licence terms, please, close your browser and delete Pandora FMS files.

- "; - - if (!file_exists('COPYING')) { - echo "
Licence file 'COPYING' is not present in your distribution. This means you have some 'partial' Pandora FMS distribution. We cannot continue without accepting the licence file."; - echo '
'; - } else { - echo "
"; - echo "'; - echo '

'; - echo "

"; - } - - echo '
'; - - echo "
-
-
- Pandora FMS is an OpenSource Software project registered at - SourceForge -
-
"; -} - - -function install_step2() -{ - echo " -
-
- ".print_logo_status(3, 6)." -
"; - echo '

Checking software dependencies

'; - echo ''; - $res = 0; - $res += check_variable(phpversion(), '7.0', 'PHP version >= 7.0', 1); - $res += check_extension('gd', 'PHP GD extension'); - $res += check_extension('ldap', 'PHP LDAP extension'); - $res += check_extension('snmp', 'PHP SNMP extension'); - $res += check_extension('session', 'PHP session extension'); - $res += check_extension('gettext', 'PHP gettext extension'); - $res += check_extension('mbstring', 'PHP Multibyte String'); - $res += check_extension('zip', 'PHP Zip'); - $res += check_extension('zlib', 'PHP Zlib extension'); - $res += check_extension('json', 'PHP json extension'); - $res += check_extension('curl', 'CURL (Client URL Library)'); - $res += check_extension('filter', 'PHP filter extension'); - $res += check_extension('calendar', 'PHP calendar extension'); - if (PHP_OS == 'FreeBSD') { - $res += check_exists('/usr/local/bin/twopi', 'Graphviz Binary'); - } else if (PHP_OS == 'NetBSD') { - $res += check_exists('/usr/pkg/bin/twopi', 'Graphviz Binary'); - } else if (substr(PHP_OS, 0, 3) == 'WIN') { - $res += check_exists("..\\..\\..\\Graphviz\\bin\\twopi.exe", 'Graphviz Binary'); - } else { - $res += check_exists('/usr/bin/twopi', 'Graphviz Binary'); - } - - echo ''; - check_extension('mysqli', 'PHP MySQL(mysqli) extension'); - echo '
'; - echo "DB Engines"; - echo ''; - echo '
'; - - if ($res > 0) { - echo " -
You have some incomplete - dependencies. Please correct them or this installer - will not be able to finish your installation. -
-
- Remember, if you install any PHP module to comply - with these dependences, you need to restart - your HTTP/Apache server after it to use the new - modules. -
-
- Ignore it. -
"; - } else { - echo "
"; - echo " - "; - echo '
'; - } - - echo '
'; - echo "
"; - echo " -
-
-
-
- Pandora FMS is an OpenSource Software project registered at - SourceForge -
- "; -} - - -function install_step3() -{ - $options = ''; - if (extension_loaded('mysql')) { - $options .= ""; - } - - if (extension_loaded('mysqli')) { - $options .= ""; - } - - $error = false; - if (empty($options)) { - $error = true; - } - - echo " -
-
- ".print_logo_status(4, 6)." -
-

Environment and database setup

-

- This wizard will create your Pandora FMS database, - and populate it with all the data needed to run for the first time. -

-

- You need a privileged user to create database schema, this is usually root user. - Information about root user will not be used or stored anymore. -

-

- You can also deploy the scheme into an existing Database. - In this case you need a privileged Database user and password of that instance. -

-

- Now, please, complete all details to configure your database and environment setup. -

-
- Warning: This installer will overwrite and destroy your existing - Pandora FMS configuration and Database. Before continue, - please be sure that you have no valuable Pandora FMS data in your Database. -

-
"; - - if (extension_loaded('oci8')) { - echo "
For Oracle installation an existing Database with a privileged user is needed.
"; - } - - if (!$error) { - echo ""; - } - - echo ""; - echo '"; - - // the field dbgrant is only shown when the DB host is different from 127.0.0.1 or localhost - echo " - - "; - - echo " "; - - echo ""; - echo '
'; - echo 'DB Engine
'; - - if ($error) { - echo " -
- Warning: You haven't a any DB engine with PHP. Please check the previous step to DB engine dependencies. -
"; - } else { - echo "'; - - echo '
'; - echo ' Installation in
'; - echo "'; - } - - echo "
DB User with privileges
- - -
DB Password for this user
- - -
DB Hostname
- - -
DB Name (pandora by default)
- - -
Drop Database if exists
- -
Full path to HTTP publication directory
- For example /var/www/pandora_console/ -
- - -
'; - echo "URL path to Pandora FMS Console
- For example '/pandora_console' -
- -
- "; - - if (!$error) { - echo "
"; - echo " - "; - echo '
'; - ?> - - '; - - echo ''; - - echo "
"; - echo "
-
- Pandora FMS is an OpenSource Software project registered at - SourceForge -
-
"; -} - - -function install_step4() -{ - $pandora_config = 'include/config.php'; - - if ((! isset($_POST['user'])) || (! isset($_POST['dbname'])) || (! isset($_POST['host'])) - || (! isset($_POST['pass'])) || (!isset($_POST['engine'])) || (! isset($_POST['db_action'])) - ) { - $dbpassword = ''; - $dbuser = ''; - $dbhost = ''; - $dbname = ''; - $engine = ''; - $dbaction = ''; - $dbgrant = ''; - } else { - $engine = $_POST['engine']; - $dbpassword = $_POST['pass']; - $dbuser = $_POST['user']; - $dbhost = $_POST['host']; - $dbaction = $_POST['db_action']; - if (isset($_POST['dbgrant']) && $_POST['dbgrant'] != '') { - $dbgrant = $_POST['dbgrant']; - } else { - $dbgrant = $_SERVER['SERVER_ADDR']; - } - - if (isset($_POST['drop'])) { - $dbdrop = $_POST['drop']; - } else { - $dbdrop = 0; - } - - $dbname = $_POST['dbname']; - if (isset($_POST['url'])) { - $url = $_POST['url']; - } else { - $url = 'http://localhost'; - } - - if (isset($_POST['path'])) { - $path = $_POST['path']; - $path = str_replace('\\', '/', $path); - // Windows compatibility - } else { - $path = '/var/www'; - } - } - - $everything_ok = 0; - $step1 = 0; - $step2 = 0; - $step3 = 0; - $step4 = 0; - $step5 = 0; - $step6 = 0; - $step7 = 0; - - echo " -
-
- ".print_logo_status(5, 6)." -
-

Creating database and default configuration file

- "; - switch ($engine) { - case 'mysql': - if (! mysql_connect($dbhost, $dbuser, $dbpassword)) { - check_generic(0, 'Connection with Database'); - } else { - check_generic(1, 'Connection with Database'); - - // Drop database if needed and don't want to install over an existing DB - if ($dbdrop == 1) { - mysql_query("DROP DATABASE IF EXISTS `$dbname`"); - } - - // Create schema - if ($dbaction == 'db_new' || $dbdrop == 1) { - $step1 = mysql_query("CREATE DATABASE `$dbname`"); - check_generic($step1, "Creating database '$dbname'"); - } else { - $step1 = 1; - } - - if ($step1 == 1) { - $step2 = mysql_select_db($dbname); - check_generic($step2, "Opening database '$dbname'"); - - $step3 = parse_mysql_dump('pandoradb.sql'); - check_generic($step3, 'Creating schema'); - - $step4 = parse_mysql_dump('pandoradb_data.sql'); - check_generic($step4, 'Populating database'); - if (PHP_OS == 'FreeBSD') { - $step_freebsd = adjust_paths_for_freebsd($engine); - check_generic($step_freebsd, 'Adjusting paths in database for FreeBSD'); - } - - $random_password = random_name(8); - $host = $dbhost; - // set default granted origin to the origin of the queries - if (($dbhost != 'localhost') && ($dbhost != '127.0.0.1')) { - $host = $dbgrant; - // if the granted origin is different from local machine, set the valid origin - } - - $step5 = mysql_query( - "GRANT ALL PRIVILEGES ON `$dbname`.* to pandora@$host - IDENTIFIED BY '".$random_password."'" - ); - mysql_query('FLUSH PRIVILEGES'); - check_generic($step5, "Established privileges for user pandora. A new random password has been generated: $random_password
Please write it down, you will need to setup your Pandora FMS server, editing the /etc/pandora/pandora_server.conf file
"); - - $step6 = is_writable('include'); - check_generic($step6, "Write permissions to save config file in './include'"); - - $cfgin = fopen('include/config.inc.php', 'r'); - $cfgout = fopen($pandora_config, 'w'); - $config_contents = fread($cfgin, filesize('include/config.inc.php')); - $dbtype = 'mysql'; - $config_new = ''; - $step7 = fputs($cfgout, $config_new); - $step7 = ($step7 + fputs($cfgout, $config_contents)); - if ($step7 > 0) { - $step7 = 1; - } - - fclose($cfgin); - fclose($cfgout); - chmod($pandora_config, 0600); - check_generic($step7, "Created new config file at '".$pandora_config."'"); - } - } - - if (($step7 + $step6 + $step5 + $step4 + $step3 + $step2 + $step1) == 7) { - $everything_ok = 1; - } - break; - - case 'mysqli': - $connection = mysqli_connect($dbhost, $dbuser, $dbpassword); - if (mysqli_connect_error() > 0) { - check_generic(0, 'Connection with Database'); - } else { - check_generic(1, 'Connection with Database'); - - // Drop database if needed and don't want to install over an existing DB - if ($dbdrop == 1) { - mysqli_query($connection, "DROP DATABASE IF EXISTS `$dbname`"); - } - - // Create schema - if ($dbaction == 'db_new' || $dbdrop == 1) { - $step1 = mysqli_query($connection, "CREATE DATABASE `$dbname`"); - check_generic($step1, "Creating database '$dbname'"); - } else { - $step1 = 1; - } - - if ($step1 == 1) { - $step2 = mysqli_select_db($connection, $dbname); - check_generic($step2, "Opening database '$dbname'"); - - $step3 = parse_mysqli_dump($connection, 'pandoradb.sql'); - check_generic($step3, 'Creating schema'); - - $step4 = parse_mysqli_dump($connection, 'pandoradb_data.sql'); - check_generic($step4, 'Populating database'); - if (PHP_OS == 'FreeBSD') { - $step_freebsd = adjust_paths_for_freebsd($engine, $connection); - check_generic($step_freebsd, 'Adjusting paths in database for FreeBSD'); - } - - $random_password = random_name(8); - $host = $dbhost; - // set default granted origin to the origin of the queries - if (($dbhost != 'localhost') && ($dbhost != '127.0.0.1')) { - $host = $dbgrant; - // if the granted origin is different from local machine, set the valid origin - } - - $step5 = mysqli_query( - $connection, - "GRANT ALL PRIVILEGES ON `$dbname`.* to pandora@$host - IDENTIFIED BY '".$random_password."'" - ); - mysqli_query($connection, 'FLUSH PRIVILEGES'); - check_generic($step5, "Established privileges for user pandora. A new random password has been generated: $random_password
Please write it down, you will need to setup your Pandora FMS server, editing the /etc/pandora/pandora_server.conf file
"); - - $step6 = is_writable('include'); - check_generic($step6, "Write permissions to save config file in './include'"); - - $cfgin = fopen('include/config.inc.php', 'r'); - $cfgout = fopen($pandora_config, 'w'); - $config_contents = fread($cfgin, filesize('include/config.inc.php')); - $dbtype = 'mysql'; - $config_new = ''; - $step7 = fputs($cfgout, $config_new); - $step7 = ($step7 + fputs($cfgout, $config_contents)); - if ($step7 > 0) { - $step7 = 1; - } - - fclose($cfgin); - fclose($cfgout); - chmod($pandora_config, 0600); - check_generic($step7, "Created new config file at '".$pandora_config."'"); - } - } - - if (($step7 + $step6 + $step5 + $step4 + $step3 + $step2 + $step1) == 7) { - $everything_ok = 1; - } - break; - } - - echo '
'; - - if ($everything_ok == 1) { - echo "
"; - echo " - "; - echo '
'; - } else { - $info = "
There were some problems. - Installation was not completed. -

Please correct failures before trying again. - All database "; - if ($engine == 'oracle') { - $info .= 'objects '; - } else { - $info .= 'schemes '; - } - - $info .= 'created in this step have been dropped.

-
'; - echo $info; - - switch ($engine) { - case 'mysql': - if (mysql_error() != '') { - echo "
ERROR: ".mysql_error().'.
'; - } - - if ($step1 == 1) { - mysql_query("DROP DATABASE $dbname"); - } - break; - - case 'mysqli': - if (mysqli_error($connection) != '') { - echo "
ERROR: ".mysqli_error($connection).'.
'; - } - - if ($step1 == 1) { - mysqli_query($connection, "DROP DATABASE $dbname"); - } - break; - } - - echo '
'; - } - - echo '
'; - echo "
"; - echo " -
-
- Pandora FMS is an Open Source Software project registered at - SourceForge -
-
"; -} - - -function install_step5() -{ - echo " -
-
- ".print_logo_status(6, 6)." -
-

Installation complete

-

For security, you now must manually delete this installer - ('install.php') file before trying to access to your Pandora FMS console. -

You should also install Pandora FMS Servers before trying to monitor anything; - please read documentation on how to install it.

-

Default user is 'admin' with password 'pandora', - please change it both as soon as possible.

-

Don't forget to check http://pandorafms.com - for updates. -

Select if you want to rename 'install.php'.

-
- - -
-


. -

-
"; - - echo "
-
- Pandora FMS is an OpenSource Software project registered at - SourceForge -
-
"; -} From 86509caf6b13b372cd7c6bf52c54954a6766d903 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Tue, 26 Feb 2019 14:44:51 +0100 Subject: [PATCH 07/33] Fixed downtimes disabled and enabled agents Former-commit-id: a5c2362e4faf6c0ed9ff2047b6d070aa4d7cdac8 --- .../include/functions_planned_downtimes.php | 20 ++++++++++++++----- pandora_server/bin/pandora_server | 2 +- pandora_server/lib/PandoraFMS/Core.pm | 6 ++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/pandora_console/include/functions_planned_downtimes.php b/pandora_console/include/functions_planned_downtimes.php index 6660a19f10..7f1a587b65 100644 --- a/pandora_console/include/functions_planned_downtimes.php +++ b/pandora_console/include/functions_planned_downtimes.php @@ -534,9 +534,10 @@ function planned_downtimes_migrate_malformed_downtimes_copy_items($original_down /** * Stop a planned downtime. * - * @param array Planned downtime data. + * @param array $downtime Planned downtime data. * - * @return mixes False on error or an array with the result and a message of the operation. + * @return mixed False on error or an array with the result and a message of + * the operation. */ function planned_downtimes_stop($downtime) { @@ -566,7 +567,9 @@ function planned_downtimes_stop($downtime) case 'periodically': return false; - break; + default: + // Nothing to do. + break; } $message .= ui_print_result_message( @@ -593,7 +596,7 @@ function planned_downtimes_stop($downtime) true ); - // Reenabled the Agents or Modules or alerts...depends of type + // Reenabled the Agents or Modules or alerts...depends of type. switch ($downtime['type_downtime']) { case 'quiet': $agents = db_get_all_rows_filter( @@ -658,7 +661,10 @@ function planned_downtimes_stop($downtime) foreach ($agents as $agent) { $result = db_process_sql_update( 'tagente', - ['disabled' => 0], + [ + 'disabled' => 0, + 'update_module_count' => 1, + ], ['id_agente' => $agent['id_agent']] ); @@ -702,6 +708,10 @@ function planned_downtimes_stop($downtime) } } break; + + default: + // Nothing to do. + break; } $message .= ui_print_info_message( diff --git a/pandora_server/bin/pandora_server b/pandora_server/bin/pandora_server index 53265cb0a0..bb177be783 100755 --- a/pandora_server/bin/pandora_server +++ b/pandora_server/bin/pandora_server @@ -306,7 +306,7 @@ sub pandora_server_tasks ($) { if (($counter % 30) == 0) { # Update module status and fired alert counts - my @agents = get_db_rows ($dbh, 'SELECT id_agente, nombre, update_module_count, update_alert_count, update_secondary_groups FROM tagente WHERE disabled = 0 AND (update_module_count=1 OR update_alert_count=1 OR update_secondary_groups=1)'); + my @agents = get_db_rows ($dbh, 'SELECT id_agente, nombre, update_module_count, update_alert_count, update_secondary_groups FROM tagente WHERE (update_module_count=1 OR update_alert_count=1 OR update_secondary_groups=1)'); foreach my $agent (@agents) { logger ($pa_config, "Updating module status and fired alert counts for agent " . $agent->{'nombre'}, 10); diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 4155b2d432..f45731ba13 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -1820,7 +1820,8 @@ sub pandora_planned_downtime_set_disabled_elements($$$) { WHERE tp.id_agent = ta.id_agente AND tp.id_downtime = ?',$downtime->{'id'}); db_do($dbh,'UPDATE tagente ta, tplanned_downtime_agents tpa - SET ta.disabled = 1 WHERE tpa.id_agent = ta.id_agente AND + SET ta.disabled = 1, ta.update_module_count = 1 + WHERE tpa.id_agent = ta.id_agente AND tpa.id_downtime = ?',$downtime->{'id'}); } else { @@ -1857,7 +1858,8 @@ sub pandora_planned_downtime_unset_disabled_elements($$$) { if ($only_alerts == 0) { db_do($dbh,'UPDATE tagente ta, tplanned_downtime_agents tpa - set ta.disabled = 0 WHERE tpa.id_agent = ta.id_agente AND + set ta.disabled = 0, ta.update_module_count = 1 + WHERE tpa.id_agent = ta.id_agente AND tpa.manually_disabled = 0 AND tpa.id_downtime = ?',$downtime->{'id'}); } else { my @downtime_agents = get_db_rows($dbh, 'SELECT * From e19e7d3484c29b7bdf1a6f5ae3408bcdf770ecf3 Mon Sep 17 00:00:00 2001 From: fermin831 Date: Tue, 26 Feb 2019 17:30:21 +0100 Subject: [PATCH 08/33] Modified agents_create_agent to permit create agents with name as alias Former-commit-id: 9d3524e2dc02beb92d819cd877b9b44f64154fd5 --- pandora_console/include/functions_agents.php | 30 +++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index 8c4f5db14b..0ac9bb876f 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -82,17 +82,25 @@ function agents_get_agent_id_by_alias($alias) /** - * Creates an agent + * Creates an agent. * - * @param string Agent name. - * @param string Group to be included. - * @param int Agent interval - * @param string Agent IP + * @param string $name Agent name. + * @param string $id_group Group to be included. + * @param integer $interval Agent interval. + * @param string $ip_address Agent IP. + * @param mixed $values Other tagente fields. + * @param boolean $alias_as_name True to not assign an alias as name. * * @return integer New agent id if created. False if it could not be created. */ -function agents_create_agent($name, $id_group, $interval, $ip_address, $values=false) -{ +function agents_create_agent( + $name, + $id_group, + $interval, + $ip_address, + $values=false, + $alias_as_name=false +) { if (empty($name)) { return false; } @@ -101,7 +109,7 @@ function agents_create_agent($name, $id_group, $interval, $ip_address, $values=f return false; } - // Check interval greater than zero + // Check interval greater than zero. if ($interval < 0) { $interval = false; } @@ -115,7 +123,7 @@ function agents_create_agent($name, $id_group, $interval, $ip_address, $values=f } $values['alias'] = $name; - $values['nombre'] = hash('sha256', $name.'|'.$ip_address.'|'.time().'|'.sprintf('%04d', rand(0, 10000))); + $values['nombre'] = ($alias_as_name === false) ? hash('sha256', $name.'|'.$ip_address.'|'.time().'|'.sprintf('%04d', rand(0, 10000))) : $name; $values['id_grupo'] = $id_group; $values['intervalo'] = $interval; @@ -128,12 +136,12 @@ function agents_create_agent($name, $id_group, $interval, $ip_address, $values=f return false; } - // Create address for this agent in taddress + // Create address for this agent in taddress. if (!empty($ip_address)) { agents_add_address($id_agent, $ip_address); } - db_pandora_audit('Agent management', "New agent '$name' created"); + db_pandora_audit('Agent management', 'New agent '.$name.' created'); return $id_agent; } From 26560c734ca93b970ff8f94a77ae35c91cdab000 Mon Sep 17 00:00:00 2001 From: artica Date: Wed, 27 Feb 2019 11:25:50 +0100 Subject: [PATCH 09/33] Updated version and build strings. Former-commit-id: 39df6ee0aee9f29c9afb8729f9e95b316ca8cd67 --- pandora_agents/pc/AIX/pandora_agent.conf | 2 +- pandora_agents/pc/FreeBSD/pandora_agent.conf | 2 +- pandora_agents/pc/HP-UX/pandora_agent.conf | 2 +- pandora_agents/pc/Linux/pandora_agent.conf | 2 +- pandora_agents/pc/NT4/pandora_agent.conf | 2 +- pandora_agents/pc/SunOS/pandora_agent.conf | 2 +- pandora_agents/pc/Win32/pandora_agent.conf | 2 +- pandora_agents/shellscript/aix/pandora_agent.conf | 2 +- pandora_agents/shellscript/bsd-ipso/pandora_agent.conf | 2 +- pandora_agents/shellscript/hp-ux/pandora_agent.conf | 2 +- pandora_agents/shellscript/linux/pandora_agent.conf | 2 +- pandora_agents/shellscript/mac_osx/pandora_agent.conf | 2 +- pandora_agents/shellscript/openWRT/pandora_agent.conf | 2 +- pandora_agents/shellscript/solaris/pandora_agent.conf | 2 +- pandora_agents/unix/AIX/pandora_agent.conf | 2 +- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/Darwin/pandora_agent.conf | 2 +- pandora_agents/unix/FreeBSD/pandora_agent.conf | 2 +- pandora_agents/unix/HP-UX/pandora_agent.conf | 2 +- pandora_agents/unix/Linux/pandora_agent.conf | 2 +- pandora_agents/unix/NT4/pandora_agent.conf | 2 +- pandora_agents/unix/NetBSD/pandora_agent.conf | 2 +- pandora_agents/unix/SunOS/pandora_agent.conf | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 4 ++-- pandora_agents/unix/pandora_agent.spec | 4 ++-- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/bin/pandora_agent.conf | 2 +- pandora_agents/win32/installer/pandora.mpi | 4 ++-- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 4 ++-- pandora_console/pandora_console.redhat.spec | 4 ++-- pandora_console/pandora_console.spec | 4 ++-- pandora_console/pandora_console_install | 2 +- pandora_console/pandoradb_data.sql | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/conf/pandora_server.conf.new | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 4 ++-- pandora_server/pandora_server.spec | 4 ++-- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 50 files changed, 58 insertions(+), 58 deletions(-) diff --git a/pandora_agents/pc/AIX/pandora_agent.conf b/pandora_agents/pc/AIX/pandora_agent.conf index bff05d8732..07054ee2e1 100644 --- a/pandora_agents/pc/AIX/pandora_agent.conf +++ b/pandora_agents/pc/AIX/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, AIX version +# Version 7.0NG.732, AIX version # Licensed under GPL license v2, # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/pc/FreeBSD/pandora_agent.conf b/pandora_agents/pc/FreeBSD/pandora_agent.conf index 938691a2af..9d8a49bb99 100644 --- a/pandora_agents/pc/FreeBSD/pandora_agent.conf +++ b/pandora_agents/pc/FreeBSD/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, FreeBSD Version +# Version 7.0NG.732, FreeBSD Version # Licensed under GPL license v2, # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/pc/HP-UX/pandora_agent.conf b/pandora_agents/pc/HP-UX/pandora_agent.conf index d6f6d248c9..c02e4647e1 100644 --- a/pandora_agents/pc/HP-UX/pandora_agent.conf +++ b/pandora_agents/pc/HP-UX/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, HP-UX Version +# Version 7.0NG.732, HP-UX Version # Licensed under GPL license v2, # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/pc/Linux/pandora_agent.conf b/pandora_agents/pc/Linux/pandora_agent.conf index 0de221f790..153113e070 100644 --- a/pandora_agents/pc/Linux/pandora_agent.conf +++ b/pandora_agents/pc/Linux/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, GNU/Linux +# Version 7.0NG.732, GNU/Linux # Licensed under GPL license v2, # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/pc/NT4/pandora_agent.conf b/pandora_agents/pc/NT4/pandora_agent.conf index cb90a522a3..6ddeba7edc 100644 --- a/pandora_agents/pc/NT4/pandora_agent.conf +++ b/pandora_agents/pc/NT4/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, GNU/Linux +# Version 7.0NG.732, GNU/Linux # Licensed under GPL license v2, # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/pc/SunOS/pandora_agent.conf b/pandora_agents/pc/SunOS/pandora_agent.conf index 1758206b7b..502317f893 100644 --- a/pandora_agents/pc/SunOS/pandora_agent.conf +++ b/pandora_agents/pc/SunOS/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, Solaris Version +# Version 7.0NG.732, Solaris Version # Licensed under GPL license v2, # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/pc/Win32/pandora_agent.conf b/pandora_agents/pc/Win32/pandora_agent.conf index bc4a50047f..96b20ea7e3 100644 --- a/pandora_agents/pc/Win32/pandora_agent.conf +++ b/pandora_agents/pc/Win32/pandora_agent.conf @@ -1,6 +1,6 @@ # Base config file for Pandora FMS Windows Agent # (c) 2006-2010 Artica Soluciones Tecnologicas -# Version 7.0NG.731 +# Version 7.0NG.732 # This program is Free Software, you can redistribute it and/or modify it # under the terms of the GNU General Public Licence as published by the Free Software diff --git a/pandora_agents/shellscript/aix/pandora_agent.conf b/pandora_agents/shellscript/aix/pandora_agent.conf index 6ca5613d16..200ff9db97 100644 --- a/pandora_agents/shellscript/aix/pandora_agent.conf +++ b/pandora_agents/shellscript/aix/pandora_agent.conf @@ -1,6 +1,6 @@ # Fichero de configuracion base de agentes de Pandora # Base config file for Pandora agents -# Version 7.0NG.731, AIX version +# Version 7.0NG.732, AIX version # General Parameters # ================== diff --git a/pandora_agents/shellscript/bsd-ipso/pandora_agent.conf b/pandora_agents/shellscript/bsd-ipso/pandora_agent.conf index b55b3033f6..2002f4db65 100644 --- a/pandora_agents/shellscript/bsd-ipso/pandora_agent.conf +++ b/pandora_agents/shellscript/bsd-ipso/pandora_agent.conf @@ -1,6 +1,6 @@ # Fichero de configuracion base de agentes de Pandora # Base config file for Pandora agents -# Version 7.0NG.731 +# Version 7.0NG.732 # FreeBSD/IPSO version # Licenced under GPL licence, 2003-2007 Sancho Lerena diff --git a/pandora_agents/shellscript/hp-ux/pandora_agent.conf b/pandora_agents/shellscript/hp-ux/pandora_agent.conf index 4a5a240381..f9c19dbd06 100644 --- a/pandora_agents/shellscript/hp-ux/pandora_agent.conf +++ b/pandora_agents/shellscript/hp-ux/pandora_agent.conf @@ -1,6 +1,6 @@ # Fichero de configuracion base de agentes de Pandora # Base config file for Pandora agents -# Version 7.0NG.731, HPUX Version +# Version 7.0NG.732, HPUX Version # General Parameters # ================== diff --git a/pandora_agents/shellscript/linux/pandora_agent.conf b/pandora_agents/shellscript/linux/pandora_agent.conf index 8e2600567a..dc272a7a71 100644 --- a/pandora_agents/shellscript/linux/pandora_agent.conf +++ b/pandora_agents/shellscript/linux/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731 +# Version 7.0NG.732 # Licensed under GPL license v2, # (c) 2003-2010 Artica Soluciones Tecnologicas # please visit http://pandora.sourceforge.net diff --git a/pandora_agents/shellscript/mac_osx/pandora_agent.conf b/pandora_agents/shellscript/mac_osx/pandora_agent.conf index 8dfed3e54d..5a466677d2 100644 --- a/pandora_agents/shellscript/mac_osx/pandora_agent.conf +++ b/pandora_agents/shellscript/mac_osx/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731 +# Version 7.0NG.732 # Licensed under GPL license v2, # (c) 2003-2009 Artica Soluciones Tecnologicas # please visit http://pandora.sourceforge.net diff --git a/pandora_agents/shellscript/openWRT/pandora_agent.conf b/pandora_agents/shellscript/openWRT/pandora_agent.conf index ca04eca187..170188cc6f 100644 --- a/pandora_agents/shellscript/openWRT/pandora_agent.conf +++ b/pandora_agents/shellscript/openWRT/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731 +# Version 7.0NG.732 # Licensed under GPL license v2, # please visit http://pandora.sourceforge.net diff --git a/pandora_agents/shellscript/solaris/pandora_agent.conf b/pandora_agents/shellscript/solaris/pandora_agent.conf index 563805acdb..aad04ca60d 100644 --- a/pandora_agents/shellscript/solaris/pandora_agent.conf +++ b/pandora_agents/shellscript/solaris/pandora_agent.conf @@ -1,6 +1,6 @@ # Fichero de configuracion base de agentes de Pandora # Base config file for Pandora agents -# Version 7.0NG.731, Solaris version +# Version 7.0NG.732, Solaris version # General Parameters # ================== diff --git a/pandora_agents/unix/AIX/pandora_agent.conf b/pandora_agents/unix/AIX/pandora_agent.conf index 9d787783ff..3ce7da3c7e 100644 --- a/pandora_agents/unix/AIX/pandora_agent.conf +++ b/pandora_agents/unix/AIX/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, AIX version +# Version 7.0NG.732, AIX version # Licensed under GPL license v2, # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 015f306205..e22ad033cd 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.731-190227 +Version: 7.0NG.732 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 4e132515b9..3bf9ddbeab 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.731-190227" +pandora_version="7.0NG.732" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/Darwin/pandora_agent.conf b/pandora_agents/unix/Darwin/pandora_agent.conf index 2164faaedc..35202fcbe5 100644 --- a/pandora_agents/unix/Darwin/pandora_agent.conf +++ b/pandora_agents/unix/Darwin/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, GNU/Linux +# Version 7.0NG.732, GNU/Linux # Licensed under GPL license v2, # Copyright (c) 2003-2012 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/FreeBSD/pandora_agent.conf b/pandora_agents/unix/FreeBSD/pandora_agent.conf index 0c5a190f9b..c505d5f75e 100644 --- a/pandora_agents/unix/FreeBSD/pandora_agent.conf +++ b/pandora_agents/unix/FreeBSD/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, FreeBSD Version +# Version 7.0NG.732, FreeBSD Version # Licensed under GPL license v2, # Copyright (c) 2003-2016 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/HP-UX/pandora_agent.conf b/pandora_agents/unix/HP-UX/pandora_agent.conf index f039431f7a..237bffb291 100644 --- a/pandora_agents/unix/HP-UX/pandora_agent.conf +++ b/pandora_agents/unix/HP-UX/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, HP-UX Version +# Version 7.0NG.732, HP-UX Version # Licensed under GPL license v2, # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/Linux/pandora_agent.conf b/pandora_agents/unix/Linux/pandora_agent.conf index df03402446..5a65e0e095 100644 --- a/pandora_agents/unix/Linux/pandora_agent.conf +++ b/pandora_agents/unix/Linux/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, GNU/Linux +# Version 7.0NG.732, GNU/Linux # Licensed under GPL license v2, # Copyright (c) 2003-2014 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/NT4/pandora_agent.conf b/pandora_agents/unix/NT4/pandora_agent.conf index 12421565e8..1394067390 100644 --- a/pandora_agents/unix/NT4/pandora_agent.conf +++ b/pandora_agents/unix/NT4/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, GNU/Linux +# Version 7.0NG.732, GNU/Linux # Licensed under GPL license v2, # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/NetBSD/pandora_agent.conf b/pandora_agents/unix/NetBSD/pandora_agent.conf index 6dd394db7a..677615a47c 100644 --- a/pandora_agents/unix/NetBSD/pandora_agent.conf +++ b/pandora_agents/unix/NetBSD/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, NetBSD Version +# Version 7.0NG.732, NetBSD Version # Licensed under GPL license v2, # Copyright (c) 2003-2010 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/SunOS/pandora_agent.conf b/pandora_agents/unix/SunOS/pandora_agent.conf index 3d7294a56a..89d5b46100 100644 --- a/pandora_agents/unix/SunOS/pandora_agent.conf +++ b/pandora_agents/unix/SunOS/pandora_agent.conf @@ -1,5 +1,5 @@ # Base config file for Pandora FMS agents -# Version 7.0NG.731, Solaris Version +# Version 7.0NG.732, Solaris Version # Licensed under GPL license v2, # Copyright (c) 2003-2009 Artica Soluciones Tecnologicas # http://www.pandorafms.com diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 97b13365d3..d23b2dbc8b 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -41,7 +41,7 @@ my $Sem = undef; # Semaphore used to control the number of threads my $ThreadSem = undef; -use constant AGENT_VERSION => '7.0NG.731'; +use constant AGENT_VERSION => '7.0NG.732'; use constant AGENT_BUILD => '190227'; # Agent log default file size maximum and instances diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index ce3173b9f3..68e68b96da 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -2,8 +2,8 @@ #Pandora FMS Linux Agent # %define name pandorafms_agent_unix -%define version 7.0NG.731 -%define release 190227 +%define version 7.0NG.732 +%define release 1 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index f5be518e22..d0ba8171de 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -2,8 +2,8 @@ #Pandora FMS Linux Agent # %define name pandorafms_agent_unix -%define version 7.0NG.731 -%define release 190227 +%define version 7.0NG.732 +%define release 1 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index e27ad14333..066c36036d 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -9,7 +9,7 @@ # Please see http://www.pandorafms.org. This code is licensed under GPL 2.0 license. # ********************************************************************** -PI_VERSION="7.0NG.731" +PI_VERSION="7.0NG.732" PI_BUILD="190227" OS_NAME=`uname -s` diff --git a/pandora_agents/win32/bin/pandora_agent.conf b/pandora_agents/win32/bin/pandora_agent.conf index aab9a2f315..3d1e208de8 100644 --- a/pandora_agents/win32/bin/pandora_agent.conf +++ b/pandora_agents/win32/bin/pandora_agent.conf @@ -1,6 +1,6 @@ # Base config file for Pandora FMS Windows Agent # (c) 2006-2017 Artica Soluciones Tecnologicas -# Version 7.0NG.731 +# Version 7.0NG.732 # This program is Free Software, you can redistribute it and/or modify it # under the terms of the GNU General Public Licence as published by the Free Software diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 3d62982f64..160347190c 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -3,7 +3,7 @@ AllowLanguageSelection {Yes} AppName -{Pandora FMS Windows Agent v7.0NG.731} +{Pandora FMS Windows Agent v7.0NG.732} ApplicationID {17E3D2CF-CA02-406B-8A80-9D31C17BD08F} @@ -2387,7 +2387,7 @@ Windows,BuildSeparateArchives {No} Windows,Executable -{<%AppName%>-<%Version%>-Setup<%Ext%>} +{<%AppName%>-Setup<%Ext%>} Windows,FileDescription {<%AppName%> <%Version%> Setup} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 8ce589ce8a..9698e9c322 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.731(Build 190227)") +#define PANDORA_VERSION ("7.0NG.732(Build 190227)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index f54a5ebd36..0feb88dcc9 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.731(Build 190227))" + VALUE "ProductVersion", "(7.0NG.732(Build 190227))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 8ece3fcc84..5e56471fa3 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.731-190227 +Version: 7.0NG.732 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index ea4a0bd5a1..6f582418aa 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.731-190227" +pandora_version="7.0NG.732" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 3a5efda30b..d5ca8db9fe 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -21,7 +21,7 @@ * Pandora build version and version */ $build_version = 'PC190227'; -$pandora_version = 'v7.0NG.731'; +$pandora_version = 'v7.0NG.732'; // Do not overwrite default timezone set if defined. $script_tz = @date_default_timezone_get(); diff --git a/pandora_console/install.php b/pandora_console/install.php index 0799f277b9..ae179b9418 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -128,8 +128,8 @@
Date: Wed, 27 Feb 2019 11:32:39 +0100 Subject: [PATCH 10/33] add changes to migrate script Former-commit-id: 7e1beeed2a8ff709cdd2e2ff992b610cd4aa7409 --- .../pandoradb_migrate_6.0_to_7.0.mysql.sql | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index 2492a9913f..a60e6bfd8a 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -1900,14 +1900,18 @@ CREATE TABLE IF NOT EXISTS `tevent_extended` ( -- ----------------------------------------------------- -- Table `tgis_map_layer_groups` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `tgis_map_layer_groups` ( - `layer_id` INT NOT NULL, - `group_id` MEDIUMINT(4) UNSIGNED NOT NULL, - `agent_id` INT(10) UNSIGNED NOT NULL COMMENT 'Used to link the position to the group', - PRIMARY KEY (`layer_id`, `group_id`), - FOREIGN KEY (`layer_id`) REFERENCES `tgis_map_layer` (`id_tmap_layer`) ON DELETE CASCADE, - FOREIGN KEY (`group_id`) REFERENCES `tgrupo` (`id_grupo`) ON DELETE CASCADE, - FOREIGN KEY (`agent_id`) REFERENCES `tagente` (`id_agente`) ON DELETE CASCADE +DROP TABLE IF EXISTS `tgis_map_layer_groups`; + +CREATE TABLE `tgis_map_layer_groups` ( + `layer_id` int(11) NOT NULL, + `group_id` mediumint(4) unsigned NOT NULL, + `agent_id` int(10) unsigned NOT NULL COMMENT 'Used to link the position to the group', + PRIMARY KEY (`layer_id`,`group_id`), + KEY `group_id` (`group_id`), + KEY `agent_id` (`agent_id`), + CONSTRAINT `tgis_map_layer_groups_ibfk_1` FOREIGN KEY (`layer_id`) REFERENCES `tgis_map_layer` (`id_tmap_layer`) ON DELETE CASCADE, + CONSTRAINT `tgis_map_layer_groups_ibfk_2` FOREIGN KEY (`group_id`) REFERENCES `tgrupo` (`id_grupo`) ON DELETE CASCADE, + CONSTRAINT `tgis_map_layer_groups_ibfk_3` FOREIGN KEY (`agent_id`) REFERENCES `tagente` (`id_agente`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ----------------------------------------------------- @@ -2018,6 +2022,11 @@ CREATE TABLE `tnotification_source_group_user` ( ON UPDATE CASCADE ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +-- ---------------------------------------------------------------------- +-- Table `tuser_task_scheduled` +-- ---------------------------------------------------------------------- +ALTER TABLE `tuser_task_scheduled` ADD COLUMN `flag_delete` tinyint(1) unsigned NOT NULL DEFAULT '0'; + -- ---------------------------------------------------------------------- -- Add alert command 'Generate notification' -- ---------------------------------------------------------------------- From e55e47cbfa80e12a31728e2cb207db2dc87b5aad Mon Sep 17 00:00:00 2001 From: daniel Date: Wed, 27 Feb 2019 11:35:00 +0100 Subject: [PATCH 11/33] change mr Former-commit-id: 4ec37be9caef34e88b3e5ca65bca2c1aee7f03dd --- pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql | 4 ++-- pandora_console/pandoradb_data.sql | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index 2492a9913f..d8377484c3 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -1199,13 +1199,13 @@ ALTER TABLE titem MODIFY `source_data` int(10) unsigned; INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30'); -INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 24); +INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 25); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png'); UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager'; DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise'; -INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '731'); +INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '732'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp'); -- --------------------------------------------------------------------- diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index b471ca22f0..25bff0eb4d 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -111,7 +111,7 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_report_front_logo', 'images/pandora_logo_white.jpg'), ('custom_report_front_header', ''), ('custom_report_front_footer', ''), -('MR', 24), +('MR', 25), ('identification_reminder', 1), ('identification_reminder_timestamp', 0), ('current_package_enterprise', '732'), From ec5c9d7c2765d5ec565fb11ee18287ed7c723b0b Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Wed, 27 Feb 2019 13:41:26 +0100 Subject: [PATCH 12/33] clippy returns Former-commit-id: b9ed010f5af1002593471a0d0298848b3593e41e --- pandora_console/general/header.php | 3 + pandora_console/include/functions_clippy.php | 108 ++++++++++++++----- 2 files changed, 83 insertions(+), 28 deletions(-) diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php index e35d401502..3d7ce7dd6e 100644 --- a/pandora_console/general/header.php +++ b/pandora_console/general/header.php @@ -294,6 +294,9 @@ config_check(); + +; + '; - echo ''; @@ -155,23 +102,17 @@ if (check_acl($config['id_user'], 0, 'AW') require 'godmode/menu.php'; echo '
'; -echo ''; -echo ''; -/* - echo '
'; - html_print_input_hidden('button_collapse', 1); - echo '
'; -*/ + // require ("links_menu.php"); echo '
'; // menu_container ui_require_jquery_file('cookie'); - -$config_fixed_menu = false; -if (isset($config['fixed_menu'])) { +/* + $config_fixed_menu = false; + if (isset($config['fixed_menu'])) { $config_fixed_menu = $config['fixed_menu']; -} +}*/ $config_fixed_header = false; if (isset($config['fixed_header'])) { @@ -184,34 +125,20 @@ if (isset($config['fixed_header'])) { -//var classic_menu; -//$(document).ready(function(){ +//var classic_menu; $('#button_collapse').on('click', function() { - -/* - var elem = document.getElementById('button_collapse'); -elem.className = elem.className.replace('button_collapse', 'cambiar'); -*/ if($('#menu_full').hasClass('menu_full_classic')){ localStorage.setItem("menuType", "collapsed"); - //$('#button_collapse').css('color','pink'); - document.getElementById("menu_type").innerHTML = localStorage.menuType; - $('ul.submenu').css('left', '59px');//hacer que esto se haga aqui - $('#top_btn').css('left', '0px'); + $('ul.submenu').css('left', '59px'); } else if($('#menu_full').hasClass('menu_full_collapsed')){ localStorage.setItem("menuType", "classic"); - //$('#button_collapse').css('color','blue'); - document.getElementById("menu_type").innerHTML = localStorage.menuType; - $('ul.submenu').css('left', '214px');//hacer que esto se haga aqui - $('#top_btn').css('left', '77.5px'); + $('ul.submenu').css('left', '214px'); } else{ console.log('else'); } - /* $('.logo_full').toggleClass("logo_show logo_hide"); - $('.logo_icon').toggleClass('logo_hide logo_show');*/ $('.logo_full').toggle(); $('.logo_icon').toggle(); $('#menu_full').toggleClass('menu_full_classic menu_full_collapsed'); @@ -222,53 +149,31 @@ elem.className = elem.className.replace('button_collapse', 'cambiar'); $('li.menu_icon').toggleClass("no_hidden_menu menu_icon_collapsed"); - - console.log('entra click'); - console.log(localStorage.menuType); -/* -if ($('#button_collapse').text() == 'classic') { - classic_menu = true; -} -else { - classic_menu = false; -} -console.log('aqui comprueba click, y si el menu no ha cambiado, no deberia recargar todo'); -console.log(classic_menu); -*/ - + console.log('entra click: '+localStorage.menuType); }); -//}); var autohidden_menu = ; -var fixed_menu = ; +//var fixed_menu = + +; var fixed_header = ; var id_user = ""; var cookie_name = id_user + '-pandora_menu_state'; var cookie_name_encoded = btoa(cookie_name); var click_display = ""; -//var classic_menu = parseInt(""); +//var classic_menu = parseInt(" + +"); + -//if ((isNaN(classic_menu)) || (classic_menu == 0)) { -//f(localStorage.menuType == 'classic'){ -/* -if ($('#button_collapse').text() == 'classic') { - classic_menu = true; -} -else { - classic_menu = false; -} -console.log('aqui comprueba si es classic_menu'); -console.log(classic_menu); -*/ -/* -if (classic_menu) { - autohidden_menu = 1; -} -*/ var menuState = $.cookie(cookie_name_encoded); if (!menuState) { @@ -295,175 +200,7 @@ function close_submenus () { $('div.menu>ul>li.selected>ul').addClass('invisible'); } -$(document).ready( function() { -// repeticion de if - -var classic_menu; -if ($('#menu_type').text() == 'classic') { - classic_menu = true; - -} -else { - classic_menu = false; - -} - - - -console.log('aqui comprueba repeticion '); -console.log(classic_menu); -// fin repeticion de if - - - //Daniel maya 02/06/2016 Fixed menu position--INI - /* if (fixed_menu) { - $('div#menu') - .css('position', 'fixed') - .css('z-index', '9000') - .css('top','80px') - }else{ - $('div#menu') - .css('z-index', '9000') - } - if (fixed_header) { - $('div#menu') - .css('position', 'fixed') - .css('z-index', '9000') - .css('top','80px') - $('#menu_tab_frame_view').css('margin-top','20px') - }*/ - - //console.log(click_display); - - // if (autohidden_menu) { - handsInMenu = 0; - openTimeMenu = 0; - if (classic_menu) { - //$('div#title_menu').show(); - handsInMenu = 1; - openTimeMenu = new Date().getTime(); - /*$('#menu').css('width', '145px'); - $('#menu').css('position', 'block'); - $('div#menu').css('top', '80px'); - $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ - /*$('ul.submenu').css('left', '214px');*/ - /* $('#menu_full').css('width','215px'); - $('.button_collapse').css('width','215px'); - $('div#page').addClass('page_classic'); - $('#header_table').addClass('header_table_classic'); */ - console.log('a (es clasico)'); - /*$('#menu').mouseleave(function() { - handsInMenu = 0; - setTimeout(function() { - openedMenu = new Date().getTime() - openTimeMenu; - if(openedMenu > 1000 && handsInMenu == 0) { - /* $('#menu').css('width', '145px'); - $('#menu').css('position', 'block');*/ - /* console.log('a'); - console.log(classic_menu); - /* $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ - /* $('ul.submenu').css('left', '214px'); - /* $('#menu_full').css('width','215px'); - $('.button_collapse').css('width','215px'); - $('div#page').addClass('page_classic'); - $('#header_table').addClass('header_table_classic');*/ - /* } - }, 2500); - });*/ - } - else { - //NO ES CLASSIC MENU - if(!click_display){ - $('#menu').mouseenter(function() { - // $('div#title_menu').show(); - handsInMenu = 1; - openTimeMenu = new Date().getTime(); - /*$('#menu').css('width', '145px');*/ - console.log('b (collapsed)'); - /* $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ - $('li.menu_icon').find('li').addClass("no_hidden_menu"); - /*$('ul.submenu').css('left', '214px');*/ - /*$('#menu_full').css('width','215px'); - $('.button_collapse').css('width','215px'); - $('div#page').addClass('page_classic'); - $('#header_table').addClass('header_table_classic'); */ - }).mouseleave(function() { - handsInMenu = 0; - setTimeout(function() { - openedMenu = new Date().getTime() - openTimeMenu; - if(openedMenu > 1000 && handsInMenu == 0) { - console.log('c (collapsed)'); - /* $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed');*/ - $('li.menu_icon').find('li').removeClass( " no_hidden_menu" ); - /* $('ul.submenu').css('left', '44px');*/ - //$('div#title_menu').hide(); - } - }, 2500); - }); - }else{ - $(document).ready(function() { - $('#menu').on("click", function() { - //$('div#title_menu').show(); - handsInMenu = 1; - openTimeMenu = new Date().getTime(); - /* $('#menu').css('width', '145px');*/ - console.log('d (collapsed)'); - /* $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu");*/ - $('li.menu_icon').find('li').addClass("no_hidden_menu"); - /* $('ul.submenu').css('left', '44px');*/ - /* $('#menu_full').css('width','215px'); - $('.button_collapse').css('width','215px'); - $('div#page').addClass('page_classic'); - $('#header_table').addClass('header_table_classic'); */ - }) - .mouseleave(function() { - handsInMenu = 0; - setTimeout(function() { - openedMenu = new Date().getTime() - openTimeMenu; - if(openedMenu > 1000 && handsInMenu == 0) { - console.log('e (collapsed)'); - /* $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed');*/ - $('li.menu_icon').find('li').removeClass( " no_hidden_menu" ); - /* $('ul.submenu').css('left', '44px');*/ - //$('div#title_menu').hide(); - } - }, 5500); - }); - }); - } - } - /* } - else { - $('div#title_menu').hide(); - if(!click_display){ - $('#menu').mouseenter(function() { - handsInMenu = 1; - openTimeMenu = new Date().getTime(); - $('ul.submenu').css('left', '44px'); - }).mouseleave(function() { - handsInMenu = 0; - setTimeout(function() { - openedMenu = new Date().getTime() - openTimeMenu; - if(openedMenu > 1000 && handsInMenu == 0) { - console.log('f'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); - $('li.menu_icon').find('li').removeClass( " no_hidden_menu" ); - $('ul.submenu').css('left', '44px'); - } - }, 2500); - }); - } - } - } - } - } - } - } - }*/ -}); /* ]]> */ @@ -551,122 +288,49 @@ console.log(classic_menu); $(document).ready(function() { - - // if (!classic_menu) { - //Daniel maya 02/06/2016 Display menu with click --INI - if(!click_display){ - $('#container').click(function() { - openTime = 4000; - if( typeof(table_hover) != 'undefined') - $("ul#sub"+table_hover[0].id).hide(); - if( typeof(table_hover2) != 'undefined') - $("ul#sub"+table_hover2[0].id).hide(); - /* $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); - $('ul.submenu').css('left', '44px');*/ - //$('div#title_menu').hide(); - console.log('m (collapsed)'); - }); - }else{ - $('#main').click(function() { - openTime = 4000; - if( typeof(table_hover) != 'undefined') - $("ul#sub"+table_hover[0].id).hide(); - if( typeof(table_hover2) != 'undefined') - $("ul#sub"+table_hover2[0].id).hide(); - /*$('#menu').css('width', '45px'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); - $('ul.submenu').css('left', '44px');*/ - // $('div#title_menu').hide(); - console.log('n (collapsed)'); - }); - } - //Daniel maya 02/06/2016 Display menu with click --END - /* } - else { - if(!click_display){ - $('#container').click(function() { - openTime = 4000; - if( typeof(table_hover) != 'undefined') - $("ul#sub"+table_hover[0].id).hide(); - if( typeof(table_hover2) != 'undefined') - $("ul#sub"+table_hover2[0].id).hide(); - /*$('#menu').css('width', '145px');*/ - /* $('ul.submenu').css('left', '214px'); - $('#menu_full').css('width','215px'); - $('.button_collapse').css('width','215px'); - $('div#page').addClass('page_classic'); - $('#header_table').addClass('header_table_classic'); */ - /* console.log('o (es clasico)'); - }); - }else{ - $('#main').click(function() { - openTime = 4000; - if( typeof(table_hover) != 'undefined') - $("ul#sub"+table_hover[0].id).hide(); - if( typeof(table_hover2) != 'undefined') - $("ul#sub"+table_hover2[0].id).hide(); - /*$('#menu').css('width', '145px');*/ - /* $('ul.submenu').css('left', '214px'); - $('#menu_full').css('width','215px'); - $('.button_collapse').css('width','215px'); - $('div#page').addClass('page_classic'); - $('#header_table').addClass('header_table_classic'); */ - /* console.log('p (es clasico)'); - }); - } - }*/ - - // if (classic_menu) { - $('div.menu>ul>li>ul>li>a').click(function() { + if(!click_display){ + $('#container').click(function() { openTime = 4000; if( typeof(table_hover) != 'undefined') $("ul#sub"+table_hover[0].id).hide(); if( typeof(table_hover2) != 'undefined') $("ul#sub"+table_hover2[0].id).hide(); - /* $('ul.submenu').css('left', '214px');*/ - console.log('q (es clasico)'); - }); + + console.log('m'); // cuando no es de click, pero pinchas (dentro o fuera) (¿sirve de algo?) + }); + }else{ + $('#main').click(function() { + openTime = 4000; + if( typeof(table_hover) != 'undefined') + $("ul#sub"+table_hover[0].id).hide(); + if( typeof(table_hover2) != 'undefined') + $("ul#sub"+table_hover2[0].id).hide(); + + console.log('n'); //al pinchar fuera (es de click) + }); + } + + + $('div.menu>ul>li>ul>li>a').click(function() { + openTime = 4000; + if( typeof(table_hover) != 'undefined') + $("ul#sub"+table_hover[0].id).hide(); + if( typeof(table_hover2) != 'undefined') + $("ul#sub"+table_hover2[0].id).hide(); - $('div.menu>ul>li>ul>li>ul>li>a').click(function() { - openTime = 4000; - if( typeof(table_hover) != 'undefined') - $("ul#sub"+table_hover[0].id).hide(); - if( typeof(table_hover2) != 'undefined') - $("ul#sub"+table_hover2[0].id).hide(); - /*$('ul.submenu').css('left', '214px');*/ - console.log('r (es clasico)'); - }); - /* } - else { - $('div.menu>ul>li>ul>li>a').click(function() { - openTime = 4000; - if( typeof(table_hover) != 'undefined') - $("ul#sub"+table_hover[0].id).hide(); - if( typeof(table_hover2) != 'undefined') - $("ul#sub"+table_hover2[0].id).hide(); - /*$('#menu').css('width', '45px'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); - $('ul.submenu').css('left', '44px');*/ - //$('div#title_menu').hide(); - /* console.log('s (no es clasico)'); - }); - - $('div.menu>ul>li>ul>li>ul>li>a').click(function() { - openTime = 4000; - if( typeof(table_hover) != 'undefined') - $("ul#sub"+table_hover[0].id).hide(); - if( typeof(table_hover2) != 'undefined') - $("ul#sub"+table_hover2[0].id).hide(); - /* $('#menu').css('width', '45px'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); - $('ul.submenu').css('left', '44px');*/ - // $('div#title_menu').hide(); - /* console.log('t (no es clasico)'); - }); - }*/ + console.log('q'); //al pinchar en un enlace de un submenu + }); + + $('div.menu>ul>li>ul>li>ul>li>a').click(function() { + openTime = 4000; + if( typeof(table_hover) != 'undefined') + $("ul#sub"+table_hover[0].id).hide(); + if( typeof(table_hover2) != 'undefined') + $("ul#sub"+table_hover2[0].id).hide(); + + console.log('r'); //al pinchar en un enlace de un sub-submenu + }); + }); - - diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php index 6aeab7bd8b..e74844585f 100755 --- a/pandora_console/godmode/setup/setup_visuals.php +++ b/pandora_console/godmode/setup/setup_visuals.php @@ -120,15 +120,16 @@ if (enterprise_installed()) { $row++; } -$table_behaviour->data[$row][0] = __('Classic menu mode').ui_print_help_tip(__('Text menu options always visible, don\'t hide'), true); -$table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch( +/* + $table_behaviour->data[$row][0] = __('Classic menu mode').ui_print_help_tip(__('Text menu options always visible, don\'t hide'), true); + $table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch( 'classic_menu', 1, $config['classic_menu'], true -); -$row++; - + ); + $row++; +*/ echo '
'; echo ''.__('Behaviour configuration').''; html_print_table($table_behaviour); @@ -543,16 +544,16 @@ $table_styles->data[$row][1] = html_print_checkbox_toogle_switch( true ); $row++; - -$table_styles->data[$row][0] = __('Fixed menu'); -$table_styles->data[$row][1] = html_print_checkbox_toogle_switch( +/* + $table_styles->data[$row][0] = __('Fixed menu'); + $table_styles->data[$row][1] = html_print_checkbox_toogle_switch( 'fixed_menu', 1, $config['fixed_menu'], true -); -$row++; - + ); + $row++; +*/ // For 5.1 Autohidden menu feature $table_styles->data['autohidden'][0] = __('Autohidden menu'); $table_styles->data['autohidden'][1] = html_print_checkbox_toogle_switch( diff --git a/pandora_console/images/builder.menu_gray.png b/pandora_console/images/builder.menu_gray.png index 9c3b0b6ff3ac42c9a5aa5e755ee2c0530a81ad85..bee9c472baa1869628b9c7fcae30a0a85c0df1c1 100644 GIT binary patch delta 603 zcmV-h0;K)Q0+el;>PyVI#Y z=@tt!%aK>FULNagYJ7;*pnw1Vu>i3c5Q_r2B0&5XNu4MwD}Sr3xVVHh10!RIppekr ziuwkJj>d*xOgOyEj^uT?W&i*GX8;<+40JW;ub)4~fG#wala~(w$zd1-^wxJFVd3pS z+YSP84F?Bj8PIjtKyn-$9M7&?zSJx7zW^{v|KYRM?#Ia*n zjvUy(_vpcc+kgHu{C}^ks^$dLAO|$)`JJ1$rmtPOV)xfCU(PtYxj+B&_m9?w)vMQH zgweGtSN;I0$1uL6j0`s$8yoAluU|o4V`67#=LU&yShM;MP;BwnuU~Fr1h%WE7dy~9 z#()3*eZs}bDY$3nj>muh{Q3DG6gWuX1OvOaZv$~oVt*Lq>FejGtg7k>49Km*A|f%@ zu3nk*^T&_7NMQ-m_zzp`pcwS|(lKph1@}Ubyt>xtc88)QUO%%YEML;$RfD$=1 p48oeBNj2yrl>UuJ4F&)RFaQFb*L8c8%nbkl002ovPDHLkV1n5gBm4jW delta 267 zcmV+m0rdWu11S7Wk2(7ai~uV-P4|B|r@X#Re!a70}ch5aYFlNGWy! zFd#v+0y$yCfRx8RQWDq{0h$`*0QDXNxzP{HYp?((+n@_jEP!Mn(EuR807rR4uhU9> R7ytkO07*qoL+_WfN+&3c&_#@R5Ek-5wtF(Sf1-KD2?C@SUNmH9dTDwQUJE>tmBPDR!cqssU{zfb zF-W68G_oa3iFvhvew6Flcdf4oY})e+vjn6X_Xi zY6+SGGb;u*Nl*rXAtH^Ju+lM)H8Yj0A7A3XailpH;CaIuv6n(CKrPCRuY&MrF$$$3 zL4jNYX*|foKb1a1S=%rBQH2oB4bb6Ph$p>heAWN8^3cPHNF2TTaPp_e ft=~F8J_Hy5;63oGV9?7Q00000NkvXXu0mjf6-vuR delta 720 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 delta 234 zcmVBYWXxIU~1_2ELX+96c0(g7@GRzQY*aKuiCNxF$1Poz- z%J<`R5zsXt1@9S%2ZG4qh3p~&2GW27F0YYlkO3}(1Q;j)Ok)gG0yHs*pG3X<7|{<+ z&HG6VCs5Qo0+YZ6ut8)Rf{|rdU>ri}1PUHNF}h)RbN_!V!i_-N8%T|{16ag1kQ4oZ kNE#nN!{P!i#Q*^Y006r=6kvOz+5i9m07*qoM6N<$f{!~?3;+NC diff --git a/pandora_console/images/gm_configuration.menu_gray.png b/pandora_console/images/gm_configuration.menu_gray.png index f791bed3e225f01323931d56a67ed4667cd9c50f..1d69e0f85b91a92c614bae6dfe4d173262122f0f 100644 GIT binary patch delta 753 zcmV< zEQv4qfAf9c;g|P+@6E^K{ii_o9tMXW78Vv2w^9@-RVuOf&woZozE4k0W(7j`9UYVPx%P{CW7#;)iyM!0|YVS+gMK=3G{9HORDm8l>=Af)?_lNM{{z_W{V{T`|;J~ zr9(k{Zt3eEc<^LoRJ_(_Q&usX$y`Q7M(0^5ekL3XqwLFKn%l3 zwAzAHG#dFx_P#k+k#P_%7@8L1xY~S5XNX54;fYP(#=#&+ z-33L}qbOR!G7JpGpQ+dd;HPvtEe7i?C3>AN8jk$f4}bO>ZgEtfm&Jmlw{oB8?xag;8Y7FY|W?|m>O|DchDwWC% zb~OO{0Ga?;om`>lEHhSk{KTfyPZ0ah(URNEo3Y#3S%<@)NF>Hebb6^wCcgkMD}df{ zFxXd1^MCR>%~jS_ug5dL6$tzd+8gU@Yt+up_Gd$BxmYU8vr!~@7C>)7^U#osB2jK@ zO?~~+;)2T+4uuW|ak1g`QsHoD+-Ry4!+yZ}$xg^F jA0W?r@7{UzOMn3Y=8Z;(+Dcf600000NkvXXu0mjf_H$ks delta 303 zcmV+~0nq-f2JQloNPhtkNklICQn#0d~z zeAEqa18@UIUoZehNoNGaB!k{GljjtR z_j3bjk3dQyO_R(bYupB?xgY2u>q*v55_!n%F4u-kg$&!sv5DM<#34ownTZX@W|+S? z^mLDy3FV6SKPVL~jFD{)3oJIW%yQCQWTyTC3;^SPY|x~vjc@<}002ovPDHLkV1hYR Bh_V0x diff --git a/pandora_console/images/gm_discovery.menu.png b/pandora_console/images/gm_discovery.menu.png index 0f396c08c688a8b396bd2f6817ed999fa71774dc..65fcf321e430260b9056db4caaec811bca089e31 100644 GIT binary patch delta 766 zcmVbTnI=r1Y0AjRD0Auj`KP$lF%vRKRb9hdOIv5ToV!M-adB6m0q=Nu zcou1>s_y3J<>6FNR(1-Hj^RdE&w|YmFJC_f9X-9cj~_q00J>)HkDotfxwtr$MMZ=d zzWw+iuc4*w3{po{bjjl?A+rL6e4xli!(@qPX9@sr2>hmVy0{`tose=R8~{^8@t z0HUH_-_XcIT2?j`=o&5wF;RVG1qB&#QBj6JfB!PPc>S9B_aC5%3=B)}-MRf6r;9AC zZ5U+b<=y}O{mcLH^JkM!pFe8>6C(qV&+zi~Ylf#!pEF2HON)B?`dQ!&Bfp>^UL|E^ z!;c?7vav8TGdzFwn&I)Yf9DJg|AEd2^4Zu}8GtSl`uypWD^U4foCX0E82|e9iy!0) zu-}=O7&v)(8JK|lA3uJ;lyL*omIY6uZr|Dk%p&(# z+1MEV{r$@bOjGjenwnfV4f_B8pEi)<=j7u0{o?ua{de!&E?Ty5f1%6FDU;pr-@TLn z=)wI1K>44NQc~On07*qoM6N<$f=&^KJpcdz delta 282 zcmV+#0p7i)&_E3X6aJ%u_dqN_Emu;zv zKw{s=r;mw%x$$WH2T)o8Xm9{Iu2et^OHc~fkHlY3j-mZ%UKfB`gdDa4lq4e%C_uC5 zKS@CV$~pfr!Fw!X^GS&)Y%aj&a8(CV47DfHQ=l+bAl6U^9O4InI1q>niBL;0JV77< zN9yP&H?KQjQ6~URA^V9jv;oaP0|E|sPi$dKbUGwd4!{)c#}EmgjK`^F9A{sZE_KrG6|#r5yh z@#6<3ba#G0*TaI%pud0rPG@9fbO$mSVPgOP|7T)mVL8mk#D#AIAAcW6%gC_v^9!&&dhp;4K^FmI${ZL*LNG%>;K%pxVp=-78BwtbQ;bZ_ zl8EveHxJJ*K7Rf;EG#Sxuvh~c%JlQc4~ZW?zRLi)FNpFQJ3IT^M-Lu8=Hljl0}LBk zU_kRg#Tgzwe6aE0-aQRpK7VGhcXn0~5ET0T?CFzVSbtr#dHuS#3uez;`SAYzQlRD= zurwqfAo$_j=~J5yAK3p0FzW#xf+jg^g!;m)mFYk&OsvD47R zL`Pai*68Wu$A-Uu|N5k>Z*b+$pFdZxU%m2$1&5bGq0IGo~$g`}WO;S&NqD zK7aDm3xCMw7nhJwZ||FM_v5Dzb9i4#5yA<(6&iTOiU=n1~ANCet7?W+4t|?J}EE|0zeljZ$EH&lC8aiD+7@LAiw}J W78=2>SA>}W0000Tr&Y^JBW6Ky7mCFYj7na&qCB(X@kjOB^YY-?LHc-Q$Mg|f9K!5=NztlowxQ{wA00000NkvXX Hu0mjf-$7uk diff --git a/pandora_console/images/gm_resources.menu_gray.png b/pandora_console/images/gm_resources.menu_gray.png index 7733a069d1db39115aed0623b66d53b48773ed39..7915645c477723303738428641e31622480742f9 100644 GIT binary patch delta 218 zcmV<0044vo0-FMmNq@abL_t(|+G1d!5@5t7F=xp#2SS=tVxkVo0uB7Yh-QcakXjGK22e#C@fhNdq|T8AP0|4>xd4a@K{ny>`UD`gAF6&oHm?}~ z4Y)u|07HWTY#1X{paDqP6QTD3(2_(n!$5lLVP3O`dW#s4h*M3FiCXDs7#jo&?1eNVN7UFZG_sefl!zL)g%I` z1yGmGX9Sw8Kty=JG#|j?vj3o9V1Wj#12F~xH92B43t5c1`!6JSeppM2Z>aF zf#|$O3IHaD1ZeUBrz2#E_0Tj0N-r0PGz83LL6d&~&5-+n3Mb+*haZRwplooyWWan{Yl!?wl<9? zr5&*?s~0|!bMHCd{qA>ef@3v?bLa}*-P1FWPN(gqDHVWgPk*D)_}Rbo>G`;8q@b_C zD@iU54$<}l-BbB|{-mm^MCCe;<5?V`slf6V=S|nh<~*rSx;%Up+t<~3TTv7Tkkk^3 z!8}8eq=RL-c?h4@B(gL%T1k>RmCI(|K==-T^s0eGF&GR2$Mb!#*`S^X>4{*GhvXo< zP6JYaHb8S341dE|mlhX%x5iwAaGF>(}CsXF_QeZ zw2G)uD9|8%m7=H(Ed*rBKC>)Kn9b%CtTAeZiB&{`ATW~;CKke>&t%}gVqz@0$)Xw$<$kysN_j2 z;24-5_s-3EUcZ`+=@V=n9aT3T)wsD?%3!d;H+2S%betCiYmLsTbrnHtP2YpTc}Wy! zS&j`w)_>MQ*nf;FBDg1n$9?bD>dMM{mg8DL+3wc%b}T7Lu|zx`Ep@iOB9KkwGTHR` z3m1FOo^v>pNvYXv-iDq%c|7^hecz+q=%%La2=cZh%7aHcIF8>1i9R@`i=2DZ@u2!Rz&ecB9Xr~Iy$ZG2rwkYNl=9y>_3F{A3mZr1KU_%*Zxah dec@jL1^{g}3MQ)HP5A%-002ovPDHLkV1l$kSj+$b delta 272 zcmV+r0q_3v1!4km~!1Gfng zjF4dB4aI;O0Rs{u8ax@)10H}V2E)O`_>V-vgm6*9MPtwdibfKU8-JCt31i*bZvE$L z!T{z<&FDHi)SihEXS~NeH58niNG5VQ5-sGG`u^Vv$G$kz#o^TS5Ev&PE8a z3RJP1rm3F6{(pWU20ByUaMWl_Ddq*9%CTDQurs1iC=ixq<#p+v<2b~al42`%IBr9T zM^O|DkO2+sg`)bh_oKPamJn&&_?$wtrd=!T{ab9M1zKxD+!QjiY0)M>;3Q-+lx1WO+rU6+lO})sSAV_wl2L12Zx> z3VJg(HskSldLbe9jsOsYonx zAUeHX)M~XG;c%D;k|YR3C4WRPc@?f}fxy;gb3=V)%xo$Ynol+)&uTDCns+MCab`&| zc%p!F*S5hjBoqwJ&n_(70oXf=3K4NrTUlCqNq>hZAIJ0W1)g`Orls{749N!sftQOx zB@4c2)M_=q?pd3B(AP5r6P8MU%I{giFIlNXny$1BIo)No3_~-}(lkJpj0E8TrTdfg z`l(+ltM-o8%VM+!O$2IbzlxMPT>{9apw-b=FP_&7-0Q1_Z>+wyO0Onbc^d`JJ6 zOD`?0Y2zOz+fGzfmqlYv_c5ZY`)+Qc{67K=0Q5j#Pwr+LSO5S307*qoM6N<$f(`zD A{Qv*} delta 363 zcmV-x0hIpn2C4&)NPhuLNkl)Q}47 z$tTa)6@(5Xg@5ED^V;l5sLsYw+tr9j z)OlY?+;qsk5@hWk5f66n?hher+3qgp1P&7gE#XIE2J(2B8pzhtcVP1xzdZ;fpOP1Q zU-+lQ`h|Jp?df?|)q?)mn$g}9JxCf=bOv4nigFG@-M$LgAf=GY)IRZCO?*|`DXysk zDly~<_~v3wKV;b`X4;eeMdV#pIj6514C!bY9e)-DZvJ`Z;KhiQ90@?kr0^{ZcjwOT?>~P0#3Iee z!pi#p*^|dlaT)|HM!+suJb&&UV)GhI58NPN7WmK2&BF`Aq-0tyZf-slgMhK|sk*6o o8Zb0JkRMncvHtz@hXEkK0D$s)^#_s+0)l=dLqMPah(U%Y zVpELIYY9Y(Q8$e68FYY1G28}019~D5KR^-&u_prM6o@hiYH0{4ear{qKp=L6;y|d_ zeyAFPu~vYT%FlxmDpD$DfW}-udhB5{C>~2TKnD)QgpmRfk)%M-YrvGtNbTq+JFgia q=VlU$kqgKMEhN(+7hrk;0t^7*&@U{&+@37}0000coNq-MXL_t(|+N@T+P69y?UM>_^pcg9wg(MaCo~1UxFYvUZFjA3dg`tqd#u+k;>$-a!#z`g@_IBUAc{?+Q10i;L zx0u354t)*X)n3=p1N7?A##3O!a4f)Sd|WW7kKSM~2}JKHcz+gsi-Q$SfgA&Pfx$iW z5*}(r$nuyorTr(?0JyorjPkhAH%O(LuQJ9xbgshd`CkE;IWfs-2PvC^B>_(bV`*#X zWtoYiFnmGZ)|ls*RhW_Xms%z_=*vV@@cJ>Q=4*#{V7O(~AB^GgJwi;;cLx5?N~8!$ zCiqhQVbwB!%}h+=6|L#gLMQ-SkBPssjIVyCgK(k zH_3tkDr>X*H;3zwFdd(R&4n`z@ToDme8u^gykC8bx;@tlI+Q)jbjk4C-PA~`jU}LEM*qc@%g?a6o{lF_K)pb p3K;#PAM&>)t#y2)zb#(^3;>~b@X0>k`mF!}002ovPDHLkV1nXxB+>u? diff --git a/pandora_console/images/links.menu_gray.png b/pandora_console/images/links.menu_gray.png index c390e9a268e0e03d8968a3bc1040eb9b735aa10e..7520e0f0562c4e3a260378637c72f5497a6744bc 100644 GIT binary patch delta 812 zcmV+{1JnG21Lp>iNPhzfNklz6No0adiEUa@@1zMVV&<1>gE#_$UYj+Bs)ER~Xx zZJW~H+r4<++!fL?GM^2NO>-3#l$ifB{6Bf?#&!J8Dkv*wn18Wg(W4y)kCeK3`EanY zvw_8d-s6c&PMNyr*on0fv2jxP%wPf$8d_TFK<|9)X>ZxGch`;|zkdD#OPZQne9<>F zI{os+3sq}dJ7-T{Kl}y(Z5CtW;P?a#hmU{%{DDiVs;fIFsiOuq5r`F}IDqRMJR4o*(EFXm;{)$b#xi{`1vmU{rmR-1H=D4OiavIB_t#`1%-tEKYH-sH`eI) z^z-8j3X5o!m6MlaWMudN6#DZ0+qW-2e*E|i1Pnm$F@N##@v}=vNpb)UVO_p>(OaNP z_x$?xYwzBjJ5Up(m!Cg_xP*i)&>L1jE*B90|Mm0dcNsZ3Ml%abuDf^c{JwVOGK-j) zxR_sXu+Gn)KYu-Y`eaICMEH6ZWP`SC+6bZ!Lopbzv9SrpBqs6m^7DVbcJ<1iCG+Qf zr0LgQ4ak2mV z_wV5Qckkqx@EHUQXriLP~AVt{wX~u3gO{EF!`!DJ9L@*4yU|O!ZoC-@e(%NK6r7@8ry! zo|D@GjOs{WsW2ZX^bY6}`=394n7?}UGO?gb;Aiw~LVLeG_?Rpge00002rvNm Wqioz2lBQz-0000 diff --git a/pandora_console/images/op_events.menu_gray.png b/pandora_console/images/op_events.menu_gray.png index 4073f154b0b78084485f0546ac3ce105fdebde73..84ab4bebf2e329f7241585c66dacf04ef53bd865 100644 GIT binary patch delta 569 zcmV-90>=H40`>%uNPhwtNklpy z-(hN4@EH&k9+BWe^{~fH)Tym-wGQe}CYHfM_;0wkJS5?c;|J zKakbqbkVvUaaQVW8%k$^V+KH~72~QBI0%_5RYv#?IaR{4wW^97aZtmRHcJ`UTfK>sy0OE8e z#t&b=emy22D1Y!&Ttec09=1Dg@%8g6dx>-X;5S-5fS8U|9*5d$=D0Wl~=vw!>e z@#D7VPoG}KrjUi0+|R_s!T=2DLz_3OpS}r;Ylv|XxYXd|uLh#u=5G!n3FI?Ya00000NkvXX Hu0mjf>I@|L delta 210 zcmV;@04@La1d;-fNPhsdNkl0u(#HI2BOkINtf9IiP)szLUoxCUPs{l^wt zK>Pt3YZw8}g2fO661OV M07*qoM6N<$f;1;n3;+NC diff --git a/pandora_console/images/op_monitoring.menu_gray.png b/pandora_console/images/op_monitoring.menu_gray.png index 3d1bc0e007ff5c9ea0c991c89a200719b517ec64..5456d64b1d9a9a7c923bbb92726da77547ff59d2 100644 GIT binary patch delta 679 zcmV;Y0$BZn1LFmdNPhx_Nkl*uH^iTy4ejO@^T8WWVsKvBROMBATU{n+n*RaVZ z{%4ugbdAA-13z}>&71$cee>Qj%zqkeHKWhp%edTbxBOE+f`92w&;-7NHzvUpnVpW0 z4u`L%Y6_hQ1h%?&crTSoB`;V7lc~Zl&$4VzQIu3Rlev*je+&@gVt0hr9 zl+Wimoo@l$0aZ$S>E-EU3ET(o=x20*FMs4funkNB2_(QMy>0T|2uMj@DVe-gC=?!JLHVa{hX|OOOU(3M4qo`(Yp)^^rfEyd!wpue z17Z!dS*r@5*GQR6&(9@%gP~CTkEV@9U#gp%oA06-Q);nj#|D8WQ>C4+AnG)_|K{St zLf_CpaK7gMNc$(9>}9%p_O~N?QRUgZ)X4i N002ovPDHLkV1je`Muz|Z delta 324 zcmV-K0lWU=1%m^SNPht(Nkl+s2S_l<5 z@Zkwm5K{qA0i**;V8yK9P$c08H?t#+tlL|!PD&F`%$KVY!w|>;&E*Tw0Ncsu_{Ysj z9RibB1KlJZXP^M#!7eCA#jl6t+e2jb?3wc*5=z|Ipz1WDtbaysCKc6zjXP}A^d=PR zn@5xvA{qcQ;K(r)mE!4y4Anfj=7sq~Lo^C}Y*<9|=wp$q$j2SkBrQ~FC8}>ciZago zB({xN00+6b15BCJr7s!BTuL{F((sDET*=N?tgyGo$jX1f#A(2@ASsz+<{ws(jIWrX z981sIB4uZvT0Pvai@3l~ZG!IaS+lF;b?Cr)alay9Y+922>uCD|yzLoD-}SIv1sDJ< W+FEZy@rl_00000-NqmgBajWU0nG$7zle`iVgR}UouC;2 z>GFa2ZJ2;E0o|b8fQ-O<(L2e6D-?<)%NN_RU+i~Dk~8Gt@hOLvJg4Urf!RZ8yG+g* z%nNjY7PmLo!wI!Y6`?fFI1>eCC!o25*{CsPl^U1~UO_LQm4A{NB_4pXLmp#Z%~}=+ z=+j6yCe97)AP4zq7bvi^!7PG&X^>bUnk@=cvCnl!hWKl7$v?@LLV&*gCjZ&YvV`6T zLS~U+&vhIo1Lu5N^SsgAF1ckFVXN0_3k`k+<%V*_gY2xGBJzP?;zz3ny_mn|>P>!+ zyyd4EA-NHM7HQKfBF@yL1@hK%la#L^Coua>YbS#X`2vdv_-fP4oB7p<^WDZ z6}PDwy-yY}64c>9%J&Mix@VO>h5pV^B0ttC{lkCA>k18;=Lq6MfB^s~aevis`CthE O0000|=I!Zr91xKhNvO=NeZB$sqMgiZ3a)<&z)R)4@?h+`bPNG6$fxGG2k z*%{MFGo;l20>O=qO#)?C${0G0K*p&djgS~S=MYE?D4PLV#|$B$eg|1#4G!(r>4fN9uk{wlJ|)?6c^_(xL)IdILDvwz>PFQZHAnvVWbO|ToDL$ou*j;S zkgb|L$_t10cWRE5#SbD4hncnDPS%ij{l0HdwmUO652xVlyGl&8hmSZ z06RE;h2!XMfGi%={185-i~VzkmOjzJL2B2vo%eZ@Av7`#}*Ku1=$v67M5o(o_{~T`Si(?e}oMB{rfiq z6BCm$$PMTQG5r7kpXJB*Z!BK^{{MCL^aWX2*_d{0+5F+msgpm@4Ps?wWk=S}g0A4# zuV24a)YQ!_ZEQ<8I5_w(oj(V1`az6QadCm9KBB9|YY@_zeOoVtMuQ z<*9pj?j(Ny@dKus6No{v_lupKZ7DGIe*h|D!e`JwUOs+?RZExr0OE%@y!{$PNJ~qz zz_JIrK}Y|9&gB6{wFoft63n!mT-0`LToNPhwnNkl z{=661)H35TBs418$1gB=3ec)hHa0dpW@cs&Wff&TVPVk&=g*$`g07wkn<24@$($bE zK8gST|1-I-SPc@Fkl^L!=6@CgYDV$;|9}73{{H=I zNVGv5oSbZ|tgP(+|NkdCT(KH7Z|00ACypIE$;HKuY62tUw_m@0Z6rFdHMF!8jm^xz z@$m4x1$u=CCDxQEZn*-}%YtlBa6}{@FTa4@w=Z8n;QElPqKfizfgBn68N66ufH8ytke@skFjDJLCufI4Ax_j%^x36Em{016E z$dG?P{065%bEZ#y`rzK(vm6{8fARW@k?{>M@6ExRAc29{0gT$CKv!Wk3@HBN&!6A> z-@Sdi5N|p#6Gib_hlz|1NN4U0b@40Op478aHj=g*u;o6yzyhp6%>H9LpH z+11_U%Pg1AhR|g4m5Yn(#K~jF4o&Ro!cY$oU;u8U$Ia$JHD>?-002ovPDHLkV1n_a BA4vcJ delta 276 zcmV+v0qg$o1k(bLNPhtJNklebK$(E%$p_I1XeTHe028$E z;Yl}W*q}^6MqmWal94J%BFBxA4n;yE(Y_rU8%|;pkX8 z0j&8=E&_yFPrgPGB?7|60wD_&QBp=z5@}8#%;1e+JZCJ{O@GXcDpqQ4R6vVV!+dBq zBY)DNVkZ9p?>M&tvnj-gB+uEufQH%J;Ux>vc^R>+uZS6Iuo_&9%1E)6zSgoxpj@Jw z#H{( zJaZG%Q-e|yQz{EjrrH1%E%9`545_%4l)}*T|Nnn&hLsEoVhIambP`&mD&~2yH637A zQ<&)B%IxUS(AmhAAR+bZ(`R3UWwREF&(BSoQEJ1}r&?>=f9=kI2!{to2&yG0) z7p8wwJ|B?6Jdsy1!@%I9`JdxVdNy}|?9W^-H$%;pk7a|Dmxr*TsYIJlvV!7Pof)3b z+1w-^F&UUD*z)kywH%%zWH9S{`-Fw;D{?g)8W2CH7g62Dtz})w`Me9DGWj(JCNex>J&XAP2tGH#Yi~tMM(Eh$or_B&@wv7B!Fw z6~5hJ&*AySoSFO5zD+q(k>nzYO>d*#?e)G*1BZo3c(^(sfu$Y&uc^_@=31rnS*Bo} z4NYHiO^^Cm9&*u;Q?PErp6HcC(ov&qoJyMqB=_>Ktk#BRb0xHXtVWD}5Q(%@+w9Pi zW?+=fgS!(iJ%dg-pwu+lDYN9nyVl00Mtv+y8HaBFr1$m*e**tMvNCw5qC*YQegqf* Xifn`UI9YYV00000NkvXXu0mjf*=ewo delta 364 zcmV-y0h9i@1FQp(Nq=4QMuC1C9yWeDXtk6Tk+v6I7WX zz)wF*CTK>;2E7q(gVsjxkmWi-6_%`v?D(DiY+vCFX}re2{AZ0000< KMNUMnLSTX}oTH@x diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index efb08fc02d..6c54271b70 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -1032,9 +1032,10 @@ function config_update_config() $error_update[] = __('Fixed header'); } - if (!config_update_value('fixed_menu', get_parameter('fixed_menu'))) { + /* + if (!config_update_value('fixed_menu', get_parameter('fixed_menu'))) { $error_update[] = __('Fixed menu'); - } + }*/ if (!config_update_value('paginate_module', get_parameter('paginate_module'))) { $error_update[] = __('Paginate module'); @@ -1116,9 +1117,10 @@ function config_update_config() $error_update[] = __('Default height of the chart image'); } - if (!config_update_value('classic_menu', (bool) get_parameter('classic_menu', false))) { + /* + if (!config_update_value('classic_menu', (bool) get_parameter('classic_menu', false))) { $error_update[] = __('Classic menu mode'); - } + }*/ // -------------------------------------------------- // CUSTOM VALUES POST PROCESS @@ -1791,9 +1793,10 @@ function config_process_config() config_update_value('fixed_graph', false); } - if (!isset($config['fixed_menu'])) { + /* + if (!isset($config['fixed_menu'])) { config_update_value('fixed_menu', false); - } + }*/ if (!isset($config['custom_favicon'])) { config_update_value('custom_favicon', ''); @@ -2515,9 +2518,10 @@ function config_process_config() } } - if (!isset($config['classic_menu'])) { + /* + if (!isset($config['classic_menu'])) { config_update_value('classic_menu', 0); - } + }*/ if (!isset($config['csv_divider'])) { config_update_value('csv_divider', ';'); diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index d6384595a8..c0ae82b4ec 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -723,6 +723,28 @@ function menu_sec3_in_sec2($sec, $sec2, $sec3) // 35px is the height of a menu item function menu_calculate_top($level1, $level2, $level3=false) { + /* + if(menu verde ){ + $item_height = 28; + } + else{ + $item_height = 35; + } + */ + + // $(".menu li").css("min-height"); + // console.log( parseInt($("#icon_oper-agents").css("min-height"))); + /* + $item_height= ''; + */ + $item_height = 35; + + // echo ' '.$level1.' '.$level2.' '.$level3.' '; $level2--; if ($level3 !== false) { // If level3 is set, the position is calculated like box is in the center. @@ -737,12 +759,12 @@ function menu_calculate_top($level1, $level2, $level3=false) // Positionate in the middle if ($total > 12 && (($total < 18) || (($level1 - $comp) <= 4))) { - return - ( floor($comp / 2) * 39); + return - ( floor($comp / 2) * $item_height); } // Positionate in the bottom if ($total >= 18) { - return (- $comp * 39); + return (- $comp * $item_height); } // return 0 by default diff --git a/pandora_console/include/styles/menu.css b/pandora_console/include/styles/menu.css index 63b9c3a0db..faa72fb288 100644 --- a/pandora_console/include/styles/menu.css +++ b/pandora_console/include/styles/menu.css @@ -16,16 +16,25 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +.operation li, +.godmode li { + display: flex !important; + justify-content: flex-start; + align-items: center; +} + +.operation > li.menu_icon.no_hidden_menu, +.godmode > li.menu_icon.no_hidden_menu { + justify-content: flex-end; +} + .operation .menu_icon ul.submenu > li, .godmode .menu_icon ul.submenu > li { background-color: #282828; + padding-left: 10px; + padding-right: 10px; } -.menu { - border-width: 0px 0px 0px 0px; - border-style: none; - border-color: #777; -} .menu ul { list-style-type: none; padding: 0; @@ -33,14 +42,15 @@ } .menu li.selected, .menu li.not_selected { - border: 0px none black; - border-bottom: 0px none #d4d4d4; + border: 0px none black; /* borrar?? */ + border-bottom: 0px none #d4d4d4; /* borrar?? */ margin: 0; } .menu li a { color: #ffffff; text-decoration: none; + width: 100%; } li:hover ul { @@ -48,16 +58,16 @@ li:hover ul { } .submenu_text { - padding: 10.5px; + /* padding: 10.5px; eee */ margin-left: 0px; width: 100%; - color: #91a2a7; + color: #9ca4a6; font-family: "Open Sans", sans-serif; - font-size: 10pt; + font-size: 9.4pt; } .menu li.subselected a { - background-color: grey !important; + background-color: grey !important; /* borrar?? */ } .menu a:hover { @@ -68,25 +78,23 @@ li:hover ul { margin: 0px 0px 0px 0px; position: absolute; z-index: 999; - /*left: 44px;*/ - min-height: 35px; - /*height: 35px;*/ - width: 180px; + width: 214px; } .submenu2 { position: absolute; z-index: 999; - left: 180px; + left: 214px; + width: 214px; } .sub_subMenu { - min-height: 35px !important; - /*height: 35px;*/ - width: 180px; font-weight: normal !important; background-color: #202020; + padding-left: 10px; + padding-right: 10px; } + .sub_subMenu.selected { font-weight: 600 !important; } @@ -103,17 +111,14 @@ li:hover ul { border-left: 1px; } -.menu li.has_submenu > a > div { - background: url(../../images/arrow.png) no-repeat 80% 50%; - z-index: 1; /* Positions it on top of the rest */ -} -.menu li.has_submenu > .SubNoLink { - background: url(../../images/arrow.png) no-repeat 80% 50%; +/*.menu li.has_submenu > a > div,*/ +.menu li.has_submenu /*> .SubNoLink*/ { + background: url(../../images/arrow.png) no-repeat 95% 50%; z-index: 1; /* Positions it on top of the rest */ } .is_submenu2 { - background-color: #e4e4e4 !important; + background-color: #e4e4e4 !important; /* borrar?? */ } .menu li.submenu_not_selected a, @@ -155,9 +160,9 @@ li.sub_subMenu.selected { background: url(../../images/op_network.menu_gray.png) no-repeat; } #icon_oper-agents { - border-top-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; + border-top-right-radius: 5px; /* borrar?? */ + border-right-style: solid; /* borrar?? */ + border-right-width: 0px; /* borrar?? */ background: url(../../images/op_monitoring.menu_gray.png) no-repeat; } #icon_oper-events { @@ -188,7 +193,7 @@ li.sub_subMenu.selected { /* Godmode images */ #icon_god-discovery { - background: url(../../images/gm_discovery.menu.png) no-repeat 50% 50%; + background: url(../../images/gm_discovery.menu.png) no-repeat; } #icon_god-resources { background: url(../../images/gm_resources.menu_gray.png) no-repeat; @@ -221,7 +226,7 @@ li.sub_subMenu.selected { background: url(../../images/links.menu_gray.png) no-repeat; } #icon_god-um_messages { - border-color: #777; + border-color: #777; /* borrar?? */ background: url(../../images/um_messages.menu_gray.png) no-repeat; } @@ -229,7 +234,7 @@ li.sub_subMenu.selected { z-index: 3; position: absolute; left: -80px; - background-color: #aaa; + background-color: #aaa; /* borrar?? */ } .notification_ball { @@ -286,7 +291,7 @@ ul li a:hover { */ .menu_icon { - transition-property: background-color; + /*transition-property: background-color; transition-duration: 0.5s; transition-timing-function: ease-out; -webkit-transition-property: background-color; @@ -297,11 +302,11 @@ ul li a:hover { -moz-transition-timing-function: ease-out; -o-transition-property: background-color; -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out;*/ } .menu_icon:hover { - transition-property: background-color; + /*transition-property: background-color; transition-duration: 0.5s; transition-timing-function: ease-out; -webkit-transition-property: background-color; @@ -312,11 +317,11 @@ ul li a:hover { -moz-transition-timing-function: ease-out; -o-transition-property: background-color; -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out;*/ background-color: #282828 !important; } .submenu_not_selected:hover { - transition-property: background-color; + /* transition-property: background-color; transition-duration: 0.5s; transition-timing-function: ease-out; -webkit-transition-property: background-color; @@ -327,14 +332,14 @@ ul li a:hover { -moz-transition-timing-function: ease-out; -o-transition-property: background-color; -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out;*/ background-color: #202020 !important; } .submenu_selected:hover { background-color: #202020 !important; } .sub_subMenu { - transition-property: background-color; + /*transition-property: background-color; transition-duration: 0.5s; transition-timing-function: ease-out; -webkit-transition-property: background-color; @@ -344,10 +349,10 @@ ul li a:hover { -moz-transition-duration: 0.5s; -moz-transition-timing-function: ease-out; -o-transition-property: background-color; - -o-transition-duration: 0.5s; + -o-transition-duration: 0.5s;*/ } .sub_subMenu:hover { - transition-property: background-color; + /* transition-property: background-color; transition-duration: 0.5s; transition-timing-function: ease-out; -webkit-transition-property: background-color; @@ -357,7 +362,7 @@ ul li a:hover { -moz-transition-duration: 0.5s; -moz-transition-timing-function: ease-out; -o-transition-property: background-color; - -o-transition-duration: 0.5s; + -o-transition-duration: 0.5s;*/ background-color: #161616 !important; } @@ -375,9 +380,9 @@ ul li a:hover { */ .operation { background-color: #343434 !important; - border-top-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; + border-top-right-radius: 5px; /* borrar?? */ + border-right-style: solid; /* borrar?? */ + border-right-width: 0px; /* borrar?? */ padding-top: 20px !important; } @@ -393,12 +398,15 @@ ul li a:hover { } .menu li, -.menu .li.not_selected { - border-radius: 0px 0px 0px 0px; - display: block; +.menu li a, +.menu li div { min-height: 35px; - border-bottom: 0px none #424242; - vertical-align: middle; + display: flex; + align-items: center; +} + +.menu li div { + background-clip: text; /* Very important to fix a bug in Firefox */ } .godmode { @@ -465,14 +473,14 @@ ul li a:hover { left: 0; background-color: #343434; border-bottom: solid 3px #343434; - /*min-height: 943px;*/ - padding-bottom: 40px; /*Lo he quitado para que no ocupe todo el alto y fixed */ + min-height: 943px; + /*padding-bottom: 40px;*/ /*Lo he quitado para que no ocupe todo el alto y fixed */ /*overflow-x: hidden;*/ } .button_collapse { - height: 55px; - background-color: #4d4d4d; + height: 38px; + background-color: #6c6c6d; /*bottom: 0; /* Lo he quitado para que no ocupe todo el alto y fixed*/ /*position: fixed; /*coemntar tb*/ width: 60px; /* It is changed for classic menu (215px)*/ @@ -491,19 +499,6 @@ ul li a:hover { align-items: center; } -.operation > li.menu_icon.no_hidden_menu, -.godmode > li.menu_icon.no_hidden_menu { - display: flex; - justify-content: flex-end; - align-items: center; -} - -.operation > li.menu_icon, -.godmode > li.menu_icon { - padding-top: 2px; /* 3px */ - padding-bottom: 2px; -} - .operation div, .operation a, .godmode div, @@ -534,95 +529,57 @@ ul li a:hover { background-position: center; } -#top_btn { - display: none; - position: fixed; - bottom: 100px; - left: 0px; - border: none; - outline: none; - background: url("../../images/to_top_menu.png") no-repeat center; - background-color: #82b92e; - width: 60px; - height: 60px; - /* Estos borrarles despues xk sera img */ - color: white; - cursor: pointer; - font-size: 17px; - border-radius: 5px; -} - -#top_btn:hover { - background-color: #4d4d4d; - /* border: 2px solid #fff;*/ -} - -@media screen and (max-height: 600px) { - .operation > li.menu_icon, - .godmode > li.menu_icon { - padding-top: 1px; - padding-bottom: 1px; - } - .operation { - padding-top: 10px !important; - } - .button_collapse { - margin-top: 10px; - background-color: green; - } +@media screen and (max-height: 720px) { .menu li, - .menu .li.not_selected { - min-height: 25px !important; - } - .button_collapse { - height: 45px; - } - .submenu_text { - /* padding: 7.5px;*/ - } -} - -@media screen and (min-height: 601px) and (max-height: 700px) { - .operation > li.menu_icon, - .godmode > li.menu_icon { - padding-top: 1px; - padding-bottom: 2px; - } - .operation { - padding-top: 10px !important; - } - .button_collapse { - margin-top: 10px; - background-color: red; - } - .menu li, - .menu .li.not_selected { - min-height: 25px !important; - } - .button_collapse { - height: 48px; - } - .submenu_text { - /*padding: 7.5px;*/ - } -} - -@media screen and (min-height: 701px) and (max-height: 845px) { - .operation { - padding-top: 10px !important; - } - .button_collapse { - margin-top: 10px; - background-color: blue; - } - .menu li, - .menu .li.not_selected { + .menu li a, + .menu li div { min-height: 28px !important; } - .button_collapse { - height: 50px; +} +/* +Medidas menu: +601 verde y rojo +720 azul +735 normal +*/ +@media screen and (max-height: 735px) { + .operation { + padding-top: 10px !important; } - .submenu_text { - /*padding: 7.5px;*/ + .button_collapse { + margin-top: 10px; } } + +/* + * --------------------------------------------------------------------- + * - STYLES TO CHANGE CLASSIC MENU AND COLLAPSED MENU - + * --------------------------------------------------------------------- + */ +.page_classic { + padding-left: 215px !important; +} + +.page_collapsed { + padding-left: 60px !important; +} + +.header_table_classic { + padding-left: 250px !important; /* 215 + 35 */ +} + +.header_table_collapsed { + padding-left: 95px !important; /* 60 + 35 */ +} + +.title_menu_classic { + display: flex !important; +} + +.title_menu_collapsed { + display: none !important; +} + +.menu_icon_collapsed { + background-position: 50% 50% !important; +} diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 779deb39c7..70fb57a231 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -197,6 +197,9 @@ a:hover { color: #373737; text-decoration: underline; } +:focus { + outline-color: #82b92e; +} a:focus, input:focus, button:focus { @@ -403,8 +406,8 @@ div#page { width: auto; margin-top: 20px !important; padding-left: 60px; /* It is changed for classic menu (215px)*/ - margin-right: 30px; - margin-left: 30px; + margin-right: 35px; + margin-left: 35px; } body.pure { @@ -657,7 +660,7 @@ div#foot a, div#foot span { font-family: "Open Sans", sans-serif; font-size: 8.5pt; - color: #91a2a7; + color: #9ca4a6; } /* @@ -687,7 +690,7 @@ div#head { height: 60px; padding-top: 0px; margin: 0 auto; - border-bottom: 1px solid #91a2a7; + border-bottom: 1px solid #9ca4a6; min-width: 882px; background-color: #fff; color: #000; @@ -1317,7 +1320,7 @@ div.title_line { margin-top: 0; } -/* --- Submenu --- */ +/* --- Tabs Submenu --- */ ul.subsubmenu { border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; @@ -1325,12 +1328,10 @@ ul.subsubmenu { -moz-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px; - - background: #ececec !important; } ul.subsubmenu li { - background-color: #ececec; + background-color: #fff; font-weight: bold; text-decoration: none; font-size: 14px; @@ -2038,8 +2039,8 @@ div#pandora_logo_header { margin: 0px; padding: 0px; margin-top: 0px; - padding-left: 90px; /* It is changed for classic menu */ - padding-right: 30px; + padding-left: 95px; /* It is changed for classic menu */ + padding-right: 35px; } #header_table_inner { @@ -2143,13 +2144,6 @@ div#pandora_logo_header { font-family: "Open Sans", sans-serif; } -@media screen and (max-width: 1024px) { - #header_user span, - #header_searchbar a.tip img { - display: none; - } -} - .autorefresh_disabled { cursor: not-allowed !important; } @@ -2174,7 +2168,7 @@ div.warn { } .submenu_not_selected { - transition-property: background-color; + /*transition-property: background-color; transition-duration: 0.5s; transition-timing-function: ease-out; -webkit-transition-property: background-color; @@ -2186,7 +2180,7 @@ div.warn { -o-transition-property: background-color; -o-transition-duration: 0.5s; -o-transition-timing-function: ease-out; - font-weight: normal !important; + font-weight: normal !important;*/ } /* Submenus havent borders */ @@ -3303,7 +3297,7 @@ div.div_groups_status { } #title_menu { - color: #91a2a7; + color: #9ca4a6; float: right; width: 65%; letter-spacing: 0pt; @@ -3319,7 +3313,7 @@ div.div_groups_status { #menu_tab li.nomn, #menu_tab li.nomn_high { - /*background-color: #ececec;*/ + background-color: #fff; padding-right: 3px; padding-left: 3px; font-weight: bold; @@ -3331,6 +3325,10 @@ div.div_groups_status { height: 28px; } +#menu_tab li:hover { + background-color: #ececec; +} + #menu_tab li.nomn_high, #menu_tab li.nomn_high span { color: #fff; @@ -4445,10 +4443,10 @@ div#dialog_messages table th:last-child { */ .notification-ball { - border: white solid 2px; - border-radius: 50px; - width: 18px; - height: 18px; + border: #343434 solid 2px; + border-radius: 50%; + width: 20px; + height: 20px; display: flex; justify-content: center; align-items: center; @@ -4804,43 +4802,25 @@ input:checked + .p-slider:before { /* --- END TOAST --- */ -/* - * --------------------------------------------------------------------- - * - STYLES TO CHANGE CLASSIC MENU AND COLLAPSED MENU - - * --------------------------------------------------------------------- - */ -.page_classic { - padding-left: 215px !important; +/* Button for Go to top */ +#top_btn { + display: none; + position: fixed; + bottom: 100px; + right: 4px; + border: none; + outline: none; + background: url("../../images/to_top_menu.png") no-repeat center; + background-color: #82b92e; + width: 27px; + height: 27px; + background-size: 21px; + cursor: pointer; + border-radius: 5px; } -.page_collapsed { - padding-left: 60px !important; -} - -.header_table_classic { - padding-left: 245px !important; -} - -.header_table_collapsed { - padding-left: 90px !important; -} - -.title_menu_classic { - display: block !important; -} - -.title_menu_collapsed { - display: none !important; -} - -.logo_show { - display: block !important; -} - -.logo_hide { - display: none !important; -} - -.menu_icon_collapsed { - background-position: 50% 50% !important; +#top_btn:hover { + background: url("../../images/to_top_menu_hover.png") no-repeat center; + background-color: #fff; + border: 2px solid #82b92e; } diff --git a/pandora_console/index.php b/pandora_console/index.php index b68424d805..38e12621cb 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1024,11 +1024,13 @@ if (get_parameter('login', 0) !== 0) { // Header if ($config['pure'] == 0) { if ($config['classic_menu']) { + // ya no existe BORRAR!!! echo '
'; + echo ''; echo '
'; } else { echo '
'; + echo ''; } } else { echo '
'; @@ -1248,6 +1251,27 @@ require 'include/php_to_js_values.php'; ?> \ No newline at end of file + diff --git a/pandora_console/general/main_menu.php b/pandora_console/general/main_menu.php index adda158e9b..cb5126b621 100644 --- a/pandora_console/general/main_menu.php +++ b/pandora_console/general/main_menu.php @@ -21,22 +21,7 @@ if (! isset($config['id_user'])) { $(document).ready(function(){ var menuType_value = localStorage.getItem("menuType"); - if (menuType_value == 'collapsed' || menuType_value == '' || menuType_value == null || menuType_value == undefined) { - if(menuType_value == '' || menuType_value == null || menuType_value == undefined){ - localStorage.setItem("menuType", "collapsed"); - } - - $('#menu_full').removeClass('menu_full_classic').addClass('menu_full_collapsed'); - $('.logo_full').css('display','none'); - $('.logo_icon').css('display','block'); - $('div#title_menu').removeClass('title_menu_classic').addClass('title_menu_collapsed'); - $('div#page').removeClass('page_classic').addClass('page_collapsed'); - $('#header_table').removeClass('header_table_classic').addClass('header_table_collapsed'); - $('#button_collapse').removeClass('button_classic').addClass('button_collapsed'); - $('ul.submenu').css('left', '59px'); - $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); - } - else if (menuType_value == 'classic') { + if (menuType_value == 'classic') { $('#menu_full').removeClass('menu_full_collapsed').addClass('menu_full_classic'); $('.logo_icon').css('display','none'); $('.logo_full').css('display','block'); @@ -48,18 +33,26 @@ $(document).ready(function(){ $('li.menu_icon').removeClass('menu_icon_collapsed').addClass("no_hidden_menu"); } else{ - console.log('else no ha elegido aun, default-else'); - localStorage.setItem("menuType", "collapsed"); + if(menuType_value != 'collapsed'){ + localStorage.setItem("menuType", "collapsed"); + } + $('#menu_full').removeClass('menu_full_classic').addClass('menu_full_collapsed'); + $('.logo_full').css('display','none'); + $('.logo_icon').css('display','block'); + $('div#title_menu').removeClass('title_menu_classic').addClass('title_menu_collapsed'); + $('div#page').removeClass('page_classic').addClass('page_collapsed'); + $('#header_table').removeClass('header_table_classic').addClass('header_table_collapsed'); + $('#button_collapse').removeClass('button_classic').addClass('button_collapsed'); + $('ul.submenu').css('left', '59px'); + $('li.menu_icon').removeClass("no_hidden_menu").addClass('menu_icon_collapsed'); } - }); - // Set the height of the menu. - $(window).on('load', function (){ - $("#menu_full").height($("#container").height()); - }); - +// Set the height of the menu. +$(window).on('load', function (){ + $("#menu_full").height($("#container").height()); +}); '; +$custom_logo = 'images/custom_logo/'.$config['custom_logo']; +$custom_logo_collapsed = 'images/custom_logo/'.$config['custom_logo_collapsed']; + +if (!defined('PANDORA_ENTERPRISE')) { + $logo_title = get_product_name().' Opensource'; + $custom_logo = 'images/custom_logo/pandora_logo_head_green.png'; + $custom_logo_collapsed = 'images/custom_logo/pandora_logo_green_collapsed.png'; +} else { + if (file_exists(ENTERPRISE_DIR.'/'.$custom_logo)) { + $custom_logo = ENTERPRISE_DIR.'/'.$custom_logo; + } + + $logo_title = get_product_name().' Enterprise'; +} + echo ''; @@ -108,11 +116,6 @@ echo '
'; echo '
'; // menu_container ui_require_jquery_file('cookie'); -/* - $config_fixed_menu = false; - if (isset($config['fixed_menu'])) { - $config_fixed_menu = $config['fixed_menu']; -}*/ $config_fixed_header = false; if (isset($config['fixed_header'])) { @@ -123,10 +126,8 @@ if (isset($config['fixed_header'])) { diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php index dbe33feb41..f2042193fb 100755 --- a/pandora_console/godmode/setup/setup_visuals.php +++ b/pandora_console/godmode/setup/setup_visuals.php @@ -120,17 +120,6 @@ if (enterprise_installed()) { $row++; } -/* - $table_behaviour->data[$row][0] = __('Classic menu mode').ui_print_help_tip(__('Text menu options always visible, don\'t hide'), true); - $table_behaviour->data[$row][1] = html_print_checkbox_switch( - 'classic_menu', - 1, - $config['classic_menu'], - true - ); - $row++; -*/ - echo '
'; echo ''.__('Behaviour configuration').''; html_print_table($table_behaviour); @@ -278,12 +267,12 @@ function logo_custom_enterprise($name, $logo) } -$table_styles->data[$row][0] = __('Custom logo (header)').ui_print_help_icon('custom_logo', true); +$table_styles->data[$row][0] = __('Custom logo (menu)').ui_print_help_icon('custom_logo', true); $table_styles->data[$row][1] = logo_custom_enterprise('custom_logo', $config['custom_logo']); $table_styles->data[$row][1] .= ' '.html_print_button(__('View'), 'custom_logo_preview', $open, '', 'class="sub camera logo_preview"', true, false, $open, 'visualmodal'); $row++; -$table_styles->data[$row][0] = __('Custom logo collapsed (header)').ui_print_help_icon('custom_logo_collapsed', true); +$table_styles->data[$row][0] = __('Custom logo collapsed (menu)').ui_print_help_icon('custom_logo_collapsed', true); $table_styles->data[$row][1] = logo_custom_enterprise('custom_logo_collapsed', $config['custom_logo_collapsed']); $table_styles->data[$row][1] .= ' '.html_print_button(__('View'), 'custom_logo_collapsed_preview', $open, '', 'class="sub camera logo_preview"', true, false, $open, 'visualmodal'); $row++; @@ -545,16 +534,7 @@ $table_styles->data[$row][1] = html_print_checkbox_switch( true ); $row++; -/* - $table_styles->data[$row][0] = __('Fixed menu'); - $table_styles->data[$row][1] = html_print_checkbox_switch( - 'fixed_menu', - 1, - $config['fixed_menu'], - true - ); - $row++; -*/ + // For 5.1 Autohidden menu feature $table_styles->data['autohidden'][0] = __('Autohidden menu'); diff --git a/pandora_console/images/custom_logo/pandora_logo_head_green.png b/pandora_console/images/custom_logo/pandora_logo_head_green.png index f2c8b2ca447ff47d55f00570fc8554b6493d9138..8bf5fbb1d389fcc31398444d8deb8fccc81299ca 100644 GIT binary patch delta 2686 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 delta 2932 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 delta 548 zcmV+<0^9wK1>yvdNq+=ML_t(|+G1d!5@5t985ADD;Oiea_0#8%5j@qtSy@<242+BvU}7i+{rK_S;P2nR9K=L7 z&}H1;zkj#HYJU(AaN&zdEDrYFeTC;kh(v(4EjfcK``~01_AxePJ-7Mfysd# z!yq*c4F+y*ZiD~8KqSgv|NnEcv$Gp%YHK6Xk)pCPdu2nTH!%5E{`&Px5SW6AF^Cmt zv68*B^ZiTbFWd*~ShRYL1`{LGN?`gC1{wki!2iHxz<&%>%mU5W|6w#x{x2|f{{edq z=ny7G#&5iQ{E;Aq4EOHb0eXuk`XA6=Pz(R?^6*Ntb8wpe|Nl=28k>wDLw^1IdHvJp zPp5%=SoUFj@!~n|Vk9{;%hb)oYu4w_pA2APK(G8de)w?fq`saeboER)QyVk$X`t86 mpoPm7CLLzx&Dhif1Q-A!BDPM|V?tyA0000L%cG5zMAUWJ5pznhYGF z0k1&FYaoLb05vVZ7C1n0kXHlIy~czV&<4;jDa04jK*K=cwE;Q6(Oo0}4VMo@6fcFy dNdh3i0Ev`Hoe+$%Wb6O{002ovPDHLkV1hExYCZq} delta 731 zcmV<10wn#`0+$AmNPhykNklNL5|K zTT5GKxtzR$G9N$xmW$`k{lcb>37;WBVd0!XAz^_ZKYS2pXXkKdW?{+4r53M2Z0zhl zynOs#|Ni}B`10j5o29jlYiwe&0!aq>hlFt2J39M){`^tm|9}7g3_pMVWZ>rJHWd;U zP9(`7Q896IF>!HMpaJiAd3Y9SsH*Pf=jGv4P*!#dkB;F+SI>gY5HDXp1|2=UxQ`z{ zya2jp?~k89Wx2RGl|@B_7{2}ZA+MpO?F>}5iJ*)042{GkB&DqQxVca8^YMNC@bQz! z{fCc~{{H#LAb%|>DgNQ(#{ifpbtZf)%<>lS~{{74U@$+YsPoF<)0TUwwkk9b)^=pQwPoFbL zOG}G-`ubVm4I{sxAYLV9Wy6mjKeDkfGc!DY^_t=Fvw!Cd4F7@72lCn2SQ&sW68ik< zlPgg9UYrI26&U~e^@|_m3b5aqm>4*Dc^R01{2xDlz?5+V)0PRLz%~M6AyC?3Wo2dH z1YAEdI1T#$|DQIH;^*Yz`u*bh^Zj@4 z+%8(SaDSo8%qf%I@87+X|LDQ}13>wol2TIK1?3gGSiL4DF2T&f!DYzA#KipN%a?77 z=FZ8!dil~rn0!TH!4@S|)x-T$XDoRC?ybwGj~_t>oy2faX-%z|in=;KCpY)y$-O-V z$cDfGD+|lV*RNjHv#_w-0&;b+dhOfSuS&o`{8aSy%jYs+_}syk#%^A}&QM!kdV`UX zsRI}x%DBSFR6syrdTV{%nR91O<17`PKYjA6tRVLc4>!*jm>58S0RWU+0W N002ovPDHLkV1hy=f+7F_ diff --git a/pandora_console/images/gm_discovery.menu_white.png b/pandora_console/images/gm_discovery.menu_white.png new file mode 100644 index 0000000000000000000000000000000000000000..d05d5e761672650352fc998ca20b209ae449391b GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gn><|{Ln>}1B`7fc`Tsw@u`!6jh^6B_^G3#{Y-|7XGk(`J zJo3<9%R}M%g1-UG_a?v9%D8dhK+UGu)@3&tI`_^CX->FT$^Ue|yAhAFrNKi36$TGZ zhn?&T?pZc0InpSTzt??n=XW_1#z)NWJ$rR)4m1WxEd2eSQ9$2;TUo$BLA6He!V{he zd-l$o;Q0Kbs?Cb)j*Rs{_Jb)tK5|EvGdwF{RPttJuQ5}dFhQI-p{9X>nIUsy)>_jm S>QO+~GkCiCxvX0onfB0_6gbNPhtbNklUFkK43v&&xg{EKo=gMY7jw#<~u11&S4x&=U2Zvf>FY?e?h4u61_EWl<73!ZQV<>+`a z?D~LYi6Op7)(2t-3Oog}M1Td4mq8h>ki^sk3YPs)!$D=%1**jX7Q+`%Es}8=PR&#l zkIisuTF?l@is*(@t*8JR`~g?}0rSBFv{IG&RVFZ^K((0ywgQV<79ghtTs0cVr-jfU sA*<2{`Jf)^6CYgR?Z_~g06>5N06n`_;ztkWN&o-=07*qoM6N<$g3n!g2LJ#7 delta 284 zcmV+%0ptGV0^0(RNPhtRNklB=(zlM#2mBOzN&&AAfL<;nBQ=3a1P7=uz$uDqaR4=ZK9b=Vs20h%45wx)ipOR+)p9Zr z1VZEO15JtwYzEVK&wJl)8Qt4lSR{FRqpbh9Lg`fpUmh=O0 i0JI9FO0xwZz!d;eBUoq%9P4-h0000jyy(9MYCpF>E}L(I=P0pm2aet!hO}^c~gfKr0wLUHx3vIVCg!0BNEz6aWAK delta 293 zcmV+=0owkp0mA|ziBL{Q4GJ0x0000DNk~Le0000j0000j2nGNE06H4tnvo$Wf8|L; zK~#9!?AYxMgCGzF;9@#}BXpFG;0U^bn{))biEh*p=#kjO{;+%q+-vh*LLlJ+5BHC2 zE+>qJXrhTGIw`It4z%lc8~y`~2@e2c!6U#Ja1Zza2ls&c zHK&Jxhk!S^`tTSq1Uv<-3O@o?dx7TwSB2*USAmxR7loGu7lGFRXNA`UXMt;g55YCT zNpJ*k6kHY~3OEoxx`Y`C8~~s9`W}OP{hylX_5NY+Mcw8VFYO9@D(-yUXXEA?EHYZq rpMHz%V*`?CqKPJ&Xrlic{T5&VMyUOB+_mRX00000NkvXXu0mjfsquG9l0e}Dl0F=K+c9_s{CjbBd00>D%PDHLkV1gc~I57YK delta 193 zcmV;y06zcF0fGXMNq?kCL_t(|+G1n?g8%>jD*&kgAQoVt94ugj8hD;c27F+u^7BnFrkbG_pKW58bvz7=L2N>Rg%|@jU8!a8(`g3tL2MAvm+~Xe zP-Fv<4IyYSF!4A1#{w=q-T1$0ryiIlMGge88cIkLAvG9=5;|ibA+;=+N#_Pe7~%pj vH6T3<41R>eloBwS_lJ<72dHf*K!5=N;S_Ao0gwnF00000NkvXXu0mjfcnn9| diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 6c54271b70..3152430931 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -309,6 +309,10 @@ function config_update_config() if (!config_update_value('auditdir', get_parameter('auditdir'))) { $error_update[] = __('Audit log directory'); } + + if (!config_update_value('unique_ip', get_parameter('unique_ip'))) { + $error_update[] = __('unique_ip'); + } break; case 'enterprise': @@ -1032,11 +1036,6 @@ function config_update_config() $error_update[] = __('Fixed header'); } - /* - if (!config_update_value('fixed_menu', get_parameter('fixed_menu'))) { - $error_update[] = __('Fixed menu'); - }*/ - if (!config_update_value('paginate_module', get_parameter('paginate_module'))) { $error_update[] = __('Paginate module'); } @@ -1117,11 +1116,6 @@ function config_update_config() $error_update[] = __('Default height of the chart image'); } - /* - if (!config_update_value('classic_menu', (bool) get_parameter('classic_menu', false))) { - $error_update[] = __('Classic menu mode'); - }*/ - // -------------------------------------------------- // CUSTOM VALUES POST PROCESS // -------------------------------------------------- @@ -1793,11 +1787,6 @@ function config_process_config() config_update_value('fixed_graph', false); } - /* - if (!isset($config['fixed_menu'])) { - config_update_value('fixed_menu', false); - }*/ - if (!isset($config['custom_favicon'])) { config_update_value('custom_favicon', ''); } @@ -2518,11 +2507,6 @@ function config_process_config() } } - /* - if (!isset($config['classic_menu'])) { - config_update_value('classic_menu', 0); - }*/ - if (!isset($config['csv_divider'])) { config_update_value('csv_divider', ';'); } diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index c0ae82b4ec..9ff78b3e05 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -342,11 +342,8 @@ function menu_print_menu(&$menu) $sub_title = ''; } - // Added a top on inline styles - $top = menu_calculate_top($config['count_main_menu'], $count_sub, $count_sub2); - // Add submenu2 to submenu string - $submenu_output .= '