From 333a93fad2071fb870cfbcd9670387f3c12b4309 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 11:45:59 +0100 Subject: [PATCH 01/14] Added MR --- pandora_console/extras/mr/62.sql | 63 ++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 pandora_console/extras/mr/62.sql diff --git a/pandora_console/extras/mr/62.sql b/pandora_console/extras/mr/62.sql new file mode 100644 index 0000000000..30760cd6b6 --- /dev/null +++ b/pandora_console/extras/mr/62.sql @@ -0,0 +1,63 @@ +START TRANSACTION; + +UPDATE tconfig_os SET `icon_name` = 'linux@svg.svg' WHERE `id_os` = 1; +UPDATE tconfig_os SET `icon_name` = 'solaris@svg.svg' WHERE `id_os` = 2; +UPDATE tconfig_os SET `icon_name` = 'aix@svg.svg' WHERE `id_os` = 3; +UPDATE tconfig_os SET `icon_name` = 'freebsd@svg.svg' WHERE `id_os` = 4; +UPDATE tconfig_os SET `icon_name` = 'HP@svg.svg' WHERE `id_os` = 5; +UPDATE tconfig_os SET `icon_name` = 'cisco@svg.svg' WHERE `id_os` = 7; +UPDATE tconfig_os SET `icon_name` = 'apple@svg.svg' WHERE `id_os` = 8; +UPDATE tconfig_os SET `icon_name` = 'windows@svg.svg' WHERE `id_os` = 9; +UPDATE tconfig_os SET `icon_name` = 'other-OS@svg.svg' WHERE `id_os` = 10; +UPDATE tconfig_os SET `icon_name` = 'network-server@svg.svg' WHERE `id_os` = 11; +UPDATE tconfig_os SET `icon_name` = 'network-server@svg.svg' WHERE `id_os` = 12; +UPDATE tconfig_os SET `icon_name` = 'network-server@svg.svg' WHERE `id_os` = 13; +UPDATE tconfig_os SET `icon_name` = 'embedded@svg.svg' WHERE `id_os` = 14; +UPDATE tconfig_os SET `icon_name` = 'android@svg.svg' WHERE `id_os` = 15; +UPDATE tconfig_os SET `icon_name` = 'vmware@svg.svg' WHERE `id_os` = 16; +UPDATE tconfig_os SET `icon_name` = 'routers@svg.svg' WHERE `id_os` = 17; +UPDATE tconfig_os SET `icon_name` = 'switch@svg.svg' WHERE `id_os` = 18; +UPDATE tconfig_os SET `icon_name` = 'satellite@svg.svg' WHERE `id_os` = 19; +UPDATE tconfig_os SET `icon_name` = 'mainframe@svg.svg' WHERE `id_os` = 20; +UPDATE tconfig_os SET `icon_name` = 'cluster@svg.svg' WHERE `id_os` = 100; + +UPDATE tgrupo SET `icon` = 'servers@groups.svg' WHERE `id_grupo` = 2; +UPDATE tgrupo SET `icon` = 'firewall@groups.svg' WHERE `id_grupo` = 4; +UPDATE tgrupo SET `icon` = 'database@groups.svg' WHERE `id_grupo` = 8; +UPDATE tgrupo SET `icon` = 'network@groups.svg' WHERE `id_grupo` = 9; +UPDATE tgrupo SET `icon` = 'unknown@groups.svg' WHERE `id_grupo` = 10; +UPDATE tgrupo SET `icon` = 'workstation@groups.svg' WHERE `id_grupo` = 11; +UPDATE tgrupo SET `icon` = 'applications@groups.svg' WHERE `id_grupo` = 12; +UPDATE tgrupo SET `icon` = 'web@groups.svg' WHERE `id_grupo` = 13; + +UPDATE `ttipo_modulo` SET `icon` = 'data-server@svg.svg' WHERE `id_tipo` = 1; +UPDATE `ttipo_modulo` SET `icon` = 'generic-boolean@svg.svg' WHERE `id_tipo` = 2; +UPDATE `ttipo_modulo` SET `icon` = 'generic-string@svg.svg' WHERE `id_tipo` = 3; +UPDATE `ttipo_modulo` SET `icon` = 'data-server@svg.svg' WHERE `id_tipo` = 4; +UPDATE `ttipo_modulo` SET `icon` = 'data-server@svg.svg' WHERE `id_tipo` = 5; +UPDATE `ttipo_modulo` SET `icon` = 'ICMP-network-boolean-data@svg.svg' WHERE `id_tipo` = 6; +UPDATE `ttipo_modulo` SET `icon` = 'ICMP-network-latency@svg.svg' WHERE `id_tipo` = 7; +UPDATE `ttipo_modulo` SET `icon` = 'TCP-network-numeric-data@svg.svg' WHERE `id_tipo` = 8; +UPDATE `ttipo_modulo` SET `icon` = 'TCP-network-boolean-data@svg.svg' WHERE `id_tipo` = 9; +UPDATE `ttipo_modulo` SET `icon` = 'TCP-network-alphanumeric-data@svg.svg' WHERE `id_tipo` = 10; +UPDATE `ttipo_modulo` SET `icon` = 'TCP-network-incremental-data@svg.svg' WHERE `id_tipo` = 11; +UPDATE `ttipo_modulo` SET `icon` = 'SNMP-network-numeric-data@svg.svg' WHERE `id_tipo` = 15; +UPDATE `ttipo_modulo` SET `icon` = 'SNMP-network-incremental-data@svg.svg' WHERE `id_tipo` = 16; +UPDATE `ttipo_modulo` SET `icon` = 'SNMP-network-alphanumeric-data@svg.svg' WHERE `id_tipo` = 17; +UPDATE `ttipo_modulo` SET `icon` = 'SNMP-network-incremental-data@svg.svg' WHERE `id_tipo` = 18; +UPDATE `ttipo_modulo` SET `icon` = 'asynchronus-data@svg.svg' WHERE `id_tipo` = 21; +UPDATE `ttipo_modulo` SET `icon` = 'asynchronus-data@svg.svg' WHERE `id_tipo` = 22; +UPDATE `ttipo_modulo` SET `icon` = 'asynchronus-data@svg.svg' WHERE `id_tipo` = 23; +UPDATE `ttipo_modulo` SET `icon` = 'wux@svg.svg' WHERE `id_tipo` = 25; +UPDATE `ttipo_modulo` SET `icon` = 'server-web@svg.svg' WHERE `id_tipo` = 30; +UPDATE `ttipo_modulo` SET `icon` = 'web-analisys-data@svg.svg' WHERE `id_tipo` = 31; +UPDATE `ttipo_modulo` SET `icon` = 'server-web@svg.svg' WHERE `id_tipo` = 32; +UPDATE `ttipo_modulo` SET `icon` = 'server-web@svg.svg' WHERE `id_tipo` = 33; +UPDATE `ttipo_modulo` SET `icon` = 'remote-execution-numeric-data@svg.svg' WHERE `id_tipo` = 34; +UPDATE `ttipo_modulo` SET `icon` = 'remote-execution-boolean-data@svg.svg' WHERE `id_tipo` = 35; +UPDATE `ttipo_modulo` SET `icon` = 'remote-execution-alphanumeric-data@svg.svg' WHERE `id_tipo` = 36; +UPDATE `ttipo_modulo` SET `icon` = 'remote-execution-incremental-data@svg.svg' WHERE `id_tipo` = 37; +UPDATE `ttipo_modulo` SET `icon` = 'server-web@svg.svg' WHERE `id_tipo` = 38; +UPDATE `ttipo_modulo` SET `icon` = 'keepalive@svg.svg' WHERE `id_tipo` = 100; + +COMMIT; From 47c2b620292b50f63a20b56bacbe3e5b50916454 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 11:47:56 +0100 Subject: [PATCH 02/14] Improve login page --- pandora_console/general/login_page.php | 13 ------------- pandora_console/include/styles/login.css | 1 - 2 files changed, 14 deletions(-) diff --git a/pandora_console/general/login_page.php b/pandora_console/general/login_page.php index eb924227d0..402dc7293f 100755 --- a/pandora_console/general/login_page.php +++ b/pandora_console/general/login_page.php @@ -309,7 +309,6 @@ switch ($login_screen) { false, true ); - echo '
'; echo ''; echo ''; - if ($return) { + if ($return === true) { return $output; } else { echo $output; diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js index 49afd629f6..03c7308faf 100644 --- a/pandora_console/include/javascript/pandora.js +++ b/pandora_console/include/javascript/pandora.js @@ -2340,3 +2340,15 @@ function autoclose_info_box(id, autoCloseTime) { close_info_box(id); }, autoCloseTime); } + +function show_hide_password(e, url) { + let inputPass = e.target.previousElementSibling; + + if (inputPass.type === "password") { + inputPass.type = "text"; + inputPass.style.backgroundImage = "url(" + url + "/images/disable.svg)"; + } else { + inputPass.type = "password"; + inputPass.style.backgroundImage = "url(" + url + "/images/enable.svg)"; + } +} diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index e81f4d4c6d..2745ca7f00 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -9908,9 +9908,9 @@ input, textarea, select { background-color: #f6f7fb; - height: 42px; - border: 1px solid #c0ccdc; - border-radius: 8px; + height: 38px; + border: 2px solid #c0ccdc; + border-radius: 6px; padding-left: 12px; font: normal normal normal 14px Pandora-Light; color: #2b3332; @@ -9937,7 +9937,7 @@ select:disabled, input:not([type="image"]):focus, textarea:focus, select:focus { - border: 1px solid #8a96a6; + border: 2px solid #8a96a6; } :focus { @@ -10424,15 +10424,15 @@ button.ui-button.ui-widget.submit-cancel:active { } .moduleIdBox { - height: 40px; - border-top-right-radius: 8px; - border-bottom-right-radius: 8px; + height: 36px; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; margin-left: -56px; - border: 1px solid #c0ccdc; + border: 2px solid #c0ccdc; background-color: #f6f7fb; padding: 0 16px; z-index: 0; - line-height: 42px; + line-height: 40px; } /* Custom Checkbox Style */ @@ -10567,14 +10567,14 @@ tr.bring_next_field { vertical-align: middle; text-align: left; min-width: 150px !important; - z-index: 10002; + z-index: 60; } .select2-container .select2-selection--single, .select2-container .select2-selection--multiple { background-color: #f6f7fb !important; - border: 1px solid #c0ccdc !important; - border-radius: 8px !important; + border: 2px solid #c0ccdc !important; + border-radius: 6px !important; color: #2b3332 !important; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; @@ -10584,7 +10584,7 @@ tr.bring_next_field { } .select2-container .select2-selection--single { - height: 42px !important; + height: 38px !important; padding-left: 4px !important; display: block; user-select: none; @@ -10592,7 +10592,7 @@ tr.bring_next_field { } .select2-container .select2-selection--multiple { - height: 42px !important; + height: 38px !important; padding-left: 0px !important; } @@ -10621,7 +10621,7 @@ tr.bring_next_field { border: 0 !important; height: 20px !important; margin-left: -8px !important; - margin-top: 10px !important; + margin-top: 8px !important; position: absolute !important; width: 20px !important; background: url(../../images/dropdown-down.svg) no-repeat content-box !important; @@ -10642,7 +10642,7 @@ tr.bring_next_field { text-overflow: ellipsis; white-space: nowrap; color: #444 !important; - line-height: 42px !important; + line-height: 36px !important; } .select2-container--default.select2-container--open.select2-container--below @@ -10808,7 +10808,7 @@ tr.bring_next_field { position: absolute; left: 0; top: 0; - height: 58px; + height: 62px; border: 1px solid #e5e9ed; background-color: #fff; /*z-index: 10000;*/ @@ -11214,3 +11214,22 @@ form#satellite_conf_edit > fieldset.full-column { .inputs_date_details > input { margin: 5px; } + +.show-hide-pass { + position: relative; + right: 38px; + top: 0px; + border: 0; + outline: none; + margin: 0; + height: 40px; + width: 40px; + cursor: pointer; +} + +.show-hide-pass-background { + background-position: center right 15px; + background-repeat: no-repeat; + background-size: 24px; + background-image: url("../../images/enable.svg"); +} From da58e4b9e0e123eca323b6ee1594e7757f763889 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 13:02:24 +0100 Subject: [PATCH 04/14] Ticket 10484 Fixed List Operating Systems --- pandora_console/extras/mr/62.sql | 40 +++---- pandora_console/godmode/setup/os.builder.php | 100 ++++++++++++------ pandora_console/godmode/setup/os.list.php | 25 +++-- pandora_console/godmode/setup/os.php | 16 +-- .../images/{HP@svg.svg => HP@os.svg} | 0 .../images/{aix@svg.svg => aix@os.svg} | 0 .../{android@svg.svg => android@os.svg} | 0 .../images/{apple@svg.svg => apple@os.svg} | 0 .../images/{cisco@svg.svg => cisco@os.svg} | 0 .../{cluster@svg.svg => cluster@os.svg} | 0 .../{embedded@svg.svg => embedded@os.svg} | 0 pandora_console/images/example_qr.png | Bin 0 -> 2275 bytes .../{freebsd@svg.svg => freebsd@os.svg} | 0 .../images/{linux@svg.svg => linux@os.svg} | 0 .../{mainframe@svg.svg => mainframe@os.svg} | 0 ...k-server@svg.svg => network-server@os.svg} | 0 .../{other-OS@svg.svg => other-OS@os.svg} | 0 .../{routers@svg.svg => routers@os.svg} | 0 .../{satellite@svg.svg => satellite@os.svg} | 0 .../{solaris@svg.svg => solaris@os.svg} | 0 .../images/{switch@svg.svg => switch@os.svg} | 0 .../images/{vmware@svg.svg => vmware@os.svg} | 0 .../{windows@svg.svg => windows@os.svg} | 0 .../include/styles/agent_manager.css | 2 + .../operation/agentes/estado_agente.php | 2 +- pandora_console/pandoradb_data.sql | 40 +++---- 26 files changed, 136 insertions(+), 89 deletions(-) rename pandora_console/images/{HP@svg.svg => HP@os.svg} (100%) rename pandora_console/images/{aix@svg.svg => aix@os.svg} (100%) rename pandora_console/images/{android@svg.svg => android@os.svg} (100%) rename pandora_console/images/{apple@svg.svg => apple@os.svg} (100%) rename pandora_console/images/{cisco@svg.svg => cisco@os.svg} (100%) rename pandora_console/images/{cluster@svg.svg => cluster@os.svg} (100%) rename pandora_console/images/{embedded@svg.svg => embedded@os.svg} (100%) create mode 100644 pandora_console/images/example_qr.png rename pandora_console/images/{freebsd@svg.svg => freebsd@os.svg} (100%) rename pandora_console/images/{linux@svg.svg => linux@os.svg} (100%) rename pandora_console/images/{mainframe@svg.svg => mainframe@os.svg} (100%) rename pandora_console/images/{network-server@svg.svg => network-server@os.svg} (100%) rename pandora_console/images/{other-OS@svg.svg => other-OS@os.svg} (100%) rename pandora_console/images/{routers@svg.svg => routers@os.svg} (100%) rename pandora_console/images/{satellite@svg.svg => satellite@os.svg} (100%) rename pandora_console/images/{solaris@svg.svg => solaris@os.svg} (100%) rename pandora_console/images/{switch@svg.svg => switch@os.svg} (100%) rename pandora_console/images/{vmware@svg.svg => vmware@os.svg} (100%) rename pandora_console/images/{windows@svg.svg => windows@os.svg} (100%) diff --git a/pandora_console/extras/mr/62.sql b/pandora_console/extras/mr/62.sql index 30760cd6b6..4d21f9bb2a 100644 --- a/pandora_console/extras/mr/62.sql +++ b/pandora_console/extras/mr/62.sql @@ -1,25 +1,25 @@ START TRANSACTION; -UPDATE tconfig_os SET `icon_name` = 'linux@svg.svg' WHERE `id_os` = 1; -UPDATE tconfig_os SET `icon_name` = 'solaris@svg.svg' WHERE `id_os` = 2; -UPDATE tconfig_os SET `icon_name` = 'aix@svg.svg' WHERE `id_os` = 3; -UPDATE tconfig_os SET `icon_name` = 'freebsd@svg.svg' WHERE `id_os` = 4; -UPDATE tconfig_os SET `icon_name` = 'HP@svg.svg' WHERE `id_os` = 5; -UPDATE tconfig_os SET `icon_name` = 'cisco@svg.svg' WHERE `id_os` = 7; -UPDATE tconfig_os SET `icon_name` = 'apple@svg.svg' WHERE `id_os` = 8; -UPDATE tconfig_os SET `icon_name` = 'windows@svg.svg' WHERE `id_os` = 9; -UPDATE tconfig_os SET `icon_name` = 'other-OS@svg.svg' WHERE `id_os` = 10; -UPDATE tconfig_os SET `icon_name` = 'network-server@svg.svg' WHERE `id_os` = 11; -UPDATE tconfig_os SET `icon_name` = 'network-server@svg.svg' WHERE `id_os` = 12; -UPDATE tconfig_os SET `icon_name` = 'network-server@svg.svg' WHERE `id_os` = 13; -UPDATE tconfig_os SET `icon_name` = 'embedded@svg.svg' WHERE `id_os` = 14; -UPDATE tconfig_os SET `icon_name` = 'android@svg.svg' WHERE `id_os` = 15; -UPDATE tconfig_os SET `icon_name` = 'vmware@svg.svg' WHERE `id_os` = 16; -UPDATE tconfig_os SET `icon_name` = 'routers@svg.svg' WHERE `id_os` = 17; -UPDATE tconfig_os SET `icon_name` = 'switch@svg.svg' WHERE `id_os` = 18; -UPDATE tconfig_os SET `icon_name` = 'satellite@svg.svg' WHERE `id_os` = 19; -UPDATE tconfig_os SET `icon_name` = 'mainframe@svg.svg' WHERE `id_os` = 20; -UPDATE tconfig_os SET `icon_name` = 'cluster@svg.svg' WHERE `id_os` = 100; +UPDATE tconfig_os SET `icon_name` = 'linux@os.svg' WHERE `id_os` = 1; +UPDATE tconfig_os SET `icon_name` = 'solaris@os.svg' WHERE `id_os` = 2; +UPDATE tconfig_os SET `icon_name` = 'aix@os.svg' WHERE `id_os` = 3; +UPDATE tconfig_os SET `icon_name` = 'freebsd@os.svg' WHERE `id_os` = 4; +UPDATE tconfig_os SET `icon_name` = 'HP@os.svg' WHERE `id_os` = 5; +UPDATE tconfig_os SET `icon_name` = 'cisco@os.svg' WHERE `id_os` = 7; +UPDATE tconfig_os SET `icon_name` = 'apple@os.svg' WHERE `id_os` = 8; +UPDATE tconfig_os SET `icon_name` = 'windows@os.svg' WHERE `id_os` = 9; +UPDATE tconfig_os SET `icon_name` = 'other-OS@os.svg' WHERE `id_os` = 10; +UPDATE tconfig_os SET `icon_name` = 'network-server@os.svg' WHERE `id_os` = 11; +UPDATE tconfig_os SET `icon_name` = 'network-server@os.svg' WHERE `id_os` = 12; +UPDATE tconfig_os SET `icon_name` = 'network-server@os.svg' WHERE `id_os` = 13; +UPDATE tconfig_os SET `icon_name` = 'embedded@os.svg' WHERE `id_os` = 14; +UPDATE tconfig_os SET `icon_name` = 'android@os.svg' WHERE `id_os` = 15; +UPDATE tconfig_os SET `icon_name` = 'vmware@os.svg' WHERE `id_os` = 16; +UPDATE tconfig_os SET `icon_name` = 'routers@os.svg' WHERE `id_os` = 17; +UPDATE tconfig_os SET `icon_name` = 'switch@os.svg' WHERE `id_os` = 18; +UPDATE tconfig_os SET `icon_name` = 'satellite@os.svg' WHERE `id_os` = 19; +UPDATE tconfig_os SET `icon_name` = 'mainframe@os.svg' WHERE `id_os` = 20; +UPDATE tconfig_os SET `icon_name` = 'cluster@os.svg' WHERE `id_os` = 100; UPDATE tgrupo SET `icon` = 'servers@groups.svg' WHERE `id_grupo` = 2; UPDATE tgrupo SET `icon` = 'firewall@groups.svg' WHERE `id_grupo` = 4; diff --git a/pandora_console/godmode/setup/os.builder.php b/pandora_console/godmode/setup/os.builder.php index 83b79e95a4..ac2026d0e6 100644 --- a/pandora_console/godmode/setup/os.builder.php +++ b/pandora_console/godmode/setup/os.builder.php @@ -1,17 +1,32 @@ '; $table = new stdClass(); $table->width = '100%'; $table->class = 'databox filters'; -$table->style[0] = 'font-weight: bolder;'; +$table->style[0] = 'width: 15%'; $table->data[0][0] = __('Name:'); -$table->data[0][1] = html_print_input_text('name', $name, __('Name'), 20, 30, true); +$table->data[0][1] = html_print_input_text('name', $name, __('Name'), 20, 30, true, false, false, '', 'w250px'); $table->data[1][0] = __('Description'); -$table->data[1][1] = html_print_textarea('description', 5, 10, $description, '', true); -$icons = get_list_os_icons_dir(); +$table->data[1][1] = html_print_textarea('description', 5, 20, $description, '', true, 'w250px'); $table->data[2][0] = __('Icon'); -$table->data[2][1] = html_print_select($icons, 'icon', $icon, 'show_icon_OS();', __('None'), 0, true); -$table->data[2][1] .= ' '.ui_print_os_icon($idOS, false, true).''; + +$iconData = []; +$iconData[] = html_print_select( + $icons, + 'icon', + $icon, + 'show_icon_OS();', + __('None'), + 0, + true +); +$iconData[] = html_print_div( + [ + 'id' => 'icon_image', + 'class' => 'inverse_filter main_menu_icon', + 'style' => 'margin-left: 10px', + 'content' => ui_print_os_icon($idOS, false, true), + ], + true +); + +$table->data[2][1] = html_print_div( + [ + 'style' => 'display: flex;align-items: center;', + 'content' => implode('', $iconData), + ], + true +); html_print_table($table); @@ -47,9 +89,11 @@ html_print_table($table); html_print_input_hidden('id_os', $idOS); html_print_input_hidden('action', $actionHidden); -echo '
'; -html_print_submit_button($textButton, 'update_button', false, $classButton); -echo '
'; +html_print_action_buttons( + html_print_submit_button($textButton, 'update_button', false, $classButton, true), + ['type' => 'form_action'] +); + echo ''; @@ -59,18 +103,10 @@ function get_list_os_icons_dir() $return = []; - $items = scandir($config['homedir'].'/images/os_icons'); + $items = scandir($config['homedir'].'/images/'); foreach ($items as $item) { - if (strstr($item, '_small.png') || strstr($item, '_small.gif') - || strstr($item, '_small.jpg') - ) { - continue; - } - - if (strstr($item, '.png') || strstr($item, '.gif') - || strstr($item, '.jpg') - ) { + if (strstr($item, '@os.svg')) { $return[$item] = $item; } } @@ -86,7 +122,7 @@ function show_icon_OS() { var params = []; params.push("get_image_path=1"); - params.push('img_src=images/os_icons/' + $("#icon").val()); + params.push('img_src=images/' + $("#icon").val()); params.push("page=include/ajax/skins.ajax"); jQuery.ajax ({ data: params.join ("&"), diff --git a/pandora_console/godmode/setup/os.list.php b/pandora_console/godmode/setup/os.list.php index 48a8b9b534..f8ba6a865a 100644 --- a/pandora_console/godmode/setup/os.list.php +++ b/pandora_console/godmode/setup/os.list.php @@ -1,6 +1,6 @@ width = '100%'; +// $table->width = '100%'; +$table->styleTable = 'margin: 10px 10px 0'; $table->class = 'info_table'; $table->head[0] = ''; @@ -102,7 +103,7 @@ if ($osList === false) { $table->data = []; foreach ($osList as $os) { $data = []; - $data[] = ui_print_os_icon($os['id_os'], false, true); + $data[] = html_print_div(['class' => 'main_menu_icon', 'content' => ui_print_os_icon($os['id_os'], false, true)], true); $data[] = $os['id_os']; if ($is_management_allowed === true) { if (is_metaconsole() === true) { @@ -119,11 +120,20 @@ foreach ($osList as $os) { if ($is_management_allowed === true) { $table->cellclass[][4] = 'table_action_buttons'; if ($os['id_os'] > 16) { - if (is_metaconsole()) { - $data[] = ''.html_print_image('images/cross.png', true).''; + if (is_metaconsole() === true) { + $hrefDelete = 'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&action=delete&tab2=list&id_os='.$os['id_os']; } else { - $data[] = ''.html_print_image('images/cross.png', true, ['class' => 'invert_filter']).''; + $hrefDelete = 'index.php?sec=gsetup&sec2=godmode/setup/os&action=delete&tab=list&id_os='.$os['id_os']; } + + $data[] = html_print_anchor( + [ + 'href' => $hrefDelete, + 'class' => 'inverse_filter main_menu_icon', + 'content' => html_print_image('images/delete.svg', true), + ], + true + ); } else { // The original icons of pandora don't delete. $data[] = ''; @@ -134,7 +144,6 @@ foreach ($osList as $os) { } if (isset($data) === true) { - ui_pagination($count_osList, ui_get_url_refresh(['message' => false]), $offset); html_print_table($table); ui_pagination($count_osList, ui_get_url_refresh(['message' => false]), $offset, 0, false, 'offset', true, 'pagination-bottom'); } else { diff --git a/pandora_console/godmode/setup/os.php b/pandora_console/godmode/setup/os.php index dafdfe0730..8ced483492 100644 --- a/pandora_console/godmode/setup/os.php +++ b/pandora_console/godmode/setup/os.php @@ -71,7 +71,7 @@ if ($is_management_allowed === true) { case 'edit': $actionHidden = 'update'; $textButton = __('Update'); - $classButton = 'class="sub upd"'; + $classButton = ['icon' => 'wand']; break; case 'save': @@ -93,7 +93,7 @@ if ($is_management_allowed === true) { $tab = 'builder'; $actionHidden = 'save'; $textButton = __('Create'); - $classButton = 'class="sub next"'; + $classButton = ['icon' => 'wand']; } else { $tab = 'list'; $message = 1; @@ -140,7 +140,7 @@ if ($is_management_allowed === true) { $actionHidden = 'update'; $textButton = __('Update'); - $classButton = 'class="sub upd"'; + $classButton = ['icon' => 'wand']; if (is_metaconsole() === true) { header('Location:'.$config['homeurl'].'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&tab2='.$tab.'&message='.$message); } else { @@ -175,7 +175,7 @@ if ($is_management_allowed === true) { case 'new': $actionHidden = 'save'; $textButton = __('Create'); - $classButton = 'class="sub next"'; + $classButton = ['icon' => 'next']; break; } } @@ -184,11 +184,11 @@ $buttons = []; $buttons['list'] = [ 'active' => false, 'text' => ''.html_print_image( - 'images/list.png', + 'images/logs@svg.svg', true, [ 'title' => __('List OS'), - 'class' => 'invert_filter', + 'class' => 'invert_filter main_menu_icon', ] ).'', ]; @@ -196,11 +196,11 @@ if ($is_management_allowed === true) { $buttons['builder'] = [ 'active' => false, 'text' => ''.html_print_image( - 'images/builder.png', + 'images/edit.svg', true, [ 'title' => __('Builder OS'), - 'class' => 'invert_filter', + 'class' => 'invert_filter main_menu_icon', ] ).'', ]; diff --git a/pandora_console/images/HP@svg.svg b/pandora_console/images/HP@os.svg similarity index 100% rename from pandora_console/images/HP@svg.svg rename to pandora_console/images/HP@os.svg diff --git a/pandora_console/images/aix@svg.svg b/pandora_console/images/aix@os.svg similarity index 100% rename from pandora_console/images/aix@svg.svg rename to pandora_console/images/aix@os.svg diff --git a/pandora_console/images/android@svg.svg b/pandora_console/images/android@os.svg similarity index 100% rename from pandora_console/images/android@svg.svg rename to pandora_console/images/android@os.svg diff --git a/pandora_console/images/apple@svg.svg b/pandora_console/images/apple@os.svg similarity index 100% rename from pandora_console/images/apple@svg.svg rename to pandora_console/images/apple@os.svg diff --git a/pandora_console/images/cisco@svg.svg b/pandora_console/images/cisco@os.svg similarity index 100% rename from pandora_console/images/cisco@svg.svg rename to pandora_console/images/cisco@os.svg diff --git a/pandora_console/images/cluster@svg.svg b/pandora_console/images/cluster@os.svg similarity index 100% rename from pandora_console/images/cluster@svg.svg rename to pandora_console/images/cluster@os.svg diff --git a/pandora_console/images/embedded@svg.svg b/pandora_console/images/embedded@os.svg similarity index 100% rename from pandora_console/images/embedded@svg.svg rename to pandora_console/images/embedded@os.svg diff --git a/pandora_console/images/example_qr.png b/pandora_console/images/example_qr.png new file mode 100644 index 0000000000000000000000000000000000000000..e20000cb3c1a752d1acf5dc0c68596eaf7029f6e GIT binary patch literal 2275 zcmV<92pso`P)Px-ok>JNRCr$PooiO(N(_WyPs9Efz@oT^lQ7q`ZS_|bbuxkCZ`%EkN~Mzg;Pua+ zKOZj(|K8u<|IYsQ_IC41+xb2xtLCI@S95m#c6RV_|8&nc8}d5AYXI=_(&gl>Gsigt zfJwAcM27*WrP#P{3_wv^O|4KGU9Tf`Fmv>ca?e(!06M4Qp8%lG=ig?c&RP*L0l*@s zD$_na02JDFY0D8!3c4#NRBLzat9y>mbGsEnb=_$S2mmfnqmeuUGXS_+#En9QZokG> z`BZUGxAQtc6b1l@2mp?a^v|RK*FoE3QAU~JWwmah8e`li-B(wNzN-cZ050x!+t*Jo z0t0|w4gjTuI~(iv?YpSfjlx+<`uhDxr+@%p4ub$-Vxus?JdG%9cUKV@26!R{m~ZuX zgd+5|Gf-u$?29&Z+>(kmm%41?Hk2wm-}P>w%K+}d1Ax87M=%Be;)5!*5kbNk#!99O^BZq?Vp9a9k$H&t50%)m6ky{yEX@FGgIjL#P-}Kxa!j9VRXxwW6 zus2Hpa0{f0Yn6t}*)(B*Ugub?V8sdB?b4h%6Jpc^v=Kx*dUV}tzFDb9*+ZM0Iv2*3b+`8(!6pLiI%QA2G~{su1KTQq{R&z zOU^0DI~V0IsN@ z6zbA7o!^bLj``j6V5b0D4!P_wV+&>DWUNBH6&q2_LH0B&M_n=J1_HhtND-|VfgV)s3MXkdKZZ5xf+N#dx_B^UN0{{_C9f2S& z`FD5#;9BmWQ%3Xrk7t0hn?Wn`ry{)0M5h~pE6!7a!(HzNj2|+^48T?=P;q3H=PSh? z0QgW)z!v}rpKO`AgqF%Ki_O;m`aJ-6KuP$y~ryMgMyYZqrt}Os7PCFbmb`~ zH{H?5?l|l2c5nbtn?C@!+NUFLDXbC(*aLG31Dw4Xq$vGrV=i#c0HDlA8z%}dDP21N zrgI;SQ-t64`qP_10l+Qp;2)V*0IldNsz(BV$=ks$48j06YKNo%4SIG8SX~9sJiLP5 zs0q82zH?T}6tg~qlCr;PfB-=Iw{cZ&4FDz`I9Kqv^cDuVSO7l|LJj89b#7D(EuwuSx+< zD|j?erGC3pf|B28>Zr~${zm)puHJDf3HO|z*IAvw0AQ}J1Awaq!T@_H(56jCWi(?4 z{E;Y^=H0`(z&Sf`^y|LU zB0xV)3UIy>MjH}iJRU6?MK+8{b18IQ|8&bobypz&uN7 zN^0DW#Setg+EoFLV;IG$%Gj!L;~MwtI_I3TZf4h<0lSe$;j`;qo49PMq}p}{a1To6S-kRFznk^#WQ zQllLLfX3Iu!vK@8R;Vxxus0^PiIf7i4}?&fR1~#K(PxM4ssd&y=<9c7Jx80+eH_s@ zy|w}bZUj*cKtVJUR{_A@y$XZUzzYB-Vf5n}praG$*0~hXZtkOOw4$t~j7e#HHjds5 zDyx8sHmEUY8{PgM04Ua~#|8j5yyY7PH~^QD`;r2*lFhXjZL&#a;F$*KBd7mosz615 z>qg4f2t_Y+NGmh(6@7|7d*9!n9>F>ug0DU#g zWdN#9JEB$D;|j-8=AhM_Dwc z*DKNr-HR*ADtmRB_JQr8$wMlv^|+SM)q6P?Ymf?NC)U0RW(U*LkY}9RN&H zOjkW00Nn7HltQO&WzlgRO%DpFoM#xi+QKeq@uy;`pb7vkmb$l?3jjn~2m@RU76zDn zDKsenMAkj&PPuna>t9m8z~+N5@Su(%E_x>;V8s0d5`ZUKap7 zpbQKHT#W8&p}VF4H$ql)0;$0iwOyUBqe)byscL?@Hnqvvl^oBFUk#&x2mtn$Qh*r% z93YLNT`_bR;6MY=C|AbOyhWLVD({i{-0Q}(Qu?Mgx<`dj?d74*1X6HRB_W+7062z0 x0Pui!3aLP(EHY!eFu'.__('Filters').'', 'filter_form' ); diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index 7d13eb5379..bde4538077 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -155,26 +155,26 @@ UNLOCK TABLES; LOCK TABLES `tconfig_os` WRITE; INSERT INTO `tconfig_os` (`id_os`, `name`, `description`, `icon_name`, `previous_name`) VALUES -(1,'Linux','Linux: All versions','linux@svg.svg', ''), -(2,'Solaris','Sun Solaris','solaris@svg.svg', ''), -(3,'AIX','IBM AIX','aix@svg.svg', ''), -(4,'BSD','OpenBSD, FreeBSD and Others','freebsd@svg.svg', ''), -(5,'HP-UX','HP-UX Unix OS','HP@svg.svg', ''), -(7,'Cisco','CISCO IOS','cisco@svg.svg', ''), -(8,'MacOS','MAC OS','apple@svg.svg', ''), -(9,'Windows','Microsoft Windows OS','windows@svg.svg', ''), -(10,'Other','Other SO','other-OS@svg.svg', ''), -(11,'Network','Network Agent','network-server@svg.svg', ''), -(12,'Web Server','Web Server/Application','network-server@svg.svg', ''), -(13,'Sensor','Hardware Agent (Sensor)','network-server@svg.svg', ''), -(14,'Embedded','Embedded device running an agent','embedded@svg.svg', ''), -(15,'Android','Android agent','android@svg.svg', ''), -(16, 'VMware', 'VMware Architecture', 'vmware@svg.svg', ''), -(17, 'Router', 'Generic router', 'routers@svg.svg', ''), -(18, 'Switch', 'Generic switch', 'switch@svg.svg', ''), -(19, 'Satellite', 'Satellite agent', 'satellite@svg.svg', ''), -(20, 'Mainframe', 'Mainframe agent', 'mainframe@svg.svg', ''), -(100, 'Cluster', 'Cluster agent', 'cluster@svg.svg', ''); +(1,'Linux','Linux: All versions','linux@os.svg', ''), +(2,'Solaris','Sun Solaris','solaris@os.svg', ''), +(3,'AIX','IBM AIX','aix@os.svg', ''), +(4,'BSD','OpenBSD, FreeBSD and Others','freebsd@os.svg', ''), +(5,'HP-UX','HP-UX Unix OS','HP@os.svg', ''), +(7,'Cisco','CISCO IOS','cisco@os.svg', ''), +(8,'MacOS','MAC OS','apple@os.svg', ''), +(9,'Windows','Microsoft Windows OS','windows@os.svg', ''), +(10,'Other','Other SO','other-OS@os.svg', ''), +(11,'Network','Network Agent','network-server@os.svg', ''), +(12,'Web Server','Web Server/Application','network-server@os.svg', ''), +(13,'Sensor','Hardware Agent (Sensor)','network-server@os.svg', ''), +(14,'Embedded','Embedded device running an agent','embedded@os.svg', ''), +(15,'Android','Android agent','android@os.svg', ''), +(16, 'VMware', 'VMware Architecture', 'vmware@os.svg', ''), +(17, 'Router', 'Generic router', 'routers@os.svg', ''), +(18, 'Switch', 'Generic switch', 'switch@os.svg', ''), +(19, 'Satellite', 'Satellite agent', 'satellite@os.svg', ''), +(20, 'Mainframe', 'Mainframe agent', 'mainframe@os.svg', ''), +(100, 'Cluster', 'Cluster agent', 'cluster@os.svg', ''); UNLOCK TABLES; From 4bbf750944b9d5e7960503dcaa9cddf73cdaaba8 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Feb 2023 14:35:32 +0100 Subject: [PATCH 05/14] Monitor view meta fix --- .../operation/agentes/status_monitor.php | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php index 839bd50846..cf8c322ee5 100644 --- a/pandora_console/operation/agentes/status_monitor.php +++ b/pandora_console/operation/agentes/status_monitor.php @@ -946,8 +946,9 @@ $tableFilter->data[4][0] = html_print_button( false, '', [ - 'icon' => 'wand', - 'mode' => 'mini secondary', + 'icon' => 'wand', + 'mode' => 'mini secondary', + 'class' => 'float-left margin-right-2 sub config', ], true ); @@ -959,8 +960,9 @@ $tableFilter->data[4][1] = html_print_button( false, '', [ - 'icon' => 'wand', - 'mode' => 'mini secondary', + 'icon' => 'wand', + 'mode' => 'mini secondary', + 'class' => 'float-left margin-right-2 sub wand', ], true ); @@ -1405,6 +1407,16 @@ if ($autosearch) { // Start Build List Result. if (empty($result) === false) { + if (is_metaconsole() === true) { + html_print_action_buttons( + html_print_div(['style' => 'float:left; height: 55px;', 'class' => 'mrgn_top_15px'], true), + [ + 'type' => 'form_action', + 'right_content' => $tablePagination, + ] + ); + } + $table = new StdClass(); $table->cellpadding = 0; $table->cellspacing = 0; @@ -2120,7 +2132,6 @@ if (empty($result) === false) { html_print_table($table); if ($count_modules > $config['block_size']) { - hd('patata'); $tablePagination = ui_pagination($count_modules, false, $offset, 0, true, 'offset', false); } } else { @@ -2131,13 +2142,15 @@ if (empty($result) === false) { } } -html_print_action_buttons( - html_print_div(['style' => 'float:left; height: 55px;'], true), - [ - 'type' => 'form_action', - 'right_content' => $tablePagination, - ] -); +if (is_metaconsole() !== true) { + html_print_action_buttons( + html_print_div(['style' => 'float:left; height: 55px;'], true), + [ + 'type' => 'form_action', + 'right_content' => $tablePagination, + ] + ); +} // End Build List Result. echo "
"; From 8f212292468760af426adb978db2cfe23ac070b7 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 14:50:17 +0100 Subject: [PATCH 06/14] Ticket 10467 Improve External Tools view --- .../include/class/ExternalTools.class.php | 38 ++++++++++--------- pandora_console/include/styles/pandora.css | 19 +++++++--- pandora_console/index.php | 6 +-- .../operation/agentes/external_tools.php | 2 +- 4 files changed, 38 insertions(+), 27 deletions(-) diff --git a/pandora_console/include/class/ExternalTools.class.php b/pandora_console/include/class/ExternalTools.class.php index 002642c5a9..67345a61f8 100644 --- a/pandora_console/include/class/ExternalTools.class.php +++ b/pandora_console/include/class/ExternalTools.class.php @@ -528,14 +528,16 @@ class ExternalTools extends HTML // Form table. $table = new StdClass(); - $table->class = 'databox filters w100p'; + $table->class = 'fixed_filter_bar'; $table->id = 'externalToolTable'; - + $table->cellstyle['captions'][0] = 'width: 0'; + $table->cellstyle['captions'][1] = 'width: 0'; + $table->cellstyle['captions'][2] = 'width: 0'; $table->data = []; - $table->data[0][0] = __('Operation'); + $table->data['captions'][0] = __('Operation'); - $table->data[0][1] = html_print_select( + $table->data['inputs'][0] = html_print_select( $commandList, 'operation', $this->operation, @@ -545,8 +547,8 @@ class ExternalTools extends HTML true ); - $table->data[0][2] = __('IP Adress'); - $table->data[0][3] = html_print_select( + $table->data['captions'][1] = __('IP Adress'); + $table->data['inputs'][1] = html_print_select( $ipsSelect, 'select_ips', $principal_ip, @@ -556,10 +558,10 @@ class ExternalTools extends HTML true ); - $table->cellclass[0][4] = 'snmpcolumn'; - $table->data[0][4] = __('SNMP Version'); - $table->data[0][4] .= ' '; - $table->data[0][4] .= html_print_select( + $table->cellclass['captions'][2] = 'snmpcolumn'; + $table->cellclass['inputs'][2] = 'snmpcolumn'; + $table->data['captions'][2] = __('SNMP Version'); + $table->data['inputs'][2] = html_print_select( [ '1' => 'v1', '2c' => 'v2c', @@ -572,10 +574,10 @@ class ExternalTools extends HTML true ); - $table->cellclass[0][5] = 'snmpcolumn'; - $table->data[0][5] = __('SNMP Community'); - $table->data[0][5] .= ' '; - $table->data[0][5] .= html_print_input_text( + $table->cellclass['captions'][3] = 'snmpcolumn'; + $table->cellclass['inputs'][3] = 'snmpcolumn'; + $table->data['captions'][3] = __('SNMP Community'); + $table->data['inputs'][3] = html_print_input_text( 'community', $this->community, '', @@ -584,7 +586,7 @@ class ExternalTools extends HTML true ); - $table->data[0][6] = html_print_div( + $table->data['inputs'][4] = html_print_div( [ 'class' => 'action-buttons', 'content' => html_print_submit_button( @@ -719,7 +721,7 @@ class ExternalTools extends HTML try { // If caption is not added, don't show anything. if (empty($caption) === false) { - $output .= sprintf('

%s

', $caption); + $output .= sprintf('

%s

', $caption); } $output .= '
';
@@ -787,7 +789,7 @@ class ExternalTools extends HTML
                     'format'         => '-Oqn',
                 ];
 
-                echo '

'.__('SNMP information for ').$ip.'

'; + echo '

'.__('SNMP information for ').$ip.'

'; $snmp_obj['base_oid'] = '.1.3.6.1.2.1.1.3.0'; $result = get_h_snmpwalk($snmp_obj); @@ -849,7 +851,7 @@ class ExternalTools extends HTML html_print_table($table); } else if ((int) $operation === COMMAND_DIGWHOIS) { - echo '

'.__('Domain and IP information for ').$ip.'

'; + echo '

'.__('Domain and IP information for ').$ip.'

'; // Dig execution. $dig = $this->whereIsTheCommand('dig'); diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 2745ca7f00..9a5bd7af27 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -153,7 +153,7 @@ html { } body { - background-color: #fbfbfb; + background-color: #f6f7fb; margin: 0 auto; display: flex; flex-direction: column; @@ -1080,14 +1080,14 @@ div#page { } body.pure { - background-color: #fbfbfb; + background-color: #f6f7fb; } div#container { margin: 0 auto; min-width: 960px; text-align: left; - background: #fbfbfb; + background: #f6f7fb; width: 100%; } @@ -1096,7 +1096,7 @@ div#main { /* width: 100%; */ /* margin-left: 3em; */ background-color: #f6f7fb; - margin-bottom: 3em; + padding-bottom: 3em; position: relative; /* margin-top: 8.8em; */ flex-direction: column; @@ -10818,18 +10818,23 @@ tr.bring_next_field { left: -95px !important; } +.external_tools_title { + padding: 0 10px; +} pre.external_tools_output { + padding: 0 10px; + /* border: 1px solid #e5e9ed; -moz-box-shadow: 0 3px 6px 0 rgb(0 0 0 / 13%); -webkit-box-shadow: 0 3px 6px 0 rgb(0 0 0 / 13%); box-shadow: 0 3px 6px 0 rgb(0 0 0 / 13%); border-radius: 8px; color: #cacaca; - padding: 10px; background-color: #000; background-image: radial-gradient(rgba(0, 150, 0, 0.75), #000 120%); font-size: 11pt; text-shadow: 0 0 5px #000; + */ } .dialog_table_form td:first-child { @@ -10919,6 +10924,10 @@ table.table_modal_alternate .select2-selection__arrow { top: -4px !important; } +.fixed_filter_bar .select2-selection__arrow b, +.filter_table .select2-selection__arrow b { + margin-top: 11px !important; +} .filter_table .select2-container .select2-selection--single diff --git a/pandora_console/index.php b/pandora_console/index.php index 39956244a9..5bf027ec61 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1456,10 +1456,10 @@ if (__PAN_XHPROF__ === 1) { } if ($config['pure'] == 0) { - echo '
'; + // echo '
'; echo ''; // Main. - echo '
 
'; + // echo '
 
'; echo ''; // Page (id = page). } else { @@ -1488,7 +1488,7 @@ if ($config['pure'] == 0) { echo ''; // Container div. echo ''; - echo '
'; + // echo '
'; echo ''; } diff --git a/pandora_console/operation/agentes/external_tools.php b/pandora_console/operation/agentes/external_tools.php index 1d57c06f81..eb2fbd835b 100644 --- a/pandora_console/operation/agentes/external_tools.php +++ b/pandora_console/operation/agentes/external_tools.php @@ -14,7 +14,7 @@ * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| * * ============================================================================ - * Copyright (c) 2005-2021 Artica Soluciones Tecnologicas + * Copyright (c) 2005-2023 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 From 49fc725cdcc7f6e0b6c0ce9d4057d1afdbaeb7aa Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 15:16:27 +0100 Subject: [PATCH 07/14] Cog animations --- pandora_console/include/styles/pandora.css | 13 +++++++++++++ pandora_console/index.php | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 9a5bd7af27..58a8cc6653 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -10361,6 +10361,19 @@ button div.fail { -webkit-mask: url(../../images/fail@svg.svg) no-repeat center / contain; } +button div.cog.rotation { + animation: rotation 4s infinite linear; +} + +@keyframes rotation { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(359deg); + } +} .ui-dialog-buttonset { width: 100%; display: flex; diff --git a/pandora_console/index.php b/pandora_console/index.php index 5bf027ec61..4e69b273bc 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1670,4 +1670,11 @@ require 'include/php_to_js_values.php'; } ); }); + + // Cog animations. + $(document).ready(function() { + $(".submitButton").click(function(){ + $("#"+this.id+" > .subIcon.cog").addClass("rotation"); + }); + }); From fc68e6ead103d39210c0774af70a216bef1f703e Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Feb 2023 15:58:41 +0100 Subject: [PATCH 08/14] Monitor view meta fix status --- .../operation/agentes/status_monitor.php | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php index cf8c322ee5..e2db157682 100644 --- a/pandora_console/operation/agentes/status_monitor.php +++ b/pandora_console/operation/agentes/status_monitor.php @@ -1674,25 +1674,24 @@ if (empty($result) === false) { } if (in_array('status', $show_fields) || is_metaconsole()) { - hd($row['utimestamp'], true); - hd($row['module_type'], true); + $data[6] = '
'; if ($row['utimestamp'] === 0 && (($row['module_type'] < 21 || $row['module_type'] > 23) && $row['module_type'] != 100) ) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_NO_DATA, __('NOT INIT'), true ); } else if ($row['estado'] == 0) { if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_OK, __('NORMAL').': '.remove_right_zeros(number_format($row['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])), true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_OK, __('NORMAL').': '.htmlspecialchars($row['datos']), true @@ -1700,7 +1699,7 @@ if (empty($result) === false) { } } else if ($row['estado'] == 1) { if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_CRITICAL, __('CRITICAL').': '.remove_right_zeros( number_format( @@ -1713,7 +1712,7 @@ if (empty($result) === false) { true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_CRITICAL, __('CRITICAL').': '.htmlspecialchars($row['datos']), true @@ -1721,7 +1720,7 @@ if (empty($result) === false) { } } else if ($row['estado'] == 2) { if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_WARNING, __('WARNING').': '.remove_right_zeros( number_format( @@ -1734,7 +1733,7 @@ if (empty($result) === false) { true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_WARNING, __('WARNING').': '.htmlspecialchars($row['datos']), true @@ -1742,7 +1741,7 @@ if (empty($result) === false) { } } else if ($row['estado'] == 3) { if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').': '.remove_right_zeros( number_format( @@ -1755,7 +1754,7 @@ if (empty($result) === false) { true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').': '.htmlspecialchars($row['datos']), true @@ -1763,7 +1762,7 @@ if (empty($result) === false) { } } else if ($row['estado'] == 4) { if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_NO_DATA, __('NO DATA').': '.remove_right_zeros( number_format( @@ -1776,7 +1775,7 @@ if (empty($result) === false) { true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_NO_DATA, __('NO DATA').': '.htmlspecialchars($row['datos']), true @@ -1786,17 +1785,17 @@ if (empty($result) === false) { $last_status = modules_get_agentmodule_last_status( $row['id_agente_modulo'] ); - hd('pues por aqui tambien', true); + switch ($last_status) { case 0: if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').' - '.__('Last status').' '.__('NORMAL').': '.remove_right_zeros(number_format($row['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])), true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').' - '.__('Last status').' '.__('NORMAL').': '.htmlspecialchars($row['datos']), true @@ -1806,13 +1805,13 @@ if (empty($result) === false) { case 1: if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').' - '.__('Last status').' '.__('CRITICAL').': '.remove_right_zeros(number_format($row['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])), true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').' - '.__('Last status').' '.__('CRITICAL').': '.htmlspecialchars($row['datos']), true @@ -1822,13 +1821,13 @@ if (empty($result) === false) { case 2: if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').' - '.__('Last status').' '.__('WARNING').': '.remove_right_zeros(number_format($row['datos'], $config['graph_precision'], $config['decimal_separator'], $config['thousand_separator'])), true ); } else { - $data[6] = ui_print_status_image( + $data[6] .= ui_print_status_image( STATUS_MODULE_UNKNOWN, __('UNKNOWN').' - '.__('Last status').' '.__('WARNING').': '.htmlspecialchars($row['datos']), true @@ -1837,6 +1836,8 @@ if (empty($result) === false) { break; } } + + $data[6] .= '
'; } if (in_array('last_status_change', $show_fields) || is_metaconsole()) { From c6e32e278be4447a8f22c953ec796bcbab24bfb4 Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Mon, 20 Feb 2023 16:41:54 +0100 Subject: [PATCH 09/14] #9662 fixed favourites --- pandora_console/general/main_menu.php | 2 +- pandora_console/include/functions_menu.php | 25 ++++++++++++++ pandora_console/include/styles/pandora.css | 2 +- pandora_console/operation/menu.php | 39 ++++++++++++++++------ 4 files changed, 56 insertions(+), 12 deletions(-) diff --git a/pandora_console/general/main_menu.php b/pandora_console/general/main_menu.php index af93f5f0b7..efa2fc5c96 100644 --- a/pandora_console/general/main_menu.php +++ b/pandora_console/general/main_menu.php @@ -444,7 +444,7 @@ echo ''; */ function menu_calculate_top(index, item_height) { const result = index * item_height; - return 140 + result; + return 136 + result; } }); diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index b9774ae800..af3071809d 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -79,6 +79,31 @@ function menu_print_menu(&$menu) } else if ($sec2 === 'godmode/events/events') { $section = (string) get_parameter('section'); $sec2 = 'godmode/events/events§ion='.$section; + } else if ($sec2 === 'operation/dashboard/dashboard') { + $id = (int) get_parameter('dashboardId', 0); + if (empty($id) === false) { + $sec2 = 'operation/dashboard/dashboard&dashboardId='.$id; + } + } else if ($sec2 === 'enterprise/operation/services/services') { + $tab = (string) get_parameter('tab', ''); + $action = (string) get_parameter('action', ''); + $id_service = (int) get_parameter('id_service', 0); + if (empty($tab) === false + && empty($action) === false + && empty($id_service) === false + ) { + $sec2 = sprintf( + 'enterprise/operation/services/services&tab=%s&action=%s&id_service=%d', + $tab, + $action, + $id_service + ); + } + } else if ($sec2 === 'operation/visual_console/render_view') { + $id = (int) get_parameter('id', 0); + if (empty($id) === false) { + $sec2 = 'operation/visual_console/render_view&id='.$id; + } } else { $sec2 = (string) get_parameter('sec2'); } diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 58a8cc6653..ec8b02fff0 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -9886,7 +9886,7 @@ div#err_msg_centralised { .inputFile { background-color: #f6f7fb; - height: 28px; + height: 16px; font: normal normal normal 13px Pandora-Light; padding: 5.5pt 20pt; cursor: pointer; diff --git a/pandora_console/operation/menu.php b/pandora_console/operation/menu.php index 4531432d6e..b89ca1d8f5 100644 --- a/pandora_console/operation/menu.php +++ b/pandora_console/operation/menu.php @@ -307,14 +307,21 @@ if ($access_console_node === true) { if (check_acl($config['id_user'], 0, 'VR') || check_acl($config['id_user'], 0, 'VW') || check_acl($config['id_user'], 0, 'VM')) { + $url_visual_console = ''; if (!isset($config['vc_favourite_view']) || $config['vc_favourite_view'] == 0) { // Visual console. $sub['godmode/reporting/map_builder']['text'] = __('Visual console'); $sub['godmode/reporting/map_builder']['id'] = 'Visual_console'; + $sub['godmode/reporting/map_builder']['type'] = 'direct'; + $sub['godmode/reporting/map_builder']['subtype'] = 'nolink'; + $url_visual_console = 'godmode/reporting/map_builder'; } else { // Visual console favorite. $sub['godmode/reporting/visual_console_favorite']['text'] = __('Visual console'); $sub['godmode/reporting/visual_console_favorite']['id'] = 'Visual_console'; + $sub['godmode/reporting/visual_console_favorite']['type'] = 'direct'; + $sub['godmode/reporting/visual_console_favorite']['subtype'] = 'nolink'; + $url_visual_console = 'godmode/reporting/visual_console_favorite'; } if ($config['vc_menu_items'] != 0) { @@ -341,6 +348,12 @@ if ($access_console_node === true) { $layouts = visual_map_get_user_layouts($config['id_user'], false, false, $returnAllGroups, true); $sub2 = []; + $sub2[$url_visual_console] = [ + 'text' => __('Visual console list'), + 'title' => __('Visual console list'), + 'refr' => 0, + ]; + if ($layouts === false) { $layouts = []; } else { @@ -364,15 +377,15 @@ if ($access_console_node === true) { $name = io_safe_output($layout['name']); - $sub2['operation/visual_console/render_view&id='.$layout['id']]['text'] = ui_print_truncate_text($name, MENU_SIZE_TEXT, false, true, false); - $sub2['operation/visual_console/render_view&id='.$layout['id']]['id'] = mb_substr($name, 0, 19); - $sub2['operation/visual_console/render_view&id='.$layout['id']]['title'] = $name; + $sub2['operation/visual_console/render_view&id='.$layout['id']]['text'] = ui_print_truncate_text($name, MENU_SIZE_TEXT, false, true, false); + $sub2['operation/visual_console/render_view&id='.$layout['id']]['id'] = mb_substr($name, 0, 19); + $sub2['operation/visual_console/render_view&id='.$layout['id']]['title'] = $name; if (!empty($config['vc_refr'])) { - $sub2['operation/visual_console/render_view&id='.$layout['id']]['refr'] = $config['vc_refr']; + $sub2['operation/visual_console/render_view&id='.$layout['id']]['refr'] = $config['vc_refr']; } else if (((int) get_parameter('refr', 0)) > 0) { - $sub2['operation/visual_console/render_view&id='.$layout['id']]['refr'] = (int) get_parameter('refr', 0); + $sub2['operation/visual_console/render_view&id='.$layout['id']]['refr'] = (int) get_parameter('refr', 0); } else { - $sub2['operation/visual_console/render_view&id='.$layout['id']]['refr'] = 0; + $sub2['operation/visual_console/render_view&id='.$layout['id']]['refr'] = 0; } } @@ -424,10 +437,10 @@ if ($access_console_node === true) { continue; } - $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['text'] = ui_print_truncate_text(io_safe_output($gisMap['map_name']), MENU_SIZE_TEXT, false, true, false); - $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['id'] = mb_substr(io_safe_output($gisMap['map_name']), 0, 15); - $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['title'] = io_safe_output($gisMap['map_name']); - $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['refr'] = 0; + $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['text'] = ui_print_truncate_text(io_safe_output($gisMap['map_name']), MENU_SIZE_TEXT, false, true, false); + $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['id'] = mb_substr(io_safe_output($gisMap['map_name']), 0, 15); + $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['title'] = io_safe_output($gisMap['map_name']); + $sub2['operation/gis_maps/render_view&map_id='.$gisMap['id_tgis_map']]['refr'] = 0; } $sub['gismaps']['sub2'] = $sub2; @@ -480,10 +493,16 @@ if ($access_console_node === true) { $sub['operation/dashboard/dashboard']['id'] = 'Dashboard'; $sub['operation/dashboard/dashboard']['refr'] = 0; $sub['operation/dashboard/dashboard']['subsecs'] = ['operation/dashboard/dashboard']; + $sub['operation/dashboard/dashboard']['type'] = 'direct'; + $sub['operation/dashboard/dashboard']['subtype'] = 'nolink'; $dashboards = Manager::getDashboards(-1, -1, true); $sub2 = []; + $sub2['operation/dashboard/dashboard'] = [ + 'text' => __('Dashboard list'), + 'title' => __('Dashboard list'), + ]; foreach ($dashboards as $dashboard) { $name = io_safe_output($dashboard['name']); From a615d2d98f490ae1ba6c7686173b6266d9d8a5f8 Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Mon, 20 Feb 2023 17:08:36 +0100 Subject: [PATCH 10/14] #9662 minor fixed --- pandora_console/general/main_menu.php | 2 +- pandora_console/include/functions_menu.php | 5 +++++ pandora_console/operation/menu.php | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pandora_console/general/main_menu.php b/pandora_console/general/main_menu.php index efa2fc5c96..72fa391aa7 100644 --- a/pandora_console/general/main_menu.php +++ b/pandora_console/general/main_menu.php @@ -444,7 +444,7 @@ echo ''; */ function menu_calculate_top(index, item_height) { const result = index * item_height; - return 136 + result; + return 133 + result; } }); diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index af3071809d..d0baa614c8 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -104,6 +104,11 @@ function menu_print_menu(&$menu) if (empty($id) === false) { $sec2 = 'operation/visual_console/render_view&id='.$id; } + } else if ($sec2 === 'operation/messages/message_edit') { + $new_msg = (int) get_parameter('new_msg', 0); + if (empty($new_msg) === false) { + $sec2 = 'operation/messages/message_edit&new_msg='.$new_msg; + } } else { $sec2 = (string) get_parameter('sec2'); } diff --git a/pandora_console/operation/menu.php b/pandora_console/operation/menu.php index b89ca1d8f5..cb9ce7321a 100644 --- a/pandora_console/operation/menu.php +++ b/pandora_console/operation/menu.php @@ -656,7 +656,7 @@ if ($access_console_node === true) { $sub['message_list']['subtype'] = 'nolink'; $sub2 = []; $sub2['operation/messages/message_list']['text'] = __('Messages List'); - $sub2['operation/messages/message_edit&new_msg=1']['text'] = __('New message'); + $sub2['operation/messages/message_edit&new_msg=1']['text'] = __('New message'); $sub['message_list']['sub2'] = $sub2; } From 91393d7ce530e8a71538965ad79fe1df3bfd96d0 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 17:22:42 +0100 Subject: [PATCH 11/14] Ticket 10431 Header icons added --- pandora_console/general/header.php | 64 ++++++++++-------- pandora_console/images/Header icons v1.zip | Bin 0 -> 38450 bytes .../images/Header icons v1/Auto refresh.png | Bin 0 -> 825 bytes .../Header icons v1/Auto refresh@2x.png | Bin 0 -> 1838 bytes .../images/Header icons v1/Documentation.png | Bin 0 -> 466 bytes .../Header icons v1/Documentation@2x.png | Bin 0 -> 851 bytes .../images/Header icons v1/Edit User.png | Bin 0 -> 826 bytes .../images/Header icons v1/Edit User@2x.png | Bin 0 -> 1795 bytes .../Header discovery error.png | Bin 0 -> 544 bytes .../Header discovery error@2x.png | Bin 0 -> 1019 bytes .../Header icons v1/Header discovery ok.png | Bin 0 -> 558 bytes .../Header discovery ok@2x.png | Bin 0 -> 1022 bytes .../Header discovery warning.png | Bin 0 -> 524 bytes .../Header discovery warning@2x.png | Bin 0 -> 1006 bytes .../images/Header icons v1/Send feedbacks.png | Bin 0 -> 645 bytes .../Header icons v1/Send feedbacks@2x.png | Bin 0 -> 1310 bytes .../images/Header icons v1/Sign out.png | Bin 0 -> 646 bytes .../images/Header icons v1/Sign out@2x.png | Bin 0 -> 1202 bytes .../images/Header icons v1/Support.png | Bin 0 -> 869 bytes .../images/Header icons v1/Support@2x.png | Bin 0 -> 1920 bytes .../images/Header icons v1/Systems error.png | Bin 0 -> 521 bytes .../Header icons v1/Systems error@2x.png | Bin 0 -> 945 bytes .../images/Header icons v1/Systems ok.png | Bin 0 -> 543 bytes .../images/Header icons v1/Systems ok@2x.png | Bin 0 -> 982 bytes .../Header icons v1/Systems warning.png | Bin 0 -> 492 bytes .../Header icons v1/Systems warning@2x.png | Bin 0 -> 918 bytes .../images/auto_refresh@header.svg | 11 +++ .../images/discovery_error@header.svg | 9 +++ .../images/discovery_ok@header.svg | 9 +++ .../images/discovery_warning@header.svg | 9 +++ .../images/documentation@header.svg | 9 +++ pandora_console/images/edit_user@header.svg | 9 +++ .../images/send_feedback@header.svg | 9 +++ pandora_console/images/sign_out@header.svg | 9 +++ pandora_console/images/support@header.svg | 9 +++ .../images/system_error@header.svg | 9 +++ pandora_console/images/system_ok@header.svg | 9 +++ .../images/system_warning@header.svg | 9 +++ pandora_console/include/styles/pandora.css | 19 +++--- 39 files changed, 157 insertions(+), 36 deletions(-) create mode 100644 pandora_console/images/Header icons v1.zip create mode 100644 pandora_console/images/Header icons v1/Auto refresh.png create mode 100644 pandora_console/images/Header icons v1/Auto refresh@2x.png create mode 100644 pandora_console/images/Header icons v1/Documentation.png create mode 100644 pandora_console/images/Header icons v1/Documentation@2x.png create mode 100644 pandora_console/images/Header icons v1/Edit User.png create mode 100644 pandora_console/images/Header icons v1/Edit User@2x.png create mode 100644 pandora_console/images/Header icons v1/Header discovery error.png create mode 100644 pandora_console/images/Header icons v1/Header discovery error@2x.png create mode 100644 pandora_console/images/Header icons v1/Header discovery ok.png create mode 100644 pandora_console/images/Header icons v1/Header discovery ok@2x.png create mode 100644 pandora_console/images/Header icons v1/Header discovery warning.png create mode 100644 pandora_console/images/Header icons v1/Header discovery warning@2x.png create mode 100644 pandora_console/images/Header icons v1/Send feedbacks.png create mode 100644 pandora_console/images/Header icons v1/Send feedbacks@2x.png create mode 100644 pandora_console/images/Header icons v1/Sign out.png create mode 100644 pandora_console/images/Header icons v1/Sign out@2x.png create mode 100644 pandora_console/images/Header icons v1/Support.png create mode 100644 pandora_console/images/Header icons v1/Support@2x.png create mode 100644 pandora_console/images/Header icons v1/Systems error.png create mode 100644 pandora_console/images/Header icons v1/Systems error@2x.png create mode 100644 pandora_console/images/Header icons v1/Systems ok.png create mode 100644 pandora_console/images/Header icons v1/Systems ok@2x.png create mode 100644 pandora_console/images/Header icons v1/Systems warning.png create mode 100644 pandora_console/images/Header icons v1/Systems warning@2x.png create mode 100644 pandora_console/images/auto_refresh@header.svg create mode 100644 pandora_console/images/discovery_error@header.svg create mode 100644 pandora_console/images/discovery_ok@header.svg create mode 100644 pandora_console/images/discovery_warning@header.svg create mode 100644 pandora_console/images/documentation@header.svg create mode 100644 pandora_console/images/edit_user@header.svg create mode 100644 pandora_console/images/send_feedback@header.svg create mode 100644 pandora_console/images/sign_out@header.svg create mode 100644 pandora_console/images/support@header.svg create mode 100644 pandora_console/images/system_error@header.svg create mode 100644 pandora_console/images/system_ok@header.svg create mode 100644 pandora_console/images/system_warning@header.svg diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php index fc666af8b0..d82f1a0be2 100644 --- a/pandora_console/general/header.php +++ b/pandora_console/general/header.php @@ -26,7 +26,7 @@ config_check(); echo sprintf('
', $menuTypeClass); ?> -
+
', $menuTypeClass); // ======= Servers List =============================================== if ((bool) check_acl($config['id_user'], 0, 'AW') !== false) { - $servers_list = '
'; $servers = []; $servers['all'] = (int) db_get_value('COUNT(id_server)', 'tserver'); if ($servers['all'] != 0) { @@ -45,22 +44,33 @@ echo sprintf('
', $menuTypeClass); $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')]); + $servers_check_img = html_print_image('images/system_error@header.svg', true, ['alt' => 'cross', 'class' => 'main_menu_icon 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')]); + $servers_check_img = html_print_image('images/system_warning@header.svg', true, ['alt' => 'error', 'class' => 'main_menu_icon 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')]); + $servers_check_img = html_print_image('images/system_ok@header.svg', true, ['alt' => 'ok', 'class' => 'main_menu_icon bot', 'title' => __('All systems').': '.__('Ready')]); } unset($servers); // Since this is the header, we don't like to trickle down variables. - $servers_check_img_link = ''; - $servers_check_img_link .= $servers_check_img; - $servers_check_img_link .= ''; + $servers_check_img_link = html_print_anchor( + [ + 'href' => 'index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60', + 'content' => $servers_check_img, + ], + true + ); }; - $servers_list .= $servers_check_img_link.'
'; + + $servers_list = html_print_div( + [ + 'id' => 'servers_list', + 'content' => $servers_check_img_link, + ], + true + ); } @@ -71,9 +81,9 @@ echo sprintf('
', $menuTypeClass); $check_minor_release_available = db_check_minor_relase_available(); - if ($check_minor_release_available) { + if ($check_minor_release_available === true) { if (users_is_admin($config['id_user'])) { - if ($config['language'] == 'es') { + if ($config['language'] === 'es') { set_pandora_error_for_header('Hay una o mas revisiones menores en espera para ser actualizadas. '.__('Sobre actualización de revisión menor').'', 'Revisión/es menor/es disponible/s'); } else { set_pandora_error_for_header('There are one or more minor releases waiting for update. '.__('About minor release update').'', 'minor release/s available'); @@ -227,10 +237,10 @@ echo sprintf('
', $menuTypeClass); if ($do_refresh) { $autorefresh_img = html_print_image( - 'images/header_refresh_gray.png', + 'images/auto_refresh@header.svg', true, [ - 'class' => 'bot', + 'class' => 'main_menu_icon bot', 'alt' => 'lightning', 'title' => __('Configure autorefresh'), ] @@ -293,10 +303,10 @@ echo sprintf('
', $menuTypeClass); $display_counter = 'display:block'; } else { $autorefresh_img = html_print_image( - 'images/header_refresh_disabled_gray.png', + 'images/auto_refresh@header.svg', true, [ - 'class' => 'bot autorefresh_disabled invert_filter', + 'class' => 'main_menu_icon bot autorefresh_disabled invert_filter', 'alt' => 'lightning', 'title' => __('Disabled autorefresh'), ] @@ -312,10 +322,10 @@ echo sprintf('
', $menuTypeClass); } } else { $autorefresh_img = html_print_image( - 'images/header_refresh_disabled_gray.png', + 'images/auto_refresh@header.svg', true, [ - 'class' => 'bot autorefresh_disabled invert_filter', + 'class' => 'main_menu_icon bot autorefresh_disabled invert_filter', 'alt' => 'lightning', 'title' => __('Disabled autorefresh'), ] @@ -350,9 +360,10 @@ echo sprintf('
', $menuTypeClass); $header_feedback .= ''; $header_feedback .= ''; $header_feedback .= html_print_image( - 'images/feedback-header.png', + 'images/send_feedback@header.svg', true, [ + 'class' => 'main_menu_icon', 'title' => __('Feedback'), 'id' => 'feedback-header', 'alt' => __('Feedback'), @@ -373,11 +384,11 @@ echo sprintf('
', $menuTypeClass); $header_support = '
'; $header_support .= ''; $header_support .= html_print_image( - 'images/header_support.png', + 'images/support@header.svg', true, [ 'title' => __('Go to support'), - 'class' => 'bot invert_filter', + 'class' => 'main_menu_icon bot invert_filter', 'alt' => 'user', ] ); @@ -387,11 +398,11 @@ echo sprintf('
', $menuTypeClass); $header_docu = '
'; $header_docu .= ''; $header_docu .= html_print_image( - 'images/header_docu.png', + 'images/documentation@header.svg', true, [ 'title' => __('Go to documentation'), - 'class' => 'bot invert_filter', + 'class' => 'main_menu_icon bot invert_filter', 'alt' => 'user', ] ); @@ -399,15 +410,14 @@ echo sprintf('
', $menuTypeClass); // User. - $headerUserImage = (is_user_admin($config['id_user']) === true) ? 'images/header_user_admin_green.png' : 'images/header_user_green.png'; - + // $headerUserImage = (is_user_admin($config['id_user']) === true) ? 'images/header_user_admin_green.png' : 'images/header_user_green.png'; $headerUser = []; $headerUser[] = html_print_image( - $headerUserImage, + 'images/edit_user@header.svg', true, [ 'title' => __('Edit my user'), - 'class' => 'bot', + 'class' => 'main_menu_icon bot', 'alt' => 'user', ] ); @@ -431,7 +441,7 @@ echo sprintf('
', $menuTypeClass); // Logout. $header_logout = '
'; $header_logout .= html_print_image( - 'images/header_logout_gray.png', + 'images/sign_out@header.svg', true, [ 'alt' => __('Logout'), diff --git a/pandora_console/images/Header icons v1.zip b/pandora_console/images/Header icons v1.zip new file mode 100644 index 0000000000000000000000000000000000000000..22a9a12dfa2c2155b0f7aad869015fb753617c08 GIT binary patch literal 38450 zcmc$_18}9`wk;alHafO#c5K_WZ6_VuwrzE6Tb*=lJ9+7|&%5W`efrefRj=;3EA`h} ze^T|=s>&F1jxpx^Q~>_{MFI$5ixUP}a8Z}57{wSdM^iY{?$@`QINzi@ML;)K4vsAm1t}=g`DKX<*kVLeQQQ?T#&I;>2uTf!n1-+;fJu2>tCLWw2 zY1lyc7L&}^=_W!Un9i2@xvHBFNrVny{H0xWwf277{_lrRw8u~L*JRdJl6 zSa^0QSWDN8lR=o^YcsH?k7*1_QXKj}8b}$Z4_&Gu%SH|3;}@ zqL!{g#Tus{@Mo$jawq<12I{|gZVIYwP%*<;8l_GIPQ!mw`@b*Pz&9Z43Qh_ z5>zW1$_)w%yID}PMW<+3qKfI_FWlKO0FvL24X|_^%#3zLN<;m*l-T5u2L>CCqxP-s zSGABQET%k>UA`=lNDW~u2d>J=!32E2Y;6vt#8fTWd7DUU3L4zElcsnr5omDhFqCY` zn)xueHPs0S_!iYu1do7a2rB)?NKGTTL9Ad+)K?cu)CVHYbSIH(o1WCSoOL?U&&>@V zh8JJ!o>Z-L7oD&VfniB>?t}}i52$q)MbuFKeYY*%iq|KS3S*?0MZ2g3pl$c-s>T;^ zIZ1Gc{8;AqP#^$+KTwwYE6D3X007|sGsqd;XzgtNKQRti4k9yUQ3n9)>jD4($_4sgzah^B{*TXp{-{nXoc#4j5^-SxB{j%FH6AGx0Th$R+Kvc? z!a4r4b9nL}3;~2l=9Se6a8yuGR21jcj0_lwxy0!+*YoQc9RmS=E=p#2gM%_CSRYoGSXU@Y;BD|s%Fg^S0y9CqQn{D;NgiL81RO7{H#4ZUNR??P9I-c z7`M%;`DbQB&<6DG`rM>QucB8==;7huNTt5ZX-SyRp{&_z*8*$ZXi0uU0Q0b~RzoND zz99@9?<3bnCZ0rAmyl0gBZ$Z!RAAslXw~4SHk~xNP0xLKk3H3>V(n>ZdF)fg(P*$~ zdCiu%vXiBPr-(p6ekwH0DH8*p(n+KXBTokygG3b;)6mE#hk2-v4!cFHw@TQPT4rKm zf)@!NDtN0~`}p`^eWEodkC|O+%5Podo|`hTwx$6STt;`0A{fb5XN(*cr{lkxLbA|N z5!MK0KGcFZz}9z`t+m@5S)gquZ?ZXPegeSJL}365F?nIm z^jYK6txrL7F1{(3E?sLVcF(_#fD&{ zUp}oe^Ph=bys~&O(pvbwq~uLRRpyP0IsDNc&i@$rsNKMLJP|n6;8r~>g-t!!c>swE zmD+w?XTGO)Yfah$AdU}3{!;y&lsX>Zsu*4aGPXt?&5VR!GzHWmoAoMt!X3RWLvuiK<6D6?5UP@pS|0F=}f_i3Rr;}o2-q#tf z{Q}mpHG-3Yk+y~FYS`fH^mLDJPV$#Sf6ki5T7vB_m310efZ| z!~NSR*^5j7!aW8_L&-kMI!Jn3Jjx(CE@_chjoiD|8^=!FC{?Mf^=8%N7P0G9DyJzV zHDeWvr}xYBHcFs!E`}u~C2TR#(Ho)BySfoZ6vLbc3IqmH)OqiCCG!k#tr4&uZ)OU46x-IA8Ct~d|D@8q&_83Jp_tP{Tq9xFGHkWesI+r%3Vbs_pb~2f zisu4XN4=d!M$0C#%A&M3d##~7EzDo?hy76S0Km)P5<5Cg+^apIM9%iF8sg7A;>z=TGJPdrb`as+chUsV4p_1@RQ- z%JFbNe%C-xZ|DBb4iaeY8^J{1P;c*3g{&)U?9cd%qtlVz+Pa)q*>6;_wsBa$(hg3? zb3u(9>FJwI8EXO5qxh)@0f3~SQ+K|7gHA=Xiv2A-D>>}Hk&{guO^6myMY!Y>iVM>G zFs0MKWqwAlXr13blq(jkNy;#3{c(=TrDm+GorvZbH$`$?!gPImsg^^InT`GJ<|O>1Tmty4Ko_GycjeR-

bR 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 DfCpVl literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Auto refresh@2x.png b/pandora_console/images/Header icons v1/Auto refresh@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..73aec57365e65a0ef3c2860aa1aac8a848ad0925 GIT binary patch literal 1838 zcmV+}2hsS6P)pQ1f zwrtstW<;Kt#?MYuSeZijRu$)A+C+sJ@w_0pzP|pU6qRvRN=izGR9?Dtsa=>asWLG! zF;8V@XJ<(YkCkeqqM~AklzP&FrIE zn-Q$#&Lj3CauHP=F=7lVVFbtz!lfhbWT>H|9B^KQ^H+#xak$Td(4SH&+@t1sMoUXe zZ=G;907EioX#ckBHK}IM@Pp%UKG#hrnXj9Z*T9g zfa&@|a+$-{i^(fS5(~30VAiY%fP1D-pMLA^-Mfe52>7kVZ=3XN6b)bVm`?=IlqzA{ zMzO)ydGb*jTuDzZ?+bx(Qb5@OeVITpz86L(DZei(D|>C)fcA;)6v1p%9ynrZlL7=ZJUo1Ycc$zlyer8s zu1jRd$e#!351b9GmAP3P4^FBJ@Td$--nE{?EXlBH)rbPN*|X&pO8}~2;<{rX-*m`} z;u%x4-lGXA9pE|po9A1U=yC|CyGFoNH!dx!f=^>(<199b(zs(d%A70LvvvK2!yG`h zx2+=uTjBwn<1@Hc{W3B#Qo}2=+hEKuQjwBw_rvr?bI4bcsz>PE=e|!4pp4DU%`=CF zhK>Nd$agjwpf-RqR`<(9K;OZaVP8XCC*CT`JA7Lq84|~d`N7txqHv2qNMBfD02K^F2QkFVe|( z%gf8(o65Je1s5tyXsgS>INy%qZz^hF8JSs@LCON9yY8mTup^eRML6M1peGUkA*=R*|CWj>H&97Si8f z-%ExMv-cvWHEy%|qy)`Dr7ja}DK9eo zFHrT*Y~QUY8B$t!Z*%{9rpl?AGGDudNj`0G5`Po07*qoM6N<$g7JQ4YXATM literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Documentation.png b/pandora_console/images/Header icons v1/Documentation.png new file mode 100644 index 0000000000000000000000000000000000000000..78bccad52a55abd56bd045beed0ad5438f280029 GIT binary patch literal 466 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHid{Wj978MwpHBAm zJ8U4(n#|4D$kH+UNjme2x1tfx`0lzoJ#rCIH1pIusI*(FJ8qHZuX&d{-(2z9>l(4j z_VLd&t9dh5aA@~EcFg{}Xl23I+W)3r&tp|RFYz5NSif_ow^d-k9hZeYSN$it)!xxR zv1{Gb={)@gM+HhAeT}~?A#e6ri1{AQKu6{1-oD!Mq)i~Ei0^ODD zdF;&D+1c5L?QWqpo6Qf?>GTEhrBdnPZDLqK{CGSbdL;?6sY-89uh(bN(vcvQyLTu#9^S+-DF*a09Nz^K7*0J(1g!c5*{Ca7^6#h%8olS&dM& zG%5=~W1=$5iX3Jn$Jn)s91i4IxdF@N@)HTD?qzvkN@EM3JHmL7;KYtj8T~kk5O9n= z$8qF$35-9LqtWOqF|SBEZa-;j(4%*Qk}gRvn%5(19(%gXcM z602WU24f6*A>8=g&0xS_)5U9 zcN)kI^+WibRjbvv?RJ~~+)!IqfD?FZvRAEE+e(szbbqyFZIVwil77GcvDIp&K8vL7 zD*52eFM;vuaQJ_-4f<5-*TJKF2Ke2ut6`@uF`VdK^o#<<8}1PD0r#002ovPDHLkV1o8(d2s*$ literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Edit User.png b/pandora_console/images/Header icons v1/Edit User.png new file mode 100644 index 0000000000000000000000000000000000000000..ad2d1c5abb8e7bfd49c1cbf5f1771a039cd7548c GIT binary patch literal 826 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 literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Header discovery error@2x.png b/pandora_console/images/Header icons v1/Header discovery error@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f45175ea80e2efae483e5f9895cab1872f56910 GIT binary patch literal 1019 zcmV4s8Yf15DId z&)sorNq-W4sBQI#@$rm3N6r7Y;y zlcLc{XRbO)do!QDbVdZ2OWIVV!4p-=ka>6}ih2;P@b!a$i-C)41#=8s+f>kWc*XYF zEF!`qZ5cGG=2+a{j0kCP(8{l@y&xc){dc$%1*yrm7%>FYZ|1^26F1daZx=%{ zRycE7HM7={-(PfK;!Nm-26;HFCC0o9X_C`luu`_ zdj$75!H<~yKpNq7Lv!Qs(Xp|dmhS=-ft&z*pbQasJ)HZUNOX)4q^|v7@q7Lp-o#s5 zp5W-H%k!dV8*n++N~?qKhhYYMK_d` zo!x6y&fy#BQaqb|r~Dcw*H6CeR1ULcA=lf)OxCZb+Z9_xKL-ZdH-Bx60Kvtw;D{>< z;dXp_>Y=Gy1ZWC`mId7P!mvlw%V$ehsDrB%BxuggaAlfTh?7=RY{Wd|O4W-T%=h=V z(R$%7J9CX|WuysEx^U@y>lM;tY>M59kB={Fx$j`!wmZm!xhU=q8n~8G5)c}!ZplAn z=Pr0IysZUrzij0ft|Av7?AHRd;)-vIZy@Jt1==rr@$IjE2-R$)?qD@hGi~Y-G^0@s zU5{WjQ8R50Lj-Zv^!Q-WxXL#k96MM}?RX=;`L~&^AKj4N5&e6L9h*+fW^La=aYy>J zQ1IrW=nmAfJ^m%K2r<?zc(M!jHiWhpiIEGjVUJX6# z%@imwzq0O%?qrn}vnx5BUP?)NJvlCad1-h1g%d}e!(Zp0?C0Zhy>76mTd72YgZZu4 zG+*O9?R7JLH|gy?Ty6dN_u2PvXV0wdKA;@WYwu$F&-6_AAr(GJF2Ukw$_!#!vtKgu z@R<8QcdlT0sy$JSp;hO&c~*IcaH^5kM4|T^4_}MayLjTpH<2cuRK0JJ_dAcKRjs>T zSF@S>hAxYaw)&(Nfq<-6_sVQ92kBVPVDtGEVs^8@_-BI9h8&lQzN)|T60c=#o$>qA z-e`tJv3^gi6!t1S+{+Yd<8yC{3dh+iL8pRdZ2Q%;`m>jx39roeuebcmXDwegLG5Gv zp}zcV+y849iMaX;K8)bqeD3DbLJ5 zy}3=o9)m%&FAADVdAsaa8-=$^}pBmGS(fN&`>WR^5C@ff!^IFOFo7k$-VaQ0iWWX kT^?7r@8K4|bYa>V@d)mEJ+)s_CZI_3boFyt=akR{0KoLzb^rhX literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Header discovery ok@2x.png b/pandora_console/images/Header icons v1/Header discovery ok@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1f8901c8b86508e47702743b98d7c57716bdd GIT binary patch literal 1022 zcmV-D+m-pclR6L z`*fD^bJE$q&r;Yu?0fU(z2CffJM+Hxy=83clSqcY_9w$LG=%$mxo+jY zNr8^qtLj3oQ#Rj>&RQos6o?cfo%4#!vg4=-7~YprydE8@%z$6_`2&qTm(m|e*XZ0D zfNrV)dkc7_mziKy#zuQ6axcMXE#m{RhhxR*!vUBs`s)F+b!;L_m=!{9@q#>1v*Yyl zry{qQB?d83SMRj|=Cq`bS9INLnf)bocL35vA{D7;7V88M&6v|d4B$8(uT^|H`~(KG zLcmmQ?97u+7%NC1NsEAklhJd9e2$)3K{;tc(aW*ESf*3z+JJb67x50ClES~C6u<7) z^mmR|?~Pk9azJKu<7btL*SP)Xp57F}#5GR=DbaWfh;bc^Jw67rX-{K_ zrS=_8X~$q?0~N^jw#~igl*6d}L<`HnN~=QUEmo*@J}qW!(!4*>aI9dhjbMI^X)P5Y z8ZI*qJ$FR05iDyYadjMs1G@(&9)ss zoT@vrk`n{Cc#qtQlMQQ#`H;K=18~pMJ}E+rfd!`Wh>5O?y#0NMLsqvO(@| zqVop>!G@ zASDmW5iB`m4ueAwL0~Hmrw`5$edG8_{_@~>wA~Z(&8}wXr5kI$%iE{_^9UPp@z{KO zu^yy8ZBFE;z32|O*&5b_O9AjVQ>jHbMF&+-YOq*^d^b9K73C#0SyUWDejS~9#eM!E z*%MXmv<|8YlBZVr=ZS?dv*0|omrmo62nk>zEOJjEUx|CI#O)%*54D`Aoeo6d2MCr$ sK8x+AMf}I(Lv731d0h+2wsm}M0Pf%mak8u|t^fc407*qoM6N<$g7u@p(EtDd literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Header discovery warning.png b/pandora_console/images/Header icons v1/Header discovery warning.png new file mode 100644 index 0000000000000000000000000000000000000000..b329f4d755140c10467692f6013e5d2396d7ac86 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHit9aH978MwuZ9@< z9d;17W6Rz+MNO=)f+2H4z#-u#0U;ZO^9vR(R1$I#$$Tie%ugq9g1!nXZ>Gjt2}j}1 zL*ERu3xs5%Em?$;q}QiEPkUchljh{I?(dR0$IROET)7n%&RFqxqR_^&w~uF(EEk#h zPW5S|W|4M(M5uS;l3A>2M=xyseQ~X=>-lvJ@m0%ormA)O7f&c%zfI1!dHd0)r!A{@ zo}Jz);U+hu{p6KJdz{3A!(MMavc_+7>laz4eNW%4edxL5{p_U{5^;*w3eRLOi6k81 z7rSV>J?__`gNZpRzdYi)4ry6SyDfLSz47A8qnXN!a$fd#Bz0xJ=Kg9~x<8}sk<^{n zXXaMQ&7IJ9-k@vkBG*a_mYSrip|ihA-;;0YSzW?6@wCmSa>I`8t_Cd%c9ZA38y&eX zH2H1Ew3XV&ZvSU*l6Z3ChmCf}qNO1>Zyx>oJ*Wj+U}0u^V)E`uvtQ^v#xGTcUn^NEoIz3I>FVdQ&MBb@04$l# A@&Et; literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Header discovery warning@2x.png b/pandora_console/images/Header icons v1/Header discovery warning@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..579c5fa6bb44d30db08dfea39df63b3eac8a5a6c GIT binary patch literal 1006 zcmV6#o5Z>8$Xo!mMG^qrW_yYtL zi!>%62nI!x%cTg|3Klk2ik1piHX>GnsHE`j45BEAV6+J+v9LEe1uG+W5)C2V?l`k% z!`}0GZ@qgl3EYEZc6VmK`F7sk?7k6V#d<}RpW_AVlxwn~;VI$#D}3)_}~ z6a%(XCsk?J8FKU!i`@rU0kuMibr#f-(E;xJ4+5LV;qthB$Y?IsxixTQtZ&!Aw*3t= z`6|$J)6R^OK_<+a#jp}FAL!zX`_vqwzeNG!PB2=z$U1%iA7}TfCH(li8~@*UO$v>j z>c1E}BS~%wM2=CTg^*I4IJ!o)LiPc@qr5wo)Fz;1DKq_$n}5f)#;fnkNdgxD&p;Kj z3n*}VqOqreOcRWKdT$6%f|~)5Uh|Caa(wK}wxOIlhbVe|CN#1MI-th@x<;xLo)ZXH zDgWs*O z!EJV+@y9qKoFKz~uY)TJ64Pfgl+>pI@QH+N6Ye1wHLoLxlf9u<->%S#&k{hY8zAa9 z+9x8KZiBaEu=6qum#bE92x2Mh(I}?UxI0+jRwQpgxfKR@{{fLZqO^F`3gBAJR zwYa`k4qC-!ZggK4hgt<%tNG0Bzy1)KSxB2;Gf{Krv?J(7qnUO)g3UzDowM;H2m-#l zj5ku7xk;){O>QJobzF#>xy|rLH(jxg*D2S#Lxs4^Xl2L{WG-B%)k`=<=U?A?aw9@> zvI7SBs>M833A&`Xz@oIe00K`D;eRZ$xJb!uBCw1C9tASEW^1DEtXP7sfo*fCT$HBv zYfy(N-uncVmxz2XEux!BOPyrbN#7JKNlhguQ%=W4a{h&!lqnQtipQ+P;H}6FzK<(G c@zm(^3&V8{Vl6Vo(*OVf07*qoM6N<$f`?zX3IG5A literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Send feedbacks.png b/pandora_console/images/Header icons v1/Send feedbacks.png new file mode 100644 index 0000000000000000000000000000000000000000..858e790ddb2102fdd9912c5cc744be8df358e872 GIT binary patch literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHihp>zIEGjV&JD5k zW_A?V+pi(^uT3C8NayXFPZ!--r)vCQ{=`4&lv3+d&9_0Bf`YERinlm^zBqbm0<-7z zV?owCk9^mgS)BiV(S+vYwEMGX-mSIX-PWi-*N;D=mi@qyIgG;nGkIU}d=$7`?o`OI z#z(E#chU9Nm8~zT=$@}kl_Y~l*#6D^p^o9^E8S|rYqdv1ZRr^D5z%?nT6IPW|*g(th# zGnldVY+4zTHB)r{VvmD2M7Bn~ojqHVdqs3v`tG}R3UX2WrL8|g*JS(pha9(wI}CjKs|5mP?^U`4@Be<$v)XDF;d6Y{%vY4jKG-O*#YXAOk0nXF*58Y4 z-EH(!ETMEY*NzRRk997*!LG%^<+irqTo=>i#n(Evr?PKfDw!ZAFLUeg!wU!376v>{ z_-J)`y3qO~vhue@-~6q)n3N-F$9JiJ4`cKXW+^w(yRMP)4Km{h$t75MkFx@3Ca0= zn|qVJ*}2=zUVa9aH#6_O?|u8`?au7RD)OzhwRNz$xj8XAJNwDv942z2bR{jklkD4Q zU&Kn3W_Ph_YinDSz6Fr zFpT^d{u$o3l`p^2ogtdSHB7-G2rrjgFLP)qK;XL{|wGPhQ%1^zLw)S z_So3iny!d4#>!8-i_+EAb#Qrk`EL{u@nJ2ZgbusUN;aDv6h#ynkH>2XMql@F#%f*I z3J`Cts;cVj$jHco?xzY{S8&|k-hL0kE~0x9G6Ojoi^Y0IM@N59Z)!e3tmXk2&H;e3 zXah?Jx0%!p3IHQKF*$(70Iptc3J?YU3emdth+)P6wFT5&W#sB|R4@j_ovAvGaiX!Y z@hfE+&1!0Ds=%3Hf-la#GJupT7SZ9rxLY6}zAZ+1<~zvw5V~F7d6ZO(+Eu&?B)MR} z^6I3Iptq$j68mtkk)aqwkl&3ABLIm@z56W7NTex;rkshrNcc?|8Jcov%9#L(gv~qV z@FymY%49i`o0MHsQ*){u5b*^&cYn6i>GT{1^P(t2*3(yVs7}FA071w>-ZvN$0FO;e z6rj9M3Sdd`=YjW$47MtHgqI_T__7Xf$RMl)P#?D59+SO#!J3r%TxVxze06p8E>d&} z*9l!;YK%Nj<9btBS^3PgxfSybB*>RJ$UMhYR}3V|JS!E~9c1oxDSsou?(XjW3kwS` z;TUPlDiyGZE`_tl%~UFt)%8At5jJKWGx8W2<>Qw00w{tY#$(6Kb}ywjSeQPS9(FAS z?*$e=CV4j6);bGANVmyzn9Fn8coVLyth|S!&mS^X{2DW7rm*0}^iyEL0Kww)w zQG$Yo)yoOT{TRbX)Cc@dI|P!a!vgH29mFw|R2g;<| UtzpKMwEzGB07*qoM6N<$g6jN3S^xk5 literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Sign out.png b/pandora_console/images/Header icons v1/Sign out.png new file mode 100644 index 0000000000000000000000000000000000000000..186cb46d3c4eec36fe5998f67883deebc9dc6e40 GIT binary patch literal 646 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHihp{#IEGjVwuV^y z9d;1d+B|m8ubx~T>F{i;r%4-Lc$Ath@-wl=d zZ*QJiWV$Bh{QI+K&YgS1))VaCy3nb%c&^`a z#i?R$ji+7SegAEpkmnuxvwzy@r_48MyA13mUb?GyYG>kC&Q(t&bIt{F~h&DNhC9Ck&`aFM%CL3IcDZN{EK}$KJZS^ zH1Aq8S?9Fg5ziG2m04>o`q&?T{1MnQ%V=w_8}otPb_SO%)q582TE@(DC!F2;BCDkD z)ijYpi}~m6S>Cv;ZfM&O6sD7KTQ6jHd)E7oNyRKDEE@0qsqDKX>X(+A)sV)MeoXwz zGBe9l^Ust=zii^TT)#?W&Kzdd=xZfvo|7KioIk(Nbko+PCjn1pu3yUac!SQYT(k0n z8+RPqkms(qX3fw23112gZm{Sl&hB?ue9_}cm|#TpEt6}yZ?+v)Trju!z_*i6Dt@nN zcWyd0p(DmQ{a%CJh8VBh$LqwpUBg6Wi22X6 adWPK2D|aUSU%v>H7(8A5T-G@yGywn|FA*sK literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Sign out@2x.png b/pandora_console/images/Header icons v1/Sign out@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e666a1fbea0ade31e05e989ea149f607049e54ca GIT binary patch literal 1202 zcmV;j1Wo&iP) zf*}%Vtge#|D+&rLDebN@F&LDfB%09i)7zW7#Dai!R9Go@=l6~GmbY_ncV`#HN%rQ= z`}y9RnYS}?H-ZF+k8oXk|~_xm+6-)OEt(9wn# z#9;KncuXenj@hR$4-O6{Oh-^$N@>y*+HYO316=Z4OCk^kdU38;7bJc1A&1MsC|wgI z%@bKlQJC5wilW6*F**>qT0ksk&1UnOp!)rg>sqZgzqhyd!B-qwvu?Nho=Wg=Pb&{8 ziVzd{q-US0NCVDZlrM-VngGfP6+}o{TB0Zn_OgzM^AWOaljBU+Gcz*}MTy3v{IS~p z{{A-jE@>!_(bl!1xYaz;&SGtCEe1l@7jjG>$evj;i^oYXK=95IYF<`ET8A{}TnOeH zVRcWiaO23-F19GOZsxZ5032Hp0{EPVg9gq5+y%g04QwTemXjuM7NDz({>c7KftVq0#OfOvMKKP(6*zKlapiZcKfGh`ZSz=)jULVLyt9` zyb80kvvYDdhysCNd`re5eFDhy3z5D8$bBrqcNni?r?)~tw2lMB8~&o#>#b;k(2&*e zYW8GY)JN7-eIqNWeH|Ic{cq&o z)bXwjg`S$4dLndD?+)0!q%B+9xLxKHtVmg@mMN4NeR8MBRCt2pXj;d@-xQwJGXO-t zVwJ|0epOx)VBS4d1YUNTi}18O;%(gNbiNd=m^QL#t|)4d+pSjXmnE;ttJUlE*D!8W z1yFWlr>CbkkB*MqhmPW3iexFrI_6R!VoWTd{T`>&G5olS4SM|ASmK@J>-pmtMy2XZ zA3%@uu#l(AgTQ!|*YNN<=LhsqouDy;uP1GkN9UcAv>ODp!5{@EZ$+;>KnW@|(Ek=- zXrRFXVjG6)CUK(sylYA8h0yT%Ew}(d&a|*Cncqzz4$J5;FYzn~uV5&6(MzInLh>-Q zp3%6Mrb7Y~Cs!I^nZT|*Km?cEBy`RkLsxj4a0NSfQeT4@S8c>H8*Y*&%DC1*_!QUN zj;ZJ|8Q?0O(*JjPI5H%b*-$s`LNH+pbC@ySx-C|^IXXciVh}4xxrCBC2U!*K&l47& zC2XB4ZD{+iD(j@8)`1QFQhER$pF2qC>y+cL=HE-7@$BHsXXkGhr}W{s-=Po{UTO3T8z7a32B^} zKIiuCbKXPi!hQFg@A;k|_nh};0s&T6S659=Z5~?p3t*ILwK}epdM<`QcX#)7?QnBC z7!3Ad&L}b22qMeU>2&&*2sqzlFN^H1dbX-pVANngl-$2Up-|Fsnc>U|7^_q&BLc$G zwOZ|21Hvk0lm*0Npj945Xi^N1B_PcUoNa^z^h*CRWV8# zmL#Vcm<1r6v9kYEM7ay$5(b&OCyFIYbnTD?6Vj4^tQ+iAOQeN!8eq@?)*u~p8lH~F z<7S4~OSCX0eS9KB8r=!$wa5&hy-+C3i_Cf{5BIge^E-qkuy%F~$D@?BU`R^cX+SWS zfV3A`wpo_ss1I~37Tb+77KudmIiNX+_(-1b3GFM4X264V(GS&?lH& zzu1HFAlO-sE9|i7todXzS;pZLa>O8;5B$}B0*+D9kOQ|Q5{V!AeEx&HiISyllkb&q z&QbYoetnin(1f*tK*OA!UM6=|YR*piK28_>g#YNC&sBy-n=ZRO+{&3&tdOY1XIo)V v2Yi^TdVWb<)DgJCs2`(}zkd;agQNceqhK(Fm=&zF00000NkvXXu0mjf23UPI literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Support@2x.png b/pandora_console/images/Header icons v1/Support@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f3c95c28530c6b5cec7e93752c000e61f972d833 GIT binary patch literal 1920 zcmV-`2Y>j9P)1i$6vuh5D`3Gwil_+~6fi6r zJ}4*>T9%-#vPm&fFbEpKCDGs)H$tu8^=e;VqPrkufm= z?1Nrz;1PjYSy{!9JP&McZayHerKM#yS<0>Gp*2nxtKuk(7>+#DQ^z6_=BfbD5|+h*~Ncn;A)0 zhHJi(26;N6OwuI@ZZz>!U;!z-AH*$-ATHV83(o79%gqR0DX%rzrRd%;dD5gw*K$3M zn(SqW!JlN3YhW0S$K#v0-(K(4tJm>{hK6a_ZwuN{qoJ8ZuSyk+Ah%UlSAQ)>7OmxW zJV>xs#9xBJBopUnzlJ!>1lW-M>#k1f^$dw7)BP>+HLc7#@hFe|z8WL=UDM{U{ zNx~s1m~7l5zC>lod3m{a&bhep zon@F5OiuLSJ?0!nI}6yshnCU`K1+ujg0zJv>iFj+0Ap-aK3_sz_7o&C3a1TrTmU)wy;9#L8-ZLPv zC0E~K!8kx?DVUVlE#NM>Iq|@A?ZwZ<=MKNI6DNyjWVcpHNlAWVW209a$GZi6Hrs!f zjF$*!t1~&yc6z*H*ntfRCYvl4FXMr_+;Qk{yw``EWy1_G3O3dF5IXMCrAq@1C)1~l zkCFOY0FN6W$`+PV;8n2mpdY$A@zgR4Tqk*fs{`*D4+fI~SQ!o(3P$izw9XLdBIdY6 zeZLF_lOOi`)rY&_?-1}$hZa-YMBeOOSY(B4y^F%$OB0UmZ0kN`uN@+S{mSz>7rQUa zhQwYF@Asi8T`@Z>z*X?yHsjQ(Qx6bx1$ehw!HIWRH;LXS);M4!t7Ws;bWLqyz=B;6fH$Zw5wj z9Ejs@CW}(B4Uqd?EEP|pXLt>|p|Y~_B!wvA`@&a2TMDp<0=(zqVdvl(*T8rxoAkgW zxqax;N=`AjD*ZWHwu{fs&i+m`WOP{DPml#m)k9S8;}AzJuu&g(q~pfg4Y?)EE()WH z<toy@&=>`<%pz&6Zw5^y_x^bPYg$ux7^Tn#po z_;aDNNi6bXOK>SZycByk301rf(e;6K|juLn5+j^yR#^<&`^ zsTRjcUwrd>vgvTlP|ZzLay*7x(XUtXZZQ4X=7@M6>?zc(M!jHifcSw978Mw*M{!( zV{#OjcaxcSVuVL)Z|kue(KjPGcOGu~!C=>7wy$gH*0~->%0DnZVBF#)Y&c6{=fl}k zTfY`rzHjmUmR44`Z|2;&cOQQ*+imt!=6mPUT_!)J?sItdwyf*vXfctt$!XbsrX-^2 zfltecA6jeb`*&Uw{~T>>)&5@9@U8Pll_TO^bI#j}8i&s4dYS&H;vwtK;*Ynt0$ zZwc_6c{b2{vGK|;*LOM@f8P6k%E{+WAuO{Oi~U;v`0}~4I$K_qMjVkh`#szGc+QMg zv+^gc-e&3F*QlLQyH)j~WbV&w<*rS$&fQdfd20I{o(*55uB*OzILCjQTM)xC_s0je zw5>Z?voAnF#mru0Vnv-|%{~Ezp78r-uNklIPcA;7vfEHi?v?G7MD~Mbinkr?Lp_&p zb?F@nKJvwIvGO0Yc^{|oeMsO*GWuJz)Mf^g-jx;$t7-jnK=I+}>gTe~DWM4f-Zt0j literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Systems error@2x.png b/pandora_console/images/Header icons v1/Systems error@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fafe9217567aa5ca0a02ea09d2bdc7e0b2c6d145 GIT binary patch literal 945 zcmV;i15W&jP)1gh5T4nCI6p=ZKp;XQA*G-p z5|2QEl=zGzhliksk}i*cL=^;&0HledbaY5=oyJs=2+-g-$b#4g-!OAwkCpGvzO&cT zA+nOSb2Gc&&d!c!b_ao5vrsB~UT+H!x=KL_8>=pfz-)@8hbBX41q6#>Wx*c&;c3AjKmD47=%B2MolkW*{h)Z4B2R;zqBBpc+94kmoHJL`;{lT_C*Y5!_+HZ35zWhIx)>7dYi~fv6?%5rOI)f<7QP?;+>Bo8R6( z)+qmg4YjJadh4eg1P5{I+1)omX6F=L;e#lo)jZJ91QU>HHT@_pn2gW(DMws}M%m?L z=dcZnp8#mV#xjVi$fs-vOcavX8n})4p#)YDn6!MSX#t@4q4qtKP6H-mGwz41VX)=2 zTZ2U#3{Qi^HZkb+u} zl|FRDSy4>uai*ZQ#Hc;{esrVFO?6zYE+IL~J)mXuXqgbMA`zFBxU>W?$7QBGm!0zb zM40n=r!plaCmz@3UP|g*e!>=C;Tt@s!Mv}C#HA?w!jG&2z}^8&O&yq}C{v@~R}2*n TnPoGs00000NkvXXu0mjfh?zc(M!jHiYIxxIEGjVt_|Jm z$K)t5@22%dmn7%bUe;p~oX3u|oZ}L@c#8dl;+BmU4#~?MIu&u7Q%zy(+|G@Y*)Omk za8lm>c>8PJIKAng1w2mFeBONj&l{tH&D$e6z8vSCxa$k!I@c8rOZr6)n6=8=y`7TZ zU|yqi)7VY4iesH=Vb^5k^~Mq>pU*wDZ-Y$N39c{h_doO1`2Omu<6L!Ep~Ayv-rX4y zL0g2{bybb8`@cH>Msw?9ng7$wwkC3I$+Mh!BrSNh!s8Mn%?Y#je$85t8t#&x*x`ET zfRZt9!~Ftx{jMKjl{>Fh#Hugtx}DRTX7WtB-0f@5%9*z>I9FZ8kv|J=JMQ?os6xg`*!pj}@$}icb$t87 zJYNfK)JlA+lkBd~d6G%&pv|ObhI4FgO)L=Id)TZY>)IvlXV=`5YvT?7MWp?@@7OlG U{C-PMB`B6WUHx3vIVCg!0LQ@Gq5uE@ literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Systems ok@2x.png b/pandora_console/images/Header icons v1/Systems ok@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c1484d1ddb317cf1d172ce1fa2d124c507bab3d5 GIT binary patch literal 982 zcmV;{11bE8P){|NDHPa7BZ|!t#p~vZ8sW1+n6m zzX)Pn90joETlD_{OHb!=xvm+lQs8fU(NV&+lGYeq@Ch8?&%k8GC|BLX&th zaaLk!i4lDtCFrqGHKHA2GbF=HjA#^gY7;NaPC$m=VLJG?y`CCf88_p(rHeh1p=O-4 zO?}Eq4JVf4nS5?s>*}k-8qEcZ$_GOX{Ui(an*)ToJ*meq^|Voky1Gv@t6R*p0RP?a z9FmMtnttQ=)M4jxU0t2c=W?3qlGge>fX<=qBjzk?I*L4XQQJ09=Srk`4RW7Z@%yYp z?_b>=1Al;pro3>yg-}bBQ zhio^q+aDdC&JTUXsqRb~=1>!^skFevA*ro?+IYnkg;f~AzKm@?A5ikp{XO2yJiON%da&K?#bwce6Y{m%q?(yYigdEI&zVV6Sqi z*Z#da6xLS`IdZRS$FoSW=3Ch3gRxZvaHkzAqKcoj(%LU!=5M$ox2bay1RQ=NWk%|t zdD-&Lnzd*(qPIGj(J~`147GbxMe3cokTs&W*u$uUEjDNiA6a5sfL6;NIJnmc*F7Tz z!L+`wX5YT-)ql47NvVGP<@>=ufj>1^kvD0b?ZKTmS$707*qoM6N<$ Eg53wY9smFU literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Systems warning.png b/pandora_console/images/Header icons v1/Systems warning.png new file mode 100644 index 0000000000000000000000000000000000000000..f1cbc64f6faec500766f3e8c6d497b1135e5fef0 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHisL<9978Mw*M@HN zV>aaZ>fOiK6|gWkF+s!WjZcn`0^?i(V|hmI{fAC?U2QcwVE=(}FMosR$_p#SljqM` z>~T?*-K8t%X65<5+K-Lx(X!9&jvv`^mdkvv@-jZb`w~fZ3x6KUxggh&VK4mMvioYy z?svDder(iwzbMpG&vA#?vskq~5#8Enf*v}aTVQx%=Zwzl-dj|Q=fv(gEH$U{`1(}I zsF_^HmGzx-PFgm#OS7+guutTtz=L%q36mX!mG&5ZjJP4cCbM^vWV0#v(+IgMmtOG6 ze%N;8LdBPc6+S6*>f57UMEo}DT^ZYX)KAa9sBdG(z4O&7LbZLXPWw8PrW^0xbY-dL zd(mTGAM8+HobLXQ^ESgZmK&3Pt?Rm?Tf9fcReq8G3|IF3O%pd8?riN_{`3zw*Sn5` TYk3*Zfr8xA)z4*}Q$iB}*B-(n literal 0 HcmV?d00001 diff --git a/pandora_console/images/Header icons v1/Systems warning@2x.png b/pandora_console/images/Header icons v1/Systems warning@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..03e18ec79d0e79d247801bc0d38055f5879cc32d GIT binary patch literal 918 zcmV;H18Mw;P)1gh5T4mJLL!c^ArKJ~$&!mS zvBV=#(8MSbDDVo@P}1=Tk*E^E6WEDGL1^iaXq_fhmI%<`kSG+RE>Oo*{Q3#*myKroGKQcosMODr!nqP0<+ z9t$;OWgRU*`Ur)_hea$3cy<&fId zrbqNK^@uTolJArSV;|ZebLlYv;V#LQx%)8puu=NPwR?#0lEdbZ^Uq~?8fm@}@SHK; zYtWBI@+x)iJn((*A&|epIc%MUYFvQIoYxkm{BUl&;I>ad$4K~1q51-P@iRW{of*ad zfe($Td9}H(vP}*W)VO_WEBl~bJp`i7td?5~T`&RBh%d5&iTrG@a@=NUl35lz2EA7G z2meYdd8pxqd|ce31j&^Xt61vNSuG!lLlb)vlZMU;SlpDeT9PDhr<^2^m7hPL)@qY$ z!drfivs&ZGe?_HUX?=Ye>0tRTc!P$I-UbUah@ipX>m2MiodJcDQs{zOh0tYXT}Ao` zbg7$r)Z{&r+}C(+VBQ{>7SGmr0~D_HhVQnM9u8cLv~(l}dAGewAC?l!RbU*^URnjy z%FX^?tO1*|xEB$d#I|WyU_M^x)zW@LL literal 0 HcmV?d00001 diff --git a/pandora_console/images/auto_refresh@header.svg b/pandora_console/images/auto_refresh@header.svg new file mode 100644 index 0000000000..4c9de8f3aa --- /dev/null +++ b/pandora_console/images/auto_refresh@header.svg @@ -0,0 +1,11 @@ + + + + Dark / 20 / Auto refresh@svg + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/pandora_console/images/discovery_error@header.svg b/pandora_console/images/discovery_error@header.svg new file mode 100644 index 0000000000..cb323bfbb2 --- /dev/null +++ b/pandora_console/images/discovery_error@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Header discovery error@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/discovery_ok@header.svg b/pandora_console/images/discovery_ok@header.svg new file mode 100644 index 0000000000..2b9ca237ac --- /dev/null +++ b/pandora_console/images/discovery_ok@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Header discovery ok@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/discovery_warning@header.svg b/pandora_console/images/discovery_warning@header.svg new file mode 100644 index 0000000000..c85e425eec --- /dev/null +++ b/pandora_console/images/discovery_warning@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Header discovery warning@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/documentation@header.svg b/pandora_console/images/documentation@header.svg new file mode 100644 index 0000000000..3e7cbb0889 --- /dev/null +++ b/pandora_console/images/documentation@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Documentation@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/edit_user@header.svg b/pandora_console/images/edit_user@header.svg new file mode 100644 index 0000000000..f1cc04deb7 --- /dev/null +++ b/pandora_console/images/edit_user@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Edit User@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/send_feedback@header.svg b/pandora_console/images/send_feedback@header.svg new file mode 100644 index 0000000000..cd4ef7e83b --- /dev/null +++ b/pandora_console/images/send_feedback@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Send feedbacks@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/sign_out@header.svg b/pandora_console/images/sign_out@header.svg new file mode 100644 index 0000000000..7d23d328f1 --- /dev/null +++ b/pandora_console/images/sign_out@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Sign out@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/support@header.svg b/pandora_console/images/support@header.svg new file mode 100644 index 0000000000..3b9cf3e31a --- /dev/null +++ b/pandora_console/images/support@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Support@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/system_error@header.svg b/pandora_console/images/system_error@header.svg new file mode 100644 index 0000000000..d1318690cf --- /dev/null +++ b/pandora_console/images/system_error@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Systems error@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/system_ok@header.svg b/pandora_console/images/system_ok@header.svg new file mode 100644 index 0000000000..cead9354b0 --- /dev/null +++ b/pandora_console/images/system_ok@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Systems ok@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/images/system_warning@header.svg b/pandora_console/images/system_warning@header.svg new file mode 100644 index 0000000000..681915d0c6 --- /dev/null +++ b/pandora_console/images/system_warning@header.svg @@ -0,0 +1,9 @@ + + + + Dark / 20 / Systems warning@svg + Created with Sketch. + + + + \ No newline at end of file diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 58a8cc6653..4a5136ba52 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -2612,6 +2612,7 @@ div#header_autorefresh_counter { } .autorefresh_disabled { + opacity: 0.5; cursor: not-allowed; } @@ -4757,17 +4758,16 @@ div#dialog_messages table th:last-child { font-weight: bold; } -.notification-ball.notification-ball-new-messages:hover { - box-shadow: 0 0 3px #888; -} - .notification-ball-no-messages { - background-color: #82b92e; - cursor: pointer; + background-image: url(../../images/discovery_ok@header.svg); + background-repeat: no-repeat; + background-position: center; } .notification-ball-new-messages { - background-color: #e63c52; + background-image: url(../../images/discovery_error@header.svg); + background-repeat: no-repeat; + background-position: center; } #notification-wrapper { @@ -11239,14 +11239,15 @@ form#satellite_conf_edit > fieldset.full-column { .show-hide-pass { position: relative; - right: 38px; - top: 0px; + right: 48px; + top: 14px; border: 0; outline: none; margin: 0; height: 40px; width: 40px; cursor: pointer; + display: inline-block; } .show-hide-pass-background { From 82ab2af20a6e73ff435f164c0edbea8441de1ecd Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 17:26:58 +0100 Subject: [PATCH 12/14] Fix header title and subtitle --- pandora_console/include/styles/pandora.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 10f219d81a..88eb27d931 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -2545,14 +2545,14 @@ div#pandora_logo_header { } .header_title { + font-size: 12px; + color: #161628; font-weight: 600; - font-size: 10.5pt; - color: #303030; } .header_subtitle { - font-size: 10pt; - color: #606060; + font-size: 15px; + color: #8a96a6; font-weight: 300; } From 3ba9b752fe514fab0b8549fb42b0ea0687711e5e Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 20 Feb 2023 17:43:42 +0100 Subject: [PATCH 13/14] Clean unused items --- pandora_console/images/Header icons v1.zip | Bin 38450 -> 0 bytes .../images/Header icons v1/Auto refresh.png | Bin 825 -> 0 bytes .../images/Header icons v1/Auto refresh@2x.png | Bin 1838 -> 0 bytes .../images/Header icons v1/Documentation.png | Bin 466 -> 0 bytes .../images/Header icons v1/Documentation@2x.png | Bin 851 -> 0 bytes .../images/Header icons v1/Edit User.png | Bin 826 -> 0 bytes .../images/Header icons v1/Edit User@2x.png | Bin 1795 -> 0 bytes .../Header icons v1/Header discovery error.png | Bin 544 -> 0 bytes .../Header discovery error@2x.png | Bin 1019 -> 0 bytes .../Header icons v1/Header discovery ok.png | Bin 558 -> 0 bytes .../Header icons v1/Header discovery ok@2x.png | Bin 1022 -> 0 bytes .../Header discovery warning.png | Bin 524 -> 0 bytes .../Header discovery warning@2x.png | Bin 1006 -> 0 bytes .../images/Header icons v1/Send feedbacks.png | Bin 645 -> 0 bytes .../Header icons v1/Send feedbacks@2x.png | Bin 1310 -> 0 bytes .../images/Header icons v1/Sign out.png | Bin 646 -> 0 bytes .../images/Header icons v1/Sign out@2x.png | Bin 1202 -> 0 bytes .../images/Header icons v1/Support.png | Bin 869 -> 0 bytes .../images/Header icons v1/Support@2x.png | Bin 1920 -> 0 bytes .../images/Header icons v1/Systems error.png | Bin 521 -> 0 bytes .../images/Header icons v1/Systems error@2x.png | Bin 945 -> 0 bytes .../images/Header icons v1/Systems ok.png | Bin 543 -> 0 bytes .../images/Header icons v1/Systems ok@2x.png | Bin 982 -> 0 bytes .../images/Header icons v1/Systems warning.png | Bin 492 -> 0 bytes .../Header icons v1/Systems warning@2x.png | Bin 918 -> 0 bytes pandora_console/images/svg/add.svg | 1 - pandora_console/images/svg/arrow.svg | 1 - pandora_console/images/svg/bell.svg | 1 - pandora_console/images/svg/bubble.svg | 1 - pandora_console/images/svg/device.svg | 1 - pandora_console/images/svg/display.svg | 1 - pandora_console/images/svg/down.svg | 1 - pandora_console/images/svg/dropdown-down.svg | 9 --------- pandora_console/images/svg/dropdown-up.svg | 9 --------- pandora_console/images/svg/duplicate.svg | 1 - pandora_console/images/svg/envelope.svg | 1 - pandora_console/images/svg/exit.svg | 1 - pandora_console/images/svg/eye.svg | 1 - pandora_console/images/svg/fail.svg | 1 - pandora_console/images/svg/file.svg | 1 - pandora_console/images/svg/house.svg | 1 - pandora_console/images/svg/iconos-27.svg | 1 - pandora_console/images/svg/info.svg | 1 - pandora_console/images/svg/left.svg | 1 - pandora_console/images/svg/menu_horizontal.svg | 1 - pandora_console/images/svg/menu_vertical.svg | 1 - pandora_console/images/svg/ok.svg | 1 - pandora_console/images/svg/picture.svg | 1 - pandora_console/images/svg/plus.svg | 1 - pandora_console/images/svg/protected.svg | 1 - pandora_console/images/svg/radial-disabled.svg | 11 ----------- pandora_console/images/svg/radial-off.svg | 11 ----------- pandora_console/images/svg/radial-on.svg | 13 ------------- pandora_console/images/svg/right.svg | 1 - pandora_console/images/svg/search.svg | 1 - pandora_console/images/svg/settings.svg | 1 - pandora_console/images/svg/sound.svg | 1 - pandora_console/images/svg/star.svg | 1 - pandora_console/images/svg/success.svg | 1 - pandora_console/images/svg/trash.svg | 1 - pandora_console/images/svg/up.svg | 1 - pandora_console/images/svg/user_a.svg | 1 - 62 files changed, 85 deletions(-) delete mode 100644 pandora_console/images/Header icons v1.zip delete mode 100644 pandora_console/images/Header icons v1/Auto refresh.png delete mode 100644 pandora_console/images/Header icons v1/Auto refresh@2x.png delete mode 100644 pandora_console/images/Header icons v1/Documentation.png delete mode 100644 pandora_console/images/Header icons v1/Documentation@2x.png delete mode 100644 pandora_console/images/Header icons v1/Edit User.png delete mode 100644 pandora_console/images/Header icons v1/Edit User@2x.png delete mode 100644 pandora_console/images/Header icons v1/Header discovery error.png delete mode 100644 pandora_console/images/Header icons v1/Header discovery error@2x.png delete mode 100644 pandora_console/images/Header icons v1/Header discovery ok.png delete mode 100644 pandora_console/images/Header icons v1/Header discovery ok@2x.png delete mode 100644 pandora_console/images/Header icons v1/Header discovery warning.png delete mode 100644 pandora_console/images/Header icons v1/Header discovery warning@2x.png delete mode 100644 pandora_console/images/Header icons v1/Send feedbacks.png delete mode 100644 pandora_console/images/Header icons v1/Send feedbacks@2x.png delete mode 100644 pandora_console/images/Header icons v1/Sign out.png delete mode 100644 pandora_console/images/Header icons v1/Sign out@2x.png delete mode 100644 pandora_console/images/Header icons v1/Support.png delete mode 100644 pandora_console/images/Header icons v1/Support@2x.png delete mode 100644 pandora_console/images/Header icons v1/Systems error.png delete mode 100644 pandora_console/images/Header icons v1/Systems error@2x.png delete mode 100644 pandora_console/images/Header icons v1/Systems ok.png delete mode 100644 pandora_console/images/Header icons v1/Systems ok@2x.png delete mode 100644 pandora_console/images/Header icons v1/Systems warning.png delete mode 100644 pandora_console/images/Header icons v1/Systems warning@2x.png delete mode 100644 pandora_console/images/svg/add.svg delete mode 100644 pandora_console/images/svg/arrow.svg delete mode 100644 pandora_console/images/svg/bell.svg delete mode 100644 pandora_console/images/svg/bubble.svg delete mode 100644 pandora_console/images/svg/device.svg delete mode 100644 pandora_console/images/svg/display.svg delete mode 100644 pandora_console/images/svg/down.svg delete mode 100644 pandora_console/images/svg/dropdown-down.svg delete mode 100644 pandora_console/images/svg/dropdown-up.svg delete mode 100644 pandora_console/images/svg/duplicate.svg delete mode 100644 pandora_console/images/svg/envelope.svg delete mode 100644 pandora_console/images/svg/exit.svg delete mode 100644 pandora_console/images/svg/eye.svg delete mode 100644 pandora_console/images/svg/fail.svg delete mode 100644 pandora_console/images/svg/file.svg delete mode 100644 pandora_console/images/svg/house.svg delete mode 100644 pandora_console/images/svg/iconos-27.svg delete mode 100644 pandora_console/images/svg/info.svg delete mode 100644 pandora_console/images/svg/left.svg delete mode 100644 pandora_console/images/svg/menu_horizontal.svg delete mode 100644 pandora_console/images/svg/menu_vertical.svg delete mode 100644 pandora_console/images/svg/ok.svg delete mode 100644 pandora_console/images/svg/picture.svg delete mode 100644 pandora_console/images/svg/plus.svg delete mode 100644 pandora_console/images/svg/protected.svg delete mode 100644 pandora_console/images/svg/radial-disabled.svg delete mode 100644 pandora_console/images/svg/radial-off.svg delete mode 100644 pandora_console/images/svg/radial-on.svg delete mode 100644 pandora_console/images/svg/right.svg delete mode 100644 pandora_console/images/svg/search.svg delete mode 100644 pandora_console/images/svg/settings.svg delete mode 100644 pandora_console/images/svg/sound.svg delete mode 100644 pandora_console/images/svg/star.svg delete mode 100644 pandora_console/images/svg/success.svg delete mode 100644 pandora_console/images/svg/trash.svg delete mode 100644 pandora_console/images/svg/up.svg delete mode 100644 pandora_console/images/svg/user_a.svg diff --git a/pandora_console/images/Header icons v1.zip b/pandora_console/images/Header icons v1.zip deleted file mode 100644 index 22a9a12dfa2c2155b0f7aad869015fb753617c08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38450 zcmc$_18}9`wk;alHafO#c5K_WZ6_VuwrzE6Tb*=lJ9+7|&%5W`efrefRj=;3EA`h} ze^T|=s>&F1jxpx^Q~>_{MFI$5ixUP}a8Z}57{wSdM^iY{?$@`QINzi@ML;)K4vsAm1t}=g`DKX<*kVLeQQQ?T#&I;>2uTf!n1-+;fJu2>tCLWw2 zY1lyc7L&}^=_W!Un9i2@xvHBFNrVny{H0xWwf277{_lrRw8u~L*JRdJl6 zSa^0QSWDN8lR=o^YcsH?k7*1_QXKj}8b}$Z4_&Gu%SH|3;}@ zqL!{g#Tus{@Mo$jawq<12I{|gZVIYwP%*<;8l_GIPQ!mw`@b*Pz&9Z43Qh_ z5>zW1$_)w%yID}PMW<+3qKfI_FWlKO0FvL24X|_^%#3zLN<;m*l-T5u2L>CCqxP-s zSGABQET%k>UA`=lNDW~u2d>J=!32E2Y;6vt#8fTWd7DUU3L4zElcsnr5omDhFqCY` zn)xueHPs0S_!iYu1do7a2rB)?NKGTTL9Ad+)K?cu)CVHYbSIH(o1WCSoOL?U&&>@V zh8JJ!o>Z-L7oD&VfniB>?t}}i52$q)MbuFKeYY*%iq|KS3S*?0MZ2g3pl$c-s>T;^ zIZ1Gc{8;AqP#^$+KTwwYE6D3X007|sGsqd;XzgtNKQRti4k9yUQ3n9)>jD4($_4sgzah^B{*TXp{-{nXoc#4j5^-SxB{j%FH6AGx0Th$R+Kvc? z!a4r4b9nL}3;~2l=9Se6a8yuGR21jcj0_lwxy0!+*YoQc9RmS=E=p#2gM%_CSRYoGSXU@Y;BD|s%Fg^S0y9CqQn{D;NgiL81RO7{H#4ZUNR??P9I-c z7`M%;`DbQB&<6DG`rM>QucB8==;7huNTt5ZX-SyRp{&_z*8*$ZXi0uU0Q0b~RzoND zz99@9?<3bnCZ0rAmyl0gBZ$Z!RAAslXw~4SHk~xNP0xLKk3H3>V(n>ZdF)fg(P*$~ zdCiu%vXiBPr-(p6ekwH0DH8*p(n+KXBTokygG3b;)6mE#hk2-v4!cFHw@TQPT4rKm zf)@!NDtN0~`}p`^eWEodkC|O+%5Podo|`hTwx$6STt;`0A{fb5XN(*cr{lkxLbA|N z5!MK0KGcFZz}9z`t+m@5S)gquZ?ZXPegeSJL}365F?nIm z^jYK6txrL7F1{(3E?sLVcF(_#fD&{ zUp}oe^Ph=bys~&O(pvbwq~uLRRpyP0IsDNc&i@$rsNKMLJP|n6;8r~>g-t!!c>swE zmD+w?XTGO)Yfah$AdU}3{!;y&lsX>Zsu*4aGPXt?&5VR!GzHWmoAoMt!X3RWLvuiK<6D6?5UP@pS|0F=}f_i3Rr;}o2-q#tf z{Q}mpHG-3Yk+y~FYS`fH^mLDJPV$#Sf6ki5T7vB_m310efZ| z!~NSR*^5j7!aW8_L&-kMI!Jn3Jjx(CE@_chjoiD|8^=!FC{?Mf^=8%N7P0G9DyJzV zHDeWvr}xYBHcFs!E`}u~C2TR#(Ho)BySfoZ6vLbc3IqmH)OqiCCG!k#tr4&uZ)OU46x-IA8Ct~d|D@8q&_83Jp_tP{Tq9xFGHkWesI+r%3Vbs_pb~2f zisu4XN4=d!M$0C#%A&M3d##~7EzDo?hy76S0Km)P5<5Cg+^apIM9%iF8sg7A;>z=TGJPdrb`as+chUsV4p_1@RQ- z%JFbNe%C-xZ|DBb4iaeY8^J{1P;c*3g{&)U?9cd%qtlVz+Pa)q*>6;_wsBa$(hg3? zb3u(9>FJwI8EXO5qxh)@0f3~SQ+K|7gHA=Xiv2A-D>>}Hk&{guO^6myMY!Y>iVM>G zFs0MKWqwAlXr13blq(jkNy;#3{c(=TrDm+GorvZbH$`$?!gPImsg^^InT`GJ<|O>1Tmty4Ko_GycjeR-

bR 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 DfCpVl diff --git a/pandora_console/images/Header icons v1/Auto refresh@2x.png b/pandora_console/images/Header icons v1/Auto refresh@2x.png deleted file mode 100644 index 73aec57365e65a0ef3c2860aa1aac8a848ad0925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1838 zcmV+}2hsS6P)pQ1f zwrtstW<;Kt#?MYuSeZijRu$)A+C+sJ@w_0pzP|pU6qRvRN=izGR9?Dtsa=>asWLG! zF;8V@XJ<(YkCkeqqM~AklzP&FrIE zn-Q$#&Lj3CauHP=F=7lVVFbtz!lfhbWT>H|9B^KQ^H+#xak$Td(4SH&+@t1sMoUXe zZ=G;907EioX#ckBHK}IM@Pp%UKG#hrnXj9Z*T9g zfa&@|a+$-{i^(fS5(~30VAiY%fP1D-pMLA^-Mfe52>7kVZ=3XN6b)bVm`?=IlqzA{ zMzO)ydGb*jTuDzZ?+bx(Qb5@OeVITpz86L(DZei(D|>C)fcA;)6v1p%9ynrZlL7=ZJUo1Ycc$zlyer8s zu1jRd$e#!351b9GmAP3P4^FBJ@Td$--nE{?EXlBH)rbPN*|X&pO8}~2;<{rX-*m`} z;u%x4-lGXA9pE|po9A1U=yC|CyGFoNH!dx!f=^>(<199b(zs(d%A70LvvvK2!yG`h zx2+=uTjBwn<1@Hc{W3B#Qo}2=+hEKuQjwBw_rvr?bI4bcsz>PE=e|!4pp4DU%`=CF zhK>Nd$agjwpf-RqR`<(9K;OZaVP8XCC*CT`JA7Lq84|~d`N7txqHv2qNMBfD02K^F2QkFVe|( z%gf8(o65Je1s5tyXsgS>INy%qZz^hF8JSs@LCON9yY8mTup^eRML6M1peGUkA*=R*|CWj>H&97Si8f z-%ExMv-cvWHEy%|qy)`Dr7ja}DK9eo zFHrT*Y~QUY8B$t!Z*%{9rpl?AGGDudNj`0G5`Po07*qoM6N<$g7JQ4YXATM diff --git a/pandora_console/images/Header icons v1/Documentation.png b/pandora_console/images/Header icons v1/Documentation.png deleted file mode 100644 index 78bccad52a55abd56bd045beed0ad5438f280029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHid{Wj978MwpHBAm zJ8U4(n#|4D$kH+UNjme2x1tfx`0lzoJ#rCIH1pIusI*(FJ8qHZuX&d{-(2z9>l(4j z_VLd&t9dh5aA@~EcFg{}Xl23I+W)3r&tp|RFYz5NSif_ow^d-k9hZeYSN$it)!xxR zv1{Gb={)@gM+HhAeT}~?A#e6ri1{AQKu6{1-oD!Mq)i~Ei0^ODD zdF;&D+1c5L?QWqpo6Qf?>GTEhrBdnPZDLqK{CGSbdL;?6sY-89uh(bN(vcvQyLTu#9^S+-DF*a09Nz^K7*0J(1g!c5*{Ca7^6#h%8olS&dM& zG%5=~W1=$5iX3Jn$Jn)s91i4IxdF@N@)HTD?qzvkN@EM3JHmL7;KYtj8T~kk5O9n= z$8qF$35-9LqtWOqF|SBEZa-;j(4%*Qk}gRvn%5(19(%gXcM z602WU24f6*A>8=g&0xS_)5U9 zcN)kI^+WibRjbvv?RJ~~+)!IqfD?FZvRAEE+e(szbbqyFZIVwil77GcvDIp&K8vL7 zD*52eFM;vuaQJ_-4f<5-*TJKF2Ke2ut6`@uF`VdK^o#<<8}1PD0r#002ovPDHLkV1o8(d2s*$ diff --git a/pandora_console/images/Header icons v1/Edit User.png b/pandora_console/images/Header icons v1/Edit User.png deleted file mode 100644 index ad2d1c5abb8e7bfd49c1cbf5f1771a039cd7548c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 826 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 diff --git a/pandora_console/images/Header icons v1/Header discovery error@2x.png b/pandora_console/images/Header icons v1/Header discovery error@2x.png deleted file mode 100644 index 9f45175ea80e2efae483e5f9895cab1872f56910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcmV4s8Yf15DId z&)sorNq-W4sBQI#@$rm3N6r7Y;y zlcLc{XRbO)do!QDbVdZ2OWIVV!4p-=ka>6}ih2;P@b!a$i-C)41#=8s+f>kWc*XYF zEF!`qZ5cGG=2+a{j0kCP(8{l@y&xc){dc$%1*yrm7%>FYZ|1^26F1daZx=%{ zRycE7HM7={-(PfK;!Nm-26;HFCC0o9X_C`luu`_ zdj$75!H<~yKpNq7Lv!Qs(Xp|dmhS=-ft&z*pbQasJ)HZUNOX)4q^|v7@q7Lp-o#s5 zp5W-H%k!dV8*n++N~?qKhhYYMK_d` zo!x6y&fy#BQaqb|r~Dcw*H6CeR1ULcA=lf)OxCZb+Z9_xKL-ZdH-Bx60Kvtw;D{>< z;dXp_>Y=Gy1ZWC`mId7P!mvlw%V$ehsDrB%BxuggaAlfTh?7=RY{Wd|O4W-T%=h=V z(R$%7J9CX|WuysEx^U@y>lM;tY>M59kB={Fx$j`!wmZm!xhU=q8n~8G5)c}!ZplAn z=Pr0IysZUrzij0ft|Av7?AHRd;)-vIZy@Jt1==rr@$IjE2-R$)?qD@hGi~Y-G^0@s zU5{WjQ8R50Lj-Zv^!Q-WxXL#k96MM}?RX=;`L~&^AKj4N5&e6L9h*+fW^La=aYy>J zQ1IrW=nmAfJ^m%K2r<?zc(M!jHiWhpiIEGjVUJX6# z%@imwzq0O%?qrn}vnx5BUP?)NJvlCad1-h1g%d}e!(Zp0?C0Zhy>76mTd72YgZZu4 zG+*O9?R7JLH|gy?Ty6dN_u2PvXV0wdKA;@WYwu$F&-6_AAr(GJF2Ukw$_!#!vtKgu z@R<8QcdlT0sy$JSp;hO&c~*IcaH^5kM4|T^4_}MayLjTpH<2cuRK0JJ_dAcKRjs>T zSF@S>hAxYaw)&(Nfq<-6_sVQ92kBVPVDtGEVs^8@_-BI9h8&lQzN)|T60c=#o$>qA z-e`tJv3^gi6!t1S+{+Yd<8yC{3dh+iL8pRdZ2Q%;`m>jx39roeuebcmXDwegLG5Gv zp}zcV+y849iMaX;K8)bqeD3DbLJ5 zy}3=o9)m%&FAADVdAsaa8-=$^}pBmGS(fN&`>WR^5C@ff!^IFOFo7k$-VaQ0iWWX kT^?7r@8K4|bYa>V@d)mEJ+)s_CZI_3boFyt=akR{0KoLzb^rhX diff --git a/pandora_console/images/Header icons v1/Header discovery ok@2x.png b/pandora_console/images/Header icons v1/Header discovery ok@2x.png deleted file mode 100644 index d5f1f8901c8b86508e47702743b98d7c57716bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1022 zcmV-D+m-pclR6L z`*fD^bJE$q&r;Yu?0fU(z2CffJM+Hxy=83clSqcY_9w$LG=%$mxo+jY zNr8^qtLj3oQ#Rj>&RQos6o?cfo%4#!vg4=-7~YprydE8@%z$6_`2&qTm(m|e*XZ0D zfNrV)dkc7_mziKy#zuQ6axcMXE#m{RhhxR*!vUBs`s)F+b!;L_m=!{9@q#>1v*Yyl zry{qQB?d83SMRj|=Cq`bS9INLnf)bocL35vA{D7;7V88M&6v|d4B$8(uT^|H`~(KG zLcmmQ?97u+7%NC1NsEAklhJd9e2$)3K{;tc(aW*ESf*3z+JJb67x50ClES~C6u<7) z^mmR|?~Pk9azJKu<7btL*SP)Xp57F}#5GR=DbaWfh;bc^Jw67rX-{K_ zrS=_8X~$q?0~N^jw#~igl*6d}L<`HnN~=QUEmo*@J}qW!(!4*>aI9dhjbMI^X)P5Y z8ZI*qJ$FR05iDyYadjMs1G@(&9)ss zoT@vrk`n{Cc#qtQlMQQ#`H;K=18~pMJ}E+rfd!`Wh>5O?y#0NMLsqvO(@| zqVop>!G@ zASDmW5iB`m4ueAwL0~Hmrw`5$edG8_{_@~>wA~Z(&8}wXr5kI$%iE{_^9UPp@z{KO zu^yy8ZBFE;z32|O*&5b_O9AjVQ>jHbMF&+-YOq*^d^b9K73C#0SyUWDejS~9#eM!E z*%MXmv<|8YlBZVr=ZS?dv*0|omrmo62nk>zEOJjEUx|CI#O)%*54D`Aoeo6d2MCr$ sK8x+AMf}I(Lv731d0h+2wsm}M0Pf%mak8u|t^fc407*qoM6N<$g7u@p(EtDd diff --git a/pandora_console/images/Header icons v1/Header discovery warning.png b/pandora_console/images/Header icons v1/Header discovery warning.png deleted file mode 100644 index b329f4d755140c10467692f6013e5d2396d7ac86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHit9aH978MwuZ9@< z9d;17W6Rz+MNO=)f+2H4z#-u#0U;ZO^9vR(R1$I#$$Tie%ugq9g1!nXZ>Gjt2}j}1 zL*ERu3xs5%Em?$;q}QiEPkUchljh{I?(dR0$IROET)7n%&RFqxqR_^&w~uF(EEk#h zPW5S|W|4M(M5uS;l3A>2M=xyseQ~X=>-lvJ@m0%ormA)O7f&c%zfI1!dHd0)r!A{@ zo}Jz);U+hu{p6KJdz{3A!(MMavc_+7>laz4eNW%4edxL5{p_U{5^;*w3eRLOi6k81 z7rSV>J?__`gNZpRzdYi)4ry6SyDfLSz47A8qnXN!a$fd#Bz0xJ=Kg9~x<8}sk<^{n zXXaMQ&7IJ9-k@vkBG*a_mYSrip|ihA-;;0YSzW?6@wCmSa>I`8t_Cd%c9ZA38y&eX zH2H1Ew3XV&ZvSU*l6Z3ChmCf}qNO1>Zyx>oJ*Wj+U}0u^V)E`uvtQ^v#xGTcUn^NEoIz3I>FVdQ&MBb@04$l# A@&Et; diff --git a/pandora_console/images/Header icons v1/Header discovery warning@2x.png b/pandora_console/images/Header icons v1/Header discovery warning@2x.png deleted file mode 100644 index 579c5fa6bb44d30db08dfea39df63b3eac8a5a6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1006 zcmV6#o5Z>8$Xo!mMG^qrW_yYtL zi!>%62nI!x%cTg|3Klk2ik1piHX>GnsHE`j45BEAV6+J+v9LEe1uG+W5)C2V?l`k% z!`}0GZ@qgl3EYEZc6VmK`F7sk?7k6V#d<}RpW_AVlxwn~;VI$#D}3)_}~ z6a%(XCsk?J8FKU!i`@rU0kuMibr#f-(E;xJ4+5LV;qthB$Y?IsxixTQtZ&!Aw*3t= z`6|$J)6R^OK_<+a#jp}FAL!zX`_vqwzeNG!PB2=z$U1%iA7}TfCH(li8~@*UO$v>j z>c1E}BS~%wM2=CTg^*I4IJ!o)LiPc@qr5wo)Fz;1DKq_$n}5f)#;fnkNdgxD&p;Kj z3n*}VqOqreOcRWKdT$6%f|~)5Uh|Caa(wK}wxOIlhbVe|CN#1MI-th@x<;xLo)ZXH zDgWs*O z!EJV+@y9qKoFKz~uY)TJ64Pfgl+>pI@QH+N6Ye1wHLoLxlf9u<->%S#&k{hY8zAa9 z+9x8KZiBaEu=6qum#bE92x2Mh(I}?UxI0+jRwQpgxfKR@{{fLZqO^F`3gBAJR zwYa`k4qC-!ZggK4hgt<%tNG0Bzy1)KSxB2;Gf{Krv?J(7qnUO)g3UzDowM;H2m-#l zj5ku7xk;){O>QJobzF#>xy|rLH(jxg*D2S#Lxs4^Xl2L{WG-B%)k`=<=U?A?aw9@> zvI7SBs>M833A&`Xz@oIe00K`D;eRZ$xJb!uBCw1C9tASEW^1DEtXP7sfo*fCT$HBv zYfy(N-uncVmxz2XEux!BOPyrbN#7JKNlhguQ%=W4a{h&!lqnQtipQ+P;H}6FzK<(G c@zm(^3&V8{Vl6Vo(*OVf07*qoM6N<$f`?zX3IG5A diff --git a/pandora_console/images/Header icons v1/Send feedbacks.png b/pandora_console/images/Header icons v1/Send feedbacks.png deleted file mode 100644 index 858e790ddb2102fdd9912c5cc744be8df358e872..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHihp>zIEGjV&JD5k zW_A?V+pi(^uT3C8NayXFPZ!--r)vCQ{=`4&lv3+d&9_0Bf`YERinlm^zBqbm0<-7z zV?owCk9^mgS)BiV(S+vYwEMGX-mSIX-PWi-*N;D=mi@qyIgG;nGkIU}d=$7`?o`OI z#z(E#chU9Nm8~zT=$@}kl_Y~l*#6D^p^o9^E8S|rYqdv1ZRr^D5z%?nT6IPW|*g(th# zGnldVY+4zTHB)r{VvmD2M7Bn~ojqHVdqs3v`tG}R3UX2WrL8|g*JS(pha9(wI}CjKs|5mP?^U`4@Be<$v)XDF;d6Y{%vY4jKG-O*#YXAOk0nXF*58Y4 z-EH(!ETMEY*NzRRk997*!LG%^<+irqTo=>i#n(Evr?PKfDw!ZAFLUeg!wU!376v>{ z_-J)`y3qO~vhue@-~6q)n3N-F$9JiJ4`cKXW+^w(yRMP)4Km{h$t75MkFx@3Ca0= zn|qVJ*}2=zUVa9aH#6_O?|u8`?au7RD)OzhwRNz$xj8XAJNwDv942z2bR{jklkD4Q zU&Kn3W_Ph_YinDSz6Fr zFpT^d{u$o3l`p^2ogtdSHB7-G2rrjgFLP)qK;XL{|wGPhQ%1^zLw)S z_So3iny!d4#>!8-i_+EAb#Qrk`EL{u@nJ2ZgbusUN;aDv6h#ynkH>2XMql@F#%f*I z3J`Cts;cVj$jHco?xzY{S8&|k-hL0kE~0x9G6Ojoi^Y0IM@N59Z)!e3tmXk2&H;e3 zXah?Jx0%!p3IHQKF*$(70Iptc3J?YU3emdth+)P6wFT5&W#sB|R4@j_ovAvGaiX!Y z@hfE+&1!0Ds=%3Hf-la#GJupT7SZ9rxLY6}zAZ+1<~zvw5V~F7d6ZO(+Eu&?B)MR} z^6I3Iptq$j68mtkk)aqwkl&3ABLIm@z56W7NTex;rkshrNcc?|8Jcov%9#L(gv~qV z@FymY%49i`o0MHsQ*){u5b*^&cYn6i>GT{1^P(t2*3(yVs7}FA071w>-ZvN$0FO;e z6rj9M3Sdd`=YjW$47MtHgqI_T__7Xf$RMl)P#?D59+SO#!J3r%TxVxze06p8E>d&} z*9l!;YK%Nj<9btBS^3PgxfSybB*>RJ$UMhYR}3V|JS!E~9c1oxDSsou?(XjW3kwS` z;TUPlDiyGZE`_tl%~UFt)%8At5jJKWGx8W2<>Qw00w{tY#$(6Kb}ywjSeQPS9(FAS z?*$e=CV4j6);bGANVmyzn9Fn8coVLyth|S!&mS^X{2DW7rm*0}^iyEL0Kww)w zQG$Yo)yoOT{TRbX)Cc@dI|P!a!vgH29mFw|R2g;<| UtzpKMwEzGB07*qoM6N<$g6jN3S^xk5 diff --git a/pandora_console/images/Header icons v1/Sign out.png b/pandora_console/images/Header icons v1/Sign out.png deleted file mode 100644 index 186cb46d3c4eec36fe5998f67883deebc9dc6e40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHihp{#IEGjVwuV^y z9d;1d+B|m8ubx~T>F{i;r%4-Lc$Ath@-wl=d zZ*QJiWV$Bh{QI+K&YgS1))VaCy3nb%c&^`a z#i?R$ji+7SegAEpkmnuxvwzy@r_48MyA13mUb?GyYG>kC&Q(t&bIt{F~h&DNhC9Ck&`aFM%CL3IcDZN{EK}$KJZS^ zH1Aq8S?9Fg5ziG2m04>o`q&?T{1MnQ%V=w_8}otPb_SO%)q582TE@(DC!F2;BCDkD z)ijYpi}~m6S>Cv;ZfM&O6sD7KTQ6jHd)E7oNyRKDEE@0qsqDKX>X(+A)sV)MeoXwz zGBe9l^Ust=zii^TT)#?W&Kzdd=xZfvo|7KioIk(Nbko+PCjn1pu3yUac!SQYT(k0n z8+RPqkms(qX3fw23112gZm{Sl&hB?ue9_}cm|#TpEt6}yZ?+v)Trju!z_*i6Dt@nN zcWyd0p(DmQ{a%CJh8VBh$LqwpUBg6Wi22X6 adWPK2D|aUSU%v>H7(8A5T-G@yGywn|FA*sK diff --git a/pandora_console/images/Header icons v1/Sign out@2x.png b/pandora_console/images/Header icons v1/Sign out@2x.png deleted file mode 100644 index e666a1fbea0ade31e05e989ea149f607049e54ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202 zcmV;j1Wo&iP) zf*}%Vtge#|D+&rLDebN@F&LDfB%09i)7zW7#Dai!R9Go@=l6~GmbY_ncV`#HN%rQ= z`}y9RnYS}?H-ZF+k8oXk|~_xm+6-)OEt(9wn# z#9;KncuXenj@hR$4-O6{Oh-^$N@>y*+HYO316=Z4OCk^kdU38;7bJc1A&1MsC|wgI z%@bKlQJC5wilW6*F**>qT0ksk&1UnOp!)rg>sqZgzqhyd!B-qwvu?Nho=Wg=Pb&{8 ziVzd{q-US0NCVDZlrM-VngGfP6+}o{TB0Zn_OgzM^AWOaljBU+Gcz*}MTy3v{IS~p z{{A-jE@>!_(bl!1xYaz;&SGtCEe1l@7jjG>$evj;i^oYXK=95IYF<`ET8A{}TnOeH zVRcWiaO23-F19GOZsxZ5032Hp0{EPVg9gq5+y%g04QwTemXjuM7NDz({>c7KftVq0#OfOvMKKP(6*zKlapiZcKfGh`ZSz=)jULVLyt9` zyb80kvvYDdhysCNd`re5eFDhy3z5D8$bBrqcNni?r?)~tw2lMB8~&o#>#b;k(2&*e zYW8GY)JN7-eIqNWeH|Ic{cq&o z)bXwjg`S$4dLndD?+)0!q%B+9xLxKHtVmg@mMN4NeR8MBRCt2pXj;d@-xQwJGXO-t zVwJ|0epOx)VBS4d1YUNTi}18O;%(gNbiNd=m^QL#t|)4d+pSjXmnE;ttJUlE*D!8W z1yFWlr>CbkkB*MqhmPW3iexFrI_6R!VoWTd{T`>&G5olS4SM|ASmK@J>-pmtMy2XZ zA3%@uu#l(AgTQ!|*YNN<=LhsqouDy;uP1GkN9UcAv>ODp!5{@EZ$+;>KnW@|(Ek=- zXrRFXVjG6)CUK(sylYA8h0yT%Ew}(d&a|*Cncqzz4$J5;FYzn~uV5&6(MzInLh>-Q zp3%6Mrb7Y~Cs!I^nZT|*Km?cEBy`RkLsxj4a0NSfQeT4@S8c>H8*Y*&%DC1*_!QUN zj;ZJ|8Q?0O(*JjPI5H%b*-$s`LNH+pbC@ySx-C|^IXXciVh}4xxrCBC2U!*K&l47& zC2XB4ZD{+iD(j@8)`1QFQhER$pF2qC>y+cL=HE-7@$BHsXXkGhr}W{s-=Po{UTO3T8z7a32B^} zKIiuCbKXPi!hQFg@A;k|_nh};0s&T6S659=Z5~?p3t*ILwK}epdM<`QcX#)7?QnBC z7!3Ad&L}b22qMeU>2&&*2sqzlFN^H1dbX-pVANngl-$2Up-|Fsnc>U|7^_q&BLc$G zwOZ|21Hvk0lm*0Npj945Xi^N1B_PcUoNa^z^h*CRWV8# zmL#Vcm<1r6v9kYEM7ay$5(b&OCyFIYbnTD?6Vj4^tQ+iAOQeN!8eq@?)*u~p8lH~F z<7S4~OSCX0eS9KB8r=!$wa5&hy-+C3i_Cf{5BIge^E-qkuy%F~$D@?BU`R^cX+SWS zfV3A`wpo_ss1I~37Tb+77KudmIiNX+_(-1b3GFM4X264V(GS&?lH& zzu1HFAlO-sE9|i7todXzS;pZLa>O8;5B$}B0*+D9kOQ|Q5{V!AeEx&HiISyllkb&q z&QbYoetnin(1f*tK*OA!UM6=|YR*piK28_>g#YNC&sBy-n=ZRO+{&3&tdOY1XIo)V v2Yi^TdVWb<)DgJCs2`(}zkd;agQNceqhK(Fm=&zF00000NkvXXu0mjf23UPI diff --git a/pandora_console/images/Header icons v1/Support@2x.png b/pandora_console/images/Header icons v1/Support@2x.png deleted file mode 100644 index f3c95c28530c6b5cec7e93752c000e61f972d833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 zcmV-`2Y>j9P)1i$6vuh5D`3Gwil_+~6fi6r zJ}4*>T9%-#vPm&fFbEpKCDGs)H$tu8^=e;VqPrkufm= z?1Nrz;1PjYSy{!9JP&McZayHerKM#yS<0>Gp*2nxtKuk(7>+#DQ^z6_=BfbD5|+h*~Ncn;A)0 zhHJi(26;N6OwuI@ZZz>!U;!z-AH*$-ATHV83(o79%gqR0DX%rzrRd%;dD5gw*K$3M zn(SqW!JlN3YhW0S$K#v0-(K(4tJm>{hK6a_ZwuN{qoJ8ZuSyk+Ah%UlSAQ)>7OmxW zJV>xs#9xBJBopUnzlJ!>1lW-M>#k1f^$dw7)BP>+HLc7#@hFe|z8WL=UDM{U{ zNx~s1m~7l5zC>lod3m{a&bhep zon@F5OiuLSJ?0!nI}6yshnCU`K1+ujg0zJv>iFj+0Ap-aK3_sz_7o&C3a1TrTmU)wy;9#L8-ZLPv zC0E~K!8kx?DVUVlE#NM>Iq|@A?ZwZ<=MKNI6DNyjWVcpHNlAWVW209a$GZi6Hrs!f zjF$*!t1~&yc6z*H*ntfRCYvl4FXMr_+;Qk{yw``EWy1_G3O3dF5IXMCrAq@1C)1~l zkCFOY0FN6W$`+PV;8n2mpdY$A@zgR4Tqk*fs{`*D4+fI~SQ!o(3P$izw9XLdBIdY6 zeZLF_lOOi`)rY&_?-1}$hZa-YMBeOOSY(B4y^F%$OB0UmZ0kN`uN@+S{mSz>7rQUa zhQwYF@Asi8T`@Z>z*X?yHsjQ(Qx6bx1$ehw!HIWRH;LXS);M4!t7Ws;bWLqyz=B;6fH$Zw5wj z9Ejs@CW}(B4Uqd?EEP|pXLt>|p|Y~_B!wvA`@&a2TMDp<0=(zqVdvl(*T8rxoAkgW zxqax;N=`AjD*ZWHwu{fs&i+m`WOP{DPml#m)k9S8;}AzJuu&g(q~pfg4Y?)EE()WH z<toy@&=>`<%pz&6Zw5^y_x^bPYg$ux7^Tn#po z_;aDNNi6bXOK>SZycByk301rf(e;6K|juLn5+j^yR#^<&`^ zsTRjcUwrd>vgvTlP|ZzLay*7x(XUtXZZQ4X=7@M6>?zc(M!jHifcSw978Mw*M{!( zV{#OjcaxcSVuVL)Z|kue(KjPGcOGu~!C=>7wy$gH*0~->%0DnZVBF#)Y&c6{=fl}k zTfY`rzHjmUmR44`Z|2;&cOQQ*+imt!=6mPUT_!)J?sItdwyf*vXfctt$!XbsrX-^2 zfltecA6jeb`*&Uw{~T>>)&5@9@U8Pll_TO^bI#j}8i&s4dYS&H;vwtK;*Ynt0$ zZwc_6c{b2{vGK|;*LOM@f8P6k%E{+WAuO{Oi~U;v`0}~4I$K_qMjVkh`#szGc+QMg zv+^gc-e&3F*QlLQyH)j~WbV&w<*rS$&fQdfd20I{o(*55uB*OzILCjQTM)xC_s0je zw5>Z?voAnF#mru0Vnv-|%{~Ezp78r-uNklIPcA;7vfEHi?v?G7MD~Mbinkr?Lp_&p zb?F@nKJvwIvGO0Yc^{|oeMsO*GWuJz)Mf^g-jx;$t7-jnK=I+}>gTe~DWM4f-Zt0j diff --git a/pandora_console/images/Header icons v1/Systems error@2x.png b/pandora_console/images/Header icons v1/Systems error@2x.png deleted file mode 100644 index fafe9217567aa5ca0a02ea09d2bdc7e0b2c6d145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmV;i15W&jP)1gh5T4nCI6p=ZKp;XQA*G-p z5|2QEl=zGzhliksk}i*cL=^;&0HledbaY5=oyJs=2+-g-$b#4g-!OAwkCpGvzO&cT zA+nOSb2Gc&&d!c!b_ao5vrsB~UT+H!x=KL_8>=pfz-)@8hbBX41q6#>Wx*c&;c3AjKmD47=%B2MolkW*{h)Z4B2R;zqBBpc+94kmoHJL`;{lT_C*Y5!_+HZ35zWhIx)>7dYi~fv6?%5rOI)f<7QP?;+>Bo8R6( z)+qmg4YjJadh4eg1P5{I+1)omX6F=L;e#lo)jZJ91QU>HHT@_pn2gW(DMws}M%m?L z=dcZnp8#mV#xjVi$fs-vOcavX8n})4p#)YDn6!MSX#t@4q4qtKP6H-mGwz41VX)=2 zTZ2U#3{Qi^HZkb+u} zl|FRDSy4>uai*ZQ#Hc;{esrVFO?6zYE+IL~J)mXuXqgbMA`zFBxU>W?$7QBGm!0zb zM40n=r!plaCmz@3UP|g*e!>=C;Tt@s!Mv}C#HA?w!jG&2z}^8&O&yq}C{v@~R}2*n TnPoGs00000NkvXXu0mjfh?zc(M!jHiYIxxIEGjVt_|Jm z$K)t5@22%dmn7%bUe;p~oX3u|oZ}L@c#8dl;+BmU4#~?MIu&u7Q%zy(+|G@Y*)Omk za8lm>c>8PJIKAng1w2mFeBONj&l{tH&D$e6z8vSCxa$k!I@c8rOZr6)n6=8=y`7TZ zU|yqi)7VY4iesH=Vb^5k^~Mq>pU*wDZ-Y$N39c{h_doO1`2Omu<6L!Ep~Ayv-rX4y zL0g2{bybb8`@cH>Msw?9ng7$wwkC3I$+Mh!BrSNh!s8Mn%?Y#je$85t8t#&x*x`ET zfRZt9!~Ftx{jMKjl{>Fh#Hugtx}DRTX7WtB-0f@5%9*z>I9FZ8kv|J=JMQ?os6xg`*!pj}@$}icb$t87 zJYNfK)JlA+lkBd~d6G%&pv|ObhI4FgO)L=Id)TZY>)IvlXV=`5YvT?7MWp?@@7OlG U{C-PMB`B6WUHx3vIVCg!0LQ@Gq5uE@ diff --git a/pandora_console/images/Header icons v1/Systems ok@2x.png b/pandora_console/images/Header icons v1/Systems ok@2x.png deleted file mode 100644 index c1484d1ddb317cf1d172ce1fa2d124c507bab3d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bE8P){|NDHPa7BZ|!t#p~vZ8sW1+n6m zzX)Pn90joETlD_{OHb!=xvm+lQs8fU(NV&+lGYeq@Ch8?&%k8GC|BLX&th zaaLk!i4lDtCFrqGHKHA2GbF=HjA#^gY7;NaPC$m=VLJG?y`CCf88_p(rHeh1p=O-4 zO?}Eq4JVf4nS5?s>*}k-8qEcZ$_GOX{Ui(an*)ToJ*meq^|Voky1Gv@t6R*p0RP?a z9FmMtnttQ=)M4jxU0t2c=W?3qlGge>fX<=qBjzk?I*L4XQQJ09=Srk`4RW7Z@%yYp z?_b>=1Al;pro3>yg-}bBQ zhio^q+aDdC&JTUXsqRb~=1>!^skFevA*ro?+IYnkg;f~AzKm@?A5ikp{XO2yJiON%da&K?#bwce6Y{m%q?(yYigdEI&zVV6Sqi z*Z#da6xLS`IdZRS$FoSW=3Ch3gRxZvaHkzAqKcoj(%LU!=5M$ox2bay1RQ=NWk%|t zdD-&Lnzd*(qPIGj(J~`147GbxMe3cokTs&W*u$uUEjDNiA6a5sfL6;NIJnmc*F7Tz z!L+`wX5YT-)ql47NvVGP<@>=ufj>1^kvD0b?ZKTmS$707*qoM6N<$ Eg53wY9smFU diff --git a/pandora_console/images/Header icons v1/Systems warning.png b/pandora_console/images/Header icons v1/Systems warning.png deleted file mode 100644 index f1cbc64f6faec500766f3e8c6d497b1135e5fef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc#=yY%t50_}ki(Mh=?zc(M!jHisL<9978Mw*M@HN zV>aaZ>fOiK6|gWkF+s!WjZcn`0^?i(V|hmI{fAC?U2QcwVE=(}FMosR$_p#SljqM` z>~T?*-K8t%X65<5+K-Lx(X!9&jvv`^mdkvv@-jZb`w~fZ3x6KUxggh&VK4mMvioYy z?svDder(iwzbMpG&vA#?vskq~5#8Enf*v}aTVQx%=Zwzl-dj|Q=fv(gEH$U{`1(}I zsF_^HmGzx-PFgm#OS7+guutTtz=L%q36mX!mG&5ZjJP4cCbM^vWV0#v(+IgMmtOG6 ze%N;8LdBPc6+S6*>f57UMEo}DT^ZYX)KAa9sBdG(z4O&7LbZLXPWw8PrW^0xbY-dL zd(mTGAM8+HobLXQ^ESgZmK&3Pt?Rm?Tf9fcReq8G3|IF3O%pd8?riN_{`3zw*Sn5` TYk3*Zfr8xA)z4*}Q$iB}*B-(n diff --git a/pandora_console/images/Header icons v1/Systems warning@2x.png b/pandora_console/images/Header icons v1/Systems warning@2x.png deleted file mode 100644 index 03e18ec79d0e79d247801bc0d38055f5879cc32d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcmV;H18Mw;P)1gh5T4mJLL!c^ArKJ~$&!mS zvBV=#(8MSbDDVo@P}1=Tk*E^E6WEDGL1^iaXq_fhmI%<`kSG+RE>Oo*{Q3#*myKroGKQcosMODr!nqP0<+ z9t$;OWgRU*`Ur)_hea$3cy<&fId zrbqNK^@uTolJArSV;|ZebLlYv;V#LQx%)8puu=NPwR?#0lEdbZ^Uq~?8fm@}@SHK; zYtWBI@+x)iJn((*A&|epIc%MUYFvQIoYxkm{BUl&;I>ad$4K~1q51-P@iRW{of*ad zfe($Td9}H(vP}*W)VO_WEBl~bJp`i7td?5~T`&RBh%d5&iTrG@a@=NUl35lz2EA7G z2meYdd8pxqd|ce31j&^Xt61vNSuG!lLlb)vlZMU;SlpDeT9PDhr<^2^m7hPL)@qY$ z!drfivs&ZGe?_HUX?=Ye>0tRTc!P$I-UbUah@ipX>m2MiodJcDQs{zOh0tYXT}Ao` zbg7$r)Z{&r+}C(+VBQ{>7SGmr0~D_HhVQnM9u8cLv~(l}dAGewAC?l!RbU*^URnjy z%FX^?tO1*|xEB$d#I|WyU_M^x)zW@LL diff --git a/pandora_console/images/svg/add.svg b/pandora_console/images/svg/add.svg deleted file mode 100644 index 3530cc8203..0000000000 --- a/pandora_console/images/svg/add.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/arrow.svg b/pandora_console/images/svg/arrow.svg deleted file mode 100644 index 7fb5d31ac4..0000000000 --- a/pandora_console/images/svg/arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/bell.svg b/pandora_console/images/svg/bell.svg deleted file mode 100644 index eec47bd762..0000000000 --- a/pandora_console/images/svg/bell.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/bubble.svg b/pandora_console/images/svg/bubble.svg deleted file mode 100644 index 08bf0727fb..0000000000 --- a/pandora_console/images/svg/bubble.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/device.svg b/pandora_console/images/svg/device.svg deleted file mode 100644 index 46ea97ad8c..0000000000 --- a/pandora_console/images/svg/device.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/display.svg b/pandora_console/images/svg/display.svg deleted file mode 100644 index 38e3a84fa4..0000000000 --- a/pandora_console/images/svg/display.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/down.svg b/pandora_console/images/svg/down.svg deleted file mode 100644 index b515cd5102..0000000000 --- a/pandora_console/images/svg/down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/dropdown-down.svg b/pandora_console/images/svg/dropdown-down.svg deleted file mode 100644 index 20da85c0d7..0000000000 --- a/pandora_console/images/svg/dropdown-down.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - Dark / 20 / dropdown-down - Created with Sketch. - - - - \ No newline at end of file diff --git a/pandora_console/images/svg/dropdown-up.svg b/pandora_console/images/svg/dropdown-up.svg deleted file mode 100644 index c8e9add524..0000000000 --- a/pandora_console/images/svg/dropdown-up.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - Dark / 20 / dropdown-up - Created with Sketch. - - - - \ No newline at end of file diff --git a/pandora_console/images/svg/duplicate.svg b/pandora_console/images/svg/duplicate.svg deleted file mode 100644 index 54b78c2aad..0000000000 --- a/pandora_console/images/svg/duplicate.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/envelope.svg b/pandora_console/images/svg/envelope.svg deleted file mode 100644 index b50e20e331..0000000000 --- a/pandora_console/images/svg/envelope.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/exit.svg b/pandora_console/images/svg/exit.svg deleted file mode 100644 index 16e0eae613..0000000000 --- a/pandora_console/images/svg/exit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/eye.svg b/pandora_console/images/svg/eye.svg deleted file mode 100644 index 5f9c897222..0000000000 --- a/pandora_console/images/svg/eye.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/fail.svg b/pandora_console/images/svg/fail.svg deleted file mode 100644 index f6a60f9276..0000000000 --- a/pandora_console/images/svg/fail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/file.svg b/pandora_console/images/svg/file.svg deleted file mode 100644 index 6ef321521c..0000000000 --- a/pandora_console/images/svg/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/house.svg b/pandora_console/images/svg/house.svg deleted file mode 100644 index 1361d98cdc..0000000000 --- a/pandora_console/images/svg/house.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/iconos-27.svg b/pandora_console/images/svg/iconos-27.svg deleted file mode 100644 index 9eb41e512d..0000000000 --- a/pandora_console/images/svg/iconos-27.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/info.svg b/pandora_console/images/svg/info.svg deleted file mode 100644 index a7b23d52d4..0000000000 --- a/pandora_console/images/svg/info.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/left.svg b/pandora_console/images/svg/left.svg deleted file mode 100644 index d74cf540b3..0000000000 --- a/pandora_console/images/svg/left.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/menu_horizontal.svg b/pandora_console/images/svg/menu_horizontal.svg deleted file mode 100644 index bcd2f124cb..0000000000 --- a/pandora_console/images/svg/menu_horizontal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/menu_vertical.svg b/pandora_console/images/svg/menu_vertical.svg deleted file mode 100644 index 1b5e468eb1..0000000000 --- a/pandora_console/images/svg/menu_vertical.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/ok.svg b/pandora_console/images/svg/ok.svg deleted file mode 100644 index af6c3850cd..0000000000 --- a/pandora_console/images/svg/ok.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/picture.svg b/pandora_console/images/svg/picture.svg deleted file mode 100644 index 978557a383..0000000000 --- a/pandora_console/images/svg/picture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/plus.svg b/pandora_console/images/svg/plus.svg deleted file mode 100644 index 18736fde28..0000000000 --- a/pandora_console/images/svg/plus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/protected.svg b/pandora_console/images/svg/protected.svg deleted file mode 100644 index 39f9c69aa1..0000000000 --- a/pandora_console/images/svg/protected.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/radial-disabled.svg b/pandora_console/images/svg/radial-disabled.svg deleted file mode 100644 index 1b38fe43c0..0000000000 --- a/pandora_console/images/svg/radial-disabled.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - Dark / 20 / radial-disable@svg - Created with Sketch. - - - - - - \ No newline at end of file diff --git a/pandora_console/images/svg/radial-off.svg b/pandora_console/images/svg/radial-off.svg deleted file mode 100644 index 68d23663ca..0000000000 --- a/pandora_console/images/svg/radial-off.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - Dark / 20 / radial-off@svg - Created with Sketch. - - - - - - \ No newline at end of file diff --git a/pandora_console/images/svg/radial-on.svg b/pandora_console/images/svg/radial-on.svg deleted file mode 100644 index 7e17258abb..0000000000 --- a/pandora_console/images/svg/radial-on.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Dark / 20 / radial-on@svg - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/pandora_console/images/svg/right.svg b/pandora_console/images/svg/right.svg deleted file mode 100644 index e74f4abeb8..0000000000 --- a/pandora_console/images/svg/right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/search.svg b/pandora_console/images/svg/search.svg deleted file mode 100644 index 14f8f5fd8e..0000000000 --- a/pandora_console/images/svg/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/settings.svg b/pandora_console/images/svg/settings.svg deleted file mode 100644 index 16858510e1..0000000000 --- a/pandora_console/images/svg/settings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/sound.svg b/pandora_console/images/svg/sound.svg deleted file mode 100644 index 1ff57a311f..0000000000 --- a/pandora_console/images/svg/sound.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/star.svg b/pandora_console/images/svg/star.svg deleted file mode 100644 index 1ba2f60041..0000000000 --- a/pandora_console/images/svg/star.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/success.svg b/pandora_console/images/svg/success.svg deleted file mode 100644 index 26e83ff1f7..0000000000 --- a/pandora_console/images/svg/success.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/trash.svg b/pandora_console/images/svg/trash.svg deleted file mode 100644 index 0dc58d9e0f..0000000000 --- a/pandora_console/images/svg/trash.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/up.svg b/pandora_console/images/svg/up.svg deleted file mode 100644 index 88fe9cb5be..0000000000 --- a/pandora_console/images/svg/up.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pandora_console/images/svg/user_a.svg b/pandora_console/images/svg/user_a.svg deleted file mode 100644 index 797b4e04a0..0000000000 --- a/pandora_console/images/svg/user_a.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 005fbd27c168972883092061f70af6c1e64a78e6 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Tue, 21 Feb 2023 11:20:17 +0100 Subject: [PATCH 14/14] Tree view meta fix --- .../javascript/tree/TreeControllerMeta.js | 1503 +++++++++++++++++ .../lib/Dashboard/Widgets/tree_view.php | 32 +- pandora_console/include/styles/tree_meta.css | 195 +++ pandora_console/operation/tree.php | 14 +- 4 files changed, 1735 insertions(+), 9 deletions(-) create mode 100644 pandora_console/include/javascript/tree/TreeControllerMeta.js create mode 100644 pandora_console/include/styles/tree_meta.css diff --git a/pandora_console/include/javascript/tree/TreeControllerMeta.js b/pandora_console/include/javascript/tree/TreeControllerMeta.js new file mode 100644 index 0000000000..ab56ab73f0 --- /dev/null +++ b/pandora_console/include/javascript/tree/TreeControllerMeta.js @@ -0,0 +1,1503 @@ +// Pandora FMS - http://pandorafms.com +// ================================================== +// Copyright (c) 2005-2021 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 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. + +/*global $, _*/ + +var TreeController = { + controllers: [], + getController: function() { + var controller = { + index: -1, + recipient: "", + tree: [], + emptyMessage: "No data found.", + foundMessage: "Groups found", + errorMessage: "Error", + baseURL: "", + ajaxURL: "ajax.php", + ajaxPage: "include/ajax/tree.ajax", + detailRecipient: "", + filter: {}, + counterTitles: {}, + shouldHaveCounters: true, + reload: function() { + // Bad recipient + if ( + typeof this.recipient == "undefined" || + this.recipient.length == 0 + ) { + return; + } + + function _recursiveGroupsCount(elements, childGroupsLength) { + if (typeof childGroupsLength === "undefined") { + childGroupsLength = 0; + } + + _.each(elements, function(element) { + if (typeof element.children !== "undefined") { + childGroupsLength = _recursiveGroupsCount( + element.children, + childGroupsLength + ); + childGroupsLength += element.children.length; + } + }); + return childGroupsLength; + } + + // Load branch + function _processGroup(container, elements, rootGroup) { + var $group = $("

    "); + var childGroupsLength = _recursiveGroupsCount(elements); + + // First group. + if (typeof rootGroup != "undefined" && rootGroup == true) { + var messageLength = controller.tree.length; + if (childGroupsLength > 0) { + messageLength = childGroupsLength + controller.tree.length; + } + + group_message = controller.foundMessage + ": " + messageLength; + if (controller.foundMessage == "") { + group_message = ""; + } + $group + .addClass("tree-root") + .hide() + .prepend( + '
    ' + + '' + + "" + + (controller.tree.length > 0 ? group_message : "") + + "
    " + ); + } else { + // Normal group. + $group.addClass("tree-group").hide(); + } + + container.append($group); + + _.each(elements, function(element) { + element.jqObject = _processNode($group, element); + }); + + return $group; + } + + // Load leaf counters + function _processNodeCounters(container, counters, type) { + var hasCounters = false; + + if (typeof counters != "undefined") { + function _processNodeCounterTitle( + container, + elementType, + counterType + ) { + var defaultCounterTitles = { + total: { + agents: "Total agents", + modules: "Total modules", + none: "Total" + }, + alerts: { + agents: "Alerts fired", + modules: "Alerts fired", + none: "Alerts fired" + }, + critical: { + agents: "Critical agents", + modules: "Critical modules", + none: "Critical" + }, + warning: { + agents: "Warning agents", + modules: "Warning modules", + none: "Warning" + }, + unknown: { + agents: "Unknown agents", + modules: "Unknown modules", + none: "Unknown" + }, + not_init: { + agents: "Not init agents", + modules: "Not init modules", + none: "Not init" + }, + ok: { + agents: "Normal agents", + modules: "Normal modules", + none: "Normal" + } + }; + + var serviceCounterTitles = { + total_services: { + totals: "Services" + }, + total_agents: { + totals: "Agents" + }, + total_modules: { + totals: "Modules" + } + }; + + var IPAMSupernetCounterTitles = { + total_networks: { + totals: "Networks" + } + }; + + var IPAMNetworkCounterTitles = { + alive_ips: { + totals: "Alive IPs" + }, + total_ips: { + totals: "Total IPs" + } + }; + + try { + var title = ""; + + switch (elementType) { + case "group": + if ( + typeof controller.counterTitles != "undefined" && + typeof controller.counterTitles[counterType] != + "undefined" && + typeof controller.counterTitles[counterType].agents != + "undefined" + ) { + title = controller.counterTitles[counterType].agents; + } else { + title = defaultCounterTitles[counterType].agents; + } + break; + case "agent": + if ( + typeof controller.counterTitles != "undefined" && + typeof controller.counterTitles[counterType] != + "undefined" && + typeof controller.counterTitles[counterType].modules != + "undefined" + ) { + title = controller.counterTitles[counterType].modules; + } else { + title = defaultCounterTitles[counterType].modules; + } + break; + case "services": + title = serviceCounterTitles[counterType].totals; + break; + case "IPAM_supernets": + title = IPAMSupernetCounterTitles[counterType].totals; + break; + case "IPAM_networks": + title = IPAMNetworkCounterTitles[counterType].totals; + break; + default: + if ( + typeof controller.counterTitles != "undefined" && + typeof controller.counterTitles[counterType] != + "undefined" && + typeof controller.counterTitles[counterType].none != + "undefined" + ) { + title = controller.counterTitles[counterType].none; + } else { + title = defaultCounterTitles[counterType].none; + } + break; + } + if (title.length > 0) { + container + .data("title", title) + .addClass("forced_title") + .data("use_title_for_force_title", 1); // Trick to make easier the 'force title' output + } + } catch (error) { + // console.log(error); + } + } + + if (type == "services") { + var $counters = $("
    "); + $counters.addClass("tree-node-counters"); + + if ( + counters.total_services + + counters.total_agents + + counters.total_modules > + 0 + ) { + // Open the parentheses + $counters.append(" ("); + + if ( + typeof counters.total_services != "undefined" && + counters.total_services >= 0 + ) { + var $servicesCounter = $("
    "); + $servicesCounter + .addClass("tree-node-counter") + .addClass("total") + .html(counters.total_services); + + _processNodeCounterTitle( + $servicesCounter, + type, + "total_services" + ); + + $counters.append($servicesCounter); + } else { + var $servicesCounter = $("
    "); + $servicesCounter + .addClass("tree-node-counter") + .addClass("total") + .html("0"); + + _processNodeCounterTitle( + $servicesCounter, + type, + "total_services" + ); + + $counters.append($servicesCounter); + } + + if ( + typeof counters.total_agents != "undefined" && + counters.total_agents > 0 + ) { + var $agentsCounter = $("
    "); + $agentsCounter + .addClass("tree-node-counter") + .html(counters.total_agents); + + _processNodeCounterTitle( + $agentsCounter, + type, + "total_agents" + ); + + $counters.append(" : ").append($agentsCounter); + } else { + var $agentsCounter = $("
    "); + $agentsCounter + .addClass("tree-node-counter") + .addClass("total") + .html("0"); + + _processNodeCounterTitle( + $agentsCounter, + type, + "total_agents" + ); + + $counters.append(" : ").append($agentsCounter); + } + + if ( + typeof counters.total_modules != "undefined" && + counters.total_modules > 0 + ) { + var $modulesCounter = $("
    "); + $modulesCounter + .addClass("tree-node-counter") + .addClass("total") + .html(counters.total_modules); + + _processNodeCounterTitle( + $modulesCounter, + type, + "total_modules" + ); + + $counters.append(" : ").append($modulesCounter); + } else { + var $modulesCounter = $("
    "); + $modulesCounter + .addClass("tree-node-counter") + .addClass("total") + .html("0"); + + _processNodeCounterTitle( + $modulesCounter, + type, + "total_modules" + ); + + $counters.append(" : ").append($modulesCounter); + } + + // Close the parentheses + $counters.append(")"); + + hasCounters = true; + } + } else if (type == "IPAM_supernets") { + var $counters = $("
    "); + $counters.addClass("tree-node-counters"); + + if (counters.total_networks > 0) { + // Open the parentheses + $counters.append(" ("); + + if ( + typeof counters.total_networks !== "undefined" && + counters.total_networks >= 0 + ) { + var $networksCounter = $("
    "); + $networksCounter + .addClass("tree-node-counter") + .addClass("total") + .html(counters.total_networks); + + _processNodeCounterTitle( + $networksCounter, + type, + "total_networks" + ); + + $counters.append($networksCounter); + } else { + var $networksCounter = $("
    "); + $networksCounter + .addClass("tree-node-counter") + .addClass("total") + .html("0"); + + _processNodeCounterTitle( + $networksCounter, + type, + "total_networks" + ); + + $counters.append($networksCounter); + } + + // Close the parentheses + $counters.append(")"); + + hasCounters = true; + } + } else if (type == "IPAM_networks") { + var $counters = $("
    "); + $counters.addClass("tree-node-counters"); + + // Open the parentheses + $counters.append(" ("); + + if ( + typeof counters.alive_ips !== "undefined" && + counters.alive_ips >= 0 + ) { + var $aliveCounter = $("
    "); + $aliveCounter + .addClass("tree-node-counter") + .addClass("total") + .html(counters.alive_ips); + + _processNodeCounterTitle($aliveCounter, type, "alive_ips"); + + $counters.append($aliveCounter); + } else { + var $aliveCounter = $("
    "); + $aliveCounter + .addClass("tree-node-counter") + .addClass("total") + .html("0"); + + _processNodeCounterTitle($aliveCounter, type, "alive_ips"); + + $counters.append($aliveCounter); + } + + if ( + typeof counters.total_ips !== "undefined" && + counters.total_ips >= 0 + ) { + var $totalCounter = $("
    "); + $totalCounter + .addClass("tree-node-counter") + .addClass("total") + .html(counters.total_ips); + + _processNodeCounterTitle($totalCounter, type, "total_ips"); + + $counters.append(" : ").append($totalCounter); + } else { + var $totalCounter = $("
    "); + $totalCounter + .addClass("tree-node-counter") + .addClass("total") + .html("0"); + + _processNodeCounterTitle($totalCounter, type, "total_ips"); + + $counters.append(" : ").append($totalCounter); + } + + // Close the parentheses + $counters.append(")"); + + hasCounters = true; + } else { + var $counters = $("
    "); + $counters.addClass("tree-node-counters"); + + if (typeof counters.total != "undefined" && counters.total >= 0) { + var $totalCounter = $("
    "); + $totalCounter + .addClass("tree-node-counter") + .addClass("total") + .html(counters.total); + + _processNodeCounterTitle($totalCounter, type, "total"); + + // Open the parentheses + $counters.append("      [ "); + + $counters.append($totalCounter); + + if ( + typeof counters.alerts != "undefined" && + counters.alerts > 0 + ) { + var $firedCounter = $("
    "); + $firedCounter + .addClass("tree-node-counter") + .addClass("alerts") + .addClass("orange") + .html(counters.alerts); + + _processNodeCounterTitle($firedCounter, type, "alerts"); + + $counters.append(" : ").append($firedCounter); + } + if ( + typeof counters.critical != "undefined" && + counters.critical > 0 + ) { + var $criticalCounter = $("
    "); + $criticalCounter + .addClass("tree-node-counter") + .addClass("critical") + .addClass("red") + .html(counters.critical); + + _processNodeCounterTitle($criticalCounter, type, "critical"); + + $counters.append(" : ").append($criticalCounter); + } + if ( + typeof counters.warning != "undefined" && + counters.warning > 0 + ) { + var $warningCounter = $("
    "); + $warningCounter + .addClass("tree-node-counter") + .addClass("warning") + .addClass("yellow") + .html(counters.warning); + + _processNodeCounterTitle($warningCounter, type, "warning"); + + $counters.append(" : ").append($warningCounter); + } + if ( + typeof counters.unknown != "undefined" && + counters.unknown > 0 + ) { + var $unknownCounter = $("
    "); + $unknownCounter + .addClass("tree-node-counter") + .addClass("unknown") + .addClass("grey") + .html(counters.unknown); + + _processNodeCounterTitle($unknownCounter, type, "unknown"); + + $counters.append(" : ").append($unknownCounter); + } + if ( + typeof counters.not_init != "undefined" && + counters.not_init > 0 + ) { + var $notInitCounter = $("
    "); + $notInitCounter + .addClass("tree-node-counter") + .addClass("not_init") + .addClass("blue") + .html(counters.not_init); + + _processNodeCounterTitle($notInitCounter, type, "not_init"); + + $counters.append(" : ").append($notInitCounter); + } + if (typeof counters.ok != "undefined" && counters.ok > 0) { + var $okCounter = $("
    "); + $okCounter + .addClass("tree-node-counter") + .addClass("ok") + .addClass("green") + .html(counters.ok); + + _processNodeCounterTitle($okCounter, type, "ok"); + + $counters.append(" : ").append($okCounter); + } + } + + // Close the parentheses + $counters.append(" ]"); + + hasCounters = true; + } + + // Add the counters html to the container + container.append($counters); + } + + return hasCounters; + } + + // Load leaf + function _processNode(container, element) { + // type, [id], [serverID], callback + function _getTreeDetailData(type, id, serverID, callback) { + var lastParam = arguments[arguments.length - 1]; + var callback; + if (typeof lastParam === "function") callback = lastParam; + + var serverID; + if (arguments.length >= 4) serverID = arguments[2]; + var id; + if (arguments.length >= 3) id = arguments[1]; + var type; + if (arguments.length >= 2) type = arguments[0]; + + if (typeof type === "undefined") + throw new TypeError("Type required"); + if (typeof callback === "undefined") + throw new TypeError("Callback required"); + + var postData = { + page: controller.ajaxPage, + getDetail: 1, + type: type, + auth_class: controller.auth_class, + id_user: controller.id_user, + auth_hash: controller.auth_hash + }; + + if (typeof id !== "undefined") postData.id = id; + if (typeof serverID !== "undefined") postData.serverID = serverID; + + $.ajax({ + url: controller.ajaxURL, + type: "POST", + dataType: "html", + data: postData, + success: function(data, textStatus, xhr) { + callback(null, data); + }, + error: function(xhr, textStatus, errorThrown) { + callback(errorThrown); + } + }); + } + + var $node = $("
  • "); + var $leafIcon = $("
    "); + var $content = $("
    "); + + // Leaf icon + $leafIcon.addClass("leaf-icon invert_filter"); + + // Content + $content.addClass("node-content"); + var disabled = false; + if (element.disabled == true) { + disabled = true; + $content.addClass("disabled"); + } + switch (element.type) { + case "group": + if ( + typeof element.icon != "undefined" && + element.icon.length > 0 + ) { + $content.append( + ' ' + ); + } else if ( + typeof element.iconHTML != "undefined" && + element.iconHTML.length > 0 + ) { + $content.append(element.iconHTML + " "); + } + $content.append(element.name); + + if (typeof element.edit != "undefined") { + var url_edit = + controller.baseURL + + "index.php?sec=gagente&sec2=godmode/groups/configure_group&tab=tree&id_group=" + + element.id; + var $updateicon = $( + '' + ); + var $updatebtn = $('
    ').append( + $updateicon + ); + $content.append($updatebtn); + } + + if (typeof element.delete != "undefined") { + var url_delete = + controller.baseURL + + "index.php?sec=gagente&sec2=godmode/groups/group_list&tab=tree&delete_group=1&id_group=" + + element.id; + var $deleteBtn = $( + '' + ); + $deleteBtn.click(function(event) { + var ok_function = function() { + window.location.replace(url_delete); + }; + display_confirm_dialog( + element.delete.messages.messg, + element.delete.messages.confirm, + element.delete.messages.cancel, + ok_function + ); + }); + $content.append($deleteBtn); + } + + if (typeof element.alerts != "undefined") { + $content.append(element.alerts); + } + + break; + case "agent": + // Is quiet + + if ( + typeof element.quietImageHTML != "undefined" && + element.quietImageHTML.length > 0 + ) { + var $quietImage = $(element.quietImageHTML); + $quietImage.addClass("agent-quiet"); + + $content.append($quietImage); + } + // Status image + if ( + typeof element.statusImageHTML != "undefined" && + element.statusImageHTML.length > 0 + ) { + var $statusImage = $(element.statusImageHTML); + $statusImage.addClass("agent-status"); + + $content.append($statusImage); + } + + // Events by agent + if (element.showEventsBtn == 1) { + if (typeof element.eventAgent != "undefined") { + $content.append( + '' + ); + var $eventImage = $( + ' ' + ); + $eventImage.addClass("agent-alerts-fired"); + $eventImage + .click(function(e) { + e.preventDefault(); + + document + .getElementById( + "hiddenAgentsEventsForm-" + element.eventAgent + ) + .submit(); + }) + .css("cursor", "pointer"); + + $content.append($eventImage); + } + } + + $content.append(" " + element.alias); + break; + case "IPAM_supernets": + var IPAMSupernetDetailImage = $( + ' ' + ); + + if (typeof element.id !== "undefined") { + IPAMSupernetDetailImage.click(function(e) { + e.preventDefault(); + + var postData = { + page: "enterprise/include/ajax/ipam.ajax", + show_networkmap_statistics: 1, + "node_data[id_net]": element.id, + "node_data[type_net]": "supernet" + }; + + $.ajax({ + url: controller.ajaxURL, + type: "POST", + dataType: "html", + data: postData, + success: function(data, textStatus, xhr) { + controller.detailRecipient + .render("IPAMsupernets", data) + .open(); + } + }); + }).css("cursor", "pointer"); + + $content.append(IPAMSupernetDetailImage); + } + + if (element.name !== null) { + $content.append("   " + element.name); + } + + break; + case "IPAM_networks": + $content.addClass("ipam-network"); + + var IPAMNetworkDetailImage = $( + ' ' + ); + + if (typeof element.id !== "undefined") { + IPAMNetworkDetailImage.click(function(e) { + e.preventDefault(); + + //window.location.href = element.IPAMNetworkDetail; + var postData = { + page: "enterprise/include/ajax/ipam.ajax", + show_networkmap_statistics: 1, + "node_data[id_net]": element.id, + "node_data[type_net]": "network" + }; + + $.ajax({ + url: controller.ajaxURL, + type: "POST", + dataType: "html", + data: postData, + success: function(data, textStatus, xhr) { + controller.detailRecipient + .render("IPAMnetwork", data) + .open(); + } + }); + }).css("cursor", "pointer"); + + $content.append(IPAMNetworkDetailImage); + } + + if (element.name !== null) { + $content.append("   " + element.name); + } + + break; + case "services": + if ( + typeof element.statusImageHTML != "undefined" && + element.statusImageHTML.length > 0 + ) { + var $statusImage = $(element.statusImageHTML); + $statusImage.addClass("agent-status"); + + $content.append($statusImage); + } + var image_tooltip = + '' +
+                element.name +
+                ' '; + + var $serviceDetailImage = $( + ' ' + ); + + if ( + typeof element.serviceDetail != "undefined" && + element.name != null + ) { + $serviceDetailImage + .click(function(e) { + e.preventDefault(); + + window.location.href = element.serviceDetail; + }) + .css("cursor", "pointer"); + $content.append($serviceDetailImage); + $content.append(" " + image_tooltip); + + if ( + typeof element.elementDescription !== "undefined" && + element.elementDescription != "" + ) { + $content.append(" " + element.elementDescription); + } else if ( + typeof element.description !== "undefined" && + element.description != "" + ) { + $content.append(" " + element.description); + } else { + $content.append(" " + element.name); + } + } else { + $content.remove($node); + } + + break; + case "modules": + if ( + typeof element.statusImageHTML != "undefined" && + element.statusImageHTML.length > 0 + ) { + var $statusImage = $(element.statusImageHTML); + $statusImage.addClass("agent-status"); + + $content.append($statusImage); + } + + // Events by module + if (element.showEventsBtn == 1) { + if (typeof element.eventModule != "undefined") { + $content.append( + '' + ); + var $moduleImage = $( + ' ' + ); + $moduleImage + .click(function(e) { + e.preventDefault(); + + document + .getElementById( + "hiddenModulesEventsForm-" + element.eventModule + ) + .submit(); + }) + .css("cursor", "pointer"); + + $content.append($moduleImage); + } + } + + $content.append(" " + element.name); + break; + case "module": + $content.addClass("module"); + + // Status image + if ( + typeof element.statusImageHTML != "undefined" && + element.statusImageHTML.length > 0 + ) { + var $statusImage = $(element.statusImageHTML); + $statusImage.addClass("module-status"); + + $content.append($statusImage); + } + + element.name = htmlDecode(element.name); + // Name max 42 chars. + $content.append( + '' + + element.name.substring(0, 42) + + (element.name.length > 42 ? "..." : "") + + "" + ); + + // Avoiding 'undefined' text. + if (typeof element.value === "undefined") { + element.value = ""; + } + + // Value. + $content.append( + '' + element.value + "" + ); + + if ( + typeof element.showGraphs != "undefined" && + element.showGraphs != 0 + ) { + // Graph histogram pop-up + if (typeof element.histogramGraph != "undefined") { + var graphImageHistogram = $( + ' ' + ); + + graphImageHistogram + .addClass("module-graph") + .click(function(e) { + e.stopPropagation(); + try { + winopeng_var( + element.histogramGraph.url, + element.histogramGraph.handle, + 800, + 480 + ); + } catch (error) { + // console.log(error); + } + }); + + $content.append(graphImageHistogram); + } + + // Graph pop-up + if (typeof element.moduleGraph != "undefined") { + if (element.statusImageHTML.indexOf("data:image") != -1) { + var $graphImage = $( + ' ' + ); + } else { + var $graphImage = $( + ' ' + ); + } + + $graphImage.addClass("module-graph").click(function(e) { + e.stopPropagation(); + if (element.statusImageHTML.indexOf("data:image") != -1) { + try { + winopeng_var( + decodeURI(element.snapshot[0]), + element.snapshot[1], + element.snapshot[2], + element.snapshot[3] + ); + } catch (error) { + // console.log(error); + } + } else { + try { + winopeng_var( + element.moduleGraph.url, + element.moduleGraph.handle, + 800, + 480 + ); + } catch (error) { + // console.log(error); + } + } + }); + + $content.append($graphImage); + } + + // Data pop-up + if (typeof element.id != "undefined" && !isNaN(element.id)) { + if (isNaN(element.metaID)) { + var $dataImage = $( + ' ' + ); + $dataImage.addClass("module-data").click(function(e) { + e.stopPropagation(); + + try { + var serverName = + element.serverName.length > 0 + ? element.serverName + : ""; + if ($("#module_details_window").length > 0) + show_module_detail_dialog( + element.id, + "", + serverName, + 0, + 86400, + element.name.replace(/ /g, " ") + ); + } catch (error) { + // console.log(error); + } + }); + + $content.append($dataImage); + } + } + } + + // Alerts + if ( + typeof element.alertsImageHTML != "undefined" && + element.alertsImageHTML.length > 0 + ) { + var $alertsImage = $(element.alertsImageHTML); + + $alertsImage + .addClass("module-alerts") + .click(function(e) { + _getTreeDetailData( + "alert", + element.id, + element.serverID, + function(error, data) { + if (error) { + // console.error(error); + } else { + controller.detailRecipient + .render(element.name, data) + .open(); + } + } + ); + + // Avoid the execution of the module detail event + e.stopPropagation(); + }) + .css("cursor", "pointer"); + + $content.append($alertsImage); + } + + break; + case "os": + if ( + typeof element.icon != "undefined" && + element.icon.length > 0 + ) { + $content.append( + ' ' + ); + } + $content.append(element.name); + break; + case "tag": + if ( + typeof element.icon != "undefined" && + element.icon.length > 0 + ) { + $content.append( + ' ' + ); + } else { + $content.append( + ' ' + ); + } + $content.append(element.name); + break; + case "services": + // Status image + if ( + typeof element.statusImageHTML != "undefined" && + element.statusImageHTML.length > 0 + ) { + var $statusImage = $(element.statusImageHTML); + $statusImage.addClass("agent-status"); + + $content.append($statusImage); + } + $content.append(element.name); + break; + default: + $content.append(element.name); + break; + } + + // Load the status counters + var hasCounters = _processNodeCounters( + $content, + element.counters, + element.type + ); + //Don't show empty groups + if (element.type == "agent") { + if (!hasCounters) { + return; + } + } + // If detail container exists, show the data. + if ( + typeof controller.detailRecipient !== "undefined" || + disabled == false + ) { + if (element.type == "agent" || element.type == "module") { + if (typeof element.noAcl === "undefined") { + $content + .click(function(e) { + _getTreeDetailData( + element.type, + element.id, + element.serverID, + function(error, data) { + if (error) { + // console.error(error); + } else { + controller.detailRecipient + .render(element.name, data) + .open(); + } + } + ); + }) + .css("cursor", "pointer"); + } + } + } + + $node + .addClass("tree-node") + .append($leafIcon) + .append($content); + + container.append($node); + + $node.addClass("leaf-empty"); + + if ( + (typeof element.children != "undefined" && + element.children.length > 0) || + element.disabled == false + ) { + // Add children + var $children = _processGroup($node, element.children); + $node.data("children", $children); + + if ( + typeof element.searchChildren == "undefined" || + !element.searchChildren + ) { + $leafIcon.click(function(e) { + e.preventDefault(); + + if ($node.hasClass("leaf-open")) { + $node + .removeClass("leaf-open") + .addClass("leaf-closed") + .data("children") + .slideUp(); + } else { + $node + .removeClass("leaf-closed") + .addClass("leaf-open") + .data("children") + .slideDown(); + } + }); + } + } + + if ( + typeof element.searchChildren != "undefined" && + element.searchChildren + ) { + if ( + element.rootType == "group_edition" && + typeof element.children == "undefined" + ) { + $node.addClass("leaf-empty"); + } else { + $node.removeClass("leaf-empty").addClass("leaf-closed"); + $leafIcon.click(function(e) { + e.preventDefault(); + + if ( + !$node.hasClass("leaf-loading") && + !$node.hasClass("children-loaded") && + !$node.hasClass("leaf-empty") + ) { + $node + .removeClass("leaf-closed") + .removeClass("leaf-error") + .addClass("leaf-loading"); + + $.ajax({ + url: controller.ajaxURL, + type: "POST", + dataType: "json", + data: { + page: controller.ajaxPage, + getChildren: 1, + id: element.id, + type: element.type, + rootID: element.rootID, + serverID: element.serverID, + rootType: element.rootType, + metaID: element.metaID, + title: element.title, + filter: controller.filter, + auth_class: controller.auth_class, + id_user: controller.id_user, + auth_hash: controller.auth_hash + }, + complete: function(xhr, textStatus) { + $node.removeClass("leaf-loading"); + $node.addClass("children-loaded"); + }, + success: function(data, textStatus, xhr) { + if (data.success) { + var $group = $node.children("ul.tree-group"); + if ( + (typeof data.tree != "undefined" && + data.tree.length > 0) || + $group.length > 0 + ) { + $node.addClass("leaf-open"); + + if ($group.length <= 0) { + $group = $("
      "); + $group.addClass("tree-group").hide(); + $node.append($group); + } + + // Get the main values of the tree. + var rawTree = Object.values(data.tree); + // Sorting tree by description (services.treeview_services.php). + rawTree.sort(function(a, b) { + // Only the services are ordered since only they have the elementDescription property. + if (a.elementDescription && b.elementDescription) { + var x = a.elementDescription.toLowerCase(); + var y = b.elementDescription.toLowerCase(); + if (x < y) { + return -1; + } + if (x > y) { + return 1; + } + } + return 0; + }); + + _.each(rawTree, function(element) { + element.jqObject = _processNode($group, element); + }); + + $group.slideDown(); + + $node.data("children", $group); + + // Add again the hover event to the 'force_callback' elements + forced_title_callback(); + } else { + $node.addClass("leaf-empty"); + } + } else { + $node.addClass("leaf-error"); + } + }, + error: function(xhr, textStatus, errorThrown) { + $node.addClass("leaf-error"); + } + }); + } else if (!$node.hasClass("leaf-empty")) { + if ($node.hasClass("leaf-open")) { + $node + .removeClass("leaf-open") + .addClass("leaf-closed") + .data("children") + .slideUp(); + } else { + $node + .removeClass("leaf-closed") + .addClass("leaf-open") + .data("children") + .slideDown(); + } + } + }); + } + } + + return $node; + } + + if (controller.recipient.length == 0) { + return; + } else if (controller.tree.length == 0) { + controller.recipient.empty(); + controller.recipient.html( + "
      " + controller.emptyMessage + "
      " + ); + return; + } + + controller.recipient.empty(); + var $children = _processGroup(this.recipient, this.tree, true); + $children.show(); + + controller.recipient.data("children", $children); + + // Add again the hover event to the 'force_callback' elements + forced_title_callback(); + }, + load: function() { + this.reload(); + }, + changeTree: function(tree) { + this.tree = tree; + this.reload(); + }, + init: function(data) { + if ( + typeof data.recipient !== "undefined" && + data.recipient.length > 0 + ) { + this.recipient = data.recipient; + } + if (typeof data.detailRecipient !== "undefined") { + this.detailRecipient = data.detailRecipient; + } + if (typeof data.tree !== "undefined") { + this.tree = data.tree; + } + if ( + typeof data.emptyMessage !== "undefined" && + data.emptyMessage.length > 0 + ) { + this.emptyMessage = data.emptyMessage; + } + if ( + typeof data.foundMessage !== "undefined" && + data.foundMessage.length > 0 + ) { + this.foundMessage = data.foundMessage; + } + if ( + typeof data.errorMessage !== "undefined" && + data.errorMessage.length > 0 + ) { + this.errorMessage = data.errorMessage; + } + if (typeof data.baseURL !== "undefined" && data.baseURL.length > 0) { + this.baseURL = data.baseURL; + } + if (typeof data.ajaxURL !== "undefined" && data.ajaxURL.length > 0) { + this.ajaxURL = data.ajaxURL; + } + if (typeof data.ajaxPage !== "undefined" && data.ajaxPage.length > 0) { + this.ajaxPage = data.ajaxPage; + } + if (typeof data.filter !== "undefined") { + this.filter = data.filter; + } + + if (typeof data.auth_class !== "undefined") { + this.auth_class = data.auth_class; + } + if (typeof data.id_user !== "undefined") { + this.id_user = data.id_user; + } + if (typeof data.auth_hash !== "undefined") { + this.auth_hash = data.auth_hash; + } + if ( + typeof data.tree !== "undefined" && + Array.isArray(data.tree) && + data.tree.length > 0 && + data.tree[0]["rootType"] == "services" + ) { + this.foundMessage = ""; + } + this.load(); + }, + remove: function() { + if (typeof this.recipient != "undefined" && this.recipient.length > 0) { + this.recipient.empty(); + } + + if (this.index > -1) { + TreeController.controllers.splice(this.index, 1); + } + } + }; + controller.index = TreeController.controllers.push(controller) - 1; + + return controller; + } +}; diff --git a/pandora_console/include/lib/Dashboard/Widgets/tree_view.php b/pandora_console/include/lib/Dashboard/Widgets/tree_view.php index bdb30b16ce..373e70c1f6 100644 --- a/pandora_console/include/lib/Dashboard/Widgets/tree_view.php +++ b/pandora_console/include/lib/Dashboard/Widgets/tree_view.php @@ -134,7 +134,12 @@ class TreeViewWidget extends Widget ) { global $config; - ui_require_css_file('tree'); + if (is_metaconsole() === true) { + ui_require_css_file('tree_meta'); + } else { + ui_require_css_file('tree'); + } + ui_require_css_file('fixed-bottom-box'); // WARNING: Do not edit. This chunk must be in the constructor. @@ -544,7 +549,12 @@ class TreeViewWidget extends Widget $height = $size['height']; // Css Files. - \ui_require_css_file('tree', 'include/styles/', true); + if (is_metaconsole() === true) { + \ui_require_css_file('tree_meta', 'include/styles/', true); + } else { + \ui_require_css_file('tree', 'include/styles/', true); + } + if ($config['style'] == 'pandora_black' && !is_metaconsole()) { \ui_require_css_file('pandora_black', 'include/styles/', true); } @@ -556,11 +566,19 @@ class TreeViewWidget extends Widget 'include/javascript/i18n/' ); - \ui_require_javascript_file( - 'TreeController', - 'include/javascript/tree/', - true - ); + if (is_metaconsole() === true) { + \ui_require_javascript_file( + 'TreeControllerMeta', + 'include/javascript/tree/', + true + ); + } else { + \ui_require_javascript_file( + 'TreeController', + 'include/javascript/tree/', + true + ); + } \ui_require_javascript_file( 'fixed-bottom-box', diff --git a/pandora_console/include/styles/tree_meta.css b/pandora_console/include/styles/tree_meta.css new file mode 100644 index 0000000000..08b1d635ed --- /dev/null +++ b/pandora_console/include/styles/tree_meta.css @@ -0,0 +1,195 @@ +.tree-root { + margin-top: 0px; + margin-bottom: 0px; +} + +.tree-group { + margin-left: 24px; + padding-top: 1px; +} + +.tree-node { + white-space: nowrap; + + background-image: url(../../images/tree/branch.png); + background-position: 0px 0px; + background-repeat: repeat-y; + + min-height: 26px; +} + +div.tree-node { + background: 0 0; +} + +div.tree-node span { + font-size: 1.2em; +} + +.tree-node:last-child { + background: 0 0; +} +.node-content { + height: 26px; + font-size: 1.2em; + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; +} + +.node-content > img { + position: relative; + top: -2px; +} + +.node-content:hover { + background-color: #fff; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.leaf-icon { + width: 18px; + height: 20px; +} + +.node-content, +.leaf-icon { + display: inline-block; +} + +.node-content > img, +.node-content > div { + display: inline; +} + +.tree-node.leaf-open > .leaf-icon { + background-image: url(../../images/tree/last_expanded.png); + cursor: pointer; +} + +.tree-node.tree-first.leaf-open > .leaf-icon { + background-image: url(../../images/tree/first_expanded.png); + cursor: pointer; +} + +.tree-node.leaf-closed > .leaf-icon { + background-image: url(../../images/tree/last_closed.png); + cursor: pointer; +} + +.tree-node.tree-first.leaf-closed > .leaf-icon { + background-image: url(../../images/tree/first_closed.png); + cursor: pointer; +} + +.tree-node.leaf-loading > .leaf-icon { + background-image: url(../../images/tree/last_expanded.png); +} + +.tree-node.leaf-empty > .leaf-icon { + background-image: url(../../images/tree/last_leaf.png); +} + +.tree-node.tree-first.leaf-empty > .leaf-icon { + background-image: url(../../images/tree/first_leaf.png); +} + +.tree-node.leaf-error > .leaf-icon { + background-image: url(../../images/tree/last_leaf.png); +} + +.tree-node > .leaf-icon { + background-position: 0px 0px; + background-repeat: no-repeat; +} + +.tree-node > .node-content > img { + max-height: 20px; + /*max-width: 20px;*/ +} + +.tree-node > .node-content > img.module-data, +.tree-node > .node-content > img.module-graph { + cursor: pointer; + padding-right: 3px; +} + +.tree-node > .node-content > .agent-status.status_balls, +.tree-node > .node-content > .status_small_balls { + width: 0.6em; + height: 1.5em; + margin-bottom: -0.4em; + border-radius: 0; +} +.tree-node > .node-content > .module-status.status_small_balls { + width: 0.4em; +} + +.tree-node > .node-content > .module-name { + margin: 0 0 0 1em; + width: 250px; + display: inline-block; +} + +.tree-node > .node-content > .module-value { + width: 120px; + display: inline-block; + text-align: right; + margin: 0 1em; +} + +.tree-node > .node-content > img.module-server-type, +.tree-node > .node-content > img.agent-status, +.tree-node > .node-content > img.agent-alerts-fired, +.tree-node > .node-content > img.agent-quiet, +.tree-node > .node-content > img.module-status, +.tree-node > .node-content > img.module-alerts { + padding-right: 3px; +} + +.tree-node > .node-content > .tree-node-counters, +.tree-node > .node-content > .tree-node-counters > .tree-node-counter { + display: inline; +} + +.tree-node > .node-content > .tree-node-counters { + font-size: 1.2em; +} + +.tree-node > .node-content > img { + vertical-align: middle; +} + +.tree-node > .node-content > .tree-node-counters > .tree-node-counter { + font-weight: bold; + font-size: 0.9em; + cursor: default; +} + +div#tree-controller-recipient { + text-align: left; + width: 98%; + margin-top: 10px; +} + +.tree-controller-recipient { + text-align: left; + width: 98%; + margin-top: 10px; +} + +.tree-node > .node-content > div + div:not(.tree-node-counters) { + margin-left: 3px; +} + +.tree-node .disabled { + filter: opacity(0.3); +} + +.ipam-network { + font-size: 9pt; +} diff --git a/pandora_console/operation/tree.php b/pandora_console/operation/tree.php index 29d4c95b78..a662da4d99 100755 --- a/pandora_console/operation/tree.php +++ b/pandora_console/operation/tree.php @@ -27,7 +27,12 @@ */ // Begin. -ui_require_css_file('tree'); +if (is_metaconsole() === true) { + ui_require_css_file('tree_meta'); +} else { + ui_require_css_file('tree'); +} + ui_require_css_file('fixed-bottom-box'); global $config; @@ -309,7 +314,12 @@ html_print_input_hidden('tag-id', $tag_id); ui_include_time_picker(); ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript/i18n/'); -ui_require_javascript_file('TreeController', 'include/javascript/tree/'); +if (is_metaconsole() === true) { + ui_require_javascript_file('TreeControllerMeta', 'include/javascript/tree/'); +} else { + ui_require_javascript_file('TreeController', 'include/javascript/tree/'); +} + ui_print_spinner(__('Loading')); /* html_print_image(