From 2fd52eff484753415dfe2f0ae637ee9d5e5e50b6 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez <jose.gonzalez@pandorafms.com> Date: Tue, 21 Feb 2023 14:14:13 +0100 Subject: [PATCH] Sprint 2025Feb Improve UI-UX and Resources views --- pandora_console/extensions/insert_data.php | 134 +++++++++------ .../extensions/resource_registration.php | 160 ++++++++++-------- .../godmode/agentes/configure_field.php | 126 +++++++++----- .../godmode/agentes/fields_manager.php | 140 ++++++++++----- .../godmode/agentes/modificar_agente.php | 3 +- .../godmode/agentes/module_manager.php | 2 +- pandora_console/godmode/category/category.php | 157 ++++++++++------- .../godmode/category/edit_category.php | 151 ++++++++--------- .../godmode/groups/configure_modu_group.php | 62 +++++-- .../godmode/groups/modu_group_list.php | 49 +++--- .../godmode/modules/manage_nc_groups.php | 141 ++++++++++----- .../godmode/modules/manage_nc_groups_form.php | 103 ++++++----- .../godmode/modules/module_list.php | 111 +++++++----- pandora_console/godmode/setup/os.list.php | 26 ++- pandora_console/include/styles/pandora.css | 46 +++-- pandora_console/include/styles/tables.css | 25 +-- 16 files changed, 886 insertions(+), 550 deletions(-) diff --git a/pandora_console/extensions/insert_data.php b/pandora_console/extensions/insert_data.php index 034f97997b..6fa0672f84 100644 --- a/pandora_console/extensions/insert_data.php +++ b/pandora_console/extensions/insert_data.php @@ -1,16 +1,32 @@ <?php +/** + * Insert Data form. + * + * @category Extension. + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * 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 + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// 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 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. +// Load global vars. global $config; require_once $config['homedir'].'/include/functions_agents.php'; @@ -55,7 +71,24 @@ function mainInsertData() { global $config; - ui_print_page_header(__('Insert data'), 'images/extensions.png', false, '', true, ''); + ui_print_standard_header( + __('Insert Data'), + 'images/extensions.png', + false, + '', + true, + [], + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Insert Data'), + ], + ] + ); if (! check_acl($config['id_user'], 0, 'AW') && ! is_user_admin($config['id_user'])) { db_pandora_audit( @@ -84,6 +117,13 @@ function mainInsertData() $csv = false; } + ui_print_warning_message( + sprintf( + __('Please check that the directory "%s" is writeable by the apache user. <br /><br />The CSV file format is date;value<newline>date;value<newline>... The date in CSV is in format Y/m/d H:i:s.'), + $config['remote_config'] + ) + ); + if ($save) { if (!check_acl($config['id_user'], agents_get_agent_group($agent_id), 'AW')) { ui_print_error_message(__('You haven\'t privileges for insert data in the agent.')); @@ -140,27 +180,25 @@ function mainInsertData() } } - echo '<div class="notify mrg_btt_15">'; - echo sprintf( - __('Please check that the directory "%s" is writeable by the apache user. <br /><br />The CSV file format is date;value<newline>date;value<newline>... The date in CSV is in format Y/m/d H:i:s.'), - $config['remote_config'] - ); - echo '</div>'; + $modules = []; + if ($agent_id > 0) { + $modules = agents_get_modules($agent_id, false, ['delete_pending' => 0]); + } $table = new stdClass(); - $table->width = '100%'; - $table->class = 'databox filters'; + $table->class = 'databox m2020'; $table->style = []; - $table->style[0] = 'font-weight: bolder;'; - + $table->cellstyle[0][0] = 'width: 0'; + $table->cellstyle[0][1] = 'width: 0'; $table->data = []; - $table->data[0][0] = __('Agent'); + $table->data[0][1] = __('Module'); + $table->data[0][2] = __('Date'); $params = []; $params['return'] = true; $params['show_helptip'] = true; $params['input_name'] = 'agent_name'; - $params['value'] = $agent_name; + $params['value'] = ($save === true) ? '' : $agent_name; $params['javascript_is_function_select'] = true; $params['javascript_name_function_select'] = 'custom_select_function'; $params['javascript_code_function_select'] = ''; @@ -170,18 +208,12 @@ function mainInsertData() $params['hidden_input_idagent_name'] = 'agent_id'; $params['hidden_input_idagent_value'] = $agent_id; - $table->data[0][1] = ui_print_agent_autocomplete_input($params); - - $table->data[1][0] = __('Module'); - $modules = []; - if ($agent_id) { - $modules = agents_get_modules($agent_id, false, ['delete_pending' => 0]); - } + $table->data[1][0] = html_print_div(['class' => 'flex flex-items-center', 'content' => ui_print_agent_autocomplete_input($params)], true); $table->data[1][1] = html_print_select( $modules, 'id_agent_module', - $id_agent_module, + ($save === true) ? '' : $id_agent_module, true, __('Select'), 0, @@ -191,13 +223,14 @@ function mainInsertData() '', empty($agent_id) ); + $table->data[1][2] = html_print_input_text('data', ($save === true) ? date(DATE_FORMAT) : $data, __('Data'), 10, 60, true); + $table->data[1][2] .= ' '; + $table->data[1][2] .= html_print_input_text('time', ($save === true) ? date(TIME_FORMAT) : $time, '', 10, 7, true); + $table->data[2][0] = __('Data'); - $table->data[2][1] = html_print_input_text('data', $data, __('Data'), 40, 60, true); - $table->data[3][0] = __('Date'); - $table->data[3][1] = html_print_input_text('date', $date, '', 11, 11, true).' '; - $table->data[3][1] .= html_print_input_text('time', $time, '', 7, 7, true); - $table->data[4][0] = __('CSV'); - $table->data[4][1] = html_print_input_file('csv', true); + $table->data[2][1] = __('CSV'); + $table->data[3][0] = html_print_input_text('data', $data, __('Data'), 40, 60, true); + $table->data[3][1] = html_print_input_file('csv', true); echo "<form method='post' enctype='multipart/form-data'>"; @@ -205,17 +238,16 @@ function mainInsertData() html_print_input_hidden('save', 1); - html_print_div( - [ - 'class' => 'action-buttons', - 'content' => html_print_submit_button( - __('Save'), - 'submit', - (empty($id_agent) === true), - [ 'icon' => 'next' ], - true - ), - ] + html_print_action_buttons( + html_print_submit_button( + __('Save'), + 'submit', + // (empty($id_agent) === true), + false, + [ 'icon' => 'next' ], + true + ), + ['type' => 'form_action'] ); echo '</form>'; @@ -267,8 +299,8 @@ function mainInsertData() $('#id_agent_module').enable(); $('#id_agent_module').fadeIn ('normal'); - $('#submit-submit').enable(); - $('#submit-submit').fadeIn ('normal'); + $('button [name="submit"]').removeClass('disabled_action_button'); + $('button [name="submit"]').fadeIn ('normal'); } }); } diff --git a/pandora_console/extensions/resource_registration.php b/pandora_console/extensions/resource_registration.php index 732c0151ea..1473fcdc38 100755 --- a/pandora_console/extensions/resource_registration.php +++ b/pandora_console/extensions/resource_registration.php @@ -1,4 +1,5 @@ <?php +// phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps /** * Resource registration. * @@ -14,7 +15,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 @@ -239,13 +240,6 @@ function process_upload_xml_report($xml, $group_filter=0) } switch ($item['type']) { - case 1: - case 'simple_graph': - break; - - case 'simple_baseline_graph': - break; - case 2: case 'custom_graph': case 'automatic_custom_graph': @@ -361,30 +355,6 @@ function process_upload_xml_report($xml, $group_filter=0) } break; - case 6: - case 'monitor_report': - break; - - case 7: - case 'avg_value': - break; - - case 8: - case 'max_value': - break; - - case 9: - case 'min_value': - break; - - case 10: - case 'sumatory': - break; - - case 'agent_detailed_event': - case 'event_report_agent': - break; - case 'text': $values['text'] = io_safe_input($item['text']); break; @@ -405,18 +375,6 @@ function process_upload_xml_report($xml, $group_filter=0) $values['id_agent'] = db_get_value('id_grupo', 'tgrupo', 'nombre', io_safe_input($item->group)); break; - case 'event_report_module': - break; - - case 'alert_report_module': - break; - - case 'alert_report_agent': - break; - - case 'alert_report_group': - break; - case 'url': $values['external_source'] = io_safe_input($item['url']); break; @@ -426,9 +384,32 @@ function process_upload_xml_report($xml, $group_filter=0) $values['line_separator'] = io_safe_input($item['line_separator']); $values['column_separator'] = io_safe_input($item['column_separator']); break; + + case 1: + case 'simple_graph': + case 'simple_baseline_graph': + case 6: + case 'monitor_report': + case 7: + case 'avg_value': + case 8: + case 'max_value': + case 9: + case 'min_value': + case 10: + case 'sumatory': + case 'event_report_module': + case 'alert_report_module': + case 'alert_report_agent': + case 'alert_report_group': + case 'agent_detailed_event': + case 'event_report_agent': + default: + // Do nothing. + break; } - if (empty($agents_item)) { + if (empty($agents_item) === true) { $id_content = db_process_sql_insert('treport_content', $values); ui_print_result_message( $id_content, @@ -782,7 +763,7 @@ function process_upload_xml_visualmap($xml, $filter_group=0) function process_upload_xml_component($xml) { - // Extract components + // Extract components. $components = []; foreach ($xml->xpath('/component') as $componentElement) { $name = io_safe_input((string) $componentElement->name); @@ -838,7 +819,7 @@ function process_upload_xml_component($xml) $idComponent = false; switch ((int) $componentElement->module_source) { case 1: - // Local component + // Local component. $values = [ 'description' => $description, 'id_network_component_group' => $group, @@ -854,12 +835,12 @@ function process_upload_xml_component($xml) // Network component // for modules // 15 = remote_snmp, 16 = remote_snmp_inc, - // 17 = remote_snmp_string, 18 = remote_snmp_proc + // 17 = remote_snmp_string, 18 = remote_snmp_proc. $custom_string_1 = ''; $custom_string_2 = ''; $custom_string_3 = ''; if ($type >= 15 && $type <= 18) { - // New support for snmp v3 + // New support for snmp v3. $tcp_send = $snmp_version; $plugin_user = $auth_user; $plugin_pass = $auth_password; @@ -909,13 +890,13 @@ function process_upload_xml_component($xml) 'post_process' => $post_process, ] ); - if ((bool) $idComponent) { + if ((bool) $idComponent === true) { $components[] = $idComponent; } break; case 4: - // Plugin component + // Plugin component. $idComponent = network_components_create_network_component( $name, $type, @@ -956,17 +937,13 @@ function process_upload_xml_component($xml) 'post_process' => $post_process, ] ); - if ((bool) $idComponent) { + if ((bool) $idComponent === true) { $components[] = $idComponent; } break; - case 5: - // Prediction component - break; - case 6: - // WMI component + // WMI component. $idComponent = network_components_create_network_component( $name, $type, @@ -1013,13 +990,17 @@ function process_upload_xml_component($xml) 'post_process' => $post_process, ] ); - if ((bool) $idComponent) { + if ((bool) $idComponent === true) { $components[] = $idComponent; } break; + case 5: + // Prediction component. case 7: - // Web component + // Web component. + default: + // Do nothing. break; } @@ -1030,9 +1011,9 @@ function process_upload_xml_component($xml) ); } - // Extract the template + // Extract the template. $templateElement = $xml->xpath('//template'); - if (!empty($templateElement)) { + if (empty($templateElement) === false) { $templateElement = $templateElement[0]; $templateName = (string) $templateElement->name; @@ -1092,9 +1073,26 @@ function resource_registration_extension_main() include_once $config['homedir'].'/include/functions_db.php'; enterprise_include_once('include/functions_local_components.php'); - ui_print_page_header(__('Resource registration'), 'images/extensions.png', false, '', true, ''); + ui_print_standard_header( + __('Resource registration'), + 'images/extensions.png', + false, + '', + true, + [], + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Resource registration'), + ], + ] + ); - if (!extension_loaded('libxml')) { + if (extension_loaded('libxml') === false) { ui_print_error_message(_('Error, please install the PHP libXML in the system.')); return; @@ -1119,15 +1117,36 @@ function resource_registration_extension_main() return; } - echo '<div class=notify>'; - echo __('This extension makes registering resource templates easier.').' '.__('Here you can upload a resource template in .ptr format.').' '.__('Please refer to our documentation for more information on how to obtain and use %s resources.', get_product_name()).' '.'<br> <br>'.__('You can get more resurces in our <a href="https://pandorafms.com/Library/Library/">Public Resource Library</a>'); - echo '</div>'; + ui_print_warning_message( + __('This extension makes registering resource templates easier.').'<br>'.__('Here you can upload a resource template in .ptr format.').'<br>'.__('Please refer to our documentation for more information on how to obtain and use %s resources.', get_product_name()).' '.'<br> <br>'.__('You can get more resurces in our <a href="https://pandorafms.com/Library/Library/">Public Resource Library</a>') + ); - echo '<br /><br />'; + $table = new stdClass(); + $table->class = 'databox m2020'; + $table->id = 'resource_registration_table'; + + $table->data = []; + $table->data[0][0] = __('File to upload'); + $table->data[0][1] = __('Group filter'); + $table->data[1][0] = html_print_input_file('resource_upload', true); + $table->data[1][1] = html_print_select_groups(false, 'AW', true, 'group', '', '', __('All'), 0, true); // Upload form. - echo "<form name='submit_plugin' method='post' enctype='multipart/form-data'>"; - echo '<table class="databox" id="table1" width="98%" border="0" cellpadding="4" cellspacing="4">'; + echo '<form name="submit_plugin" method="POST" enctype="multipart/form-data">'; + html_print_table($table); + html_print_action_buttons( + html_print_submit_button( + __('Upload'), + 'upload', + false, + [ 'icon' => 'wand' ], + true + ), + ['type' => 'form_action'] + ); + echo '</form>'; + /* + echo '<table class="databox" id="table1" width="98%" border="0" cellpadding="4" cellspacing="4">'; echo '<tr>'; echo "<td colspan='2' class='datos'><input type='file' name='resource_upload' accept='.ptr'/>"; echo '<td>'.__('Group filter: ').'</td>'; @@ -1136,8 +1155,7 @@ function resource_registration_extension_main() echo '</td>'; echo "<td class='datos'><input type='submit' class='sub next' value='".__('Upload')."' />"; echo '</tr>'; - echo '</table>'; - echo '</form>'; + echo '</table>';*/ if (isset($_FILES['resource_upload']['tmp_name']) === false) { return; diff --git a/pandora_console/godmode/agentes/configure_field.php b/pandora_console/godmode/agentes/configure_field.php index f7c80c832c..ca518d5056 100755 --- a/pandora_console/godmode/agentes/configure_field.php +++ b/pandora_console/godmode/agentes/configure_field.php @@ -1,16 +1,32 @@ <?php +/** + * Edit Fields manager. + * + * @category Resources. + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * 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 + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// 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 General Public License -// as published by the Free Software Foundation for version 2. -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Load global vars. global $config; check_login(); @@ -47,13 +63,8 @@ if ($id_field) { } $table = new stdClass(); -$table->width = '100%'; -$table->class = 'databox filters'; +$table->class = 'databox m2020'; $table->id = 'configure_field'; -$table->style[0] = 'font-weight: bold'; -$table->style[2] = 'font-weight: bold'; -$table->style[4] = 'font-weight: bold'; -$table->style[6] = 'font-weight: bold'; echo "<div id='message_set_password' title='".__('Agent Custom Fields Information')."' class='invisible'>"; echo "<p class='center bolder'>".__('You cannot set the Password type until you clear the combo values and click on update button.').'</p>'; @@ -75,7 +86,7 @@ echo '</div>'; $table->data = []; $table->data[0][0] = __('Name'); -$table->data[0][1] = html_print_input_text( +$table->data[1][0] = html_print_input_text( 'name', $name, '', @@ -84,30 +95,39 @@ $table->data[0][1] = html_print_input_text( true ); -$table->data[1][0] = __('Pass type').ui_print_help_tip( +$table->data[2][0] = __('Pass type').ui_print_help_tip( __('The fields with pass type enabled will be displayed like html input type pass in html'), true ); -$table->data[1][1] = html_print_checkbox_switch( +$table->data[2][1] = __('Display on front').ui_print_help_tip( + __('The fields with display on front enabled will be displayed into the agent details'), + true +); +$table->data[2][2] = __('Link type'); + +$table->data[3][0] = html_print_checkbox_switch( 'is_password_type', 1, $is_password_type, true ); - -$table->data[2][0] = __('Display on front').ui_print_help_tip( - __('The fields with display on front enabled will be displayed into the agent details'), - true -); -$table->data[2][1] = html_print_checkbox_switch( +$table->data[3][1] = html_print_checkbox_switch( 'display_on_front', 1, $display_on_front, true ); - -$table->data[3][0] = __('Enabled combo'); -$table->data[3][1] = html_print_checkbox_switch_extended( +$table->data[3][2] = html_print_checkbox_switch_extended( + 'is_link_enabled', + 1, + $is_link_enabled, + false, + '', + '', + true +); +$table->data[4][0] = __('Enabled combo'); +$table->data[5][0] = html_print_checkbox_switch_extended( 'is_combo_enable', 0, $config['is_combo_enable'], @@ -117,12 +137,15 @@ $table->data[3][1] = html_print_checkbox_switch_extended( true ); -$table->rowstyle[4] = 'display: none;'; -$table->data[4][0] = __('Combo values').ui_print_help_tip( + +$table->cellstyle[4][1] = 'display: none;'; +$table->cellstyle[5][1] = 'display: none;'; + +$table->data[4][1] = __('Combo values').ui_print_help_tip( __('Set values separated by comma'), true ); -$table->data[4][1] = html_print_textarea( +$table->data[5][1] = html_print_textarea( 'combo_values', 3, 65, @@ -131,31 +154,40 @@ $table->data[4][1] = html_print_textarea( true ); -$table->data[5][0] = __('Link type'); -$table->data[5][1] = html_print_checkbox_switch_extended( - 'is_link_enabled', - 1, - $is_link_enabled, - false, - '', - '', - true -); echo '<form name="field" method="post" action="index.php?sec=gagente&sec2=godmode/agentes/fields_manager">'; html_print_table($table); -echo '<div class="action-buttons" style="width: '.$table->width.'">'; -if ($id_field) { +if ($id_field > 0) { html_print_input_hidden('update_field', 1); html_print_input_hidden('id_field', $id_field); - html_print_submit_button(__('Update'), 'updbutton', false, 'class="sub upd"'); + $buttonCaption = __('Update'); + $buttonName = 'updbutton'; } else { html_print_input_hidden('create_field', 1); - html_print_submit_button(__('Create'), 'crtbutton', false, 'class="sub wand"'); + $buttonCaption = __('Create'); + $buttonName = 'crtbutton'; } -echo '</div>'; +$actionButtons = []; +$actionButtons[] = html_print_submit_button( + $buttonCaption, + $buttonName, + false, + [ 'icon' => 'wand' ], + true +); +$actionButtons[] = html_print_go_back_button( + 'index.php?sec=gagente&sec2=godmode/agentes/fields_manager', + ['button_class' => ''], + true +); + +html_print_action_buttons( + implode('', $actionButtons), + ['type' => 'form_action'], +); + echo '</form>'; ?> diff --git a/pandora_console/godmode/agentes/fields_manager.php b/pandora_console/godmode/agentes/fields_manager.php index f7f61c4af4..49f6661c81 100644 --- a/pandora_console/godmode/agentes/fields_manager.php +++ b/pandora_console/godmode/agentes/fields_manager.php @@ -1,22 +1,37 @@ <?php +/** + * Fields manager. + * + * @category Resources. + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * 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 + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// 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 General Public License -// as published by the Free Software Foundation for version 2. -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// Load global vars +// Load global vars. global $config; check_login(); -if (!check_acl($config['id_user'], 0, 'PM')) { +if ((bool) check_acl($config['id_user'], 0, 'PM') === false) { db_pandora_audit( AUDIT_LOG_ACL_VIOLATION, 'Trying to access Group Management' @@ -27,7 +42,24 @@ if (!check_acl($config['id_user'], 0, 'PM')) { } // Header. -ui_print_page_header(__('Agents custom fields manager'), 'images/custom_field.png', false, '', true, ''); +ui_print_standard_header( + __('Agents custom fields manager'), + 'images/custom_field.png', + false, + '', + true, + [], + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Custom fields'), + ], + ] +); $create_field = (bool) get_parameter('create_field'); $update_field = (bool) get_parameter('update_field'); @@ -114,8 +146,7 @@ $fields = db_get_all_rows_filter( ); $table = new stdClass(); -$table->width = '100%'; -$table->class = 'info_table'; +$table->class = 'info_table m2020'; if ($fields) { $table->head = []; $table->head[0] = __('ID'); @@ -140,43 +171,66 @@ if ($fields === false) { foreach ($fields as $field) { $data[0] = $field['id_field']; + $data[1] = $field['name']; - $data[1] = '<b>'.$field['name'].'</b>'; - - if ($field['display_on_front']) { - $data[2] = html_print_image('images/tick.png', true, ['class' => 'invert_filter']); - } else { - $data[2] = html_print_image( - 'images/icono_stop.png', - true, - ['style' => 'width:21px;height:21px;'] - ); - } + $data[2] = html_print_image( + ((bool) $field['display_on_front'] === true) ? 'images/validate.svg' : 'images/icono_stop.png', + true, + ['class' => 'main_menu_icon invert_filter'] + ); $table->cellclass[][3] = 'table_action_buttons'; - $data[3] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/configure_field&id_field='.$field['id_field'].'">'.html_print_image('images/config.png', true, ['alt' => __('Edit'), 'title' => __('Edit'), 'border' => '0', 'class' => 'invert_filter']).'</a>'; - $data[3] .= '<a href="index.php?sec=gagente&sec2=godmode/agentes/fields_manager&delete_field=1&id_field='.$field['id_field'].'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['alt' => __('Delete'), 'title' => __('Delete'), 'border' => '0', 'class' => 'invert_filter']).'</a>'; + $tableActionButtons = []; + $tableActionButtons[] = html_print_anchor( + [ + 'href' => 'index.php?sec=gagente&sec2=godmode/agentes/configure_field&id_field='.$field['id_field'], + 'content' => html_print_image( + 'images/edit.svg', + true, + [ + 'title' => __('Edit'), + 'class' => 'main_menu_icon invert_filter', + ] + ), + ], + true + ); + + $tableActionButtons[] = html_print_anchor( + [ + 'href' => 'index.php?sec=gagente&sec2=godmode/agentes/fields_manager&delete_field=1&id_field='.$field['id_field'], + 'content' => html_print_image( + 'images/delete.svg', + true, + [ + 'title' => __('Delete'), + 'class' => 'main_menu_icon invert_filter', + ] + ), + 'onClick' => 'if (!confirm(\' '.__('Are you sure?').'\')) return false;', + ], + true + ); + + $data[3] = implode('', $tableActionButtons); array_push($table->data, $data); } if ($fields) { - ui_pagination($count_fields, false, $offset); html_print_table($table); - ui_pagination($count_fields, false, $offset, 0, false, 'offset', true, 'pagination-bottom'); + $tablePagination = ui_pagination($count_fields, false, $offset, 0, true, 'offset', false); } -echo '<form method="post" action="index.php?sec=gagente&sec2=godmode/agentes/configure_field">'; -html_print_div( - [ - 'class' => 'action-buttons', - 'content' => html_print_submit_button( - __('Create field'), - 'crt', - false, - [ 'icon' => 'next' ], - true - ), - ] +echo '<form method="POST" action="index.php?sec=gagente&sec2=godmode/agentes/configure_field">'; +html_print_action_buttons( + html_print_submit_button( + __('Create field'), + 'crt', + false, + [ 'icon' => 'next' ], + true + ), + ['type' => 'form_action'] ); echo '</form>'; diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php index ce58dc58a9..e854a9ee23 100644 --- a/pandora_console/godmode/agentes/modificar_agente.php +++ b/pandora_console/godmode/agentes/modificar_agente.php @@ -654,8 +654,7 @@ if ($agents !== false) { $tableAgents = new stdClass(); $tableAgents->id = 'agent_list'; - $tableAgents->class = 'info_table tactical_table'; - $tableAgents->styleTable = 'margin: 0 10px'; + $tableAgents->class = 'info_table tactical_table m2020'; $tableAgents->head = []; $tableAgents->data = []; // Header. diff --git a/pandora_console/godmode/agentes/module_manager.php b/pandora_console/godmode/agentes/module_manager.php index 102bea4ba4..317346749e 100644 --- a/pandora_console/godmode/agentes/module_manager.php +++ b/pandora_console/godmode/agentes/module_manager.php @@ -1168,7 +1168,7 @@ if ($modules !== false) { [ 'href' => 'index.php?sec=gmodules&sec2=godmode/modules/manage_network_components&create_network_from_module=1&id_agente='.$id_agente.'&create_module_from='.$module['id_agente_modulo'], 'onClick' => "if (!confirm(\' '.__('Are you sure?').'\')) return false;", - 'image' => 'images/cluster@svg.svg', + 'image' => 'images/cluster@os.svg', 'title' => __('Create network component'), 'disabled' => ((is_user_admin($config['id_user']) === true) && (int) $module['id_modulo'] === MODULE_NETWORK) === false, 'disabled_title' => ' ('.__('Disabled').')', diff --git a/pandora_console/godmode/category/category.php b/pandora_console/godmode/category/category.php index b20bbc85b5..2a4f7d29af 100755 --- a/pandora_console/godmode/category/category.php +++ b/pandora_console/godmode/category/category.php @@ -14,7 +14,7 @@ * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| * * ============================================================================ - * Copyright (c) 2005-2022 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 @@ -52,35 +52,21 @@ $search = (int) get_parameter('search_category', 0); $category_name = (string) get_parameter('category_name', ''); $tab = (string) get_parameter('tab', 'list'); -if (is_metaconsole() === true) { - $buttons = [ - 'list' => [ - 'active' => false, - 'text' => '<a href="index.php?sec=advanced&sec2=godmode/category/category&tab=list&pure='.(int) $config['pure'].'">'.html_print_image( - 'images/list.png', - true, - [ - 'title' => __('List categories'), - 'class' => 'invert_filter', - ] - ).'</a>', - ], - ]; -} else { - $buttons = [ - 'list' => [ - 'active' => false, - 'text' => '<a href="index.php?sec=galertas&sec2=godmode/category/category&tab=list&pure='.(int) $config['pure'].'">'.html_print_image( - 'images/list.png', - true, - [ - 'title' => __('List categories'), - 'class' => 'invert_filter', - ] - ).'</a>', - ], - ]; -} +$sec = (is_metaconsole() === true) ? 'advanced' : 'galertas'; + +$buttons = [ + 'list' => [ + 'active' => false, + 'text' => '<a href="index.php?sec='.$sec.'&sec2=godmode/category/category&tab=list&pure='.(int) $config['pure'].'">'.html_print_image( + 'images/logs@svg.svg', + true, + [ + 'title' => __('List categories'), + 'class' => 'main_menu_icon invert_filter', + ] + ).'</a>', + ], +]; $buttons[$tab]['active'] = true; @@ -88,7 +74,24 @@ $buttons[$tab]['active'] = true; if (is_metaconsole() === true) { ui_meta_print_header(__('Categories configuration'), __('List'), $buttons); } else { - ui_print_page_header(__('Categories configuration'), 'images/gm_modules.png', false, '', true, $buttons); + ui_print_standard_header( + __('Categories configuration'), + 'images/gm_modules.png', + false, + '', + true, + $buttons, + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Module categories'), + ], + ] + ); } @@ -152,12 +155,8 @@ $rowPair = true; $iterator = 0; if (empty($result) === false) { - // Prepare pagination. - ui_pagination($total_categories, $url); - $table = new stdClass(); - $table->width = '100%'; - $table->class = 'info_table'; + $table->class = 'info_table m2020'; $table->data = []; $table->head = []; @@ -185,14 +184,20 @@ if (empty($result) === false) { if (is_metaconsole() === true) { $data[0] = "<a href='index.php?sec=advanced&sec2=godmode/category/edit_category&action=update&id_category=".$category['id'].'&pure='.(int) $config['pure']."'>".$category['name'].'</a>'; $data[1] = "<a href='index.php?sec=advanced&sec2=godmode/category/edit_category&action=update&id_category=".$category['id'].'&pure='.(int) $config['pure']."'>".html_print_image( - 'images/config.png', + 'images/edit.svg', true, - ['title' => 'Edit'] + [ + 'title' => __('Edit'), + 'class' => 'main_menu_icon', + ] ).'</a> '; $data[1] .= '<a href="index.php?sec=advanced&sec2=godmode/category/category&delete_category='.$category['id'].'&pure='.(int) $config['pure'].'"onclick="if (! confirm (\''.__('Are you sure?').'\')) return false">'.html_print_image( - 'images/cross.png', + 'images/delet.svg', true, - ['title' => 'Delete'] + [ + 'title' => __('Delete'), + 'class' => 'main_menu_icon', + ] ).'</a>'; } else { if ($is_management_allowed === true) { @@ -203,16 +208,39 @@ if (empty($result) === false) { if ($is_management_allowed === true) { $table->cellclass[][1] = 'table_action_buttons'; - $data[1] = "<a href='index.php?sec=gmodules&sec2=godmode/category/edit_category&action=update&id_category=".$category['id'].'&pure='.(int) $config['pure']."'>".html_print_image( - 'images/config.png', - true, - ['title' => 'Edit'] - ).'</a>'; - $data[1] .= '<a href="index.php?sec=gmodules&sec2=godmode/category/category&delete_category='.$category['id'].'&pure='.(int) $config['pure'].'"onclick="if (! confirm (\''.__('Are you sure?').'\')) return false">'.html_print_image( - 'images/cross.png', - true, - ['title' => 'Delete'] - ).'</a>'; + $tableActionButtonsContent = []; + $tableActionButtonsContent[] = html_print_anchor( + [ + 'href' => 'index.php?sec=gmodules&sec2=godmode/category/edit_category&action=update&id_category='.$category['id'].'&pure='.(int) $config['pure'], + 'content' => html_print_image( + 'images/edit.svg', + true, + [ + 'title' => __('Edit'), + 'class' => 'main_menu_icon', + ] + ), + ], + true + ); + + $tableActionButtonsContent[] = html_print_anchor( + [ + 'href' => 'index.php?sec=gmodules&sec2=godmode/category/category&delete_category='.$category['id'].'&pure='.(int) $config['pure'], + 'onClick' => 'if (! confirm (\''.__('Are you sure?').'\')) return false', + 'content' => html_print_image( + 'images/delete.svg', + true, + [ + 'title' => __('Delete'), + 'class' => 'main_menu_icon', + ] + ), + ], + true + ); + + $data[1] = implode('', $tableActionButtonsContent); } } @@ -220,7 +248,7 @@ if (empty($result) === false) { } html_print_table($table); - ui_pagination($total_categories, $url, $offset, 0, false, 'offset', true, 'pagination-bottom'); + $tablePagination = ui_pagination($total_categories, $url, $offset, 0, true, 'offset', false); } else { // No categories available or selected. ui_print_info_message(['no_close' => true, 'message' => __('No categories found') ]); @@ -228,24 +256,23 @@ if (empty($result) === false) { if ($is_management_allowed === true) { // Form to add new categories or search categories. - if (is_metaconsole() === true) { - echo '<form method="post" action="index.php?sec=advanced&sec2=godmode/category/edit_category&action=new&pure='.(int) $config['pure'].'">'; - } else { - echo '<form method="post" action="index.php?sec=gmodules&sec2=godmode/category/edit_category&action=new&pure='.(int) $config['pure'].'">'; - } + $sec = (is_metaconsole() === true) ? 'advanced' : 'gmodules'; + + echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/category/edit_category&action=new&pure='.(int) $config['pure'].'">'; html_print_input_hidden('create_category', '1', true); - html_print_div( + html_print_action_buttons( + html_print_submit_button( + __('Create category'), + 'create_button', + false, + [ 'icon' => 'next' ], + true + ), [ - 'class' => 'action-buttons', - 'content' => html_print_submit_button( - __('Create category'), - 'create_button', - false, - [ 'icon' => 'next' ], - true - ), + 'type' => 'form_action', + 'right_content' => $tablePagination, ] ); diff --git a/pandora_console/godmode/category/edit_category.php b/pandora_console/godmode/category/edit_category.php index 64b4a193c2..b042f23526 100755 --- a/pandora_console/godmode/category/edit_category.php +++ b/pandora_console/godmode/category/edit_category.php @@ -50,36 +50,29 @@ $update_category = (int) get_parameter('update_category', 0); $create_category = (int) get_parameter('create_category', 0); $name_category = (string) get_parameter('name_category', ''); $tab = (string) get_parameter('tab', 'list'); +// Main URL. +$mainUrl = 'index.php?sec=gagente&sec2=godmode/category/category'; +$sec = (is_metaconsole() === true) ? 'advanced' : 'gmodules'; -if (is_metaconsole() === true) { - $buttons = [ - 'list' => [ - 'active' => false, - 'text' => '<a href="index.php?sec=advanced&sec2=godmode/category/category&tab=list&pure='.(int) $config['pure'].'">'.html_print_image( - 'images/list.png', - true, - [ - 'title' => __('List categories'), - 'class' => 'invert_filter', - ] - ).'</a>', - ], - ]; -} else { - $buttons = [ - 'list' => [ - 'active' => false, - 'text' => '<a href="index.php?sec=gmodules&sec2=godmode/category/category&tab=list&pure='.(int) $config['pure'].'">'.html_print_image( - 'images/list.png', - true, - [ - 'title' => __('List categories'), - 'class' => 'invert_filter', - ] - ).'</a>', - ], - ]; -} +$buttons = [ + 'list' => [ + 'active' => false, + 'text' => html_print_anchor( + [ + 'href' => 'index.php?sec='.$sec.'&sec2=godmode/category/category&tab=list&pure='.(int) $config['pure'], + 'content' => html_print_image( + 'images/logs@svg.svg', + true, + [ + 'title' => __('List categories'), + 'class' => 'main_menu_icon invert_filter', + ] + ), + ], + true + ), + ], +]; $buttons[$tab]['active'] = false; @@ -87,7 +80,25 @@ $buttons[$tab]['active'] = false; if (is_metaconsole() === true) { ui_meta_print_header(__('Categories configuration'), __('Editor'), $buttons); } else { - ui_print_page_header(__('Categories configuration'), 'images/gm_modules.png', false, '', true, $buttons); + // Header. + ui_print_standard_header( + __('Manage category'), + 'images/gm_modules.png', + false, + '', + true, + $buttons, + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => $mainUrl, + 'label' => __('Module categories'), + ], + ] + ); } @@ -151,7 +162,7 @@ if ($create_category) { // Form fields are filled here // Get results when update action is performed. -if ($action == 'update' && $id_category != 0) { +if ($action === 'update' && $id_category != 0) { $result_category = db_get_row_filter('tcategory', ['id' => $id_category]); $name_category = $result_category['name']; } //end if @@ -159,47 +170,28 @@ else { $name_category = ''; } +// Create/Update category form. +echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/category/edit_category&action='.$action.'&id_category='.$id_category.'&pure='.(int) $config['pure'].'" enctype="multipart/form-data">'; -// Create/Update category form -echo '<form method="post" action="index.php?sec=gmodules&sec2=godmode/category/edit_category&action='.$action.'&id_category='.$id_category.'&pure='.(int) $config['pure'].'" enctype="multipart/form-data">'; +$table = new stdClass(); +$table->id = 'edit_catagory_table'; +$table->class = 'databox m2020'; -if (!defined('METACONSOLE')) { - echo '<div align=left class="pandora_form w100p">'; -} else { - echo '<div align=left class="pandora_form w100p">'; -} - -echo "<table border=0 cellpadding=4 cellspacing=4 class='databox filters' width=100%>"; - -if (defined('METACONSOLE')) { - if ($action == 'update') { - echo '<thead> - <tr> - <th align=center colspan=5>'.__('Update category').'</th> - </tr> - </thead>'; - } - - if ($action == 'new') { - echo '<thead> - <tr> - <th align=center colspan=5>'.__('Create category').'</th> - </tr> - </thead>'; +$table->head = []; +if (is_metaconsole() === true) { + if ($action === 'update') { + $table->head[0] = __('Update category'); + } else if ($action === 'new') { + $table->head[0] = __('Create category'); } } - echo '<tr>'; - echo "<td class='bolder'>"; +$table->data = []; - html_print_label(__('Name'), 'name'); - echo '</td>'; - echo '<td>'; - html_print_input_text('name_category', $name_category); - echo '</td>'; - echo '</tr>'; +$table->data[0][0] = __('Name'); +$table->data[1][0] = html_print_input_text('name_category', $name_category, '', 50, 255, true); -echo '</table>'; +html_print_table($table); if ($action === 'update') { html_print_input_hidden('update_category', 1); @@ -213,20 +205,25 @@ if ($action === 'update') { $buttonIcon = 'next'; } -html_print_div( - [ - 'class' => 'action-buttons', - 'content' => html_print_submit_button( - $buttonCaption, - $buttonName, - false, - [ 'icon' => $buttonIcon ], - true - ), - ] +$actionButtons = []; +$actionButtons[] = html_print_submit_button( + $buttonCaption, + $buttonName, + false, + [ 'icon' => $buttonIcon ], + true +); +$actionButtons[] = html_print_go_back_button( + $mainUrl, + ['button_class' => ''], + true +); + +html_print_action_buttons( + implode('', $actionButtons), + [ 'type' => 'form_action' ] ); -echo '</div>'; echo '</form>'; enterprise_hook('close_meta_frame'); diff --git a/pandora_console/godmode/groups/configure_modu_group.php b/pandora_console/godmode/groups/configure_modu_group.php index 548f711f6f..ef93882d14 100644 --- a/pandora_console/godmode/groups/configure_modu_group.php +++ b/pandora_console/godmode/groups/configure_modu_group.php @@ -26,9 +26,26 @@ if (! check_acl($config['id_user'], 0, 'PM')) { return; } -if (!is_metaconsole()) { +if (is_metaconsole() === false) { // Header - ui_print_page_header(__('Module group management'), 'images/module_group.png', false, '', true, ''); + ui_print_standard_header( + __('Module group management'), + 'images/module_group.png', + false, + '', + true, + [], + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Module groups'), + ], + ] + ); } // Init vars @@ -60,33 +77,54 @@ if ($id_group) { } $table = new stdClass(); -$table->width = '100%'; -$table->class = 'databox filters'; +$table->class = 'databox m2020'; $table->style[0] = 'font-weight: bold'; $table->data = []; $table->data[0][0] = __('Name'); -$table->data[0][1] = html_print_input_text('name', $name, '', 35, 100, true); +$table->data[1][0] = html_print_input_text('name', $name, '', 35, 100, true); echo '</span>'; -if (is_metaconsole()) { - echo '<form name="grupo" method="post" action="index.php?sec=advanced&sec2=advanced/component_management&tab=module_group">'; +if (is_metaconsole() === true) { + $formUrl = 'index.php?sec=advanced&sec2=advanced/component_management&tab=module_group'; } else { - echo '<form name="grupo" method="post" action="index.php?sec=gmodules&sec2=godmode/groups/modu_group_list">'; + $formUrl = 'index.php?sec=gmodules&sec2=godmode/groups/modu_group_list'; } +echo '<form name="grupo" method="POST" action="'.$formUrl.'">'; html_print_table($table); -echo '<div class="action-buttons" style="width: '.$table->width.'">'; + if ($id_group) { html_print_input_hidden('update_group', 1); html_print_input_hidden('id_group', $id_group); - html_print_submit_button(__('Update'), 'updbutton', false, 'class="sub upd"'); + $actionButtonTitle = __('Update'); + $actionButtonName = 'updbutton'; } else { + $actionButtonTitle = __('Create'); + $actionButtonName = 'crtbutton'; html_print_input_hidden('create_group', 1); - html_print_submit_button(__('Create'), 'crtbutton', false, 'class="sub wand"'); } -echo '</div>'; +$actionButtons = []; + +$actionButtons[] = html_print_submit_button( + $actionButtonTitle, + $actionButtonName, + false, + ['icon' => 'wand'], + true +); + +$actionButtons[] = html_print_go_back_button( + ui_get_full_url('index.php?sec=gmodules&sec2=godmode/groups/modu_group_list'), + ['button_class' => ''], + true +); + +html_print_action_buttons( + implode('', $actionButtons), + ['type' => 'form_action'] +); echo '</form>'; enterprise_hook('close_meta_frame'); diff --git a/pandora_console/godmode/groups/modu_group_list.php b/pandora_console/godmode/groups/modu_group_list.php index cbd9a4c0d5..876dedad72 100644 --- a/pandora_console/godmode/groups/modu_group_list.php +++ b/pandora_console/godmode/groups/modu_group_list.php @@ -14,7 +14,7 @@ * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| * * ============================================================================ - * Copyright (c) 2005-2022 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 @@ -66,13 +66,23 @@ if (is_ajax() === true) { if (is_metaconsole() === false) { // Header. - ui_print_page_header( - __('Module groups defined in %s', get_product_name()), + ui_print_standard_header( + __('Module groups list'), 'images/module_group.png', false, '', true, - '' + [], + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Module groups'), + ], + ] ); } @@ -243,8 +253,7 @@ $sql = 'SELECT * $groups = db_get_all_rows_sql($sql); $table = new stdClass(); -$table->width = '100%'; -$table->class = 'info_table'; +$table->class = 'info_table m2020'; if (empty($groups) === false) { $table->head = []; @@ -254,6 +263,8 @@ if (empty($groups) === false) { $table->head[2] = __('Delete'); } + $table->size[0] = '5%'; + $table->align = []; $table->align[1] = 'left'; if ($is_management_allowed === true) { @@ -270,10 +281,10 @@ if (empty($groups) === false) { if ($is_management_allowed === true) { $data[1] = '<strong><a href="index.php?sec=gmodules&sec2=godmode/groups/configure_modu_group&id_group='.$id_group['id_mg'].'">'.ui_print_truncate_text($id_group['name'], GENERIC_SIZE_TEXT).'</a></strong>'; if (is_metaconsole() === true) { - $data[2] = '<a href="index.php?sec=advanced&sec2=advanced/component_management&tab=module_group&id_group='.$id_group['id_mg'].'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['border' => '0']).'</a>'; + $data[2] = '<a href="index.php?sec=advanced&sec2=advanced/component_management&tab=module_group&id_group='.$id_group['id_mg'].'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/delete.svg', true, ['class' => 'main_menu_icon']).'</a>'; } else { $table->cellclass[][2] = 'table_action_buttons'; - $data[2] = '<a href="index.php?sec=gmodules&sec2=godmode/groups/modu_group_list&id_group='.$id_group['id_mg'].'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['border' => '0']).'</a>'; + $data[2] = '<a href="index.php?sec=gmodules&sec2=godmode/groups/modu_group_list&id_group='.$id_group['id_mg'].'&delete_group=1" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/delete.svg', true, ['class' => 'main_menu_icon']).'</a>'; } } else { $data[1] = '<strong>'; @@ -284,9 +295,8 @@ if (empty($groups) === false) { array_push($table->data, $data); } - ui_pagination($total_groups, $url, $offset); html_print_table($table); - ui_pagination($total_groups, $url, $offset, 0, false, 'offset', true, 'pagination-bottom'); + $tablePagination = ui_pagination($total_groups, $url, $offset, 0, true, 'offset', false); } else { ui_print_info_message( [ @@ -298,16 +308,17 @@ if (empty($groups) === false) { if ($is_management_allowed === true) { echo '<form method="post" action="index.php?sec=gmodules&sec2=godmode/groups/configure_modu_group">'; - html_print_div( + html_print_action_buttons( + html_print_submit_button( + __('Create module group'), + 'crt', + false, + [ 'icon' => 'next' ], + true + ), [ - 'class' => 'action-buttons', - 'content' => html_print_submit_button( - __('Create module group'), - 'crt', - false, - [ 'icon' => 'next' ], - true - ), + 'type' => 'form_action', + 'right_content' => $tablePagination, ] ); echo '</form>'; diff --git a/pandora_console/godmode/modules/manage_nc_groups.php b/pandora_console/godmode/modules/manage_nc_groups.php index 60d72aea79..fc25be5cd1 100644 --- a/pandora_console/godmode/modules/manage_nc_groups.php +++ b/pandora_console/godmode/modules/manage_nc_groups.php @@ -1,17 +1,32 @@ <?php +/** + * Component group Management. + * + * @category Modules. + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * 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 + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// 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 General Public License -// as published by the Free Software Foundation for version 2. -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// Load global vars +// Load global vars. global $config; check_login(); @@ -32,16 +47,27 @@ require_once $config['homedir'].'/include/functions_network_components.php'; require_once $config['homedir'].'/include/functions_component_groups.php'; // Header -if (defined('METACONSOLE')) { +if (is_metaconsole() === true) { components_meta_print_header(); $sec = 'advanced'; } else { - ui_print_page_header( - __('Module management').' » '.__('Component group management'), + ui_print_standard_header( + __('Component group management'), '', false, '', - true + true, + [], + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Component groups'), + ], + ] ); $sec = 'gmodules'; } @@ -234,12 +260,11 @@ foreach ($groups as $group_key => $group_val) { $groups = component_groups_get_groups_tree_recursive($groups_clean, 0, 0); $table = new stdClass(); -$table->width = '100%'; -$table->class = 'info_table'; +$table->class = 'info_table m2020'; $table->head = []; $table->head['checkbox'] = html_print_checkbox('all_delete', 0, false, true, false); $table->head[0] = __('Name'); -if (is_management_allowed() === true || is_metaconsole()) { +if (is_management_allowed() === true || is_metaconsole() === true) { $table->head[1] = __('Action'); } @@ -272,8 +297,14 @@ foreach ($groups as $group) { $table->cellclass[][1] = 'table_action_buttons'; if (is_management_allowed() === true || is_metaconsole()) { - $data[1] = "<a onclick='if(confirm(\"".__('Are you sure?')."\")) return true; else return false;' - href='index.php?sec=".$sec.'&sec2=godmode/modules/manage_nc_groups&delete=1&id='.$group['id_sg']."&offset=0'>".html_print_image('images/cross.png', true, ['title' => __('Delete')]).'</a>'; + $data[1] = html_print_anchor( + [ + 'onClick' => 'if(confirm(\"'.__('Are you sure?').'\")) return true; else return false;', + 'href' => 'index.php?sec='.$sec.'&sec2=godmode/modules/manage_nc_groups&delete=1&id='.$group['id_sg'].'&offset=0', + 'content' => html_print_image('images/delete.svg', true, ['title' => __('Delete'), 'class' => 'main_menu_icon']), + ], + true + ); } array_push($table->data, $data); @@ -296,35 +327,63 @@ if (is_management_allowed() === false && is_metaconsole() === false) { ); } -if (isset($data)) { - echo "<form method='post' action='index.php?sec=".$sec."&sec2=godmode/modules/manage_nc_groups'>"; - html_print_input_hidden('multiple_delete', 1); +$actionButtons = []; +if (isset($data) === true) { + echo '<form id="multiple_delete_form" method="POST" action="index.php?sec='.$sec.'&sec2=godmode/modules/manage_nc_groups">'; html_print_table($table); - if (is_management_allowed() === true || is_metaconsole()) { - echo "<div class='pdd_l_10px float-right mrgn_btn_15px'>"; - html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"'); - echo '</div>'; - } - echo '</form>'; } else { ui_print_info_message(['no_close' => true, 'message' => __('There are no defined component groups') ]); } if (is_management_allowed() === true || is_metaconsole()) { - echo '<form method="post" action='.$url.'>'; - echo '<div class="float-right">'; - html_print_input_hidden('new', 1); - html_print_submit_button(__('Create'), 'crt', false, 'class="sub next"'); - echo '</div>'; + // Create form. + echo '<form id="create_form" method="POST" action="'.$url.'">'; + html_print_input_hidden('new', 1); echo '</form>'; + // Create action button. + $actionButtons[] = html_print_submit_button( + __('Create'), + 'crt', + false, + [ + 'icon' => 'wand', + 'form' => 'create_form', + ], + true + ); + // Delete action button. + if (isset($data) === true) { + $actionButtons[] = html_print_input_hidden( + 'multiple_delete', + 1, + false, + false, + 'form="multiple_delete_form"' + ); + $actionButtons[] = html_print_submit_button( + __('Delete'), + 'delete_btn', + false, + [ + 'icon' => 'delete', + 'mode' => 'secondary', + 'form' => 'multiple_delete_form', + ], + true + ); + } } +html_print_action_buttons( + implode('', $actionButtons), + ['type' => 'form_action'] +); + enterprise_hook('close_meta_frame'); ?> <script type="text/javascript"> - $( document ).ready(function() { $('[id^=checkbox-delete_multiple]').change(function(){ @@ -332,11 +391,11 @@ enterprise_hook('close_meta_frame'); $(this).parent().parent().removeClass('checkselected'); } else{ - $(this).parent().parent().addClass('checkselected'); + $(this).parent().parent().addClass('checkselected'); } }); - $('[id^=checkbox-all_delete]').change(function(){ + $('[id^=checkbox-all_delete]').change(function(){ if ($("#checkbox-all_delete").prop("checked")) { $('[id^=checkbox-delete_multiple]').parent().parent().addClass('checkselected'); $(".check_delete").prop("checked", true); @@ -344,11 +403,7 @@ enterprise_hook('close_meta_frame'); else{ $('[id^=checkbox-delete_multiple]').parent().parent().removeClass('checkselected'); $(".check_delete").prop("checked", false); - } + } }); - }); - - - </script> diff --git a/pandora_console/godmode/modules/manage_nc_groups_form.php b/pandora_console/godmode/modules/manage_nc_groups_form.php index 01beca52ed..3342c06e03 100644 --- a/pandora_console/godmode/modules/manage_nc_groups_form.php +++ b/pandora_console/godmode/modules/manage_nc_groups_form.php @@ -1,17 +1,32 @@ <?php +/** + * Component group management form. + * + * @category Modules. + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * 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 + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// 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 General Public License -// as published by the Free Software Foundation for version 2. -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// Load global vars +// Load global vars. global $config; check_login(); @@ -28,12 +43,7 @@ if (! check_acl($config['id_user'], 0, 'PM') && ! check_acl($config['id_user'], require_once $config['homedir'].'/include/functions_network_components.php'; $id = (int) get_parameter('id'); - -if (defined('METACONSOLE')) { - $sec = 'advanced'; -} else { - $sec = 'gmodules'; -} +$sec = (is_metaconsole() === true) ? 'advanced' : 'gmodules'; if ($id) { $group = network_components_get_group($id); @@ -45,31 +55,24 @@ if ($id) { } $table = new stdClass(); -$table->width = '100%'; -$table->class = 'databox filters'; +$table->class = 'databox m2020'; -if (defined('METACONSOLE')) { +if (is_metaconsole() === true) { $table->class = 'databox data'; - if ($id) { - $table->head[0] = __('Update Group Component'); - } else { - $table->head[0] = __('Create Group Component'); - } - + $table->head[0] = ($id) ? __('Update Group Component') : __('Create Group Component'); $table->head_colspan[0] = 4; $table->headstyle[0] = 'text-align: center'; } $table->style = []; -$table->style[0] = 'font-weight: bold'; -$table->style[2] = 'font-weight: bold'; +$table->style[0] = 'width: 0'; +$table->style[1] = 'width: 0'; + $table->data = []; - $table->data[0][0] = __('Name'); -$table->data[0][1] = html_print_input_text('name', $name, '', 15, 255, true); - -$table->data[0][2] = __('Parent'); -$table->data[0][3] = html_print_select( +$table->data[0][1] = __('Parent'); +$table->data[1][0] = html_print_input_text('name', $name, '', 0, 255, true, false, false, '', 'w100p'); +$table->data[1][1] = html_print_select( network_components_get_groups(), 'parent', $parent, @@ -81,17 +84,39 @@ $table->data[0][3] = html_print_select( false ); -echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/modules/manage_nc_groups">'; +$manageNcGroupsUrl = 'index.php?sec='.$sec.'&sec2=godmode/modules/manage_nc_groups'; + +echo '<form method="post" action="'.$manageNcGroupsUrl.'">'; html_print_table($table); -echo '<div class="action-buttons" style="width: '.$table->width.'">'; + if ($id) { html_print_input_hidden('update', 1); html_print_input_hidden('id', $id); - html_print_submit_button(__('Update'), 'crt', false, 'class="sub upd"'); + $actionButtonTitle = __('Update'); } else { html_print_input_hidden('create', 1); - html_print_submit_button(__('Create'), 'crt', false, 'class="sub wand"'); + $actionButtonTitle = __('Create'); } -echo '</div>'; +$actionButtons = []; + +$actionButtons[] = html_print_submit_button( + $actionButtonTitle, + 'crt', + false, + ['icon' => 'wand'], + true +); + +$actionButtons[] = html_print_go_back_button( + $manageNcGroupsUrl, + ['button_class' => ''], + true +); + +html_print_action_buttons( + implode('', $actionButtons), + [ 'type' => 'form_action'] +); + echo '</form>'; diff --git a/pandora_console/godmode/modules/module_list.php b/pandora_console/godmode/modules/module_list.php index f8c07d7848..9372d3c8c7 100644 --- a/pandora_console/godmode/modules/module_list.php +++ b/pandora_console/godmode/modules/module_list.php @@ -1,17 +1,32 @@ <?php +/** + * Module Type List. + * + * @category Modules. + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * 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 + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// 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 General Public License -// as published by the Free Software Foundation for version 2. -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// Load global vars +// Load global vars. global $config; check_login(); @@ -26,12 +41,30 @@ if (! check_acl($config['id_user'], 0, 'PM')) { } // Header. -ui_print_page_header(__('Module management').' » '.__('Defined modules'), 'images/gm_modules.png', false, '', true); +ui_print_standard_header( + __('Defined module types'), + 'images/module_group.png', + false, + '', + true, + [], + [ + [ + 'link' => '', + 'label' => __('Resources'), + ], + [ + 'link' => '', + 'label' => __('Module types'), + ], + ] +); + $update_module = (bool) get_parameter_post('update_module'); // Update -if ($update_module) { +if ($update_module === true) { $name = get_parameter_post('name'); $id_type = get_parameter_post('id_type'); $description = get_parameter_post('description'); @@ -54,43 +87,33 @@ if ($update_module) { } } +$table = new stdClass(); +$table->id = 'module_type_list'; +$table->class = 'info_table m2020'; +$table->size = []; +$table->size[0] = '5%'; +$table->size[1] = '5%'; +$table->head = []; +$table->head[0] = __('ID'); +$table->head[1] = __('Icon'); +$table->head[2] = __('Name'); +$table->head[3] = __('Description'); -echo "<table cellpadding='0' cellspacing='0' width='100%' class='info_table'>"; -echo '<thead>'; -echo '<th>'.__('Icon').'</th>'; -echo '<th>'.__('ID').'</th>'; -echo '<th>'.__('Name').'</th>'; -echo '<th>'.__('Description').'</th>'; -echo '</thead'; +$table->data = []; -$rows = db_get_all_rows_sql('SELECT * FROM ttipo_modulo ORDER BY nombre'); +$rows = db_get_all_rows_sql('SELECT * FROM ttipo_modulo ORDER BY id_tipo'); if ($rows === false) { $rows = []; } -$color = 0; foreach ($rows as $row) { - if ($color == 1) { - $tdcolor = 'datos'; - $color = 0; - } else { - $tdcolor = 'datos2'; - $color = 1; - } + $data[0] = $row['id_tipo']; + $data[1] = html_print_image('images/'.$row['icon'], true, ['class' => 'main_menu_icon invert_filter']); + $data[2] = $row['nombre']; + $data[3] = $row['descripcion']; - echo " - <tr> - <td class='$tdcolor' align=''>".html_print_image('images/'.$row['icon'], true, ['border' => '0', 'class' => 'invert_filter'])."</td> - <td class='$tdcolor'> - <b>".$row['id_tipo']." - </b></td> - <td class='$tdcolor'> - <b>".$row['nombre']." - </b></td> - <td class='$tdcolor'> - ".$row['descripcion'].' - </td> - </tr>'; + array_push($table->data, $data); } -echo '</table>'; +html_print_table($table); +// $tablePagination = ui_pagination($total_groups, $url, $offset, 0, true, 'offset', false); diff --git a/pandora_console/godmode/setup/os.list.php b/pandora_console/godmode/setup/os.list.php index f8ba6a865a..1fd8b57348 100644 --- a/pandora_console/godmode/setup/os.list.php +++ b/pandora_console/godmode/setup/os.list.php @@ -62,23 +62,23 @@ if (is_management_allowed() === false) { $table = new stdClass(); // $table->width = '100%'; -$table->styleTable = 'margin: 10px 10px 0'; -$table->class = 'info_table'; +// $table->styleTable = 'margin: 10px 10px 0'; +$table->class = 'info_table m2020'; -$table->head[0] = ''; -$table->head[1] = __('ID'); +$table->head[0] = __('ID'); +$table->head[1] = __('Icon'); $table->head[2] = __('Name'); $table->head[3] = __('Description'); if ($is_management_allowed === true) { $table->head[4] = ''; } -$table->align[0] = 'center'; +$table->align[1] = 'center'; if ($is_management_allowed === true) { $table->align[4] = 'center'; } -$table->size[0] = '20px'; +$table->size[0] = '5%'; if ($is_management_allowed === true) { $table->size[4] = '20px'; } @@ -103,14 +103,22 @@ if ($osList === false) { $table->data = []; foreach ($osList as $os) { $data = []; - $data[] = html_print_div(['class' => 'main_menu_icon', 'content' => ui_print_os_icon($os['id_os'], false, true)], true); $data[] = $os['id_os']; + $data[] = html_print_div(['class' => 'main_menu_icon', 'content' => ui_print_os_icon($os['id_os'], false, true)], true); if ($is_management_allowed === true) { if (is_metaconsole() === true) { - $data[] = '<a href="index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&action=edit&tab2=builder&id_os='.$os['id_os'].'">'.io_safe_output($os['name']).'</a>'; + $osNameUrl = 'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&action=edit&tab2=builder&id_os='.$os['id_os']; } else { - $data[] = '<a href="index.php?sec=gsetup&sec2=godmode/setup/os&action=edit&tab=builder&id_os='.$os['id_os'].'">'.io_safe_output($os['name']).'</a>'; + $osNameUrl = 'index.php?sec=gsetup&sec2=godmode/setup/os&action=edit&tab=builder&id_os='.$os['id_os']; } + + $data[] = html_print_anchor( + [ + 'href' => $osNameUrl, + 'content' => io_safe_output($os['name']), + ], + true + ); } else { $data[] = io_safe_output($os['name']); } diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 88eb27d931..54d271ff5a 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -1982,15 +1982,17 @@ div#agent_wizard_subtabs { } table.databox { - background-color: #f9faf9; + background-color: #fff; border-spacing: 0px; - -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: 4px; - border: 1px solid #e2e2e2; + border-radius: 6px; + /*-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: 2px solid #c0ccdc; padding: 20px; margin-bottom: 20px; + width: -webkit-fill-available; + width: -moz-available; } .databox > tbody > tr > td { @@ -3717,7 +3719,7 @@ table#policy_modules td * { } .tactical_table > thead > tr span { - line-height: 26px; + /*line-height: 26px;*/ } .info_table thead th .sort_arrow, @@ -6746,10 +6748,6 @@ div.graph div.legend table { margin: 0px; } -.mrgn_5px_a0 { - margin: 5px auto 0; -} - .mrgn_10px { margin: 10px; } @@ -7022,6 +7020,17 @@ div.graph div.legend table { margin-bottom: 80px; } +.m1010 { + margin: 10px; +} + +.m1020 { + margin: 10px 20px; +} + +.m2020 { + margin: 20px; +} .snmp_view_div { float: left; padding-left: 30px; @@ -9887,7 +9896,8 @@ div#err_msg_centralised { .inputFile { background-color: #f6f7fb; height: 16px; - font: normal normal normal 13px Pandora-Light; + font-family: "Pandora-Regular"; + font-size: 12px; padding: 5.5pt 20pt; cursor: pointer; color: #14524f; @@ -9908,12 +9918,13 @@ input, textarea, select { background-color: #f6f7fb; - height: 38px; border: 2px solid #c0ccdc; border-radius: 6px; + height: 38px; + font-family: "Pandora-Regular"; + font-size: 12px; + color: #333333; padding-left: 12px; - font: normal normal normal 14px Pandora-Light; - color: #2b3332; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; @@ -10593,7 +10604,8 @@ tr.bring_next_field { -moz-box-sizing: border-box !important; box-sizing: border-box !important; cursor: pointer; - font: normal normal normal 12px Pandora-Light !important; + font-family: "Pandora-Regular" !important; + font-size: 12px !important; } .select2-container .select2-selection--single { @@ -10891,7 +10903,7 @@ pre.external_tools_output { .fixed_filter_bar { position: sticky; top: 114px; - margin-bottom: 10px; + /*margin-bottom: 10px;*/ border: 1px solid #e5e9ed; background-color: #fff; z-index: 1; diff --git a/pandora_console/include/styles/tables.css b/pandora_console/include/styles/tables.css index a726e6ecb9..ed0d219d12 100644 --- a/pandora_console/include/styles/tables.css +++ b/pandora_console/include/styles/tables.css @@ -91,11 +91,13 @@ .info_table, .filter_table { background-color: #fff; - /* margin-bottom: 10px; */ border-spacing: 0; - border-collapse: collapse; overflow: hidden; - border-radius: 5px; + border-radius: 6px; + border: 2px solid #c0ccdc; + width: -webkit-fill-available; + width: -moz-available; + margin-bottom: 50px !important; } .info_table > tbody > tr:nth-child(even) { @@ -111,20 +113,20 @@ }*/ .info_table > tbody > tr > th, .info_table > thead > tr > th { - border-top: 1px solid #c0ccdc; + /*border-top: 1px solid #c0ccdc;*/ } .info_table tr > td:first-child, .info_table tr > th:first-child { /*padding-left: 5px;*/ padding-left: 10px; - border-left: 1px solid #c0ccdc; + /*border-left: 1px solid #c0ccdc;*/ } .info_table tr > td:last-child, .info_table tr > th:last-child { /*padding-right: 5px;*/ padding-right: 10px; - border-right: 1px solid #c0ccdc; + /*border-right: 1px solid #c0ccdc;*/ } .info_table tr:first-child > th { @@ -155,8 +157,9 @@ } .info_table > thead > tr * { - font-size: 10pt; - font-family: "Pandora-Regular"; + font-size: 12px; + font-family: "Pandora-Bold"; + line-height: 23px; } /* Radius top */ @@ -186,12 +189,14 @@ /*margin-left: 0.5em;*/ } -.info_table > tbody > tr { +.info_table > tbody > tr:last-child { /*border-bottom: 1px solid #e2e2e2;*/ border-top: 0; - border-bottom: 1px solid #c0ccdc; + /*border-bottom: 1px solid #c0ccdc;*/ + /* border-left: 1px solid #c0ccdc; border-right: 1px solid #c0ccdc; + */ } .info_table > tbody > tr > th, .info_table > thead > tr > th,