mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-27 15:54:29 +02:00
Merge branch 'develop' into ent-9073-nuevo-sistema-de-tips-de-bienvenida
This commit is contained in:
commit
11250bd59b
@ -1,5 +1,5 @@
|
||||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.769-230307
|
||||
Version: 7.0NG.769-230308
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.769-230307"
|
||||
pandora_version="7.0NG.769-230308"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
@ -1023,7 +1023,7 @@ my $Sem = undef;
|
||||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.769';
|
||||
use constant AGENT_BUILD => '230307';
|
||||
use constant AGENT_BUILD => '230308';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.769
|
||||
%define release 230307
|
||||
%define release 230308
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.769
|
||||
%define release 230307
|
||||
%define release 230308
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
@ -10,7 +10,7 @@
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.769"
|
||||
PI_BUILD="230307"
|
||||
PI_BUILD="230308"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
||||
{}
|
||||
|
||||
Version
|
||||
{230307}
|
||||
{230308}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
||||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.769 Build 230307")
|
||||
#define PANDORA_VERSION ("7.0NG.769 Build 230308")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
@ -11,7 +11,7 @@ BEGIN
|
||||
VALUE "LegalCopyright", "Artica ST"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.769(Build 230307))"
|
||||
VALUE "ProductVersion", "(7.0NG.769(Build 230308))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-console
|
||||
Version: 7.0NG.769-230307
|
||||
Version: 7.0NG.769-230308
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.769-230307"
|
||||
pandora_version="7.0NG.769-230308"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
@ -377,17 +377,17 @@ function mainAgentsModules()
|
||||
|
||||
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
||||
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'&show_type='.$show_type.'
|
||||
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/fullscreen@svg.svg', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||
} else if ($full_modules_selected[0] && $full_agents_id[0]) {
|
||||
$full_modules = urlencode(implode(';', $full_modules_selected));
|
||||
$full_agents = urlencode(implode(';', $full_agents_id));
|
||||
|
||||
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
||||
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&full_modules_selected='.$full_modules.'&show_type='.$show_type.'
|
||||
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||
&full_agents_id='.$full_agents.'&selection_agent_module='.$selection_a_m.'">'.html_print_image('images/fullscreen@svg.svg', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||
} else {
|
||||
$fullscreen['text'] = '<a href="index.php?extension_in_menu=estado&sec=extensions&sec2=extensions/agents_modules&pure=1&
|
||||
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&show_type='.$show_type.'">'.html_print_image('images/full_screen.png', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||
offset='.$offset.'&group_id='.$group_id.'&modulegroup='.$modulegroup.'&refresh='.$refr.'&show_type='.$show_type.'">'.html_print_image('images/fullscreen@svg.svg', true, ['title' => __('Full screen mode'), 'class' => 'invert_filter']).'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -597,11 +597,11 @@ function mainAgentsModules()
|
||||
echo '<li class="nomn">';
|
||||
echo '<a target="_top" href="'.$url.'">';
|
||||
echo html_print_image(
|
||||
'images/normal_screen.png',
|
||||
'images/exit_fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Back to normal mode'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
echo '</a>';
|
||||
|
@ -301,12 +301,11 @@ function dbmgr_extension_main()
|
||||
if (is_metaconsole() === true) {
|
||||
// This adds a option in the operation menu.
|
||||
extensions_add_meta_menu_option(
|
||||
'DB interface',
|
||||
__('DB interface'),
|
||||
'PM',
|
||||
'gextensions',
|
||||
'database.png',
|
||||
'v1r1',
|
||||
'gdbman'
|
||||
'v1r1'
|
||||
);
|
||||
|
||||
extensions_add_meta_function('dbmgr_extension_main');
|
||||
|
@ -1,16 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* Extension to manage a list of gateways and the node address where they should
|
||||
* point to.
|
||||
*
|
||||
* @category Users
|
||||
* @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.
|
||||
// Begin.
|
||||
function users_extension_main()
|
||||
{
|
||||
users_extension_main_god(false);
|
||||
@ -34,7 +51,24 @@ function users_extension_main_god($god=true)
|
||||
}
|
||||
|
||||
// Header.
|
||||
ui_print_page_header(__('Users connected'), $image, false, '', $god);
|
||||
ui_print_standard_header(
|
||||
__('List of users connected'),
|
||||
$image,
|
||||
false,
|
||||
'',
|
||||
$god,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Workspace'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Users connected'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$check_profile = db_get_row('tusuario_perfil', 'id_usuario', $config['id_user'], 'id_up');
|
||||
if ($check_profile === false && !users_is_admin()) {
|
||||
|
@ -802,7 +802,7 @@ if ($id_agent_module) {
|
||||
__('Delete'),
|
||||
'deleteModule',
|
||||
false,
|
||||
'window.location.assign(\'index.php?sec=gagente&tab=module&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&delete_module='.$id_agent_module.')',
|
||||
'window.location.assign("index.php?sec=gagente&tab=module&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&delete_module='.$id_agent_module.'")',
|
||||
[
|
||||
'icon' => 'delete',
|
||||
'mode' => 'secondary',
|
||||
|
@ -524,7 +524,7 @@ $data[0] .= html_print_button(
|
||||
__('Manage credentials'),
|
||||
'manage_credentials_button',
|
||||
false,
|
||||
'window.location.assign(\'index.php?sec=gmodules&sec2=godmode/groups/group_list&tab=credbox\')',
|
||||
'window.location.assign("index.php?sec=gmodules&sec2=godmode/groups/group_list&tab=credbox")',
|
||||
[ 'mode' => 'link' ],
|
||||
true
|
||||
);
|
||||
|
@ -171,7 +171,7 @@ if (is_ajax()) {
|
||||
$ffield = $editor_type_chkbx;
|
||||
$ffield .= html_print_textarea(
|
||||
'field'.$i.'_value',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
'',
|
||||
'class="fields"',
|
||||
@ -208,7 +208,7 @@ if (is_ajax()) {
|
||||
$rfield = $editor_type_chkbx;
|
||||
$rfield .= html_print_textarea(
|
||||
'field'.$i.'_recovery_value',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
'',
|
||||
'class="fields_recovery"',
|
||||
@ -329,7 +329,7 @@ if (is_ajax()) {
|
||||
|
||||
$ffield .= html_print_textarea(
|
||||
'field'.$i.'_value[]',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
'',
|
||||
'style="min-height:40px; '.$style.'" class="fields"',
|
||||
@ -341,7 +341,7 @@ if (is_ajax()) {
|
||||
|
||||
$rfield .= html_print_textarea(
|
||||
'field'.$i.'_recovery_value[]',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
'',
|
||||
'style="min-height:40px; '.$style.'" class="fields_recovery',
|
||||
@ -484,7 +484,7 @@ if (is_ajax()) {
|
||||
} else {
|
||||
$ffield = html_print_textarea(
|
||||
'field'.$i.'_value',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
$fv[0],
|
||||
'style="'.$style.'" class="fields min-height-40px"',
|
||||
@ -494,7 +494,7 @@ if (is_ajax()) {
|
||||
);
|
||||
$rfield = html_print_textarea(
|
||||
'field'.$i.'_recovery_value',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
$fv[0],
|
||||
'style="'.$style.'" class="fields_recovery min-height-40px',
|
||||
@ -507,7 +507,7 @@ if (is_ajax()) {
|
||||
} else {
|
||||
$ffield = html_print_textarea(
|
||||
'field'.$i.'_value',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
'',
|
||||
'style="'.$style.'" class="fields min-height-40px"',
|
||||
@ -517,7 +517,7 @@ if (is_ajax()) {
|
||||
);
|
||||
$rfield = html_print_textarea(
|
||||
'field'.$i.'_recovery_value',
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
'',
|
||||
'style="'.$style.'" class="fields_recovery min-height-40px"',
|
||||
@ -533,7 +533,7 @@ if (is_ajax()) {
|
||||
$fields_rows[$i] = '';
|
||||
} else {
|
||||
$fields_rows[$i] = '<tr id="table_macros-field'.$i.'" class="datos">';
|
||||
$fields_rows[$i] .= '<td class="datos bolder w20p">'.$fdesc.'</td>';
|
||||
$fields_rows[$i] .= '<td class="datos bolder w20p" style="font-size: 13px;">'.$fdesc.'</td>';
|
||||
$fields_rows[$i] .= '<td class="datos">'.$ffield.'</td>';
|
||||
if ($get_recovery_fields) {
|
||||
$fields_rows[$i] .= '<td class="datos recovery_col">'.$rfield.'</td>';
|
||||
@ -575,12 +575,19 @@ if ($update_command) {
|
||||
if (defined('METACONSOLE')) {
|
||||
alerts_meta_print_header();
|
||||
} else {
|
||||
ui_print_page_header(
|
||||
__('Alerts').' » '.__('Alert commands'),
|
||||
ui_print_standard_header(
|
||||
__('Alerts'),
|
||||
'images/gm_alerts.png',
|
||||
false,
|
||||
'',
|
||||
true
|
||||
true,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Alert commands'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -811,10 +818,9 @@ foreach ($commands as $command) {
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
|
||||
ui_pagination($total_commands, $url);
|
||||
if (isset($data) === true && count($table->data) > 0) {
|
||||
html_print_table($table);
|
||||
ui_pagination($total_commands, $url, 0, 0, false, 'offset', true, 'pagination-bottom');
|
||||
$pagination = ui_pagination($total_commands, $url, 0, 0, true, 'offset', false, '');
|
||||
} else {
|
||||
ui_print_info_message(
|
||||
[
|
||||
@ -826,12 +832,17 @@ if (isset($data) === true && count($table->data) > 0) {
|
||||
|
||||
// Commands can only be created by the super administrator.
|
||||
if (users_is_admin() === true) {
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/configure_alert_command&pure='.$pure.'">';
|
||||
html_print_submit_button(__('Create'), 'create', false, 'class="sub next"');
|
||||
$buttonSubmit = html_print_submit_button(
|
||||
__('Create'),
|
||||
'create',
|
||||
false,
|
||||
['icon' => 'wand'],
|
||||
true
|
||||
);
|
||||
html_print_input_hidden('create_alert', 1);
|
||||
html_print_action_buttons($buttonSubmit, ['right_content' => $pagination]);
|
||||
echo '</form>';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -68,12 +68,19 @@ if ($al_action !== false) {
|
||||
if (defined('METACONSOLE')) {
|
||||
alerts_meta_print_header();
|
||||
} else {
|
||||
ui_print_page_header(
|
||||
__('Alerts').' » '.__('Configure alert action'),
|
||||
ui_print_standard_header(
|
||||
__('Alerts'),
|
||||
'images/gm_alerts.png',
|
||||
false,
|
||||
'alert_config',
|
||||
true
|
||||
'',
|
||||
true,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Configure alert action'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
} else {
|
||||
@ -81,12 +88,19 @@ if ($al_action !== false) {
|
||||
if (defined('METACONSOLE')) {
|
||||
alerts_meta_print_header();
|
||||
} else {
|
||||
ui_print_page_header(
|
||||
__('Alerts').' » '.__('Configure alert action'),
|
||||
ui_print_standard_header(
|
||||
__('Alerts'),
|
||||
'images/gm_alerts.png',
|
||||
false,
|
||||
'alert_config',
|
||||
true
|
||||
'',
|
||||
true,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Configure alert action'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -290,41 +304,66 @@ $table->data[1][1] = html_print_label_input_block(
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[2][0] = html_print_label_input_block(
|
||||
$table_macros = new stdClass();
|
||||
$table_macros->id = 'table_macros';
|
||||
$table_macros->width = '100%';
|
||||
$table_macros->class = 'databox filters filter-table-adv';
|
||||
$table_macros->style = [];
|
||||
$table_macros->size = [];
|
||||
$table_macros->size[0] = '20%';
|
||||
$table_macros->size[1] = '40%';
|
||||
$table_macros->size[2] = '40%';
|
||||
$table_macros->data = [];
|
||||
|
||||
$table_macros->data[0][0] = '';
|
||||
$table_macros->data[0][1] = html_print_label_input_block(
|
||||
__('Triggering'),
|
||||
''
|
||||
);
|
||||
|
||||
$table_macros->data[0][2] = html_print_label_input_block(
|
||||
__('Recovery'),
|
||||
''
|
||||
);
|
||||
|
||||
$table->data[2][1] = html_print_label_input_block(
|
||||
__('Recovery'),
|
||||
$table_macros->data[1][0] = html_print_label_input_block(
|
||||
__('Command preview'),
|
||||
''
|
||||
);
|
||||
|
||||
$table->data[5][0] = __('Command preview');
|
||||
$table->data[5][1] = html_print_textarea(
|
||||
$table_macros->data[1][1] = html_print_label_input_block(
|
||||
'',
|
||||
html_print_textarea(
|
||||
'command_preview',
|
||||
5,
|
||||
30,
|
||||
'',
|
||||
'disabled="disabled"',
|
||||
true
|
||||
)
|
||||
);
|
||||
$table->data[5][2] = html_print_textarea(
|
||||
|
||||
$table_macros->data[1][2] = html_print_label_input_block(
|
||||
'',
|
||||
html_print_textarea(
|
||||
'command_recovery_preview',
|
||||
5,
|
||||
30,
|
||||
'',
|
||||
'disabled="disabled"',
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
// Selector will work only with Integria activated.
|
||||
$integriaIdName = 'integria_wu';
|
||||
$table->data[$integriaIdName][0] = __('Create workunit on recovery').ui_print_help_tip(
|
||||
$table_macros->colspan[$integriaIdName][0] = 3;
|
||||
$table_macros->data[$integriaIdName][0] = html_print_label_input_block(
|
||||
__('Create workunit on recovery').ui_print_help_tip(
|
||||
__('If closed status is set on recovery, a workunit will be added to the ticket in Integria IMS rather that closing the ticket.'),
|
||||
true
|
||||
);
|
||||
$table->data[$integriaIdName][1] = html_print_checkbox_switch_extended(
|
||||
),
|
||||
html_print_checkbox_switch_extended(
|
||||
'create_wu_integria',
|
||||
1,
|
||||
$create_wu_integria,
|
||||
@ -332,31 +371,32 @@ $table->data[$integriaIdName][1] = html_print_checkbox_switch_extended(
|
||||
'',
|
||||
$disabled_attr,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
for ($i = 1; $i <= $config['max_macro_fields']; $i++) {
|
||||
$table->data['field'.$i][0] = html_print_image(
|
||||
$table_macros->data['field'.$i][0] = html_print_image(
|
||||
'images/spinner.gif',
|
||||
true
|
||||
);
|
||||
$table->data['field'.$i][1] = html_print_image(
|
||||
$table_macros->data['field'.$i][1] = html_print_image(
|
||||
'images/spinner.gif',
|
||||
true
|
||||
);
|
||||
$table->data['field'.$i][2] = html_print_image(
|
||||
$table_macros->data['field'.$i][2] = html_print_image(
|
||||
'images/spinner.gif',
|
||||
true
|
||||
);
|
||||
|
||||
// Store the value in a hidden to keep it on first execution
|
||||
$table->data['field'.$i][1] .= html_print_input_hidden(
|
||||
$table_macros->data['field'.$i][1] .= html_print_input_hidden(
|
||||
'field'.$i.'_value',
|
||||
(!empty($action['field'.$i]) || $action['field'.$i] == 0) ? $action['field'.$i] : '',
|
||||
true,
|
||||
'',
|
||||
$disabled_attr
|
||||
);
|
||||
$table->data['field'.$i][2] .= html_print_input_hidden(
|
||||
$table_macros->data['field'.$i][2] .= html_print_input_hidden(
|
||||
'field'.$i.'_recovery_value',
|
||||
(!empty($action['field'.$i.'_recovery']) || $action['field'.$i] == 0) ? $action['field'.$i.'_recovery'] : '',
|
||||
true,
|
||||
@ -369,10 +409,12 @@ $offset = (int) get_parameter('offset', 0);
|
||||
|
||||
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_actions&pure='.$pure.'&offset='.$offset.'" class="max_floating_element_size">';
|
||||
$table_html = html_print_table($table, true);
|
||||
$table_html_macros = html_print_table($table_macros, true);
|
||||
|
||||
$backButton = '';
|
||||
$submitButton = '';
|
||||
echo $table_html;
|
||||
echo $table_html_macros;
|
||||
if ($is_management_allowed === true) {
|
||||
if ($id) {
|
||||
html_print_input_hidden('id', $id);
|
||||
|
@ -54,12 +54,19 @@ $alert = [];
|
||||
if (is_metaconsole() === true) {
|
||||
alerts_meta_print_header();
|
||||
} else {
|
||||
ui_print_page_header(
|
||||
__('Alerts').' » '.__('Configure alert command'),
|
||||
ui_print_standard_header(
|
||||
__('Alerts'),
|
||||
'images/gm_alerts.png',
|
||||
false,
|
||||
'',
|
||||
true
|
||||
true,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Configure alert command'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -199,28 +206,19 @@ if ($is_management_allowed === false) {
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$table->head[0] = ($id) ? __('Update Command') : __('Create Command');
|
||||
$table->head_colspan[0] = 4;
|
||||
$table->headstyle[0] = 'text-align: center';
|
||||
}
|
||||
$table->class = 'databox filters filter-table-adv';
|
||||
|
||||
$table->style = [];
|
||||
if (is_metaconsole() === false) {
|
||||
$table->style[0] = 'font-weight: bold';
|
||||
$table->style[2] = 'font-weight: bold';
|
||||
$table->style[4] = 'font-weight: bold';
|
||||
}
|
||||
|
||||
$table->size = [];
|
||||
$table->size[0] = '20%';
|
||||
$table->size[0] = '45%';
|
||||
$table->size[1] = '45%';
|
||||
$table->size[2] = '10%';
|
||||
$table->data = [];
|
||||
|
||||
$table->colspan['name'][1] = 3;
|
||||
$table->data['name'][0] = __('Name');
|
||||
$table->data['name'][2] = html_print_input_text(
|
||||
$table->data[0][0] = html_print_label_input_block(
|
||||
__('Name'),
|
||||
html_print_input_text(
|
||||
'name',
|
||||
$name,
|
||||
'',
|
||||
@ -238,30 +236,16 @@ $table->data['name'][2] = html_print_input_text(
|
||||
'',
|
||||
'',
|
||||
!$is_management_allowed
|
||||
)
|
||||
);
|
||||
|
||||
$table->colspan['command'][1] = 3;
|
||||
$table->data['command'][0] = __('Command');
|
||||
$table->data['command'][1] = html_print_textarea(
|
||||
'command',
|
||||
8,
|
||||
30,
|
||||
$command,
|
||||
'',
|
||||
true,
|
||||
'',
|
||||
!$is_management_allowed
|
||||
);
|
||||
|
||||
$return_all_group = false;
|
||||
|
||||
if (users_can_manage_group_all('LM') === true) {
|
||||
$return_all_group = true;
|
||||
}
|
||||
|
||||
$table->colspan['group'][1] = 3;
|
||||
$table->data['group'][0] = __('Group');
|
||||
$table->data['group'][1] = '<div class="w250px inline">'.html_print_select_groups(
|
||||
$table->data[0][1] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(
|
||||
false,
|
||||
'LM',
|
||||
$return_all_group,
|
||||
@ -275,32 +259,50 @@ $table->data['group'][1] = '<div class="w250px inline">'.html_print_select_group
|
||||
true,
|
||||
'',
|
||||
!$is_management_allowed
|
||||
).'</div>';
|
||||
)
|
||||
);
|
||||
|
||||
$table->colspan['description'][1] = 3;
|
||||
$table->data['description'][0] = __('Description');
|
||||
$table->data['description'][1] = html_print_textarea(
|
||||
$table->data[1][0] = html_print_label_input_block(
|
||||
__('Command'),
|
||||
html_print_textarea(
|
||||
'command',
|
||||
8,
|
||||
30,
|
||||
$command,
|
||||
'',
|
||||
true,
|
||||
'',
|
||||
!$is_management_allowed
|
||||
)
|
||||
);
|
||||
|
||||
$return_all_group = false;
|
||||
|
||||
|
||||
$table->data[1][1] = html_print_label_input_block(
|
||||
__('Description'),
|
||||
html_print_textarea(
|
||||
'description',
|
||||
10,
|
||||
8,
|
||||
30,
|
||||
$description,
|
||||
'',
|
||||
true,
|
||||
'',
|
||||
!$is_management_allowed
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
for ($i = 1; $i <= $config['max_macro_fields']; $i++) {
|
||||
$table->data['field'.$i][0] = sprintf(__('Field %s description'), $i);
|
||||
|
||||
if (empty($fields_descriptions) === false) {
|
||||
$field_description = $fields_descriptions[($i - 1)];
|
||||
} else {
|
||||
$field_description = '';
|
||||
}
|
||||
|
||||
$table->data['field'.$i][1] = html_print_input_text(
|
||||
$table->data['field'.$i][0] = html_print_label_input_block(
|
||||
sprintf(__('Field %s description'), $i),
|
||||
html_print_input_text(
|
||||
'field'.$i.'_description',
|
||||
$field_description,
|
||||
'',
|
||||
@ -318,12 +320,7 @@ for ($i = 1; $i <= $config['max_macro_fields']; $i++) {
|
||||
'',
|
||||
'',
|
||||
!$is_management_allowed
|
||||
);
|
||||
|
||||
$table->data['field'.$i][2] = sprintf(__('Field %s values'), $i);
|
||||
$table->data['field'.$i][2] .= ui_print_help_tip(
|
||||
__('value1,tag1;value2,tag2;value3,tag3'),
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
if (empty($fields_values) === false) {
|
||||
@ -338,7 +335,12 @@ for ($i = 1; $i <= $config['max_macro_fields']; $i++) {
|
||||
$selected = false;
|
||||
}
|
||||
|
||||
$table->data['field'.$i][3] = html_print_input_text(
|
||||
$table->data['field'.$i][1] = html_print_label_input_block(
|
||||
sprintf(__('Field %s values'), $i).ui_print_help_tip(
|
||||
__('value1,tag1;value2,tag2;value3,tag3'),
|
||||
true
|
||||
),
|
||||
html_print_input_text(
|
||||
'field'.$i.'_values',
|
||||
$field_values,
|
||||
'',
|
||||
@ -356,11 +358,12 @@ for ($i = 1; $i <= $config['max_macro_fields']; $i++) {
|
||||
'',
|
||||
'',
|
||||
!$is_management_allowed
|
||||
)
|
||||
);
|
||||
|
||||
$table->data['field'.$i][4] = __('Hide');
|
||||
|
||||
$table->data['field'.$i][5] = html_print_checkbox_extended(
|
||||
$table->data['field'.$i][2] = html_print_label_input_block(
|
||||
__('Hide'),
|
||||
html_print_checkbox_extended(
|
||||
'field'.$i.'_hide',
|
||||
1,
|
||||
$selected,
|
||||
@ -368,24 +371,36 @@ for ($i = 1; $i <= $config['max_macro_fields']; $i++) {
|
||||
'cursor: \'pointer\'',
|
||||
'class="hide_inputs"',
|
||||
true
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
echo '<form method="post" action="index.php?sec=galertas&sec2=godmode/alerts/alert_commands&pure='.$pure.'">';
|
||||
echo '<form method="post" action="index.php?sec=galertas&sec2=godmode/alerts/alert_commands&pure='.$pure.'" class="max_floating_element_size">';
|
||||
html_print_table($table);
|
||||
|
||||
if ($is_management_allowed === true) {
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
if ($id) {
|
||||
html_print_input_hidden('id', $id);
|
||||
html_print_input_hidden('update_command', 1);
|
||||
html_print_submit_button(__('Update'), 'create', false, 'class="sub upd"');
|
||||
$buttonSubmit = html_print_submit_button(
|
||||
__('Update'),
|
||||
'create',
|
||||
false,
|
||||
['icon' => 'wand'],
|
||||
true
|
||||
);
|
||||
} else {
|
||||
html_print_input_hidden('create_command', 1);
|
||||
html_print_submit_button(__('Create'), 'create', false, 'class="sub wand"');
|
||||
$buttonSubmit = html_print_submit_button(
|
||||
__('Create'),
|
||||
'create',
|
||||
false,
|
||||
['icon' => 'wand'],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
html_print_action_buttons($buttonSubmit);
|
||||
}
|
||||
|
||||
echo '</form>';
|
||||
|
@ -738,14 +738,7 @@ if ($tab == 'tree') {
|
||||
* Group tree view.
|
||||
*/
|
||||
|
||||
echo html_print_image(
|
||||
'images/spinner.gif',
|
||||
true,
|
||||
[
|
||||
'class' => 'loading_tree',
|
||||
'style' => 'display: none;',
|
||||
]
|
||||
);
|
||||
ui_print_spinner(__('Loading'));
|
||||
echo "<div id='tree-controller-recipient'></div>";
|
||||
} else {
|
||||
/*
|
||||
@ -904,8 +897,9 @@ if ($tab == 'tree') {
|
||||
$table->data = [];
|
||||
|
||||
foreach ($groups as $key => $group) {
|
||||
$url = 'index.php?sec=gagente&sec2=godmode/groups/configure_group&id_group='.$group['id_grupo'];
|
||||
if (is_metaconsole() === true) {
|
||||
$url_edit = 'index.php?sec=gagente&sec2=godmode/groups/configure_group&id_group='.$group['id_grupo'];
|
||||
$url_tactical = 'index.php?sec=gagente&sec2=godmode/groups/tactical&id_group='.$group['id_grupo'];
|
||||
if (is_metaconsole()) {
|
||||
$url_delete = 'index.php?sec=gagente&sec2=godmode/groups/group_list&delete_group=1&id_group='.$group['id_grupo'].'&tab=groups';
|
||||
} else {
|
||||
$url_delete = 'index.php?sec=gagente&sec2=godmode/groups/group_list&delete_group=1&id_group='.$group['id_grupo'];
|
||||
@ -913,7 +907,7 @@ if ($tab == 'tree') {
|
||||
|
||||
$table->data[$key][0] = $group['id_grupo'];
|
||||
if ($is_management_allowed === true) {
|
||||
$table->data[$key][1] = '<a href="'.$url.'">'.$group['nombre'].'</a>';
|
||||
$table->data[$key][1] = '<a href="'.$url_tactical.'">'.$group['nombre'].'</a>';
|
||||
} else {
|
||||
$table->data[$key][1] = $group['nombre'];
|
||||
}
|
||||
@ -944,7 +938,7 @@ if ($tab == 'tree') {
|
||||
$table->data[$key][5] = $group['description'];
|
||||
if ($is_management_allowed === true) {
|
||||
$table->cellclass[$key][6] = 'table_action_buttons';
|
||||
$table->data[$key][6] = '<a href="'.$url.'">'.html_print_image(
|
||||
$table->data[$key][6] = '<a href="'.$url_edit.'">'.html_print_image(
|
||||
'images/edit.svg',
|
||||
true,
|
||||
[
|
||||
@ -970,7 +964,7 @@ if ($tab == 'tree') {
|
||||
[
|
||||
'alt' => __('Delete'),
|
||||
'title' => __('Delete'),
|
||||
'border' => '0',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
}
|
||||
@ -1041,7 +1035,7 @@ $tab = 'group_edition';
|
||||
if (typeof treeController.recipient != 'undefined' && treeController.recipient.length > 0)
|
||||
treeController.recipient.empty();
|
||||
|
||||
$(".loading_tree").show();
|
||||
showSpinner();
|
||||
|
||||
var parameters = {};
|
||||
parameters['page'] = "include/ajax/tree.ajax";
|
||||
@ -1065,7 +1059,7 @@ $tab = 'group_edition';
|
||||
data: parameters,
|
||||
success: function(data) {
|
||||
if (data.success) {
|
||||
$(".loading_tree").hide();
|
||||
hideSpinner();
|
||||
|
||||
treeController.init({
|
||||
recipient: $("div#tree-controller-recipient"),
|
||||
|
248
pandora_console/godmode/groups/tactical.php
Normal file
248
pandora_console/godmode/groups/tactical.php
Normal file
@ -0,0 +1,248 @@
|
||||
<?php
|
||||
/**
|
||||
* Group tactic view.
|
||||
*
|
||||
* @category Group Tactic View
|
||||
* @package Pandora FMS
|
||||
* @subpackage Opensource
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
global $config;
|
||||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'AR')) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
'Trying to access Tactical View Group'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$id_group = get_parameter('id_group', '');
|
||||
if (empty($id_group) === true) {
|
||||
return;
|
||||
}
|
||||
|
||||
$user_groups_acl = users_get_groups(false, 'AR');
|
||||
if (in_array(groups_get_name($id_group), $user_groups_acl) === false) {
|
||||
db_pandora_audit(
|
||||
AUDIT_LOG_ACL_VIOLATION,
|
||||
'Trying to access Tactical View Group'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
// Header.
|
||||
ui_print_standard_header(
|
||||
__(groups_get_name($id_group)),
|
||||
'images/group.png',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Monitoring'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Tactic group'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
ui_require_css_file('tactical_groups');
|
||||
ui_require_javascript_file('tactical_groups');
|
||||
$groups = groups_get_children($id_group);
|
||||
$id_groups = [];
|
||||
if (count($groups) > 0) {
|
||||
foreach ($groups as $key => $value) {
|
||||
$id_groups[] = $value['id_grupo'];
|
||||
}
|
||||
} else {
|
||||
$id_groups[] = $id_group;
|
||||
}
|
||||
|
||||
|
||||
echo '<div id="tactic_view">';
|
||||
echo '<table style="width: 100%;">';
|
||||
echo '<tr>';
|
||||
echo '<td class="tactical_group_left_column">';
|
||||
$table_col1 = new stdClass();
|
||||
$table_col1->class = 'no-class';
|
||||
$table_col1->data = [];
|
||||
$table_col1->rowclass[] = '';
|
||||
$table_col1->headstyle[0] = 'text-align:center;';
|
||||
$table_col1->width = '100%';
|
||||
$table_col1->data[0][0] = groups_get_heat_map_agents($id_groups, 450, 100);
|
||||
$table_col1->data[1][0] = tactical_groups_get_agents_and_monitoring($id_groups);
|
||||
|
||||
$distribution_by_so = '<table cellpadding=0 cellspacing=0 class="databox pies graph-distribution-so" width=100%><tr><td style="width:50%;">';
|
||||
$distribution_by_so .= '<fieldset class="padding-0 databox tactical_set" id="distribution_by_so_graph">';
|
||||
$distribution_by_so .= '<legend>'.__('Distribution by os').'</legend>';
|
||||
$distribution_by_so .= html_print_image('images/spinner.gif', true, ['id' => 'spinner_distribution_by_so_graph']);
|
||||
$distribution_by_so .= '</fieldset>';
|
||||
$distribution_by_so .= '</td></tr></table>';
|
||||
|
||||
|
||||
$table_col1->data[2][0] = $distribution_by_so;
|
||||
|
||||
|
||||
ui_toggle(
|
||||
html_print_table($table_col1, true),
|
||||
__('Monitoring'),
|
||||
'',
|
||||
'',
|
||||
false,
|
||||
false
|
||||
);
|
||||
|
||||
echo '</td>';
|
||||
echo '<td class="tactical_group_left_column">';
|
||||
$table_col2 = new stdClass();
|
||||
$table_col2->class = 'no-class';
|
||||
$table_col2->data = [];
|
||||
$table_col2->rowclass[] = '';
|
||||
$table_col2->headstyle[0] = 'text-align:center;';
|
||||
$table_col2->width = '100%';
|
||||
$table_col2->data[0][0] = tactical_groups_get_stats_alerts($id_groups);
|
||||
$table_col2->data[1][0] = groups_get_stats_modules_status($id_groups);
|
||||
|
||||
$events_by_agents_group = '<table cellpadding=0 cellspacing=0 class="databox pies mrgn_top_15px" width=100%><tr><td style="width:50%;">';
|
||||
$events_by_agents_group .= '<fieldset class="padding-0 databox tactical_set" id="events_by_agents_group_graph">';
|
||||
$events_by_agents_group .= '<legend>'.__('Events by agent').'</legend>';
|
||||
$events_by_agents_group .= html_print_image('images/spinner.gif', true, ['id' => 'spinner_events_by_agents_group_graph']);
|
||||
$events_by_agents_group .= '</fieldset>';
|
||||
$events_by_agents_group .= '</td></tr></table>';
|
||||
|
||||
|
||||
$table_col2->data[2][0] = $events_by_agents_group;
|
||||
ui_toggle(
|
||||
html_print_table($table_col2, true),
|
||||
__('Alerts and events'),
|
||||
'',
|
||||
'',
|
||||
false,
|
||||
false
|
||||
);
|
||||
echo '</td>';
|
||||
echo '<td class="tactical_group_right_column">';
|
||||
$table_col3 = new stdClass();
|
||||
$table_col3->class = 'no-class';
|
||||
$table_col3->data = [];
|
||||
$table_col3->rowclass[] = '';
|
||||
$table_col3->headstyle[0] = 'text-align:center;';
|
||||
$table_col3->width = '100%';
|
||||
|
||||
try {
|
||||
$columns = [
|
||||
'alias',
|
||||
'status',
|
||||
'alerts',
|
||||
'ultimo_contacto_remoto',
|
||||
];
|
||||
|
||||
$columnNames = [
|
||||
__('Alias'),
|
||||
__('Status'),
|
||||
__('Alerts'),
|
||||
__('Ultimo contacto remoto'),
|
||||
];
|
||||
|
||||
// Load datatables user interface.
|
||||
$table_col3->data[3][0] = ui_print_datatable(
|
||||
[
|
||||
'id' => 'list_agents_tactical',
|
||||
'class' => 'info_table',
|
||||
'style' => 'width: 100%',
|
||||
'columns' => $columns,
|
||||
'column_names' => $columnNames,
|
||||
'return' => true,
|
||||
'ajax_url' => 'include/ajax/group',
|
||||
'ajax_data' => [
|
||||
'method' => 'getAgentsByGroup',
|
||||
'id_group' => $id_group,
|
||||
],
|
||||
'no_sortable_columns' => [-1],
|
||||
'order' => [
|
||||
'field' => 'alias',
|
||||
'direction' => 'asc',
|
||||
],
|
||||
]
|
||||
);
|
||||
} catch (Exception $e) {
|
||||
echo $e->getMessage();
|
||||
}
|
||||
|
||||
ui_toggle(
|
||||
html_print_table($table_col3, true),
|
||||
__('Agents'),
|
||||
'',
|
||||
'',
|
||||
false,
|
||||
false
|
||||
);
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
echo '</table>';
|
||||
echo '<div id="modal-info-agent"></div>'
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
var parameters = {};
|
||||
parameters["page"] = "include/ajax/group";
|
||||
parameters["method"] = 'distributionBySoGraph';
|
||||
parameters["id_group"] = <?php echo $id_group; ?>;
|
||||
|
||||
$.ajax({type: "GET",url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",data: parameters,
|
||||
success: function(data) {
|
||||
$("#spinner_distribution_by_so_graph").hide();
|
||||
$("#distribution_by_so_graph").append(data);
|
||||
}
|
||||
});
|
||||
|
||||
parameters["method"] = 'groupEventsByAgent';
|
||||
$.ajax({type: "GET",url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",data: parameters,
|
||||
success: function(data) {
|
||||
$("#spinner_events_by_agents_group_graph").hide();
|
||||
$("#events_by_agents_group_graph").append(data);
|
||||
const canvas = $('#events_by_agents_group_graph canvas')[0];
|
||||
canvas.addEventListener('click', function(event) {
|
||||
var middle_canvas = $('#events_by_agents_group_graph canvas').width() / 2;
|
||||
if(event.layerX < middle_canvas){
|
||||
window.location.replace("index.php?sec=eventos&sec2=operation/events/events&filter[id_group_filter]=<?php echo $id_group; ?>")
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
@ -332,14 +332,16 @@ if ($result === false) {
|
||||
|
||||
if ($management_allowed === true) {
|
||||
// Update module.
|
||||
$data[4] = '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules_form&id_module_inventory='.$row['id_module_inventory'].'">';
|
||||
$data[4] .= html_print_image('images/config.png', true, ['border' => '0', 'title' => __('Update'), 'class' => 'invert_filter']).'</b></a>';
|
||||
$data[4] = '<div class="table_action_buttons">';
|
||||
$data[4] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules_form&id_module_inventory='.$row['id_module_inventory'].'">';
|
||||
$data[4] .= html_print_image('images/edit.svg', true, ['border' => '0', 'title' => __('Update'), 'class' => 'main_menu_icon invert_filter']).'</b></a>';
|
||||
|
||||
// Delete module.
|
||||
$data[4] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules&delete_inventory_module='.$row['id_module_inventory'].'" onClick="if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$data[4] .= html_print_image('images/cross.png', true, ['border' => '0', 'title' => __('Delete'), 'class' => 'invert_filter']);
|
||||
$data[4] .= html_print_image('images/delete.svg', true, ['border' => '0', 'title' => __('Delete'), 'class' => 'main_menu_icon invert_filter']);
|
||||
$data[4] .= '</b></a> ';
|
||||
$data[4] .= html_print_checkbox_extended('delete_multiple[]', $row['id_module_inventory'], false, false, '', 'class="check_delete"', true);
|
||||
$data[4] .= '</div>';
|
||||
}
|
||||
|
||||
array_push($table->data, $data);
|
||||
@ -349,22 +351,50 @@ if ($result === false) {
|
||||
html_print_input_hidden('multiple_delete', 1);
|
||||
html_print_table($table);
|
||||
echo '</form>';
|
||||
$tablePagination = ui_pagination($total_modules, 'index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules', $offset, 0, true, 'offset', false);
|
||||
|
||||
$actionButtons = [];
|
||||
echo '<form id="form_create" method="post" action="index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules_form">';
|
||||
echo html_print_input_hidden('create_module_inventory', 1);
|
||||
echo '<form>';
|
||||
|
||||
$tablePagination = ui_pagination(
|
||||
$total_modules,
|
||||
'index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules',
|
||||
$offset,
|
||||
0,
|
||||
true,
|
||||
'offset',
|
||||
false
|
||||
);
|
||||
|
||||
$actionButtons = '';
|
||||
|
||||
if ($management_allowed === true) {
|
||||
$actionButtons[] = html_print_submit_button(__('Delete'), 'delete_btn', false, ['icon' => 'delete', 'mode' => 'secondary', 'form' => 'form_delete'], true);
|
||||
$actionButtons[] = html_print_submit_button(__('Create'), 'crt', false, ['icon' => 'wand', 'form' => 'form_create'], true);
|
||||
$actionButtons .= html_print_submit_button(
|
||||
__('Create'),
|
||||
'crt',
|
||||
false,
|
||||
[
|
||||
'icon' => 'wand',
|
||||
'form' => 'form_create',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
$actionButtons[] = '<form id="form_create" method="post" action="index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules_form">';
|
||||
$actionButtons[] = html_print_input_hidden('create_module_inventory', 1, true);
|
||||
$actionButtons[] = '<form>';
|
||||
$actionButtons .= html_print_submit_button(
|
||||
__('Delete'),
|
||||
'delete_btn',
|
||||
false,
|
||||
[
|
||||
'icon' => 'delete',
|
||||
'mode' => 'secondary',
|
||||
'form' => 'form_delete',
|
||||
],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
html_print_action_buttons(
|
||||
implode('', $actionButtons),
|
||||
$actionButtons,
|
||||
[
|
||||
'type' => 'form_action',
|
||||
'right_content' => $tablePagination,
|
||||
|
@ -26,22 +26,32 @@ if (! check_acl($config['id_user'], 0, 'PM') && ! check_acl($config['id_user'],
|
||||
|
||||
|
||||
// Header
|
||||
if (defined('METACONSOLE')) {
|
||||
if (is_metaconsole() === true) {
|
||||
$sec = 'advanced';
|
||||
enterprise_include_once('meta/include/functions_components_meta.php');
|
||||
components_meta_print_header();
|
||||
} else {
|
||||
$sec = 'gmodules';
|
||||
ui_print_page_header(
|
||||
__('Module management').' » '.__('Inventory modules'),
|
||||
ui_print_standard_header(
|
||||
__('Module management'),
|
||||
'images/op_inventory.png',
|
||||
false,
|
||||
'',
|
||||
true
|
||||
true,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Configuration'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Inventory modules'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
// Header
|
||||
$is_windows = strtoupper(substr(PHP_OS, 0, 3)) == 'WIN';
|
||||
if ($is_windows) {
|
||||
ui_print_error_message(__('Not supported in Windows systems'));
|
||||
@ -95,16 +105,40 @@ if ($id_os == null) {
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
$table->class = 'databox filter-table-adv';
|
||||
$table->style = [];
|
||||
$table->style[0] = 'font-weight: bold';
|
||||
$table->style[0] = 'width: 50%';
|
||||
$table->style[1] = 'width: 50%';
|
||||
$table->data = [];
|
||||
$table->data[0][0] = '<strong>'.__('Name').'</strong>';
|
||||
$table->data[0][1] = html_print_input_text('name', $name, '', 45, 100, true, $disabled);
|
||||
$table->data[1][0] = '<strong>'.__('Description').'</strong>';
|
||||
$table->data[1][1] = html_print_input_text('description', $description, '', 60, 500, true);
|
||||
$table->data[2][0] = '<strong>'.__('OS').'</strong>';
|
||||
$table->data[2][1] = html_print_select_from_sql(
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Name'),
|
||||
html_print_input_text(
|
||||
'name',
|
||||
$name,
|
||||
'',
|
||||
45,
|
||||
100,
|
||||
true,
|
||||
$disabled
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Description'),
|
||||
html_print_input_text(
|
||||
'description',
|
||||
$description,
|
||||
'',
|
||||
60,
|
||||
500,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('OS'),
|
||||
html_print_select_from_sql(
|
||||
'SELECT id_os, name FROM tconfig_os ORDER BY name',
|
||||
'id_os',
|
||||
$id_os,
|
||||
@ -112,65 +146,125 @@ $table->data[2][1] = html_print_select_from_sql(
|
||||
'',
|
||||
'',
|
||||
$return = true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[3][0] = '<strong>'.__('Interpreter').'</strong>';
|
||||
$table->data[3][1] = html_print_input_text('interpreter', $interpreter, '', 25, 100, true);
|
||||
$table->data[3][1] .= ui_print_help_tip(__('Left blank for the LOCAL inventory modules'), true);
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('Interpreter'),
|
||||
html_print_input_text(
|
||||
'interpreter',
|
||||
$interpreter,
|
||||
'',
|
||||
25,
|
||||
100,
|
||||
true
|
||||
).ui_print_input_placeholder(
|
||||
__('Left blank for the LOCAL inventory modules'),
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data['block_mode'][0] = '<strong>'.__('Block Mode').'</strong>';
|
||||
$table->data['block_mode'][1] = html_print_checkbox('block_mode', 1, $block_mode, true);
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('Format'),
|
||||
html_print_input_text(
|
||||
'format',
|
||||
$data_format,
|
||||
'',
|
||||
50,
|
||||
100,
|
||||
true
|
||||
).ui_print_input_placeholder(
|
||||
__('separate fields with ').SEPARATOR_COLUMN,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[4][0] = '<strong>'.__('Format').'</strong>';
|
||||
$table->data[4][0] .= ui_print_help_tip(__('separate fields with ').SEPARATOR_COLUMN, true);
|
||||
$table->data[4][1] = html_print_input_text('format', $data_format, '', 50, 100, true);
|
||||
|
||||
$table->data[5][0] = '<strong>'.__('Script mode').'</strong>';
|
||||
$table->data[5][0] .= ui_print_help_tip(__(''), true);
|
||||
$table->data[5][1] = __('Use script');
|
||||
$table->data[5][1] .= html_print_radio_button(
|
||||
'script_mode',
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('Block Mode'),
|
||||
html_print_checkbox_switch(
|
||||
'block_mode',
|
||||
1,
|
||||
'',
|
||||
$script_mode,
|
||||
$block_mode,
|
||||
true
|
||||
).' ';
|
||||
$table->data[5][1] .= '    '.__('Use inline code');
|
||||
$table->data[5][1] .= html_print_radio_button(
|
||||
'script_mode',
|
||||
2,
|
||||
'',
|
||||
$script_mode,
|
||||
)
|
||||
);
|
||||
|
||||
$radioButtons = [];
|
||||
$radioButtons[] = html_print_radio_button('script_mode', 1, __('Script mode'), $script_mode, true);
|
||||
$radioButtons[] = html_print_radio_button('script_mode', 2, __('Use inline code'), $script_mode, true);
|
||||
|
||||
$table->data[3][] = html_print_label_input_block(
|
||||
__('Script mode'),
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'switch_radio_button',
|
||||
'content' => implode('', $radioButtons),
|
||||
],
|
||||
true
|
||||
).' ';
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[6][0] = '<strong>'.__('Script path').'</strong>';
|
||||
$table->data[6][1] = html_print_input_text('script_path', $script_path, '', 50, 1000, true);
|
||||
$table->colspan[4][0] = 2;
|
||||
|
||||
$table->data[7][0] = '<strong>'.__('Code').'</strong>';
|
||||
$table->data[7][0] .= ui_print_help_tip(__("Here is placed the script for the REMOTE inventory modules Local inventory modules don't use this field").SEPARATOR_COLUMN, true);
|
||||
$table->data[4][0] = html_print_label_input_block(
|
||||
__('Script path'),
|
||||
html_print_input_text(
|
||||
'script_path',
|
||||
$script_path,
|
||||
'',
|
||||
50,
|
||||
1000,
|
||||
true
|
||||
),
|
||||
['div_class' => 'script_path_inventory_modules']
|
||||
);
|
||||
|
||||
$table->data[7][1] = html_print_textarea('code', 25, 80, base64_decode($code), '', true);
|
||||
$table->data[4][0] .= html_print_label_input_block(
|
||||
__('Code'),
|
||||
html_print_textarea(
|
||||
'code',
|
||||
25,
|
||||
80,
|
||||
base64_decode($code),
|
||||
'',
|
||||
true
|
||||
).ui_print_input_placeholder(
|
||||
__("Here is placed the script for the REMOTE inventory modules Local inventory modules don't use this field").SEPARATOR_COLUMN,
|
||||
true
|
||||
),
|
||||
['div_class' => 'code_inventory_modules']
|
||||
);
|
||||
|
||||
echo '<form name="inventorymodule" id="inventorymodule_form" method="post"
|
||||
echo '<form name="inventorymodule" id="inventorymodule_form" class="max_floating_element_size" method="post"
|
||||
action="index.php?sec='.$sec.'&sec2=godmode/modules/manage_inventory_modules">';
|
||||
|
||||
html_print_table($table);
|
||||
if ($id_module_inventory) {
|
||||
html_print_input_hidden('update_module_inventory', 1);
|
||||
html_print_input_hidden('id_module_inventory', $id_module_inventory);
|
||||
$buttonCaption = __('Update');
|
||||
$buttonIcon = 'update';
|
||||
} else {
|
||||
html_print_input_hidden('create_module_inventory', 1);
|
||||
$buttonCaption = __('Create');
|
||||
$buttonIcon = 'wand';
|
||||
}
|
||||
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
if ($id_module_inventory) {
|
||||
html_print_submit_button(__('Update'), 'submit', false, 'class="sub next"');
|
||||
} else {
|
||||
html_print_submit_button(__('Create'), 'submit', false, 'class="sub upd"');
|
||||
}
|
||||
$actionButtons = '';
|
||||
$actionButtons = html_print_submit_button(
|
||||
$buttonCaption,
|
||||
'submit',
|
||||
false,
|
||||
['icon' => $buttonIcon],
|
||||
true
|
||||
);
|
||||
$actionButtons .= html_print_go_back_button(
|
||||
'index.php?sec=gmodules&sec2=godmode/modules/manage_inventory_modules',
|
||||
['button_class' => ''],
|
||||
true
|
||||
);
|
||||
|
||||
echo '</div>';
|
||||
html_print_action_buttons($actionButtons);
|
||||
echo '</form>';
|
||||
|
||||
?>
|
||||
@ -180,21 +274,21 @@ echo '</form>';
|
||||
var mode = <?php echo $script_mode; ?>;
|
||||
|
||||
if (mode == 1) {
|
||||
$('#table1-6').show();
|
||||
$('#table1-7').hide();
|
||||
$('.script_path_inventory_modules').show();
|
||||
$('.code_inventory_modules').hide();
|
||||
} else {
|
||||
$('#table1-7').show();
|
||||
$('#table1-6').hide();
|
||||
$('.code_inventory_modules').show();
|
||||
$('.script_path_inventory_modules').hide();
|
||||
}
|
||||
|
||||
$('input[type=radio][name=script_mode]').change(function() {
|
||||
if (this.value == 1) {
|
||||
$('#table1-6').show();
|
||||
$('#table1-7').hide();
|
||||
$('.script_path_inventory_modules').show();
|
||||
$('.code_inventory_modules').hide();
|
||||
}
|
||||
else if (this.value == 2) {
|
||||
$('#table1-7').show();
|
||||
$('#table1-6').hide();
|
||||
$('.code_inventory_modules').show();
|
||||
$('.script_path_inventory_modules').hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -615,18 +615,6 @@ $url = ui_get_url_refresh(
|
||||
true,
|
||||
false
|
||||
);
|
||||
$name_url = 'index.php?sec=templates&sec2=godmode/modules/manage_network_components';
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
|
||||
$table->style = [];
|
||||
$table->style[0] = 'font-weight: bold';
|
||||
$table->style[2] = 'font-weight: bold';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][0] = __('Group');
|
||||
|
||||
$component_groups = network_components_get_groups();
|
||||
|
||||
@ -656,7 +644,20 @@ foreach ($component_groups as $component_group_key => $component_group_val) {
|
||||
}
|
||||
}
|
||||
|
||||
$table->data[0][1] = html_print_select(
|
||||
$name_url = 'index.php?sec=templates&sec2=godmode/modules/manage_network_components';
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'filter-table-adv';
|
||||
|
||||
$table->style = [];
|
||||
$table->style[0] = 'font-weight: bold';
|
||||
$table->style[2] = 'font-weight: bold';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select(
|
||||
$component_groups,
|
||||
'search_id_group',
|
||||
$search_id_group,
|
||||
@ -665,45 +666,59 @@ $table->data[0][1] = html_print_select(
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'width: 100%'
|
||||
)
|
||||
);
|
||||
$table->data[0][2] = __('Free Search').ui_print_help_tip(
|
||||
__('Search by name, description, tcp send or tcp rcv, list matches.'),
|
||||
true
|
||||
);
|
||||
$table->data[0][3] = html_print_input_text(
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Free Search'),
|
||||
html_print_input_text(
|
||||
'search_string',
|
||||
$search_string,
|
||||
'',
|
||||
25,
|
||||
255,
|
||||
true
|
||||
).ui_print_input_placeholder(
|
||||
__('Search by name, description, tcp send or tcp rcv, list matches.'),
|
||||
true
|
||||
)
|
||||
);
|
||||
if (is_metaconsole() === true) {
|
||||
$table->data[0][4] = '<div>';
|
||||
} else {
|
||||
$table->data[0][4] = '<div class="action-buttons">';
|
||||
}
|
||||
|
||||
$table->data[0][4] .= html_print_submit_button(
|
||||
__('Search'),
|
||||
$toggleFilters = '<form class="filters_form" method="POST" action="'.$url.'">';
|
||||
$toggleFilters .= html_print_table($table, true);
|
||||
$toggleFilters .= html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons-right-forced',
|
||||
'content' => html_print_submit_button(
|
||||
__('Filter'),
|
||||
'search',
|
||||
false,
|
||||
'class="sub search"',
|
||||
[
|
||||
'icon' => 'search',
|
||||
'mode' => 'mini',
|
||||
],
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
$table->data[0][4] .= '</div>';
|
||||
$toggleFilters .= '</form>';
|
||||
|
||||
if (is_metaconsole() === true) {
|
||||
$filter = '<form class="filters_form" method="post" action="'.$url.'">';
|
||||
$filter .= html_print_table($table, true);
|
||||
$filter .= '</form>';
|
||||
ui_toggle($filter, __('Show Options'));
|
||||
} else {
|
||||
echo '<form method="post" action="'.$url.'">';
|
||||
html_print_table($table);
|
||||
echo '</form>';
|
||||
}
|
||||
ui_toggle(
|
||||
$toggleFilters,
|
||||
'<span class="subsection_header_title">'.__('Filters').'</span>',
|
||||
'filter_form',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
'white-box-content',
|
||||
'box-flat white_table_graph fixed_filter_bar'
|
||||
);
|
||||
|
||||
$filter = [];
|
||||
if ($search_id_group) {
|
||||
@ -721,7 +736,6 @@ $total_components = network_components_get_network_components(
|
||||
);
|
||||
$total_components = $total_components[0]['total'];
|
||||
$offset_delete = ($offset >= ($total_components - 1)) ? ($offset - $config['block_size']) : $offset;
|
||||
ui_pagination($total_components, $name_url);
|
||||
$filter['offset'] = (int) get_parameter('offset');
|
||||
$filter['limit'] = (int) $config['block_size'];
|
||||
$components = network_components_get_network_components(
|
||||
@ -935,30 +949,20 @@ html_print_action_buttons(
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$( document ).ready(function() {
|
||||
$('[id^=checkbox-delete_multiple]').change(function(){
|
||||
if($(this).parent().parent().hasClass('checkselected')){
|
||||
$(this).parent().parent().removeClass('checkselected');
|
||||
}
|
||||
else{
|
||||
$(this).parent().parent().addClass('checkselected');
|
||||
$('[id^=checkbox-delete_multiple]').click(function(){
|
||||
if($(this).prop("checked") === false ){
|
||||
$(this).prop("checked", false);
|
||||
} else {
|
||||
$(this).prop("checked", true);
|
||||
}
|
||||
});
|
||||
|
||||
$('[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);
|
||||
$('#checkbox-all_delete').click(function(){
|
||||
if ($("#checkbox-all_delete").prop("checked") === true) {
|
||||
$("[id^=checkbox-delete_multiple]").prop("checked", true);
|
||||
}
|
||||
else{
|
||||
$('[id^=checkbox-delete_multiple]')
|
||||
.parent()
|
||||
.parent()
|
||||
.removeClass('checkselected');
|
||||
$(".check_delete").prop("checked", false);
|
||||
$("[id^=checkbox-delete_multiple]").prop("checked", false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -366,26 +366,30 @@ if (is_metaconsole() === true) {
|
||||
|
||||
html_print_table($table);
|
||||
|
||||
html_print_input_hidden('id_component_type', $id_component_type);
|
||||
$buttons = html_print_input_hidden('id_component_type', $id_component_type);
|
||||
if ($id) {
|
||||
html_print_input_hidden('update_component', 1);
|
||||
html_print_input_hidden('id', $id);
|
||||
$buttons .= html_print_input_hidden('update_component', 1, true);
|
||||
$buttons .= html_print_input_hidden('id', $id, true);
|
||||
$buttonCaption = __('Update');
|
||||
$buttonIcon = 'update';
|
||||
$buttonName = 'upd';
|
||||
html_print_submit_button(__('Update'), 'upd', false, 'class="sub upd"');
|
||||
} else {
|
||||
html_print_input_hidden('create_component', 1);
|
||||
html_print_input_hidden('create_network_from_module', 0);
|
||||
$buttons .= html_print_input_hidden('create_component', 1, true);
|
||||
$buttons .= html_print_input_hidden('create_network_from_module', 0, true);
|
||||
$buttonCaption = __('Create');
|
||||
$buttonIcon = 'wand';
|
||||
$buttonName = 'crt';
|
||||
}
|
||||
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons',
|
||||
'content' => html_print_button(
|
||||
$buttons .= html_print_submit_button(
|
||||
$buttonCaption,
|
||||
$buttonName,
|
||||
false,
|
||||
['icon' => $buttonIcon],
|
||||
true
|
||||
);
|
||||
|
||||
$buttons .= html_print_button(
|
||||
__('Go back'),
|
||||
'go_back',
|
||||
false,
|
||||
@ -395,14 +399,10 @@ html_print_div(
|
||||
'mode' => 'secondary',
|
||||
],
|
||||
true
|
||||
).html_print_submit_button(
|
||||
$buttonCaption,
|
||||
$buttonName,
|
||||
false,
|
||||
['icon' => $buttonIcon],
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
|
||||
html_print_action_buttons(
|
||||
$buttons
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
|
@ -496,7 +496,7 @@ if ($edit_container) {
|
||||
$single_table .= "<td id='row_type_graphs' width='30%'>";
|
||||
$single_table .= html_print_label_input_block(
|
||||
__('Type of graph'),
|
||||
html_print_select($type_graphs, 'simple_type_graph', '', '', '', 0, true)
|
||||
html_print_select($type_graphs, 'simple_type_graph2', '', '', '', 0, true, false, true, '', false, 'width:100%')
|
||||
);
|
||||
$single_table .= '</td>';
|
||||
|
||||
@ -543,21 +543,22 @@ if ($edit_container) {
|
||||
$table->width = '100%';
|
||||
$table->cellspacing = 4;
|
||||
$table->cellpadding = 4;
|
||||
$table->class = 'dat';
|
||||
$table->class = 'filter-table-adv';
|
||||
|
||||
$table->styleTable = 'font-weight: bold;';
|
||||
$table->style[0] = 'width: 13%';
|
||||
$table->data = [];
|
||||
$table->size[0] = '30%';
|
||||
$table->size[1] = '30%';
|
||||
$table->size[2] = '30%';
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Time lapse');
|
||||
$data[0] .= ui_print_help_tip(__('This is the interval or period of time with which the graph data will be obtained. For example, a week means data from a week ago from now. '), true);
|
||||
$data[1] = html_print_extended_select_for_time('period_custom', $period, '', '', '0', 10, true, false, true, '', false, $periods);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Custom graph');
|
||||
$table->data[0][0] = html_print_label_input_block(
|
||||
__('Time lapse').ui_print_help_tip(
|
||||
__('This is the interval or period of time with which the graph data will be obtained. For example, a week means data from a week ago from now. '),
|
||||
true
|
||||
),
|
||||
html_print_extended_select_for_time('period_custom', $period, '', '', '0', 10, true, 'width:100%', true, '', false, $periods)
|
||||
);
|
||||
|
||||
$list_custom_graphs = custom_graphs_get_user($config['id_user'], false, true, 'RR');
|
||||
|
||||
@ -566,29 +567,45 @@ if ($edit_container) {
|
||||
$graphs[$custom_graph['id_graph']] = $custom_graph['name'];
|
||||
}
|
||||
|
||||
$data[1] = html_print_select($graphs, 'id_custom_graph', $idCustomGraph, '', __('None'), 0, true);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$table->data[0][1] = html_print_label_input_block(
|
||||
__('Custom graph'),
|
||||
html_print_select($graphs, 'id_custom_graph', $idCustomGraph, '', __('None'), 0, true, '', true, '', false, 'width:100%')
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Show full scale graph (TIP)').ui_print_help_tip('This option may cause performance issues', true);
|
||||
$data[1] = html_print_checkbox('fullscale_2', 1, false, true);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$table->data[0][2] = html_print_label_input_block(
|
||||
__('Show full scale graph (TIP)').ui_print_help_tip('This option may cause performance issues', true),
|
||||
html_print_checkbox('fullscale_2', 1, false, true)
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$data[0] = '';
|
||||
$data[1] = "<input style='float:right;' type=submit name='add_custom' class='sub add' value='".__('Add item')."'>";
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$data_toggle = html_print_table($table, true);
|
||||
$data_toggle .= html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons-right-forced mrgn_right_10px',
|
||||
'content' => html_print_submit_button(
|
||||
__('Add item'),
|
||||
'add_custom',
|
||||
false,
|
||||
[
|
||||
'mode' => 'mini',
|
||||
'icon' => 'next',
|
||||
],
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
echo "<table width='100%' cellpadding=4 cellspacing=4 class='databox filters'>";
|
||||
echo '<tr>';
|
||||
echo '<td>';
|
||||
echo ui_toggle(html_print_table($table, true), 'Custom graph', '', '', true);
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
echo '</table>';
|
||||
ui_toggle(
|
||||
$data_toggle,
|
||||
'<span class="subsection_header_title">'.__('Custom graph').'</span>',
|
||||
'container',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
'white-box-content',
|
||||
'box-flat white_table_graph'
|
||||
);
|
||||
|
||||
unset($table);
|
||||
|
||||
@ -597,55 +614,59 @@ if ($edit_container) {
|
||||
$table->width = '100%';
|
||||
$table->cellspacing = 4;
|
||||
$table->cellpadding = 4;
|
||||
$table->class = 'dat';
|
||||
$table->class = 'filter-table-adv';
|
||||
|
||||
$table->styleTable = 'font-weight: bold;';
|
||||
$table->style[0] = 'width: 13%';
|
||||
$table->data = [];
|
||||
$table->size[0] = '30%';
|
||||
$table->size[1] = '30%';
|
||||
$table->size[2] = '30%';
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Time lapse');
|
||||
$data[0] .= ui_print_help_tip(__('This is the interval or period of time with which the graph data will be obtained. For example, a week means data from a week ago from now. '), true);
|
||||
$data[1] = html_print_extended_select_for_time('period_dynamic', $period, '', '', '0', 10, true, false, true, '', false, $periods);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Group');
|
||||
$data[1] = '<div class="w250px">'.html_print_select_groups($config['id_user'], 'RW', $return_all_groups, 'container_id_group', $id_group, '', '', '', true).'</div>';
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$table->data[0][0] = html_print_label_input_block(
|
||||
__('Time lapse').ui_print_help_tip(
|
||||
__('This is the interval or period of time with which the graph data will be obtained. For example, a week means data from a week ago from now. '),
|
||||
true
|
||||
),
|
||||
html_print_extended_select_for_time('period_custom', $period, '', '', '0', 10, true, 'width:100%', true, '', false, $periods)
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Module group');
|
||||
$data[1] = html_print_select_from_sql(
|
||||
$table->data[0][1] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups($config['id_user'], 'RW', $return_all_groups, 'container_id_group', $id_group, '', '', '', true)
|
||||
);
|
||||
|
||||
$table->data[0][2] = html_print_label_input_block(
|
||||
__('Module group'),
|
||||
html_print_select_from_sql(
|
||||
'SELECT * FROM tmodule_group ORDER BY name',
|
||||
'combo_modulegroup',
|
||||
$modulegroup,
|
||||
'',
|
||||
__('All'),
|
||||
false,
|
||||
true
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
'width:100%'
|
||||
)
|
||||
);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Agent');
|
||||
$data[1] = html_print_input_text('text_agent', $textAgent, '', 30, 100, true);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$table->data[1][0] = html_print_label_input_block(
|
||||
__('Agent'),
|
||||
html_print_input_text('text_agent', $textAgent, '', 30, 100, true)
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Module');
|
||||
$data[1] = html_print_input_text('text_agent_module', $textModule, '', 30, 100, true);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$table->data[1][1] = html_print_label_input_block(
|
||||
__('Module'),
|
||||
html_print_input_text('text_agent_module', $textModule, '', 30, 100, true)
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Tag');
|
||||
$select_tags = tags_search_tag(false, false, true);
|
||||
$data[1] = html_print_select(
|
||||
$table->data[1][2] = html_print_label_input_block(
|
||||
__('Tag'),
|
||||
html_print_select(
|
||||
$select_tags,
|
||||
'tag',
|
||||
$tag,
|
||||
@ -654,36 +675,52 @@ if ($edit_container) {
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'width:100%'
|
||||
)
|
||||
);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Type of graph');
|
||||
$data[1] = html_print_select($type_graphs, 'simple_type_graph2', '', '', '', 0, true);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$table->data[2][0] = html_print_label_input_block(
|
||||
__('Type of graph'),
|
||||
html_print_select($type_graphs, 'simple_type_graph2', '', '', '', 0, true, false, true, '', false, 'width:100%')
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$data[0] = __('Show full scale graph (TIP)').ui_print_help_tip('This option may cause performance issues', true);
|
||||
$data[1] = html_print_checkbox('fullscale_3', 1, false, true);
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$table->data[2][1] = html_print_label_input_block(
|
||||
__('Show full scale graph (TIP)').ui_print_help_tip('This option may cause performance issues', true),
|
||||
html_print_checkbox('fullscale_3', 1, false, true)
|
||||
);
|
||||
|
||||
$data = [];
|
||||
$data[0] = '';
|
||||
$data[1] = "<input style='float:right;' type=submit name='add_dynamic' class='sub add' value='".__('Add item')."'>";
|
||||
$table->data[] = $data;
|
||||
$table->rowclass[] = '';
|
||||
$data_toggle = html_print_table($table, true);
|
||||
$data_toggle .= html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons-right-forced mrgn_right_10px',
|
||||
'content' => html_print_submit_button(
|
||||
__('Add item'),
|
||||
'add_dynamic',
|
||||
false,
|
||||
[
|
||||
'mode' => 'mini',
|
||||
'icon' => 'next',
|
||||
],
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
echo "<table width='100%' cellpadding=4 cellspacing=4 class='databox filters'>";
|
||||
echo '<tr>';
|
||||
echo '<td>';
|
||||
echo ui_toggle(html_print_table($table, true), 'Dynamic rules for simple module graph', '', '', true);
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
echo '</table>';
|
||||
ui_toggle(
|
||||
$data_toggle,
|
||||
'<span class="subsection_header_title">'.__('Dynamic rules for simple module graph').'</span>',
|
||||
'container',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
'white-box-content',
|
||||
'box-flat white_table_graph'
|
||||
);
|
||||
|
||||
if ((bool) $id_container !== false) {
|
||||
$total_item = db_get_all_rows_sql('SELECT count(*) FROM tcontainer_item WHERE id_container = '.$id_container);
|
||||
@ -696,7 +733,7 @@ if ($edit_container) {
|
||||
ui_pagination($total_item[0]['count(*)'], false, $offset, 10);
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox data';
|
||||
$table->class = 'info_table';
|
||||
$table->id = 'item_table';
|
||||
$table->align = [];
|
||||
$table->head = [];
|
||||
@ -710,7 +747,7 @@ if ($edit_container) {
|
||||
$table->head[7] = __('Delete');
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$i = 0;
|
||||
|
||||
foreach ($result_item as $item) {
|
||||
$data = [];
|
||||
@ -759,6 +796,8 @@ if ($edit_container) {
|
||||
break;
|
||||
}
|
||||
|
||||
$table->cellclass[$i][7] = 'table_action_buttons';
|
||||
$i++;
|
||||
$data[7] = '<a href="index.php?sec=reporting&sec2=godmode/reporting/create_container&edit_container=1&delete_item=1&id_item='.$item['id_ci'].'&id='.$id_container.'" onClick="if (!confirm(\''.__('Are you sure?').'\'))
|
||||
return false;">'.html_print_image('images/delete.svg', true, ['alt' => __('Delete'), 'title' => __('Delete'), 'class' => 'invert_filter main_menu_icon']).'</a>';
|
||||
|
||||
@ -801,7 +840,7 @@ echo html_print_input_hidden('id_agent', 0);
|
||||
}
|
||||
});
|
||||
|
||||
$("input[name=add_custom]").click (function () {
|
||||
$("#button-add_custom").click (function () {
|
||||
var id_custom = $("#id_custom_graph").val();
|
||||
var fullscale = $("#checkbox-fullscale_2").prop("checked");
|
||||
if (id_custom !== '0'){
|
||||
@ -824,7 +863,7 @@ echo html_print_input_hidden('id_agent', 0);
|
||||
}
|
||||
});
|
||||
|
||||
$("input[name=add_dynamic]").click (function () {
|
||||
$("#button-add_dynamic").click (function () {
|
||||
var agent_alias = $("#text-text_agent").val();
|
||||
var module_name = $("#text-text_agent_module").val();
|
||||
var time_lapse = $("#hidden-period_dynamic").attr('value');
|
||||
|
@ -129,11 +129,22 @@ $container = folder_get_folders();
|
||||
$tree = folder_get_folders_tree_recursive($container);
|
||||
echo folder_togge_tree_folders($tree);
|
||||
if ($report_r && $report_w) {
|
||||
echo "<div class='right'>";
|
||||
echo '<form method="post" class="right" action="index.php?sec=reporting&sec2=godmode/reporting/create_container">';
|
||||
html_print_submit_button(__('Create container'), 'create', false, 'class="sub next mrgn_right_5px mrgn_top_15px"');
|
||||
echo '</form>';
|
||||
echo '</div>';
|
||||
$ActionButtons[] = '<form method="post" class="right" action="index.php?sec=reporting&sec2=godmode/reporting/create_container">';
|
||||
$ActionButtons[] = '<div class="action-buttons">';
|
||||
$ActionButtons[] = html_print_submit_button(
|
||||
__('Create container'),
|
||||
'create',
|
||||
false,
|
||||
[
|
||||
'class' => 'sub ok submitButton',
|
||||
'icon' => 'next',
|
||||
],
|
||||
true
|
||||
);
|
||||
$ActionButtons[] = '</div>';
|
||||
$ActionButtons[] = '</form>';
|
||||
|
||||
html_print_action_buttons(implode('', $ActionButtons), ['type' => 'form_action']);
|
||||
}
|
||||
?>
|
||||
|
||||
|
@ -2229,7 +2229,7 @@ $class = 'databox filters';
|
||||
|
||||
<tr id="row_custom_graph" class="datos">
|
||||
<td class="bolder"><?php echo __('Custom graph'); ?></td>
|
||||
<td >
|
||||
<td class="toolbox-buttons">
|
||||
<?php
|
||||
if ($meta) {
|
||||
$graphs = [];
|
||||
@ -2303,21 +2303,38 @@ $class = 'databox filters';
|
||||
}
|
||||
}
|
||||
|
||||
echo ' ';
|
||||
if (!empty($style_button_create_custom_graph)) {
|
||||
$style_create = [
|
||||
'mode' => 'link',
|
||||
'style' => 'display:none',
|
||||
];
|
||||
} else {
|
||||
$style_create = [ 'mode' => 'link' ];
|
||||
}
|
||||
|
||||
if (!empty($style_button_edit_custom_graph)) {
|
||||
$style_edit = [
|
||||
'mode' => 'link',
|
||||
'style' => 'display:none',
|
||||
];
|
||||
} else {
|
||||
$style_edit = [ 'mode' => 'link' ];
|
||||
}
|
||||
|
||||
html_print_button(
|
||||
__('Create'),
|
||||
'create_graph',
|
||||
false,
|
||||
'create_custom_graph();',
|
||||
'class="sub add" '.$style_button_create_custom_graph
|
||||
'create_custom_graph()',
|
||||
$style_create
|
||||
);
|
||||
|
||||
html_print_button(
|
||||
__('Edit'),
|
||||
'edit_graph',
|
||||
false,
|
||||
'edit_custom_graph();',
|
||||
'class="sub config" '.$style_button_edit_custom_graph
|
||||
'edit_custom_graph()',
|
||||
$style_edit
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
|
@ -509,11 +509,11 @@ switch ($action) {
|
||||
'list_reports' => [
|
||||
'active' => false,
|
||||
'text' => '<a href="index.php?sec=reporting&sec2=godmode/reporting/reporting_builder&pure='.$pure.'">'.html_print_image(
|
||||
'images/report_list.png',
|
||||
'images/logs@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Reports list'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
],
|
||||
|
@ -632,7 +632,7 @@ if (empty($create) === false || empty($view) === false) {
|
||||
$delete_macro_style = 'display:none;';
|
||||
}
|
||||
|
||||
$datam[2] = '<div id="delete_macro_button" style="'.$delete_macro_style.'">'.'<a href="javascript:;">'.'<span class="bolder">'.__('Delete macro').'</span>'.' '.html_print_image('images/delete.png', true, ['class' => 'invert_filter']).'</a>'.'</div>';
|
||||
$datam[2] = '<div id="delete_macro_button" style="'.$delete_macro_style.'">'.'<a href="javascript:;">'.'<span class="bolder">'.__('Delete macro').'</span>'.' '.html_print_image('images/delete.svg', true, ['class' => 'main_menu_icon invert_filter']).'</a>'.'</div>';
|
||||
|
||||
$table->colspan['plugin_action'][0] = 2;
|
||||
$table->colspan['plugin_action'][2] = 2;
|
||||
@ -665,8 +665,10 @@ if (empty($create) === false || empty($view) === false) {
|
||||
|
||||
echo '<tr><td align="right">';
|
||||
|
||||
if ($create != '') {
|
||||
$button = html_print_submit_button(
|
||||
$buttons = '';
|
||||
|
||||
if (empty($create) === false) {
|
||||
$buttons .= html_print_submit_button(
|
||||
__('Create'),
|
||||
'crtbutton',
|
||||
false,
|
||||
@ -674,7 +676,7 @@ if (empty($create) === false || empty($view) === false) {
|
||||
true
|
||||
);
|
||||
} else {
|
||||
$button = html_print_submit_button(
|
||||
$buttons .= html_print_submit_button(
|
||||
__('Update'),
|
||||
'uptbutton',
|
||||
false,
|
||||
@ -683,8 +685,14 @@ if (empty($create) === false || empty($view) === false) {
|
||||
);
|
||||
}
|
||||
|
||||
$buttons .= html_print_go_back_button(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/plugin',
|
||||
['button_class' => ''],
|
||||
true
|
||||
);
|
||||
|
||||
html_print_action_buttons(
|
||||
$button
|
||||
$buttons
|
||||
);
|
||||
|
||||
echo '</form></table>';
|
||||
|
@ -1283,7 +1283,7 @@ if (check_login()) {
|
||||
$linkCaption,
|
||||
'additional_action_for_'.$idAgenteModulo,
|
||||
false,
|
||||
'window.location.assign(\'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&id_agente_modulo='.$module['id_agente_modulo'].'&refr=60'.$addedLinkParams.'\')',
|
||||
'window.location.assign("index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&id_agente_modulo='.$module['id_agente_modulo'].'&refr=60'.$addedLinkParams.'")',
|
||||
[
|
||||
'mode' => 'link',
|
||||
'style' => 'justify-content: flex-end;',
|
||||
@ -1300,7 +1300,7 @@ if (check_login()) {
|
||||
__('Edit'),
|
||||
'edit_module_'.$idAgenteModulo,
|
||||
false,
|
||||
'window.location.assign(\'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&id_agent_module='.$module['id_agente_modulo'].'&edit_module='.$module['id_modulo'].'\')',
|
||||
'window.location.assign("index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente='.$id_agente.'&tab=module&id_agent_module='.$module['id_agente_modulo'].'&edit_module='.$module['id_modulo'].'")',
|
||||
[
|
||||
'mode' => 'link',
|
||||
'style' => 'justify-content: flex-end;',
|
||||
|
@ -1040,7 +1040,7 @@ class CalendarManager
|
||||
'id' => 'templates_alerts_special_days',
|
||||
'return' => true,
|
||||
'class' => 'info_table',
|
||||
'style' => 'width: 100%',
|
||||
'style' => 'width: 99%',
|
||||
'columns' => $columns,
|
||||
'column_names' => $column_names,
|
||||
'ajax_url' => 'godmode/alerts/alert_special_days',
|
||||
@ -1075,7 +1075,9 @@ class CalendarManager
|
||||
'name' => 'name',
|
||||
],
|
||||
],
|
||||
'class' => 'no_border',
|
||||
],
|
||||
'filter_main_class' => 'box-flat white_table_graph',
|
||||
]
|
||||
);
|
||||
} catch (Exception $e) {
|
||||
|
@ -103,42 +103,16 @@ class CredentialStore extends Wizard
|
||||
*/
|
||||
private function ajaxMsg($type, $msg, $delete=false)
|
||||
{
|
||||
$msg_err = 'Failed while saving: %s';
|
||||
$msg_ok = 'Successfully saved into keystore ';
|
||||
|
||||
if ($delete) {
|
||||
$msg_err = 'Failed while removing: %s';
|
||||
$msg_ok = 'Successfully deleted ';
|
||||
}
|
||||
|
||||
if ($type == 'error') {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_error_message(
|
||||
__(
|
||||
$msg_err,
|
||||
$msg
|
||||
),
|
||||
'',
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
if ($type === 'error') {
|
||||
$msg_title = ($delete === true) ? 'Failed while removing' : 'Failed while saving';
|
||||
} else {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_success_message(
|
||||
__(
|
||||
$msg_ok,
|
||||
$msg
|
||||
),
|
||||
'',
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
$msg_title = ($delete === true) ? 'Successfully deleted' : 'Successfully saved into keystore';
|
||||
}
|
||||
|
||||
echo json_encode(
|
||||
[ $type => __($msg_title).':<br>'.$msg ]
|
||||
);
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
@ -264,27 +264,11 @@ class ModuleTemplates extends HTML
|
||||
*/
|
||||
private function ajaxMsg($type, $msg)
|
||||
{
|
||||
if ($type == 'error') {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_error_message(
|
||||
__($msg),
|
||||
'',
|
||||
true
|
||||
),
|
||||
$type => __($msg),
|
||||
]
|
||||
);
|
||||
} else {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_success_message(
|
||||
__($msg),
|
||||
'',
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
@ -708,7 +692,7 @@ class ModuleTemplates extends HTML
|
||||
'action' => $this->baseUrl,
|
||||
'id' => 'add_module_form',
|
||||
'method' => 'POST',
|
||||
'class' => 'modal',
|
||||
'class' => 'modal filter-list-adv',
|
||||
'extra' => '',
|
||||
];
|
||||
|
||||
@ -846,10 +830,10 @@ class ModuleTemplates extends HTML
|
||||
false
|
||||
);
|
||||
// Create the table with Module Block list.
|
||||
$table = new StdClasS();
|
||||
$table = new stdClass();
|
||||
$table->class = 'databox data ';
|
||||
$table->width = '75%';
|
||||
$table->styleTable = 'margin: 2em auto 0;border: 1px solid #ddd;';
|
||||
$table->styleTable = 'border: 1px solid #ddd;';
|
||||
$table->rowid = [];
|
||||
$table->data = [];
|
||||
|
||||
@ -893,7 +877,7 @@ class ModuleTemplates extends HTML
|
||||
);
|
||||
$data[3] .= html_print_input_image(
|
||||
'export_profile',
|
||||
'images/csv.png',
|
||||
'images/file-csv.svg',
|
||||
$row['id_np'],
|
||||
'',
|
||||
true,
|
||||
@ -914,7 +898,7 @@ class ModuleTemplates extends HTML
|
||||
$data[3] .= '</a>';
|
||||
$data[3] .= '<a href="'.$this->baseUrl.'&action=export&id_np='.$row['id_np'].'" onclick="blockResubmit($(this))">';
|
||||
$data[3] .= html_print_image(
|
||||
'images/csv.png',
|
||||
'images/file-csv.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Export to CSV'),
|
||||
@ -1165,7 +1149,7 @@ class ModuleTemplates extends HTML
|
||||
|
||||
$blockComponentList = chop($blockComponentList, ',');
|
||||
// Title of Block.
|
||||
$blockTitle = '<div class="pdd_t_8px">';
|
||||
$blockTitle = '<div class="subsection_header_title">';
|
||||
$blockTitle .= $blockTable['name'];
|
||||
$blockTitle .= '<div class="white_table_header_checkbox">';
|
||||
$blockTitle .= html_print_input_image(
|
||||
@ -1186,7 +1170,7 @@ class ModuleTemplates extends HTML
|
||||
$table = new StdClasS();
|
||||
$table->class = 'databox data border_bt';
|
||||
$table->width = '75%';
|
||||
$table->styleTable = 'margin: 2em auto 0;border: 1px solid #ddd;';
|
||||
$table->styleTable = 'margin: 0; border: 1px solid #ddd;';
|
||||
$table->rowid = [];
|
||||
$table->data = [];
|
||||
|
||||
@ -1220,7 +1204,7 @@ class ModuleTemplates extends HTML
|
||||
switch ($module['id_format']) {
|
||||
case MODULE_NETWORK:
|
||||
$formatInfo = html_print_image(
|
||||
'images/network.png',
|
||||
'images/network-server@os.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Network module'),
|
||||
@ -1231,7 +1215,7 @@ class ModuleTemplates extends HTML
|
||||
|
||||
case MODULE_WMI:
|
||||
$formatInfo = html_print_image(
|
||||
'images/wmi.png',
|
||||
'images/WMI@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('WMI module'),
|
||||
@ -1242,7 +1226,7 @@ class ModuleTemplates extends HTML
|
||||
|
||||
case MODULE_PLUGIN:
|
||||
$formatInfo = html_print_image(
|
||||
'images/plugin.png',
|
||||
'images/plugins@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Plug-in module'),
|
||||
|
@ -3601,7 +3601,7 @@ class NetworkMap
|
||||
url_background_grid: url_background_grid,
|
||||
refresh_time: '.$this->mapOptions['refresh_time'].',
|
||||
font_size: '.$this->mapOptions['font_size'].',
|
||||
method: '.$this->map['generation_method'].',
|
||||
method: '.($this->map['generation_method'] ?? 3).',
|
||||
base_url_homedir: "'.ui_get_full_url(false).'"
|
||||
});
|
||||
init_drag_and_drop();
|
||||
|
@ -959,40 +959,27 @@ class SatelliteAgent extends HTML
|
||||
*/
|
||||
private function ajaxMsg($type, $msg, $delete=false, $disable=false)
|
||||
{
|
||||
$msg_err = 'Failed while saving: %s';
|
||||
$msg_ok = 'Successfully saved agent ';
|
||||
|
||||
if ($type === 'error') {
|
||||
if ($delete === true) {
|
||||
$msg_err = 'Failed while removing: %s';
|
||||
$msg_ok = 'Successfully deleted ';
|
||||
}
|
||||
|
||||
if ($disable === true) {
|
||||
$msg_err = 'Failed while disabling: %s';
|
||||
$msg_ok = 'Successfully disabled';
|
||||
}
|
||||
|
||||
if ($type == 'error') {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_error_message(
|
||||
__($msg),
|
||||
'',
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
$msg_title = 'Failed while removing';
|
||||
} else if ($disable === true) {
|
||||
$msg_title = 'Failed while disabling';
|
||||
} else {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_success_message(
|
||||
__($msg),
|
||||
'',
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
$msg_title = 'Failed while saving';
|
||||
}
|
||||
} else {
|
||||
if ($delete === true) {
|
||||
$msg_title = 'Successfully deleted';
|
||||
} else if ($disable === true) {
|
||||
$msg_title = 'Successfully disabled';
|
||||
} else {
|
||||
$msg_title = 'Successfully saved agent';
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode(
|
||||
[ $type => __($msg_title).':<br>'.$msg ]
|
||||
);
|
||||
|
||||
exit;
|
||||
}
|
||||
|
@ -475,27 +475,11 @@ class SatelliteCollection extends HTML
|
||||
*/
|
||||
private function ajaxMsg(string $type, string $msg)
|
||||
{
|
||||
if ($type === 'error') {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_error_message(
|
||||
__($msg),
|
||||
'',
|
||||
true
|
||||
),
|
||||
$type => __($msg),
|
||||
]
|
||||
);
|
||||
} else {
|
||||
echo json_encode(
|
||||
[
|
||||
$type => ui_print_success_message(
|
||||
__($msg),
|
||||
'',
|
||||
true
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
@ -183,29 +183,29 @@ class SnmpConsole extends HTML
|
||||
|
||||
if (!isset($config['pure']) || $config['pure'] === false) {
|
||||
$statistics['text'] = '<a href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_statistics&pure='.$config['pure'].'">'.html_print_image(
|
||||
'images/op_reporting.png',
|
||||
'images/logs@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Statistics'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
$list['text'] = '<a href="index.php?sec=snmpconsole&sec2=operation/snmpconsole/snmp_view&pure=0">'.html_print_image(
|
||||
'images/op_snmp.png',
|
||||
'images/SNMP-network-numeric-data@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('List'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
$list['active'] = true;
|
||||
|
||||
$screen['text'] = '<a href="#" onClick="javascript:fullscreen(1)">'.html_print_image(
|
||||
'images/full_screen.png',
|
||||
'images/fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('List'),
|
||||
'class' => 'invert_filter',
|
||||
'title' => __('View in full screen'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
|
||||
@ -242,11 +242,11 @@ class SnmpConsole extends HTML
|
||||
|
||||
echo '<a href="#" onClick="javascript:fullscreen(0)">';
|
||||
echo html_print_image(
|
||||
'images/normal_screen.png',
|
||||
'images/exit_fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Exit fullscreen'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
echo '</a>';
|
||||
@ -844,7 +844,7 @@ class SnmpConsole extends HTML
|
||||
$tmp->snmp_agent .= '<a href="index.php?sec=estado&sec2=godmode/agentes/configurar_agente&new_agent=1&direccion='.$tmp->source.'" title="'.__('Create agent').'">'.$tmp->source.'</a>';
|
||||
} else {
|
||||
$tmp->snmp_agent .= '<div class="'.$severity_class.' snmp-div"><a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$agent['id_agente'].'" title="'.__('View agent details').'">';
|
||||
$tmp->snmp_agent .= '<strong>'.$agent['alias'].ui_print_help_tip($tmp->source, true, 'images/tip.png');
|
||||
$tmp->snmp_agent .= '<strong>'.$agent['alias'].ui_print_help_tip($tmp->source, true);
|
||||
'</strong></a></div>';
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC230307';
|
||||
$build_version = 'PC230308';
|
||||
$pandora_version = 'v7.0NG.769';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
@ -316,13 +316,13 @@ function ui_toggle_container($code, $name, $title='', $hidden_default=true, $ret
|
||||
$data[0] = '<a href="javascript:" id="tgl_ctrl_'.$uniqid.'">'.html_print_image($original, true, ['title' => $title, 'id' => 'image_'.$uniqid, 'class' => 'invert_filter']).' <b>'.$name.'</b></a>';
|
||||
$data[1] = ui_print_group_icon($group, true);
|
||||
if ($report_r && $report_w) {
|
||||
$data[2] = '<a href="index.php?sec=reporting&sec2=godmode/reporting/create_container&edit_container=1&id='.$id_container.'">'.html_print_image('images/config.png', true, ['class' => 'invert_filter']).'</a>';
|
||||
$data[2] = '<a href="index.php?sec=reporting&sec2=godmode/reporting/create_container&edit_container=1&id='.$id_container.'">'.html_print_image('images/edit.svg', true, ['class' => 'invert_filter main_menu_icon']).'</a>';
|
||||
}
|
||||
|
||||
if ($report_r && $report_w && $report_m) {
|
||||
if ($id_container !== '1') {
|
||||
$data[2] .= '  '.'<a href="index.php?sec=reporting&sec2=godmode/reporting/graph_container&delete_container=1&id='.$id_container.'" onClick="if (!confirm(\''.__('Are you sure?').'\'))
|
||||
return false;">'.html_print_image('images/cross.png', true, ['alt' => __('Delete'), 'title' => __('Delete'), 'class' => 'invert_filter']).'</a>';
|
||||
return false;">'.html_print_image('images/delete.svg', true, ['alt' => __('Delete'), 'title' => __('Delete'), 'class' => 'invert_filter main_menu_icon']).'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -744,8 +744,7 @@ function filemanager_file_explorer(
|
||||
|
||||
// Actions buttons
|
||||
// Delete button.
|
||||
$data[4] = '';
|
||||
$data[4] .= '<span style="display: flex">';
|
||||
$data[4] = '<div class="table_action_buttons flex">';
|
||||
$typefile = array_pop(explode('.', $fileinfo['name']));
|
||||
if (is_writable($fileinfo['realpath']) === true
|
||||
&& (is_dir($fileinfo['realpath']) === false || count(scandir($fileinfo['realpath'])) < 3)
|
||||
@ -774,7 +773,7 @@ function filemanager_file_explorer(
|
||||
&& ($typefile !== 'iso') && ($typefile !== 'docx') && ($typefile !== 'doc') && ($fileinfo['mime'] != MIME_DIR)
|
||||
) {
|
||||
$hash = md5($fileinfo['realpath'].$config['server_unique_identifier']);
|
||||
$data[4] .= "<a style='vertical-align: top;' href='$url&edit_file=1&hash=".$hash.'&location_file='.$fileinfo['realpath']."' style='float: left;'>".html_print_image('images/edit.png', true, ['style' => 'margin-top: 2px;', 'title' => __('Edit file'), 'class' => 'invert_filter']).'</a>';
|
||||
$data[4] .= "<a style='vertical-align: top;' href='$url&edit_file=1&hash=".$hash.'&location_file='.$fileinfo['realpath']."' style='float: left;'>".html_print_image('images/edit.svg', true, ['style' => 'margin-top: 2px;', 'title' => __('Edit file'), 'class' => 'main_menu_icon invert_filter']).'</a>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -794,7 +793,7 @@ function filemanager_file_explorer(
|
||||
$data[4] .= '<a href="javascript: show_modal_real_path(`'.$fileinfo['realpath'].'`);">'.html_print_image('images/enable.svg', true, ['style' => 'margin-top: 2px;', 'title' => __('Real path'), 'class' => 'invert_filter main_menu_icon']).'</a>';
|
||||
}
|
||||
|
||||
$data[4] .= '</span>';
|
||||
$data[4] .= '</div>';
|
||||
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
@ -983,7 +982,7 @@ function filemanager_file_explorer(
|
||||
<div id='real_path'></div>";
|
||||
|
||||
if (isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'on' || $_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1') {
|
||||
$modal_real_path .= "<div style='float:right;margin: 5em 0 0 auto';>".html_print_submit_button(__('Copy'), 'submit', false, 'class="sub next"', true).'</div>';
|
||||
$modal_real_path .= "<div style='float:right;margin: 5em 0 0 auto';>".html_print_submit_button(__('Copy'), 'submit', false, ['icon' => 'wand', 'mode' => 'mini'], true).'</div>';
|
||||
}
|
||||
|
||||
html_print_div(
|
||||
@ -997,7 +996,7 @@ function filemanager_file_explorer(
|
||||
echo '</div>';
|
||||
} else {
|
||||
echo "<div style='text-align: right; width: ".$table->width."; color:#AC4444; margin-bottom:10px;'>";
|
||||
echo "<image class='invert_filter' src='images/info.png' />".__('The directory is read-only');
|
||||
echo "<image class='main_menu_icon invert_filter' src='images/info@svg.svg' />".__('The directory is read-only');
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
|
@ -5339,3 +5339,199 @@ function get_baseline_data(
|
||||
$result['agent_alias'] = $array_data[0]['sum0']['agent_alias'];
|
||||
return ['sum0' => $result];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw graph SO agents by group.
|
||||
*
|
||||
* @param [type] $id_group
|
||||
* @param integer $width
|
||||
* @param integer $height
|
||||
* @param boolean $recursive
|
||||
* @param boolean $noWaterMark
|
||||
* @return string Graph
|
||||
*/
|
||||
function graph_so_by_group($id_group, $width=300, $height=200, $recursive=true, $noWaterMark=true)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$id_groups = [$id_group];
|
||||
|
||||
if ($recursive == true) {
|
||||
$groups = groups_get_children($id_group);
|
||||
if (count($groups) > 0) {
|
||||
$id_groups = [];
|
||||
foreach ($groups as $key => $value) {
|
||||
$id_groups[] = $value['id_grupo'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT COUNT(id_agente) AS count,
|
||||
os.name
|
||||
FROM tagente a
|
||||
LEFT JOIN tconfig_os os ON a.id_os = os.id_os
|
||||
WHERE a.id_grupo IN (%s)
|
||||
GROUP BY os.id_os',
|
||||
implode(',', $id_groups)
|
||||
);
|
||||
|
||||
$result = db_get_all_rows_sql($sql, false, false);
|
||||
if ($result === false) {
|
||||
$result = [];
|
||||
}
|
||||
|
||||
$labels = [];
|
||||
$data = [];
|
||||
foreach ($result as $key => $row) {
|
||||
$labels[] = $row['name'];
|
||||
$data[] = $row['count'];
|
||||
}
|
||||
|
||||
if ($noWaterMark === true) {
|
||||
$water_mark = [
|
||||
'file' => $config['homedir'].'/images/logo_vertical_water.png',
|
||||
'url' => ui_get_full_url('images/logo_vertical_water.png', false, false, false),
|
||||
];
|
||||
} else {
|
||||
$water_mark = [];
|
||||
}
|
||||
|
||||
$options = [
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'waterMark' => $water_mark,
|
||||
'legend' => [
|
||||
'display' => true,
|
||||
'position' => 'right',
|
||||
'align' => 'center',
|
||||
],
|
||||
'labels' => $labels,
|
||||
];
|
||||
|
||||
return pie_graph(
|
||||
$data,
|
||||
$options
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw graph events by group
|
||||
*
|
||||
* @param [type] $id_group
|
||||
* @param integer $width
|
||||
* @param integer $height
|
||||
* @param boolean $noWaterMark
|
||||
* @param boolean $time_limit
|
||||
* @param boolean $recursive
|
||||
* @return string Graph
|
||||
*/
|
||||
function graph_events_agent_by_group($id_group, $width=300, $height=200, $noWaterMark=true, $time_limit=false, $recursive=true)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$data = [];
|
||||
$labels = [];
|
||||
$loop = 0;
|
||||
define('NUM_PIECES_PIE_2', 6);
|
||||
|
||||
// Add tags condition to filter.
|
||||
$tags_condition = '';
|
||||
if ($time_limit && $config['event_view_hr']) {
|
||||
$tags_condition .= ' AND utimestamp > (UNIX_TIMESTAMP(NOW()) - '.($config['event_view_hr'] * SECONDS_1HOUR).')';
|
||||
}
|
||||
|
||||
$id_groups = [$id_group];
|
||||
if ($recursive === true) {
|
||||
$groups = groups_get_children($id_group);
|
||||
if (count($groups) > 0) {
|
||||
$id_groups = [];
|
||||
foreach ($groups as $key => $value) {
|
||||
$id_groups[] = $value['id_grupo'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$filter_groups = ' AND te.id_grupo IN ('.implode(',', $id_groups).') ';
|
||||
|
||||
// This will give the distinct id_agente, give the id_grupo that goes
|
||||
// with it and then the number of times it occured. GROUP BY statement
|
||||
// is required if both DISTINCT() and COUNT() are in the statement.
|
||||
$sql = sprintf(
|
||||
'SELECT DISTINCT(id_agente) AS id_agente,
|
||||
COUNT(id_agente) AS count
|
||||
FROM tevento te
|
||||
WHERE 1=1 AND estado = 0
|
||||
%s %s
|
||||
GROUP BY id_agente
|
||||
ORDER BY count DESC LIMIT 8',
|
||||
$tags_condition,
|
||||
$filter_groups
|
||||
);
|
||||
$result = db_get_all_rows_sql($sql, false, false);
|
||||
if ($result === false) {
|
||||
$result = [];
|
||||
}
|
||||
|
||||
$system_events = 0;
|
||||
$other_events = 0;
|
||||
|
||||
foreach ($result as $row) {
|
||||
$row['id_grupo'] = agents_get_agent_group($row['id_agente']);
|
||||
if (!check_acl($config['id_user'], $row['id_grupo'], 'ER') == 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($loop >= NUM_PIECES_PIE_2) {
|
||||
$other_events += $row['count'];
|
||||
} else {
|
||||
if ($row['id_agente'] == 0) {
|
||||
$system_events += $row['count'];
|
||||
} else {
|
||||
$alias = agents_get_alias($row['id_agente']);
|
||||
$name = mb_substr($alias, 0, 25).' #'.$row['id_agente'].' ('.$row['count'].')';
|
||||
$labels[] = io_safe_output($name);
|
||||
$data[] = $row['count'];
|
||||
}
|
||||
}
|
||||
|
||||
$loop++;
|
||||
}
|
||||
|
||||
if ($system_events > 0) {
|
||||
$name = __('SYSTEM').' ('.$system_events.')';
|
||||
$labels[] = io_safe_output($name);
|
||||
$data[] = $system_events;
|
||||
}
|
||||
|
||||
// Sort the data.
|
||||
arsort($data);
|
||||
if ($noWaterMark === true) {
|
||||
$water_mark = [
|
||||
'file' => $config['homedir'].'/images/logo_vertical_water.png',
|
||||
'url' => ui_get_full_url('images/logo_vertical_water.png', false, false, false),
|
||||
];
|
||||
} else {
|
||||
$water_mark = [];
|
||||
}
|
||||
|
||||
$options = [
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'waterMark' => $water_mark,
|
||||
'legend' => [
|
||||
'display' => true,
|
||||
'position' => 'right',
|
||||
'align' => 'center',
|
||||
],
|
||||
'labels' => $labels,
|
||||
];
|
||||
|
||||
return pie_graph(
|
||||
$data,
|
||||
$options
|
||||
);
|
||||
}
|
||||
|
@ -1276,7 +1276,7 @@ function groups_get_not_init_agents($group, $agent_filter=[], $module_filter=[],
|
||||
*
|
||||
* @return integer Number of monitors.
|
||||
*/
|
||||
function groups_get_monitors_counter($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false)
|
||||
function groups_get_monitors_counter($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false, $secondary_group=true)
|
||||
{
|
||||
if (empty($group)) {
|
||||
return 0;
|
||||
@ -1291,7 +1291,11 @@ function groups_get_monitors_counter($group, $agent_filter=[], $module_filter=[]
|
||||
}
|
||||
|
||||
$group_str = implode(',', $groups);
|
||||
if ($secondary_group === true) {
|
||||
$groups_clause = "AND (ta.id_grupo IN ($group_str) OR tasg.id_group IN ($group_str))";
|
||||
} else {
|
||||
$groups_clause = "AND (ta.id_grupo IN ($group_str))";
|
||||
}
|
||||
|
||||
$tags_clause = '';
|
||||
|
||||
@ -1401,10 +1405,12 @@ function groups_get_monitors_counter($group, $agent_filter=[], $module_filter=[]
|
||||
ON tam.id_agente_modulo = tae.id_agente_modulo
|
||||
$modules_clause
|
||||
INNER JOIN tagente ta
|
||||
ON tam.id_agente = ta.id_agente
|
||||
LEFT JOIN tagent_secondary_group tasg
|
||||
ON ta.id_agente = tasg.id_agent
|
||||
AND ta.disabled = 0
|
||||
ON tam.id_agente = ta.id_agente";
|
||||
if ($secondary_group === true) {
|
||||
$sql .= ' LEFT JOIN tagent_secondary_group tasg ON ta.id_agente = tasg.id_agent';
|
||||
}
|
||||
|
||||
$sql .= "AND ta.disabled = 0
|
||||
$agent_name_filter
|
||||
$agents_clause
|
||||
WHERE tam.disabled = 0
|
||||
@ -1450,8 +1456,9 @@ function groups_get_monitors_counter($group, $agent_filter=[], $module_filter=[]
|
||||
}
|
||||
|
||||
$status_columns_str = implode(',', $status_columns_array);
|
||||
$status_columns_str_sum = implode('+', $status_columns_array);
|
||||
|
||||
$sql = "SELECT SUM($status_columns_str) FROM
|
||||
$sql = "SELECT SUM($status_columns_str_sum) FROM
|
||||
(SELECT DISTINCT(ta.id_agente), $status_columns_str
|
||||
FROM tagente ta LEFT JOIN tagent_secondary_group tasg
|
||||
ON ta.id_agente = tasg.id_agent
|
||||
@ -1486,11 +1493,11 @@ function groups_get_monitors_counter($group, $agent_filter=[], $module_filter=[]
|
||||
*
|
||||
* @return integer Number of monitors.
|
||||
*/
|
||||
function groups_get_total_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false)
|
||||
function groups_get_total_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false, $secondary_group=true)
|
||||
{
|
||||
// Always modify the module status filter
|
||||
$module_filter['status'] = AGENT_MODULE_STATUS_ALL;
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime);
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime, $secondary_group);
|
||||
}
|
||||
|
||||
|
||||
@ -1511,11 +1518,11 @@ function groups_get_total_monitors($group, $agent_filter=[], $module_filter=[],
|
||||
*
|
||||
* @return integer Number of monitors.
|
||||
*/
|
||||
function groups_get_normal_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false)
|
||||
function groups_get_normal_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false, $secondary_group=true)
|
||||
{
|
||||
// Always modify the module status filter
|
||||
$module_filter['status'] = AGENT_MODULE_STATUS_NORMAL;
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime);
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime, $secondary_group);
|
||||
}
|
||||
|
||||
|
||||
@ -1536,11 +1543,11 @@ function groups_get_normal_monitors($group, $agent_filter=[], $module_filter=[],
|
||||
*
|
||||
* @return integer Number of monitors.
|
||||
*/
|
||||
function groups_get_critical_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false)
|
||||
function groups_get_critical_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false, $secondary_group=true)
|
||||
{
|
||||
// Always modify the module status filter
|
||||
$module_filter['status'] = AGENT_MODULE_STATUS_CRITICAL_BAD;
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime);
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime, $secondary_group);
|
||||
}
|
||||
|
||||
|
||||
@ -1561,11 +1568,11 @@ function groups_get_critical_monitors($group, $agent_filter=[], $module_filter=[
|
||||
*
|
||||
* @return integer Number of monitors.
|
||||
*/
|
||||
function groups_get_warning_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false)
|
||||
function groups_get_warning_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false, $secondary_group=true)
|
||||
{
|
||||
// Always modify the module status filter
|
||||
$module_filter['status'] = AGENT_MODULE_STATUS_WARNING;
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime);
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime, $secondary_group);
|
||||
}
|
||||
|
||||
|
||||
@ -1586,11 +1593,11 @@ function groups_get_warning_monitors($group, $agent_filter=[], $module_filter=[]
|
||||
*
|
||||
* @return integer Number of monitors.
|
||||
*/
|
||||
function groups_get_unknown_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false)
|
||||
function groups_get_unknown_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false, $secondary_group=true)
|
||||
{
|
||||
// Always modify the module status filter
|
||||
$module_filter['status'] = AGENT_MODULE_STATUS_UNKNOWN;
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime);
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime, $secondary_group);
|
||||
}
|
||||
|
||||
|
||||
@ -1611,11 +1618,11 @@ function groups_get_unknown_monitors($group, $agent_filter=[], $module_filter=[]
|
||||
*
|
||||
* @return integer Number of monitors.
|
||||
*/
|
||||
function groups_get_not_init_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false)
|
||||
function groups_get_not_init_monitors($group, $agent_filter=[], $module_filter=[], $strict_user=false, $groups_and_tags=false, $realtime=false, $secondary_group=true)
|
||||
{
|
||||
// Always modify the module status filter
|
||||
$module_filter['status'] = AGENT_MODULE_STATUS_NOT_INIT;
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime);
|
||||
return groups_get_monitors_counter($group, $agent_filter, $module_filter, $strict_user, $groups_and_tags, $realtime, $secondary_group);
|
||||
}
|
||||
|
||||
|
||||
@ -1635,7 +1642,7 @@ function groups_monitor_fired_alerts($group_array)
|
||||
}
|
||||
|
||||
|
||||
function groups_monitor_alerts_total_counters($group_array)
|
||||
function groups_monitor_alerts_total_counters($group_array, $secondary_group=true)
|
||||
{
|
||||
// If there are not groups to query, we jump to nextone
|
||||
$default_total = [
|
||||
@ -1649,10 +1656,13 @@ function groups_monitor_alerts_total_counters($group_array)
|
||||
}
|
||||
|
||||
$group_clause = implode(',', $group_array);
|
||||
if ($secondary_group === true) {
|
||||
$group_clause = "(tasg.id_group IN ($group_clause) OR ta.id_grupo IN ($group_clause))";
|
||||
} else {
|
||||
$group_clause = "(ta.id_grupo IN ($group_clause))";
|
||||
}
|
||||
|
||||
$alerts = db_get_row_sql(
|
||||
"SELECT
|
||||
$sql = 'SELECT
|
||||
COUNT(tatm.id) AS total,
|
||||
SUM(IF(tatm.times_fired > 0, 1, 0)) AS fired
|
||||
FROM talert_template_modules tatm
|
||||
@ -1662,13 +1672,16 @@ function groups_monitor_alerts_total_counters($group_array)
|
||||
ON ta.id_agente = tam.id_agente
|
||||
WHERE ta.id_agente IN (
|
||||
SELECT ta.id_agente
|
||||
FROM tagente ta
|
||||
LEFT JOIN tagent_secondary_group tasg
|
||||
ON ta.id_agente = tasg.id_agent
|
||||
WHERE ta.disabled = 0
|
||||
FROM tagente ta';
|
||||
if ($secondary_group === true) {
|
||||
$sql .= ' LEFT JOIN tagent_secondary_group tasg ON ta.id_agente = tasg.id_agent';
|
||||
}
|
||||
|
||||
$sql .= " WHERE ta.disabled = 0
|
||||
AND $group_clause
|
||||
) AND tam.disabled = 0"
|
||||
);
|
||||
) AND tam.disabled = 0";
|
||||
|
||||
$alerts = db_get_row_sql($sql);
|
||||
|
||||
return ($alerts === false) ? $default_total : $alerts;
|
||||
}
|
||||
@ -1746,7 +1759,7 @@ function groups_monitor_total_counters($group_array, $search_in_testado=false)
|
||||
}
|
||||
|
||||
|
||||
function groups_agents_total_counters($group_array)
|
||||
function groups_agents_total_counters($group_array, $secondary_groups=true)
|
||||
{
|
||||
$default_total = [
|
||||
'ok' => 0,
|
||||
@ -1763,13 +1776,18 @@ function groups_agents_total_counters($group_array)
|
||||
}
|
||||
|
||||
$group_clause = implode(',', $group_array);
|
||||
if ($secondary_groups === true) {
|
||||
$group_clause = "(tasg.id_group IN ($group_clause) OR ta.id_grupo IN ($group_clause))";
|
||||
} else {
|
||||
$group_clause = "(ta.id_grupo IN ($group_clause))";
|
||||
}
|
||||
|
||||
$condition_critical = agents_get_status_clause(AGENT_STATUS_CRITICAL);
|
||||
$condition_warning = agents_get_status_clause(AGENT_STATUS_WARNING);
|
||||
$condition_unknown = agents_get_status_clause(AGENT_STATUS_UNKNOWN);
|
||||
$condition_not_init = agents_get_status_clause(AGENT_STATUS_NOT_INIT);
|
||||
$condition_normal = agents_get_status_clause(AGENT_STATUS_NORMAL);
|
||||
|
||||
$sql = "SELECT SUM(IF($condition_normal, 1, 0)) AS ok,
|
||||
SUM(IF($condition_critical, 1, 0)) AS critical,
|
||||
SUM(IF($condition_warning, 1, 0)) AS warning,
|
||||
@ -1779,14 +1797,15 @@ function groups_agents_total_counters($group_array)
|
||||
FROM tagente ta
|
||||
WHERE ta.disabled = 0
|
||||
AND ta.id_agente IN (
|
||||
SELECT ta.id_agente FROM tagente ta
|
||||
LEFT JOIN tagent_secondary_group tasg
|
||||
ON ta.id_agente = tasg.id_agent
|
||||
WHERE ta.disabled = 0
|
||||
SELECT ta.id_agente FROM tagente ta";
|
||||
if ($secondary_groups === true) {
|
||||
$sql .= ' LEFT JOIN tagent_secondary_group tasg ON ta.id_agente = tasg.id_agent';
|
||||
}
|
||||
|
||||
$sql .= " WHERE ta.disabled = 0
|
||||
AND $group_clause
|
||||
GROUP BY ta.id_agente
|
||||
)
|
||||
";
|
||||
)";
|
||||
|
||||
$agents = db_get_row_sql($sql);
|
||||
|
||||
@ -2438,3 +2457,390 @@ function groups_get_group_deep($id_group)
|
||||
|
||||
return $deep;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Heat map from agents by group
|
||||
*
|
||||
* @param array $id_group
|
||||
* @param integer $width
|
||||
* @param integer $height
|
||||
*
|
||||
* @return string Html Graph.
|
||||
*/
|
||||
function groups_get_heat_map_agents(array $id_group, float $width=0, float $height=0)
|
||||
{
|
||||
ui_require_css_file('heatmap');
|
||||
|
||||
if (is_array($id_group) === false) {
|
||||
$id_group = [$id_group];
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM tagente WHERE id_grupo IN('.implode(',', $id_group).')';
|
||||
|
||||
$all_agents = db_get_all_rows_sql($sql);
|
||||
if (empty($all_agents)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$total_agents = count($all_agents);
|
||||
|
||||
// Best square.
|
||||
$high = (float) max($width, $height);
|
||||
$low = 0.0;
|
||||
|
||||
while (abs($high - $low) > 0.000001) {
|
||||
$mid = (($high + $low) / 2.0);
|
||||
$midval = (floor($width / $mid) * floor($height / $mid));
|
||||
if ($midval >= $total_agents) {
|
||||
$low = $mid;
|
||||
} else {
|
||||
$high = $mid;
|
||||
}
|
||||
}
|
||||
|
||||
$square_length = min(($width / floor($width / $low)), ($height / floor($height / $low)));
|
||||
|
||||
// Print starmap.
|
||||
$html = sprintf(
|
||||
'<svg id="svg_%s" style="width: %spx; height: %spx;">',
|
||||
$id_group,
|
||||
$width,
|
||||
$height
|
||||
);
|
||||
|
||||
$html .= '<g>';
|
||||
$row = 0;
|
||||
$column = 0;
|
||||
$x = 0;
|
||||
$y = 0;
|
||||
$cont = 1;
|
||||
|
||||
foreach ($all_agents as $key => $value) {
|
||||
// Colour by status.
|
||||
$status = agents_get_status_from_counts($value);
|
||||
|
||||
switch ($status) {
|
||||
case 5:
|
||||
// Not init status.
|
||||
$status = 'notinit';
|
||||
break;
|
||||
|
||||
case 1:
|
||||
// Critical status.
|
||||
$status = 'critical';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
// Warning status.
|
||||
$status = 'warning';
|
||||
break;
|
||||
|
||||
case 0:
|
||||
// Normal status.
|
||||
$status = 'normal';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case -1:
|
||||
default:
|
||||
// Unknown status.
|
||||
$status = 'unknown';
|
||||
break;
|
||||
}
|
||||
|
||||
$html .= sprintf(
|
||||
'<rect id="%s" x="%s" y="%s" row="%s" col="%s" width="%s" height="%s" class="%s_%s" onclick="showInfoAgent('.$value['id_agente'].')"></rect>',
|
||||
'rect_'.$cont,
|
||||
$x,
|
||||
$y,
|
||||
$row,
|
||||
$column,
|
||||
$square_length,
|
||||
$square_length,
|
||||
$status,
|
||||
random_int(1, 10)
|
||||
);
|
||||
|
||||
$y += $square_length;
|
||||
$row++;
|
||||
if ((int) ($y + $square_length) > (int) $height) {
|
||||
$y = 0;
|
||||
$x += $square_length;
|
||||
$row = 0;
|
||||
$column++;
|
||||
}
|
||||
|
||||
if ((int) ($x + $square_length) > (int) $width) {
|
||||
$x = 0;
|
||||
$y += $square_length;
|
||||
$column = 0;
|
||||
$row++;
|
||||
}
|
||||
|
||||
$cont++;
|
||||
}
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
const total_agents = '<?php echo $total_agents; ?>';
|
||||
|
||||
function getRandomInteger(min, max) {
|
||||
return Math.floor(Math.random() * max) + min;
|
||||
}
|
||||
|
||||
function oneSquare(solid, time) {
|
||||
var randomPoint = getRandomInteger(1, total_agents);
|
||||
let target = $(`#rect_${randomPoint}`);
|
||||
let class_name = target.attr('class');
|
||||
class_name = class_name.split('_')[0];
|
||||
setTimeout(function() {
|
||||
target.removeClass();
|
||||
target.addClass(`${class_name}_${solid}`);
|
||||
oneSquare(getRandomInteger(1, 10), getRandomInteger(100, 900));
|
||||
}, time);
|
||||
}
|
||||
|
||||
let cont = 0;
|
||||
while (cont < Math.ceil(total_agents / 3)) {
|
||||
oneSquare(getRandomInteger(1, 10), getRandomInteger(100, 900));
|
||||
cont ++;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
$html .= '</g>';
|
||||
$html .= '</svg>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return html count from agents and monitoring by group.
|
||||
*
|
||||
* @param [type] $id_groups
|
||||
*
|
||||
* @return string Html
|
||||
*/
|
||||
function tactical_groups_get_agents_and_monitoring($id_groups)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$data = [
|
||||
'total_agents' => groups_agents_total_counters($id_groups, false)['total'],
|
||||
'monitor_total' => groups_get_total_monitors($id_groups, [], [], false, false, false, false),
|
||||
];
|
||||
|
||||
// Link URLS
|
||||
$urls = [];
|
||||
$urls['total_agents'] = $config['homeurl'].'index.php?sec=estado&sec2=operation/agentes/estado_agente&refr=60&group_id='.$id_groups[0].'&recursion=1';
|
||||
$urls['monitor_total'] = $config['homeurl'].'index.php?sec=view&sec2=operation/agentes/status_monitor&refr=60&status=-1&ag_group='.$id_groups[0].'&recursion=1';
|
||||
|
||||
$table_am = html_get_predefined_table();
|
||||
$tdata = [];
|
||||
$tdata[0] = html_print_image('images/agent.png', true, ['title' => __('Total agents'), 'class' => 'invert_filter'], false, false, false, true);
|
||||
$tdata[1] = $data['total_agents'] <= 0 ? '-' : $data['total_agents'];
|
||||
$tdata[1] = '<a class="big_data" href="'.$urls['total_agents'].'">'.$tdata[1].'</a>';
|
||||
|
||||
if ($data['total_agents'] > 500 && !enterprise_installed()) {
|
||||
$tdata[2] = "<div id='agentsmodal' class='publienterprise' title='".__('Enterprise version not installed')."'><img data-title='Enterprise version' class='img_help forced_title' data-use_title_for_force_title='1' src='images/alert_enterprise.png'></div>";
|
||||
}
|
||||
|
||||
$tdata[3] = html_print_image('images/module.png', true, ['title' => __('Monitor checks'), 'class' => 'invert_filter'], false, false, false, true);
|
||||
$tdata[4] = $data['monitor_total'] <= 0 ? '-' : $data['monitor_total'];
|
||||
$tdata[4] = '<a class="big_data" href="'.$urls['monitor_total'].'">'.$tdata[4].'</a>';
|
||||
|
||||
/*
|
||||
Hello there! :)
|
||||
We added some of what seems to be "buggy" messages to the openSource version recently. This is not to force open-source users to move to the enterprise version, this is just to inform people using Pandora FMS open source that it requires skilled people to maintain and keep it running smoothly without professional support. This does not imply open-source version is limited in any way. If you check the recently added code, it contains only warnings and messages, no limitations except one: we removed the option to add custom logo in header. In the Update Manager section, it warns about the 'danger’ of applying automated updates without a proper backup, remembering in the process that the Enterprise version comes with a human-tested package. Maintaining an OpenSource version with more than 500 agents is not so easy, that's why someone using a Pandora with 8000 agents should consider asking for support. It's not a joke, we know of many setups with a huge number of agents, and we hate to hear that “its becoming unstable and slow” :(
|
||||
You can of course remove the warnings, that's why we include the source and do not use any kind of trick. And that's why we added here this comment, to let you know this does not reflect any change in our opensource mentality of does the last 14 years.
|
||||
*/
|
||||
if ($data['total_agents']) {
|
||||
if (($data['monitor_total'] / $data['total_agents'] > 100) && !enterprise_installed()) {
|
||||
$tdata[5] = "<div id='monitorcheckmodal' class='publienterprise' title='Community version' ><img data-title='".__('Enterprise version not installed')."' class='img_help forced_title' data-use_title_for_force_title='1' src='images/alert_enterprise.png'></div>";
|
||||
}
|
||||
}
|
||||
|
||||
$table_am->rowclass[] = '';
|
||||
$table_am->data[] = $tdata;
|
||||
|
||||
$output = '<fieldset class="databox tactical_set">
|
||||
<legend>'.__('Total agents and monitors').'</legend>'.html_print_table($table_am, true).'</fieldset>';
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return html count from stats alerts by group.
|
||||
*
|
||||
* @param [type] $id_groups
|
||||
* @return string Html.
|
||||
*/
|
||||
function tactical_groups_get_stats_alerts($id_groups)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$alerts = groups_monitor_alerts_total_counters($id_groups, false);
|
||||
$data = [
|
||||
'monitor_alerts' => $alerts['total'],
|
||||
'monitor_alerts_fired' => $alerts['fired'],
|
||||
|
||||
];
|
||||
|
||||
$urls = [];
|
||||
$urls['monitor_alerts'] = $config['homeurl'].'index.php?sec=estado&sec2=operation/agentes/alerts_status&refr=60&ag_group='.$id_groups[0];
|
||||
$urls['monitor_alerts_fired'] = $config['homeurl'].'index.php?sec=estado&sec2=operation/agentes/alerts_status&refr=60&disabled=fired&ag_group='.$id_groups[0];
|
||||
|
||||
// Alerts table.
|
||||
$table_al = html_get_predefined_table();
|
||||
|
||||
$tdata = [];
|
||||
$tdata[0] = html_print_image('images/bell.png', true, ['title' => __('Defined alerts'), 'class' => 'invert_filter'], false, false, false, true);
|
||||
$tdata[1] = $data['monitor_alerts'] <= 0 ? '-' : $data['monitor_alerts'];
|
||||
$tdata[1] = '<a class="big_data" href="'.$urls['monitor_alerts'].'">'.$tdata[1].'</a>';
|
||||
|
||||
/*
|
||||
Hello there! :)
|
||||
We added some of what seems to be "buggy" messages to the openSource version recently. This is not to force open-source users to move to the enterprise version, this is just to inform people using Pandora FMS open source that it requires skilled people to maintain and keep it running smoothly without professional support. This does not imply open-source version is limited in any way. If you check the recently added code, it contains only warnings and messages, no limitations except one: we removed the option to add custom logo in header. In the Update Manager section, it warns about the 'danger’ of applying automated updates without a proper backup, remembering in the process that the Enterprise version comes with a human-tested package. Maintaining an OpenSource version with more than 500 agents is not so easy, that's why someone using a Pandora with 8000 agents should consider asking for support. It's not a joke, we know of many setups with a huge number of agents, and we hate to hear that “its becoming unstable and slow” :(
|
||||
You can of course remove the warnings, that's why we include the source and do not use any kind of trick. And that's why we added here this comment, to let you know this does not reflect any change in our opensource mentality of does the last 14 years.
|
||||
*/
|
||||
|
||||
if ($data['monitor_alerts'] > $data['total_agents'] && !enterprise_installed()) {
|
||||
$tdata[2] = "<div id='alertagentmodal' class='publienterprise' title='Community version' ><img data-title='".__('Enterprise version not installed')."' class='img_help forced_title' data-use_title_for_force_title='1' src='images/alert_enterprise.png'></div>";
|
||||
}
|
||||
|
||||
$tdata[3] = html_print_image(
|
||||
'images/bell_error.png',
|
||||
true,
|
||||
[
|
||||
'title' => __('Fired alerts'),
|
||||
'class' => 'invert_filter',
|
||||
],
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
true
|
||||
);
|
||||
$tdata[4] = $data['monitor_alerts_fired'] <= 0 ? '-' : $data['monitor_alerts_fired'];
|
||||
$tdata[4] = '<a style="color: '.COL_ALERTFIRED.';" class="big_data" href="'.$urls['monitor_alerts_fired'].'">'.$tdata[4].'</a>';
|
||||
$table_al->rowclass[] = '';
|
||||
$table_al->data[] = $tdata;
|
||||
|
||||
if (!is_metaconsole()) {
|
||||
$output = '<fieldset class="databox tactical_set">
|
||||
<legend>'.__('Defined and fired alerts').'</legend>'.html_print_table($table_al, true).'</fieldset>';
|
||||
} else {
|
||||
// Remove the defined alerts cause with the new cache table is difficult to retrieve them.
|
||||
unset($table_al->data[0][0], $table_al->data[0][1]);
|
||||
|
||||
$table_al->class = 'tactical_view';
|
||||
$table_al->style = [];
|
||||
$output = '<fieldset class="tactical_set">
|
||||
<legend>'.__('Fired alerts').'</legend>'.html_print_table($table_al, true).'</fieldset>';
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return html count from stats modules by group.
|
||||
*
|
||||
* @param [type] $id_groups
|
||||
* @param integer $graph_width
|
||||
* @param integer $graph_height
|
||||
* @param boolean $links
|
||||
* @param boolean $data_agents
|
||||
* @return void
|
||||
*/
|
||||
function groups_get_stats_modules_status($id_groups, $graph_width=250, $graph_height=150, $links=false, $data_agents=false)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$data = [
|
||||
'monitor_critical' => groups_get_critical_monitors($id_groups, [], [], false, false, false, false),
|
||||
'monitor_warning' => groups_get_warning_monitors($id_groups, [], [], false, false, false, false),
|
||||
'monitor_ok' => groups_get_normal_monitors($id_groups, [], [], false, false, false, false),
|
||||
'monitor_unknown' => groups_get_unknown_monitors($id_groups, [], [], false, false, false, false),
|
||||
'monitor_not_init' => groups_get_not_init_monitors($id_groups, [], [], false, false, false, false),
|
||||
];
|
||||
|
||||
// Link URLS.
|
||||
if ($links === false) {
|
||||
$urls = [];
|
||||
$urls['monitor_critical'] = $config['homeurl'].'index.php?'.'sec=view&sec2=operation/agentes/status_monitor&'.'refr=60&status='.AGENT_MODULE_STATUS_CRITICAL_BAD.'&pure='.$config['pure'].'&recursion=1&ag_group='.$id_groups[0];
|
||||
$urls['monitor_warning'] = $config['homeurl'].'index.php?'.'sec=view&sec2=operation/agentes/status_monitor&'.'refr=60&status='.AGENT_MODULE_STATUS_WARNING.'&pure='.$config['pure'].'&recursion=1&ag_group='.$id_groups[0];
|
||||
$urls['monitor_ok'] = $config['homeurl'].'index.php?'.'sec=view&sec2=operation/agentes/status_monitor&'.'refr=60&status='.AGENT_MODULE_STATUS_NORMAL.'&pure='.$config['pure'].'&recursion=1&ag_group='.$id_groups[0];
|
||||
$urls['monitor_unknown'] = $config['homeurl'].'index.php?'.'sec=view&sec2=operation/agentes/status_monitor&'.'refr=60&status='.AGENT_MODULE_STATUS_UNKNOWN.'&pure='.$config['pure'].'&recursion=1&ag_group='.$id_groups[0];
|
||||
$urls['monitor_not_init'] = $config['homeurl'].'index.php?'.'sec=view&sec2=operation/agentes/status_monitor&'.'refr=60&status='.AGENT_MODULE_STATUS_NOT_INIT.'&pure='.$config['pure'].'&recursion=1&ag_group='.$id_groups[0];
|
||||
} else {
|
||||
$urls = [];
|
||||
$urls['monitor_critical'] = $links['monitor_critical'];
|
||||
$urls['monitor_warning'] = $links['monitor_warning'];
|
||||
$urls['monitor_ok'] = $links['monitor_ok'];
|
||||
$urls['monitor_unknown'] = $links['monitor_unknown'];
|
||||
$urls['monitor_not_init'] = $links['monitor_not_init'];
|
||||
}
|
||||
|
||||
// Fixed width non interactive charts
|
||||
$status_chart_width = $graph_width;
|
||||
|
||||
// Modules by status table
|
||||
$table_mbs = html_get_predefined_table();
|
||||
|
||||
$tdata = [];
|
||||
$tdata[0] = html_print_image('images/module_critical.png', true, ['title' => __('Monitor critical')], false, false, false, true);
|
||||
$tdata[1] = $data['monitor_critical'] <= 0 ? '-' : $data['monitor_critical'];
|
||||
$tdata[1] = '<a style="color: '.COL_CRITICAL.';" class="big_data line_heigth_initial" href="'.$urls['monitor_critical'].'">'.$tdata[1].'</a>';
|
||||
|
||||
$tdata[2] = html_print_image('images/module_warning.png', true, ['title' => __('Monitor warning')], false, false, false, true);
|
||||
$tdata[3] = $data['monitor_warning'] <= 0 ? '-' : $data['monitor_warning'];
|
||||
$tdata[3] = '<a style="color: '.COL_WARNING_DARK.';" class="big_data line_heigth_initial" href="'.$urls['monitor_warning'].'">'.$tdata[3].'</a>';
|
||||
$table_mbs->rowclass[] = '';
|
||||
$table_mbs->data[] = $tdata;
|
||||
|
||||
$tdata = [];
|
||||
$tdata[0] = html_print_image('images/module_ok.png', true, ['title' => __('Monitor normal')], false, false, false, true);
|
||||
$tdata[1] = $data['monitor_ok'] <= 0 ? '-' : $data['monitor_ok'];
|
||||
$tdata[1] = '<a style="color: '.COL_NORMAL.';" class="big_data" href="'.$urls['monitor_ok'].'">'.$tdata[1].'</a>';
|
||||
|
||||
$tdata[2] = html_print_image('images/module_unknown.png', true, ['title' => __('Monitor unknown')], false, false, false, true);
|
||||
$tdata[3] = $data['monitor_unknown'] <= 0 ? '-' : $data['monitor_unknown'];
|
||||
$tdata[3] = '<a style="color: '.COL_UNKNOWN.';" class="big_data line_heigth_initial" href="'.$urls['monitor_unknown'].'">'.$tdata[3].'</a>';
|
||||
$table_mbs->rowclass[] = '';
|
||||
$table_mbs->data[] = $tdata;
|
||||
|
||||
$tdata = [];
|
||||
$tdata[0] = html_print_image('images/module_notinit.png', true, ['title' => __('Monitor not init')], false, false, false, true);
|
||||
$tdata[1] = $data['monitor_not_init'] <= 0 ? '-' : $data['monitor_not_init'];
|
||||
$tdata[1] = '<a style="color: '.COL_NOTINIT.';" class="big_data line_heigth_initial" href="'.$urls['monitor_not_init'].'">'.$tdata[1].'</a>';
|
||||
|
||||
$tdata[2] = $tdata[3] = '';
|
||||
$table_mbs->rowclass[] = '';
|
||||
$table_mbs->data[] = $tdata;
|
||||
|
||||
if ($data['monitor_checks'] > 0) {
|
||||
$tdata = [];
|
||||
$table_mbs->colspan[count($table_mbs->data)][0] = 4;
|
||||
$table_mbs->cellstyle[count($table_mbs->data)][0] = 'text-align: center;';
|
||||
$tdata[0] = '<div id="outter_status_pie" style="height: '.$graph_height.'px">'.'<div id="status_pie" style="margin: auto; width: '.$status_chart_width.'px;">'.graph_agent_status(false, $graph_width, $graph_height, true, true, $data_agents).'</div></div>';
|
||||
$table_mbs->rowclass[] = '';
|
||||
$table_mbs->data[] = $tdata;
|
||||
}
|
||||
|
||||
if (!is_metaconsole()) {
|
||||
$output = '
|
||||
<fieldset class="databox tactical_set">
|
||||
<legend>'.__('Monitors by status').'</legend>'.html_print_table($table_mbs, true).'</fieldset>';
|
||||
} else {
|
||||
$table_mbs->class = 'tactical_view';
|
||||
$table_mbs->style = [];
|
||||
$output = '
|
||||
<fieldset class="tactical_set">
|
||||
<legend>'.__('Monitors by status').'</legend>'.html_print_table($table_mbs, true).'</fieldset>';
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
@ -1361,29 +1361,27 @@ function html_print_select_multiple_filtered(
|
||||
|
||||
$output .= '<div class="arrows-container flex-column">';
|
||||
|
||||
$output .= html_print_input(
|
||||
$output .= html_print_image(
|
||||
'images/plus.svg',
|
||||
true,
|
||||
[
|
||||
'type' => 'image',
|
||||
'src' => 'images/darrowright.png',
|
||||
'return' => true,
|
||||
'options' => [
|
||||
'title' => $texts['title-add'],
|
||||
'id' => 'right_autorefreshlist',
|
||||
'style' => 'width: 24px; margin: 10px 10px 0;',
|
||||
'alt' => __('Push selected pages into autorefresh list'),
|
||||
'title' => __('Push selected pages into autorefresh list'),
|
||||
'onclick' => $add,
|
||||
'class' => 'invert_filter',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$output .= html_print_input(
|
||||
$output .= html_print_image(
|
||||
'images/minus.svg',
|
||||
true,
|
||||
[
|
||||
'type' => 'image',
|
||||
'src' => 'images/darrowleft.png',
|
||||
'return' => true,
|
||||
'options' => [
|
||||
'title' => $texts['title-del'],
|
||||
'id' => 'left_autorefreshlist',
|
||||
'style' => 'width: 24px; margin: 10px 10px 0;',
|
||||
'alt' => __('Pop selected pages out of autorefresh list'),
|
||||
'title' => __('Pop selected pages out of autorefresh list'),
|
||||
'onclick' => $del,
|
||||
'class' => 'invert_filter',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
@ -4905,7 +4903,8 @@ function html_print_autocomplete_modules(
|
||||
$filter=[],
|
||||
$return=false,
|
||||
$id_agent_module=0,
|
||||
$size='30'
|
||||
$size='30',
|
||||
$underInputTip=false
|
||||
) {
|
||||
global $config;
|
||||
|
||||
@ -4962,8 +4961,12 @@ function html_print_autocomplete_modules(
|
||||
html_print_input_hidden($name.'_hidden', $id_agent_module);
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
if ($underInputTip === true) {
|
||||
ui_print_input_placeholder(__('Type at least two characters to search the module.'), false);
|
||||
} else {
|
||||
ui_print_help_tip(__('Type at least two characters to search the module.'), false);
|
||||
}
|
||||
}
|
||||
|
||||
$javascript_ajax_page = ui_get_full_url('ajax.php', false, false, false);
|
||||
?>
|
||||
|
@ -467,7 +467,7 @@ function treeview_printAlertsTable($id_module, $server_data=[], $no_head=false)
|
||||
__('Go to alerts edition'),
|
||||
'upd_button',
|
||||
false,
|
||||
'window.location.assign(\''.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&search=1&module_name='.$module_name.'&id_agente='.$agent_id.$url_hash.'\')',
|
||||
'window.location.assign("'.$console_url.'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&search=1&module_name='.$module_name.'&id_agente='.$agent_id.$url_hash.'")',
|
||||
['icon' => 'alert'],
|
||||
true
|
||||
),
|
||||
|
@ -693,7 +693,7 @@ function ui_print_tags_warning($return=false)
|
||||
*
|
||||
* @return string HTML code if return parameter is true.
|
||||
*/
|
||||
function ui_print_group_icon($id_group, $return=false, $path='', $style='', $link=true, $force_show_image=false, $show_as_image=false, $class='')
|
||||
function ui_print_group_icon($id_group, $return=false, $path='', $style='', $link=true, $force_show_image=false, $show_as_image=false, $class='', $tactical_view=false)
|
||||
{
|
||||
global $config;
|
||||
|
||||
@ -707,8 +707,12 @@ function ui_print_group_icon($id_group, $return=false, $path='', $style='', $lin
|
||||
}
|
||||
|
||||
if ($link === true) {
|
||||
if ($tactical_view === true) {
|
||||
$output = '<a href="'.$config['homeurl'].'index.php?sec=gagente&sec2=godmode/groups/tactical&id_group='.$id_group.'">';
|
||||
} else {
|
||||
$output = '<a href="'.$config['homeurl'].'index.php?sec=estado&sec2=operation/agentes/estado_agente&refr=60&group_id='.$id_group.'">';
|
||||
}
|
||||
}
|
||||
|
||||
if ((bool) $config['show_group_name'] === true) {
|
||||
$output .= '<span title="'.groups_get_name($id_group, true).'">'.groups_get_name($id_group, true).' </span>';
|
||||
@ -904,11 +908,11 @@ function ui_print_type_agent_icon(
|
||||
if ((int) $id_os === SATELLITE_OS_ID) {
|
||||
// Satellite.
|
||||
$options['title'] = __('Satellite');
|
||||
$output = html_print_image('images/satellite@svg.svg', true, ['class' => 'main_menu_icon invert_filter'], false, false, false, true);
|
||||
$output = html_print_image('images/satellite@os.svg', true, ['class' => 'main_menu_icon invert_filter'], false, false, false, true);
|
||||
} else if ($remote_contact === $contact && $remote === 0 && empty($version) === true) {
|
||||
// Network.
|
||||
$options['title'] = __('Network');
|
||||
$output = html_print_image('images/network-server@svg.svg', true, ['class' => 'main_menu_icon invert_filter'], false, false, false, true);
|
||||
$output = html_print_image('images/network-server@os.svg', true, ['class' => 'main_menu_icon invert_filter'], false, false, false, true);
|
||||
} else {
|
||||
// Software.
|
||||
$options['title'] = __('Software');
|
||||
@ -1210,7 +1214,7 @@ function ui_format_alert_row(
|
||||
$forceTitle,
|
||||
'force_execution_'.$alert['id'],
|
||||
false,
|
||||
'window.location.assign(\''.$url.'&id_alert='.$alert['id'].'&refr=60'.$additionUrl.'\');',
|
||||
'window.location.assign("'.$url.'&id_alert='.$alert['id'].'&refr=60'.$additionUrl.'");',
|
||||
[ 'mode' => 'link' ],
|
||||
true
|
||||
);
|
||||
@ -1496,6 +1500,7 @@ function ui_print_alert_template_example($id_alert_template, $return=false, $pri
|
||||
* @param string $image Image path.
|
||||
* @param boolean $is_relative Route is relative or not.
|
||||
* @param string $id Target id.
|
||||
* @param string $isHeader If true, the view is header.
|
||||
*
|
||||
* @return string The help tip
|
||||
*/
|
||||
@ -1505,10 +1510,17 @@ function ui_print_help_icon(
|
||||
$home_url='',
|
||||
$image='images/info@svg.svg',
|
||||
$is_relative=false,
|
||||
$id=''
|
||||
$id='',
|
||||
$isHeader=false
|
||||
) {
|
||||
global $config;
|
||||
|
||||
if (empty($image) === true) {
|
||||
$image = 'images/info@svg.svg';
|
||||
}
|
||||
|
||||
$iconClass = ($isHeader === true) ? 'header_help_icon' : 'main_menu_icon';
|
||||
|
||||
// Do not display the help icon if help is disabled.
|
||||
if ((bool) $config['disable_help'] === true) {
|
||||
return '';
|
||||
@ -1533,7 +1545,7 @@ function ui_print_help_icon(
|
||||
$image,
|
||||
true,
|
||||
[
|
||||
'class' => 'img_help main_menu_icon',
|
||||
'class' => 'img_help '.$iconClass,
|
||||
'title' => __('Help'),
|
||||
'onclick' => "open_help ('".ui_get_full_url($help_handler)."')",
|
||||
'id' => $id,
|
||||
@ -2436,35 +2448,35 @@ function ui_print_session_action_icon($action, $return=false)
|
||||
global $config;
|
||||
|
||||
$key_icon = [
|
||||
'acl' => 'images/delete.png',
|
||||
'agent' => 'images/agent.png',
|
||||
'module' => 'images/module.png',
|
||||
'alert' => 'images/bell.png',
|
||||
'incident' => 'images/default_list.png',
|
||||
'logon' => 'images/house.png',
|
||||
'logoff' => 'images/house.png',
|
||||
'massive' => 'images/config.png',
|
||||
'hack' => 'images/application_edit.png',
|
||||
'event' => 'images/lightning_go.png',
|
||||
'policy' => 'images/policies_mc.png',
|
||||
'report' => 'images/reporting.png',
|
||||
'file collection' => 'images/collection_col.png',
|
||||
'user' => 'images/user_green.png',
|
||||
'password' => 'images/lock.png',
|
||||
'session' => 'images/heart_col.png',
|
||||
'snmp' => 'images/snmp.png',
|
||||
'command' => 'images/bell.png',
|
||||
'category' => 'images/category_col.png',
|
||||
'dashboard' => 'images/dashboard_col.png',
|
||||
'api' => 'images/eye.png',
|
||||
'db' => 'images/database.png',
|
||||
'setup' => 'images/cog.png',
|
||||
'acl' => 'images/delete.svg',
|
||||
'agent' => 'images/agents@svg.svg',
|
||||
'module' => 'images/modules@svg.svg',
|
||||
'alert' => 'images/alerts.svg',
|
||||
'incident' => 'images/logs@svg.svg',
|
||||
'logon' => 'images/house@svg.svg',
|
||||
'logoff' => 'images/house@svg.svg',
|
||||
'massive' => 'images/configuration@svg.svg',
|
||||
'hack' => 'images/custom-input@svg.svg',
|
||||
'event' => 'images/event.svg',
|
||||
'policy' => 'images/policy@svg.svg',
|
||||
'report' => 'images/agent-fields.svg',
|
||||
'file collection' => 'images/file-collection@svg.svg',
|
||||
'user' => 'images/user.svg',
|
||||
'password' => 'images/password.svg',
|
||||
'session' => 'images/star@svg.svg',
|
||||
'snmp' => 'images/SNMP-network-numeric-data@svg.svg',
|
||||
'command' => 'images/external-tools@svg.svg',
|
||||
'category' => 'images/tag@svg.svg',
|
||||
'dashboard' => 'images/workstation@groups.svg',
|
||||
'api' => 'images/enable.svg',
|
||||
'db' => 'images/data-server@svg.svg',
|
||||
'setup' => 'images/configuration@svg.svg',
|
||||
];
|
||||
|
||||
$output = '';
|
||||
foreach ($key_icon as $key => $icon) {
|
||||
if (stristr($action, $key) !== false) {
|
||||
$output = html_print_image($icon, true, ['title' => $action, 'class' => 'invert_filter'], false, false, false, true).' ';
|
||||
$output = html_print_image($icon, true, ['title' => $action, 'class' => 'main_menu_icon invert_filter'], false, false, false, true).' ';
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -5053,7 +5065,7 @@ function ui_print_page_header(
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
if ($help != '') {
|
||||
$buffer .= "<div class='head_help head_tip'>".ui_print_help_icon($help, true, '', 'images/help_g.png').'</div>';
|
||||
$buffer .= "<div class='head_help head_tip'>".ui_print_help_icon($help, true, '', '', false, '', true).'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -7154,7 +7166,7 @@ function ui_print_servertype_icon(int $id)
|
||||
|
||||
case MODULE_NETWORK:
|
||||
$title = __('Network server');
|
||||
$image = 'images/network-server@svg.svg';
|
||||
$image = 'images/network-server@os.svg';
|
||||
break;
|
||||
|
||||
case MODULE_PLUGIN:
|
||||
|
@ -2400,3 +2400,10 @@ function topFunction() {
|
||||
500
|
||||
);
|
||||
}
|
||||
|
||||
function menuActionButtonResizing() {
|
||||
$(".action_buttons_right_content").attr(
|
||||
"style",
|
||||
"left: " + $("#menu_full").width() + "px;"
|
||||
);
|
||||
}
|
||||
|
18
pandora_console/include/javascript/tactical_groups.js
Normal file
18
pandora_console/include/javascript/tactical_groups.js
Normal file
@ -0,0 +1,18 @@
|
||||
/* global $, load_modal */
|
||||
function showInfoAgent(id_agent) {
|
||||
load_modal({
|
||||
target: $("#modal-info-agent"),
|
||||
url: "ajax.php",
|
||||
modal: {
|
||||
title: "Info agent",
|
||||
cancel: "close"
|
||||
},
|
||||
onshow: {
|
||||
page: "include/ajax/group",
|
||||
method: "loadInfoAgent",
|
||||
extradata: {
|
||||
idAgent: id_agent
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
@ -43,7 +43,13 @@ class Group extends Entity
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $ajaxMethods = ['getGroupsForSelect'];
|
||||
private static $ajaxMethods = [
|
||||
'getGroupsForSelect',
|
||||
'distributionBySoGraph',
|
||||
'groupEventsByAgent',
|
||||
'loadInfoAgent',
|
||||
'getAgentsByGroup',
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
@ -473,4 +479,271 @@ class Group extends Entity
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw a graph distribution so by group.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function distributionBySoGraph()
|
||||
{
|
||||
global $config;
|
||||
$id_group = get_parameter('id_group', '');
|
||||
include_once $config['homedir'].'/include/functions_graph.php';
|
||||
|
||||
$out = '<div style="flex: 0 0 300px; width:99%; height:100%;">';
|
||||
$out .= graph_so_by_group($id_group, 300, 200, false, false);
|
||||
$out .= '<div>';
|
||||
echo $out;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw a graph events agent by group.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function groupEventsByAgent()
|
||||
{
|
||||
global $config;
|
||||
$id_group = get_parameter('id_group', '');
|
||||
include_once $config['homedir'].'/include/functions_graph.php';
|
||||
|
||||
$out = '<div style="flex: 0 0 300px; width:99%; height:100%;">';
|
||||
$out .= graph_events_agent_by_group($id_group, 300, 200, false, true, true);
|
||||
$out .= '<div>';
|
||||
echo $out;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw in modal a agent info
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function loadInfoAgent()
|
||||
{
|
||||
$extradata = get_parameter('extradata', '');
|
||||
echo '<div class="info-agent">';
|
||||
|
||||
if (empty($extradata) === false) {
|
||||
$extradata = json_decode(io_safe_output($extradata), true);
|
||||
$agent = agents_get_agent($extradata['idAgent']);
|
||||
|
||||
if (is_array($agent)) {
|
||||
$status_img = agents_tree_view_status_img(
|
||||
$agent['critical_count'],
|
||||
$agent['warning_count'],
|
||||
$agent['unknown_count'],
|
||||
$agent['total_count'],
|
||||
$agent['notinit_count']
|
||||
);
|
||||
$table = new \stdClass();
|
||||
$table->class = 'table_modal_alternate';
|
||||
$table->data = [
|
||||
[
|
||||
__('Id'),
|
||||
$agent['id_agente'],
|
||||
],
|
||||
[
|
||||
__('Agent name'),
|
||||
'<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=main&id_agente='.$agent['id_agente'].'"><b>'.$agent['nombre'].'</b></a>',
|
||||
],
|
||||
[
|
||||
__('Alias'),
|
||||
$agent['alias'],
|
||||
],
|
||||
[
|
||||
__('Ip Address'),
|
||||
$agent['direccion'],
|
||||
],
|
||||
[
|
||||
__('Status'),
|
||||
$status_img,
|
||||
],
|
||||
[
|
||||
__('Group'),
|
||||
groups_get_name($agent['id_grupo']),
|
||||
],
|
||||
[
|
||||
__('Interval'),
|
||||
$agent['intervalo'],
|
||||
],
|
||||
[
|
||||
__('Operative system'),
|
||||
get_os_name($agent['id_os']),
|
||||
],
|
||||
[
|
||||
__('Server name'),
|
||||
$agent['server_name'],
|
||||
],
|
||||
[
|
||||
__('Description'),
|
||||
$agent['comentarios'],
|
||||
],
|
||||
];
|
||||
|
||||
html_print_table($table);
|
||||
}
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get agents by group for datatable.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function getAgentsByGroup()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$data = [];
|
||||
$id_group = get_parameter('id_group', '');
|
||||
$id_groups = [$id_group];
|
||||
$groups = groups_get_children($id_group);
|
||||
|
||||
if (count($groups) > 0) {
|
||||
$id_groups = [];
|
||||
foreach ($groups as $key => $value) {
|
||||
$id_groups[] = $value['id_grupo'];
|
||||
}
|
||||
}
|
||||
|
||||
$start = get_parameter('start', 0);
|
||||
$length = get_parameter('length', $config['block_size']);
|
||||
$orderDatatable = get_datatable_order(true);
|
||||
$pagination = '';
|
||||
$order = '';
|
||||
|
||||
try {
|
||||
ob_start();
|
||||
if (isset($orderDatatable)) {
|
||||
switch ($orderDatatable['field']) {
|
||||
case 'alerts':
|
||||
$orderDatatable['field'] = 'fired_count';
|
||||
break;
|
||||
|
||||
case 'status':
|
||||
$orderDatatable['field'] = 'total_count';
|
||||
|
||||
default:
|
||||
$orderDatatable['field'] = $orderDatatable['field'];
|
||||
break;
|
||||
}
|
||||
|
||||
$order = sprintf(
|
||||
' ORDER BY %s %s',
|
||||
$orderDatatable['field'],
|
||||
$orderDatatable['direction']
|
||||
);
|
||||
}
|
||||
|
||||
if (isset($length) && $length > 0
|
||||
&& isset($start) && $start >= 0
|
||||
) {
|
||||
$pagination = sprintf(
|
||||
' LIMIT %d OFFSET %d ',
|
||||
$length,
|
||||
$start
|
||||
);
|
||||
}
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT id_agente,
|
||||
alias,
|
||||
critical_count,
|
||||
warning_count,
|
||||
unknown_count,
|
||||
total_count,
|
||||
notinit_count,
|
||||
ultimo_contacto_remoto,
|
||||
fired_count
|
||||
FROM tagente t
|
||||
WHERE disabled = 0 AND
|
||||
total_count <> notinit_count AND
|
||||
id_grupo IN (%s)
|
||||
%s %s',
|
||||
implode(',', $id_groups),
|
||||
$order,
|
||||
$pagination
|
||||
);
|
||||
|
||||
$data = db_get_all_rows_sql($sql);
|
||||
|
||||
$sql = sprintf(
|
||||
'SELECT
|
||||
id_agente,
|
||||
alias,
|
||||
critical_count,
|
||||
warning_count,
|
||||
unknown_count,
|
||||
total_count,
|
||||
notinit_count,
|
||||
ultimo_contacto_remoto,
|
||||
fired_count
|
||||
FROM tagente t
|
||||
WHERE disabled = 0 AND
|
||||
total_count <> notinit_count AND
|
||||
id_grupo IN (%s)
|
||||
%s',
|
||||
implode(',', $id_groups),
|
||||
$order,
|
||||
);
|
||||
|
||||
$count_agents = db_get_num_rows($sql);
|
||||
|
||||
foreach ($data as $key => $agent) {
|
||||
$status_img = agents_tree_view_status_img(
|
||||
$agent['critical_count'],
|
||||
$agent['warning_count'],
|
||||
$agent['unknown_count'],
|
||||
$agent['total_count'],
|
||||
$agent['notinit_count']
|
||||
);
|
||||
$data[$key]['alias'] = '<a href="index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=main&id_agente='.$agent['id_agente'].'"><b>'.$agent['alias'].'</b></a>';
|
||||
$data[$key]['status'] = $status_img;
|
||||
$data[$key]['alerts'] = agents_tree_view_alert_img($agent['fired_count']);
|
||||
}
|
||||
|
||||
if (empty($data) === true) {
|
||||
$total = 0;
|
||||
$data = [];
|
||||
} else {
|
||||
$total = $count_agents;
|
||||
}
|
||||
|
||||
echo json_encode(
|
||||
[
|
||||
'data' => $data,
|
||||
'recordsTotal' => $total,
|
||||
'recordsFiltered' => $total,
|
||||
]
|
||||
);
|
||||
// Capture output.
|
||||
$response = ob_get_clean();
|
||||
} catch (\Exception $e) {
|
||||
echo json_encode(['error' => $e->getMessage()]);
|
||||
exit;
|
||||
}
|
||||
|
||||
json_decode($response);
|
||||
if (json_last_error() === JSON_ERROR_NONE) {
|
||||
echo $response;
|
||||
} else {
|
||||
echo json_encode(
|
||||
[
|
||||
'success' => false,
|
||||
'error' => $response,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -354,3 +354,35 @@ div#rules.show {
|
||||
.note-special-day div a.tip > img {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
form#icalendar-special-days.calendar-upload-form {
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
form#icalendar-special-days.calendar-upload-form > ul {
|
||||
align-items: flex-start !important;
|
||||
}
|
||||
|
||||
form#icalendar-special-days.calendar-upload-form > ul > li > label {
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.special-days-thead > thead > tr > th:not(.header) {
|
||||
border: 1px solid #e2e2e2;
|
||||
}
|
||||
|
||||
.special-days-thead > thead > tr > th.header {
|
||||
border: 0px;
|
||||
border-bottom: 1px solid #878787;
|
||||
}
|
||||
|
||||
.special-days-thead > thead > tr > th.c0 {
|
||||
border-left: 1px solid #e2e2e2;
|
||||
}
|
||||
|
||||
.special-days-thead > thead > tr > th.c6 {
|
||||
border-right: 1px solid #e2e2e2;
|
||||
}
|
||||
|
@ -647,6 +647,10 @@ select:-internal-list-box {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.w21p {
|
||||
width: 21%;
|
||||
}
|
||||
|
||||
.w22p {
|
||||
width: 22%;
|
||||
}
|
||||
@ -671,6 +675,14 @@ select:-internal-list-box {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.w45p {
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.w48p {
|
||||
width: 48%;
|
||||
}
|
||||
|
||||
.w47p {
|
||||
width: 47%;
|
||||
}
|
||||
@ -5805,10 +5817,10 @@ div.label_select_child_left > span {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.switch_radio_button label {
|
||||
div.switch_radio_button label {
|
||||
background-color: #fff;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
line-height: 9pt;
|
||||
line-height: 6px !important;
|
||||
text-align: center;
|
||||
padding: 14px 10px;
|
||||
margin-right: -1px;
|
||||
@ -5816,14 +5828,14 @@ div.label_select_child_left > span {
|
||||
transition: all 0.1s ease-in-out;
|
||||
}
|
||||
|
||||
.switch_radio_button label:first {
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
div.switch_radio_button label:first-of-type {
|
||||
border-top-left-radius: 4px !important;
|
||||
border-bottom-left-radius: 4px !important;
|
||||
}
|
||||
|
||||
.switch_radio_button label:last-child {
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
div.switch_radio_button label:last-of-type {
|
||||
border-top-right-radius: 4px !important;
|
||||
border-bottom-right-radius: 4px !important;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
@ -11013,14 +11025,14 @@ pre.external_tools_output {
|
||||
.tag-editor .tag-editor-tag {
|
||||
padding: 5px !important;
|
||||
color: #fff !important;
|
||||
background: #82b92e !important;
|
||||
background: var(--primary-color) !important;
|
||||
border-radius: 0 2px 2px 0 !important;
|
||||
}
|
||||
|
||||
.tag-editor .tag-editor-delete {
|
||||
padding: 5px !important;
|
||||
line-height: 16px !important;
|
||||
background: #82b92e !important;
|
||||
background: var(--primary-color) !important;
|
||||
border-radius: 2px 0 0 2px !important;
|
||||
}
|
||||
|
||||
@ -11194,6 +11206,10 @@ table.table_modal_alternate
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.header_help_icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.main_menu_icon.arrow_up {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
@ -11508,6 +11524,15 @@ div[role="dialog"] {
|
||||
/* font-weight: bold; */
|
||||
}
|
||||
|
||||
.font-title-font {
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
color: #161628;
|
||||
text-align: left;
|
||||
margin-bottom: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.preimage_container span {
|
||||
font-size: 11pt;
|
||||
line-height: 28px;
|
||||
@ -11543,3 +11568,21 @@ table.alert-template-fields > tbody > tr > td > div > textarea {
|
||||
table.alert-template-fields > tbody > tr > td[id^="template-label_fields"] {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
ul.tag-editor {
|
||||
list-style-type: none;
|
||||
padding: 0.5em !important;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
border: 2px solid #c0ccdc;
|
||||
border-radius: 6px;
|
||||
cursor: text;
|
||||
font: normal 14px sans-serif;
|
||||
color: #333333;
|
||||
background: #f6f7fb;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.max-width-100p {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
@ -235,7 +235,8 @@
|
||||
|
||||
.table_action_buttons > a,
|
||||
.table_action_buttons > img,
|
||||
.table_action_buttons > button {
|
||||
.table_action_buttons > button,
|
||||
.table_action_buttons > form {
|
||||
visibility: hidden;
|
||||
}
|
||||
.info_table > tbody > tr:hover {
|
||||
@ -246,7 +247,8 @@
|
||||
|
||||
.info_table > tbody > tr:hover .table_action_buttons > a,
|
||||
.info_table > tbody > tr:hover .table_action_buttons > img,
|
||||
.info_table > tbody > tr:hover .table_action_buttons > button {
|
||||
.info_table > tbody > tr:hover .table_action_buttons > button,
|
||||
.info_table > tbody > tr:hover .table_action_buttons > form {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
|
31
pandora_console/include/styles/tactical_groups.css
Normal file
31
pandora_console/include/styles/tactical_groups.css
Normal file
@ -0,0 +1,31 @@
|
||||
.tactical_group_left_column {
|
||||
vertical-align: top;
|
||||
min-width: 30em;
|
||||
width: 30%;
|
||||
padding-top: 0px;
|
||||
}
|
||||
.tactical_group_right_column {
|
||||
width: 40%;
|
||||
vertical-align: top;
|
||||
min-width: 30em;
|
||||
padding-top: 0px;
|
||||
}
|
||||
rect {
|
||||
cursor: pointer;
|
||||
}
|
||||
.info-agent {
|
||||
width: 100%;
|
||||
max-height: 400px;
|
||||
}
|
||||
.info-agent table {
|
||||
width: 100%;
|
||||
}
|
||||
#modal-info-agent {
|
||||
display: none;
|
||||
}
|
||||
#list_agents_tactical_wrapper {
|
||||
max-height: 600px;
|
||||
}
|
||||
.graph-distribution-so {
|
||||
margin-top: 55px;
|
||||
}
|
@ -46,7 +46,6 @@ ul.wizard li > label:not(.p-switch):first-of-type {
|
||||
}
|
||||
|
||||
ul.wizard li > textarea {
|
||||
width: 600px;
|
||||
height: 15em;
|
||||
display: inline-block;
|
||||
}
|
||||
@ -130,6 +129,12 @@ ul.wizard li > textarea {
|
||||
background: #e63c52;
|
||||
}
|
||||
|
||||
.wizard .tag-editor li,
|
||||
.wizard .tag-editor li:focus,
|
||||
.wizard .tag-editor li:hover {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.wizard .time_selection_container {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
@ -200,6 +205,7 @@ li#textarea-create-site > textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
form.alert-correlation > ul.wizard > li > label,
|
||||
form#create_site > ul.wizard > li > label {
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
@ -210,3 +216,23 @@ form#create_site > ul.wizard > li > label {
|
||||
select[multiple] {
|
||||
min-height: 20em;
|
||||
}
|
||||
|
||||
form.alert-correlation > div > ul,
|
||||
form.alert-correlation > ul {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
form.alert-correlation > div > ul > li.flex-flex-end {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
form.alert-correlation > div > ul > li.flex-flex-end > input {
|
||||
width: 150px !important;
|
||||
}
|
||||
|
||||
form.alert-correlation > div > ul > li.flex-flex-end > label {
|
||||
width: 50px !important;
|
||||
}
|
||||
|
@ -1524,17 +1524,6 @@ require 'include/php_to_js_values.php';
|
||||
}
|
||||
}
|
||||
|
||||
//$('.button_collapse').on('click', menuActionButtonResizing());
|
||||
|
||||
// Cursor change for show a spinner. Experimental.
|
||||
/*
|
||||
$('.buttonButton').not('.dialog_opener').on('click', function(){
|
||||
$('*').css('cursor', 'wait');
|
||||
});
|
||||
$('.submitButton').not('.dialog_opener').on('click', function(){
|
||||
$('*').css('cursor', 'wait');
|
||||
});
|
||||
*/
|
||||
// When the user scrolls down 400px from the top of the document, show the
|
||||
// button.
|
||||
window.onscroll = function() {
|
||||
@ -1545,10 +1534,6 @@ require 'include/php_to_js_values.php';
|
||||
scrollFunction()
|
||||
};
|
||||
|
||||
function menuActionButtonResizing() {
|
||||
$('.action_buttons_right_content').attr('style', 'left: '+($('#menu_full').width())+'px;');
|
||||
}
|
||||
|
||||
function first_time_identification() {
|
||||
jQuery.post("ajax.php", {
|
||||
"page": "general/register",
|
||||
|
@ -130,8 +130,8 @@
|
||||
</div>
|
||||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.768';
|
||||
$build = '230209';
|
||||
$version = '7.0NG.769';
|
||||
$build = '230308';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
@ -1141,7 +1141,7 @@ foreach ($agents as $agent) {
|
||||
$data[0] .= ui_print_help_tip(
|
||||
__('Agent in scheduled downtime'),
|
||||
true,
|
||||
'images/minireloj-16.png'
|
||||
'images/clock.svg'
|
||||
);
|
||||
$data[0] .= '</em>';
|
||||
}
|
||||
@ -1254,12 +1254,12 @@ foreach ($agents as $agent) {
|
||||
|
||||
$fb64 = base64_encode(json_encode($agent_event_filter));
|
||||
$data[11] = '<a href="index.php?sec=eventos&sec2=operation/events/events&fb64='.$fb64.'">'.html_print_image(
|
||||
'images/lightning.png',
|
||||
'images/event.svg',
|
||||
true,
|
||||
[
|
||||
'align' => 'middle',
|
||||
'title' => __('Agent events'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
|
||||
|
@ -106,7 +106,12 @@ $agentIconGroup = ((bool) $config['show_group_name'] === false) ? ui_print_group
|
||||
$agent['id_grupo'],
|
||||
true,
|
||||
'',
|
||||
'padding-right: 6px;'
|
||||
'padding-right: 6px;',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
true
|
||||
) : '';
|
||||
|
||||
$agentIconStatus = agents_detail_view_status_img(
|
||||
@ -396,7 +401,7 @@ $buttonsRefreshAgent = html_print_button(
|
||||
__('Refresh data'),
|
||||
'refresh_data',
|
||||
false,
|
||||
'window.location.assign(\'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&refr=60\')',
|
||||
'window.location.assign("index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&refr=60")',
|
||||
[ 'mode' => 'link' ],
|
||||
true
|
||||
);
|
||||
@ -406,7 +411,7 @@ if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true) {
|
||||
__('Force checks'),
|
||||
'force_checks',
|
||||
false,
|
||||
'window.location.assign(\'index.php?sec=estado&sec2=operation/agentes/ver_agente&flag_agent=1&id_agente='.$id_agente.'\')',
|
||||
'window.location.assign("index.php?sec=estado&sec2=operation/agentes/ver_agente&flag_agent=1&id_agente='.$id_agente.'")',
|
||||
[ 'mode' => 'link' ],
|
||||
true
|
||||
);
|
||||
@ -488,7 +493,7 @@ $data = [];
|
||||
$data[0] = '<b>'.__('Group').'</b>';
|
||||
$data[1] = html_print_anchor(
|
||||
[
|
||||
'href' => 'index.php?sec=estado&sec2=operation/agentes/estado_agente&refr=60&group_id='.$agent['id_grupo'],
|
||||
'href' => 'index.php?sec=gagente&sec2=godmode/groups/tactical&id_group='.$agent['id_grupo'],
|
||||
'content' => groups_get_name($agent['id_grupo']),
|
||||
],
|
||||
true
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Export Data view
|
||||
* Export data.
|
||||
*
|
||||
* @category Community
|
||||
* @category Tools
|
||||
* @package Pandora FMS
|
||||
* @subpackage Tools
|
||||
* @subpackage Operation
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
@ -14,9 +14,15 @@
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2007-2022 Artica Soluciones Tecnologicas, http://www.artica.es
|
||||
* This code is NOT free software. This code is NOT licenced under GPL2 licence
|
||||
* You cannnot redistribute it without written permission of copyright holder.
|
||||
* 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.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
@ -38,9 +44,25 @@ if (!check_acl($config['id_user'], 0, 'RR')) {
|
||||
|
||||
ui_require_javascript_file('calendar');
|
||||
|
||||
|
||||
// Header.
|
||||
ui_print_page_header(__('Export data'), 'images/server_export_mc.png');
|
||||
ui_print_standard_header(
|
||||
__('Export data'),
|
||||
'images/server_export_mc.png',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
[],
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Tools'),
|
||||
],
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Export data'),
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
$group = get_parameter_post('group', 0);
|
||||
$agentName = get_parameter_post('agent', 0);
|
||||
@ -220,48 +242,10 @@ if (!empty($export_btn) && !empty($module)) {
|
||||
}
|
||||
|
||||
if (empty($export_btn) || $show_form) {
|
||||
echo '<form method="post" action="index.php?sec=reporting&sec2=operation/agentes/exportdata" name="export_form" id="export_form">';
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->border = 0;
|
||||
$table->cellspacing = 3;
|
||||
$table->cellpadding = 5;
|
||||
$table->class = 'databox filters';
|
||||
$table->style[0] = 'vertical-align: top;';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
// Group selector
|
||||
$table->data[0][0] = '<b>'.__('Group').'</b>';
|
||||
|
||||
$groups = users_get_groups($config['id_user'], 'RR', users_can_manage_group_all());
|
||||
|
||||
$table->data[0][1] = '<div class="w250px">'.html_print_select_groups(
|
||||
$config['id_user'],
|
||||
'RR',
|
||||
true,
|
||||
'group',
|
||||
$group,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false
|
||||
).'</div>';
|
||||
|
||||
// Agent selector.
|
||||
$table->data[1][0] = '<b>'.__('Source agent').'</b>';
|
||||
|
||||
$filter = [];
|
||||
if ($group > 0) {
|
||||
$filter['id_grupo'] = (array) $group;
|
||||
} else {
|
||||
$filter['id_grupo'] = array_keys($groups);
|
||||
}
|
||||
$filter['id_grupo'] = ($group > 0) ? (array) $group : array_keys($groups);
|
||||
|
||||
$agents = [];
|
||||
$rows = agents_get_agents($filter, false, 'RR');
|
||||
@ -286,11 +270,6 @@ if (empty($export_btn) || $show_form) {
|
||||
$params['add_none_module'] = false;
|
||||
$params['size'] = 38;
|
||||
$params['selectbox_id'] = 'module_arr';
|
||||
$table->data[1][1] = ui_print_agent_autocomplete_input($params);
|
||||
|
||||
// Module selector.
|
||||
$table->data[2][0] = '<b>'.__('Modules').'</b>';
|
||||
$table->data[2][0] .= ui_print_help_tip(__('No modules of type string. You can not calculate their average'), true);
|
||||
|
||||
if ($agent > 0) {
|
||||
$modules = agents_get_modules($agent);
|
||||
@ -325,91 +304,170 @@ if (empty($export_btn) || $show_form) {
|
||||
$disabled_export_button = true;
|
||||
}
|
||||
|
||||
$table->data[2][1] = html_print_select($modules, 'module_arr[]', array_keys($modules), '', '', 0, true, true, true, 'w250px', false);
|
||||
|
||||
// Start date selector.
|
||||
$table->data[3][0] = '<b>'.__('Begin date').'</b>';
|
||||
|
||||
$table->data[3][1] = html_print_input_text(
|
||||
'start_date',
|
||||
date('Y-m-d', (get_system_time() - SECONDS_1DAY)),
|
||||
false,
|
||||
13,
|
||||
10,
|
||||
true
|
||||
);
|
||||
$table->data[3][1] .= html_print_image(
|
||||
'images/calendar_view_day.png',
|
||||
true,
|
||||
[
|
||||
'alt' => 'calendar',
|
||||
'onclick' => "scwShow(scwID('text-start_date'),this);",
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
);
|
||||
$table->data[3][1] .= html_print_input_text(
|
||||
'start_time',
|
||||
date('H:i:s', (get_system_time() - SECONDS_1DAY)),
|
||||
false,
|
||||
10,
|
||||
9,
|
||||
true
|
||||
);
|
||||
|
||||
// End date selector.
|
||||
$table->data[4][0] = '<b>'.__('End date').'</b>';
|
||||
$table->data[4][1] = html_print_input_text(
|
||||
'end_date',
|
||||
date('Y-m-d', get_system_time()),
|
||||
false,
|
||||
13,
|
||||
10,
|
||||
true
|
||||
);
|
||||
$table->data[4][1] .= html_print_image(
|
||||
'images/calendar_view_day.png',
|
||||
true,
|
||||
[
|
||||
'alt' => 'calendar',
|
||||
'onclick' => "scwShow(scwID('text-end_date'),this);",
|
||||
'class' => 'invert_filter',
|
||||
]
|
||||
);
|
||||
$table->data[4][1] .= html_print_input_text(
|
||||
'end_time',
|
||||
date('H:i:s', get_system_time()),
|
||||
false,
|
||||
10,
|
||||
9,
|
||||
true
|
||||
);
|
||||
|
||||
// Export type.
|
||||
$table->data[5][0] = '<b>'.__('Export type').'</b>';
|
||||
|
||||
$export_types = [];
|
||||
$export_types['data'] = __('Data table');
|
||||
$export_types['csv'] = __('CSV');
|
||||
$export_types['excel'] = __('MS Excel');
|
||||
$export_types['avg'] = __('Average per hour/day');
|
||||
|
||||
$table->data[5][1] = html_print_select($export_types, 'export_type', $export_type, '', '', 0, true, false, true, 'w250px', false);
|
||||
|
||||
echo '<form method="post" action="index.php?sec=reporting&sec2=operation/agentes/exportdata" name="export_form" id="export_form">';
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->border = 0;
|
||||
$table->cellspacing = 3;
|
||||
$table->cellpadding = 5;
|
||||
$table->class = 'databox filter-table-adv';
|
||||
$table->style[0] = 'vertical-align: top;';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
// Group selector.
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(
|
||||
$config['id_user'],
|
||||
'RR',
|
||||
true,
|
||||
'group',
|
||||
$group,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false
|
||||
)
|
||||
);
|
||||
|
||||
// Agent selector.
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Source agent'),
|
||||
ui_print_agent_autocomplete_input($params)
|
||||
);
|
||||
|
||||
// Module selector.
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('Modules'),
|
||||
html_print_select(
|
||||
$modules,
|
||||
'module_arr[]',
|
||||
array_keys($modules),
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
'w100p',
|
||||
false
|
||||
).ui_print_input_placeholder(
|
||||
__('No modules of type string. You can not calculate their average'),
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
// Export type.
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('Export type'),
|
||||
html_print_select(
|
||||
$export_types,
|
||||
'export_type',
|
||||
$export_type,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'w100p',
|
||||
false
|
||||
)
|
||||
);
|
||||
|
||||
// Start date selector.
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('Begin date'),
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'flex-content',
|
||||
'content' => html_print_input_text(
|
||||
'start_date',
|
||||
date('Y-m-d', (get_system_time() - SECONDS_1DAY)),
|
||||
false,
|
||||
13,
|
||||
10,
|
||||
true
|
||||
).html_print_image(
|
||||
'images/calendar_view_day.png',
|
||||
true,
|
||||
[
|
||||
'alt' => 'calendar',
|
||||
'onclick' => "scwShow(scwID('text-start_date'),this);",
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).html_print_input_text(
|
||||
'start_time',
|
||||
date('H:i:s', (get_system_time() - SECONDS_1DAY)),
|
||||
false,
|
||||
10,
|
||||
9,
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
// End date selector.
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('End date'),
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'flex-content',
|
||||
'content' => html_print_input_text(
|
||||
'end_date',
|
||||
date('Y-m-d', get_system_time()),
|
||||
false,
|
||||
13,
|
||||
10,
|
||||
true
|
||||
).html_print_image(
|
||||
'images/calendar_view_day.png',
|
||||
true,
|
||||
[
|
||||
'alt' => 'calendar',
|
||||
'onclick' => "scwShow(scwID('text-end_date'),this);",
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).html_print_input_text(
|
||||
'end_time',
|
||||
date('H:i:s', get_system_time()),
|
||||
false,
|
||||
10,
|
||||
9,
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
),
|
||||
);
|
||||
|
||||
html_print_table($table);
|
||||
|
||||
// Submit button.
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons',
|
||||
'content' => html_print_button(
|
||||
html_print_action_buttons(
|
||||
html_print_button(
|
||||
__('Export'),
|
||||
'export_btn',
|
||||
false,
|
||||
'change_action()',
|
||||
['icon' => 'wand'],
|
||||
true
|
||||
),
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
|
@ -289,12 +289,12 @@ if (empty($result_groups) === false) {
|
||||
echo "<td class='group_view_data center vertical_middle'>";
|
||||
if (!isset($data['_is_tag_']) && check_acl($config['id_user'], $data['_id_'], 'AW')) {
|
||||
echo '<a href="index.php?sec=estado&sec2=operation/agentes/group_view&update_netgroup='.$data['_id_'].'">'.html_print_image(
|
||||
'images/target.png',
|
||||
'images/change-active.svg',
|
||||
true,
|
||||
[
|
||||
'border' => '0',
|
||||
'title' => __('Force'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
}
|
||||
|
@ -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
|
||||
@ -64,11 +64,11 @@ if ($group_sent === true) {
|
||||
$is_ajax = is_ajax();
|
||||
if ($is_ajax === false && $pure === false) {
|
||||
$viewtab['config'] = '<a id="config" href="">'.html_print_image(
|
||||
'images/setup.png',
|
||||
'images/configuration@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Config'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
|
||||
@ -81,11 +81,11 @@ if ($is_ajax === false && $pure === false) {
|
||||
);
|
||||
|
||||
$viewtab['full_screen'] = '<a id="full_screen" href="'.$url.'">'.html_print_image(
|
||||
'images/full_screen.png',
|
||||
'images/fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Full screen'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
|
||||
@ -208,11 +208,11 @@ if ($is_ajax === false && $pure === true) {
|
||||
|
||||
echo '<a href="'.$urlNoFull.'">';
|
||||
echo html_print_image(
|
||||
'images/normal_screen.png',
|
||||
'images/exit_fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Back to normal mode'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
echo '</a>';
|
||||
|
@ -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,7 +52,7 @@ $buttons['message_list'] = [
|
||||
true,
|
||||
[
|
||||
'title' => __('Received messages'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
];
|
||||
@ -64,7 +64,7 @@ $buttons['sent_messages'] = [
|
||||
true,
|
||||
[
|
||||
'title' => __('Sent messages'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
];
|
||||
@ -76,7 +76,7 @@ $buttons['create_message'] = [
|
||||
true,
|
||||
[
|
||||
'title' => __('Create message'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
];
|
||||
@ -218,11 +218,8 @@ if ($read_message) {
|
||||
true
|
||||
);
|
||||
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons',
|
||||
'content' => $outputButtons,
|
||||
],
|
||||
html_print_action_buttons(
|
||||
$outputButtons
|
||||
);
|
||||
|
||||
return;
|
||||
@ -264,18 +261,6 @@ if ($send_mes === true) {
|
||||
// User info.
|
||||
$own_info = get_user_info($config['id_user']);
|
||||
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][0] = __('Sender');
|
||||
|
||||
$table->data[0][1] = (empty($own_info['fullname']) === false) ? $own_info['fullname'] : $config['id_user'];
|
||||
|
||||
$table->data[1][0] = __('Destination');
|
||||
|
||||
$is_admin = (bool) db_get_value(
|
||||
'is_admin',
|
||||
'tusuario',
|
||||
@ -305,15 +290,29 @@ foreach ($users_full as $user_id => $user_info) {
|
||||
$users[$user_info['id_user']] = (empty($user_info['fullname']) === true) ? $user_info['id_user'] : $user_info['fullname'];
|
||||
}
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'send_message_table';
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox max_floating_element_size filter-table-adv';
|
||||
$table->style = [];
|
||||
$table->style[0] = 'width: 30%';
|
||||
$table->style[1] = 'width: 70%';
|
||||
$table->data = [];
|
||||
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Sender'),
|
||||
'<span class="result_info_text">'.((empty($own_info['fullname']) === false) ? $own_info['fullname'] : $config['id_user']).'</span>'
|
||||
);
|
||||
|
||||
// Check if the user to reply is in the list, if not add reply user.
|
||||
if ($reply === true) {
|
||||
$table->data[1][1] = (array_key_exists($dst_user, $users) === true) ? $users[$dst_user] : $dst_user;
|
||||
$table->data[1][1] .= html_print_input_hidden(
|
||||
$destinationInputs = (array_key_exists($dst_user, $users) === true) ? $users[$dst_user] : $dst_user;
|
||||
$destinationInputs .= html_print_input_hidden(
|
||||
'dst_user',
|
||||
$dst_user,
|
||||
true
|
||||
);
|
||||
$table->data[1][1] .= html_print_input_hidden(
|
||||
$destinationInputs .= html_print_input_hidden(
|
||||
'replied',
|
||||
'1',
|
||||
true
|
||||
@ -324,7 +323,10 @@ if ($reply === true) {
|
||||
|
||||
$groups = users_get_groups($config['id_user'], 'AR');
|
||||
// Get a list of all groups.
|
||||
$table->data[1][1] = html_print_select(
|
||||
$destinationInputs = html_print_div(
|
||||
[
|
||||
'class' => 'select_users mrgn_right_5px',
|
||||
'content' => html_print_select(
|
||||
$users,
|
||||
'dst_user',
|
||||
$dst_user,
|
||||
@ -334,11 +336,14 @@ if ($reply === true) {
|
||||
true,
|
||||
false,
|
||||
''
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
$table->data[1][1] .= ' '.__('OR').' ';
|
||||
$table->data[1][1] .= html_print_div(
|
||||
$destinationInputs .= __('OR');
|
||||
$destinationInputs .= html_print_div(
|
||||
[
|
||||
'class' => 'w250px inline',
|
||||
'class' => 'mrgn_lft_5px',
|
||||
'content' => html_print_select_groups(
|
||||
$config['id_user'],
|
||||
'AR',
|
||||
@ -355,24 +360,41 @@ if ($reply === true) {
|
||||
);
|
||||
}
|
||||
|
||||
$table->data[2][0] = __('Subject');
|
||||
$table->data[2][1] = html_print_input_text(
|
||||
$table->data[0][] = html_print_label_input_block(
|
||||
__('Destination'),
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'flex-content-left',
|
||||
'content' => $destinationInputs,
|
||||
],
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->colspan[1][] = 2;
|
||||
$table->data[1][] = html_print_label_input_block(
|
||||
__('Subject'),
|
||||
html_print_input_text(
|
||||
'subject',
|
||||
$subject,
|
||||
'',
|
||||
50,
|
||||
70,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$table->data[3][0] = __('Message');
|
||||
$table->data[3][1] = html_print_textarea(
|
||||
$table->colspan[2][] = 2;
|
||||
$table->data[2][] = html_print_label_input_block(
|
||||
__('Message'),
|
||||
html_print_textarea(
|
||||
'message',
|
||||
15,
|
||||
255,
|
||||
50,
|
||||
$message,
|
||||
'',
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
$jsOutput = '';
|
||||
@ -396,17 +418,14 @@ echo '<form method="post" action="index.php?sec=message_list&sec2=operation/
|
||||
// Print the main table.
|
||||
html_print_table($table);
|
||||
// Print the action buttons section.
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons',
|
||||
'content' => html_print_submit_button(
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Send message'),
|
||||
'send_mes',
|
||||
false,
|
||||
[ 'icon' => 'wand' ],
|
||||
true
|
||||
),
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
|
@ -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
|
||||
@ -206,26 +206,37 @@ if (empty($messages) === true) {
|
||||
$data[0] = '';
|
||||
if ($message['read'] == 1) {
|
||||
if ($show_sent === true) {
|
||||
$data[0] .= '<a href="index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&show_sent=1&id_message='.$message_id.'">';
|
||||
$data[0] .= html_print_image('images/email_inbox.png', true, ['border' => 0, 'title' => __('Click to read'), 'class' => 'invert_filter']);
|
||||
$data[0] .= '</a>';
|
||||
$pathRead = 'index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&show_sent=1&id_message='.$message_id;
|
||||
$titleRead = __('Click to read');
|
||||
} else {
|
||||
$data[0] .= '<a href="index.php?sec=message_list&sec2=operation/messages/message_list&mark_unread=1&id_message='.$message_id.'">';
|
||||
$data[0] .= html_print_image('images/email_inbox.png', true, ['border' => 0, 'title' => __('Mark as unread'), 'class' => 'invert_filter']);
|
||||
$data[0] .= '</a>';
|
||||
$pathRead = 'index.php?sec=message_list&sec2=operation/messages/message_list&mark_unread=1&id_message='.$message_id;
|
||||
$titleRead = __('Mark as unread');
|
||||
}
|
||||
} else {
|
||||
if ($show_sent === true) {
|
||||
$data[0] .= '<a href="index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&show_sent=1&id_message='.$message_id.'">';
|
||||
$data[0] .= html_print_image('images/email_inbox.png', true, ['border' => 0, 'title' => __('Message unread - click to read'), 'class' => 'invert_filter']);
|
||||
$data[0] .= '</a>';
|
||||
$pathRead = 'index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&show_sent=1&id_message='.$message_id;
|
||||
$titleRead = __('Message unread - click to read');
|
||||
} else {
|
||||
$data[0] .= '<a href="index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&id_message='.$message_id.'">';
|
||||
$data[0] .= html_print_image('images/email_inbox.png', true, ['border' => 0, 'title' => __('Message unread - click to read'), 'class' => 'invert_filter']);
|
||||
$data[0] .= '</a>';
|
||||
$pathRead = 'index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&id_message='.$message_id;
|
||||
$titleRead = __('Message unread - click to read');
|
||||
}
|
||||
}
|
||||
|
||||
$data[0] = html_print_anchor(
|
||||
[
|
||||
'href' => $pathRead,
|
||||
'content' => html_print_image(
|
||||
'images/email_inbox.png',
|
||||
true,
|
||||
[
|
||||
'title' => $titleRead,
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
],
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
if ($show_sent === true) {
|
||||
$dest_user = get_user_fullname($message['dest']);
|
||||
if (!$dest_user) {
|
||||
@ -243,18 +254,24 @@ if (empty($messages) === true) {
|
||||
}
|
||||
|
||||
if ($show_sent === true) {
|
||||
$data[2] = '<a href="index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&show_sent=1&id_message='.$message_id.'">';
|
||||
$pathSubject = 'index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&show_sent=1&id_message='.$message_id;
|
||||
} else {
|
||||
$data[2] = '<a href="index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&id_message='.$message_id.'">';
|
||||
$pathSubject = 'index.php?sec=message_list&sec2=operation/messages/message_edit&read_message=1&id_message='.$message_id;
|
||||
}
|
||||
|
||||
if ($message['subject'] == '') {
|
||||
$data[2] .= __('No Subject');
|
||||
} else {
|
||||
$data[2] .= $message['subject'];
|
||||
$contentSubject = (empty($message['subject']) === true) ? __('No Subject') : $message['subject'];
|
||||
|
||||
if ((int) $message['read'] !== 1) {
|
||||
$contentSubject = '<strong>'.$contentSubject.'</strong>';
|
||||
}
|
||||
|
||||
$data[2] .= '</a>';
|
||||
$data[2] .= html_print_anchor(
|
||||
[
|
||||
'href' => $pathSubject,
|
||||
'content' => $contentSubject,
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
$data[3] = ui_print_timestamp(
|
||||
$message['timestamp'],
|
||||
@ -264,13 +281,27 @@ if (empty($messages) === true) {
|
||||
|
||||
$table->cellclass[][4] = 'table_action_buttons';
|
||||
if ($show_sent === true) {
|
||||
$data[4] = '<a href="index.php?sec=message_list&sec2=operation/messages/message_list&show_sent=1&delete_message=1&id='.$message_id.'"
|
||||
onClick="javascript:if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']).'</a>';
|
||||
$pathDelete = 'index.php?sec=message_list&sec2=operation/messages/message_list&show_sent=1&delete_message=1&id='.$message_id;
|
||||
} else {
|
||||
$data[4] = '<a href="index.php?sec=message_list&sec2=operation/messages/message_list&delete_message=1&id='.$message_id.'"
|
||||
onClick="javascript:if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true, ['title' => __('Delete'), 'class' => 'invert_filter']).'</a>';
|
||||
$pathDelete = 'index.php?sec=message_list&sec2=operation/messages/message_list&delete_message=1&id='.$message_id;
|
||||
}
|
||||
|
||||
$data[4] = html_print_anchor(
|
||||
[
|
||||
'href' => $pathDelete,
|
||||
'content' => html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Delete'),
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
),
|
||||
'onClick' => 'javascript:if (!confirm(\''.__('Are you sure?').'\')) return false;',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
}
|
||||
@ -312,11 +343,8 @@ if (empty($messages) === false) {
|
||||
|
||||
echo '<form id="create_message_form" method="post" class="float-right" action="index.php?sec=message_list&sec2=operation/messages/message_edit"></form>';
|
||||
|
||||
html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons',
|
||||
'content' => $outputButton,
|
||||
]
|
||||
html_print_action_buttons(
|
||||
$outputButton
|
||||
);
|
||||
|
||||
?>
|
||||
|
@ -226,77 +226,52 @@ ui_print_standard_header(
|
||||
|
||||
// ------------------- END HEADER ---------------------------------------
|
||||
// ------------------------ INIT FORM -----------------------------------
|
||||
$table = new stdClass();
|
||||
$table->id = 'controls_table';
|
||||
$table->width = '100%';
|
||||
$table->class = 'filter-table-adv';
|
||||
$table2 = new stdClass();
|
||||
$table2->id = 'controls_table';
|
||||
$table2->size[2] = '50%';
|
||||
$table2->size[3] = '50%';
|
||||
$table2->style[0] = 'text-align:center';
|
||||
$table2->style[1] = 'text-align:center';
|
||||
$table2->styleTable = 'border:none';
|
||||
|
||||
if (defined('METACONSOLE')) {
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
$table2->width = '100%';
|
||||
$table2->class = 'databox filters';
|
||||
|
||||
$table->head[0] = __('View Report');
|
||||
$table->head_colspan[0] = 5;
|
||||
$table->headstyle[0] = 'text-align: center';
|
||||
$table2->head[0] = __('View Report');
|
||||
$table2->head_colspan[0] = 5;
|
||||
$table2->headstyle[0] = 'text-align: center';
|
||||
}
|
||||
|
||||
$table->style = [];
|
||||
$table->style[0] = 'vertical-align: middle';
|
||||
$table->rowspan[0][0] = 2;
|
||||
|
||||
// Set initial conditions for these controls, later will be modified by javascript
|
||||
if (!$enable_init_date) {
|
||||
$table->style[1] = 'display: none';
|
||||
$table->style[2] = 'display: flex;align-items: baseline;';
|
||||
$display_to = 'none';
|
||||
$display_item = '';
|
||||
} else {
|
||||
$table->style[1] = 'display: "block"';
|
||||
$table->style[2] = 'display: flex;align-items: baseline;';
|
||||
$display_to = '';
|
||||
$display_item = 'none';
|
||||
}
|
||||
|
||||
$table->size = [];
|
||||
$table->colspan[0][1] = 2;
|
||||
$table->data = [];
|
||||
$table->data[0][0] = html_print_image(
|
||||
'images/reporting32.png',
|
||||
true,
|
||||
[
|
||||
'width' => '32',
|
||||
'height' => '32',
|
||||
]
|
||||
);
|
||||
|
||||
if (reporting_get_description($id_report)) {
|
||||
$table->data[0][1] = '<div class="float-left">'.reporting_get_description($id_report).'</div>';
|
||||
} else {
|
||||
$table->data[0][1] = '<div class="float-left">'.reporting_get_name($id_report).'</div>';
|
||||
}
|
||||
|
||||
$table->data[0][1] .= '<div class="float-right">'.__('Set initial date').html_print_checkbox('enable_init_date', 1, $enable_init_date, true).'</br>';
|
||||
|
||||
$html_menu_export = enterprise_hook('reporting_print_button_export');
|
||||
if ($html_menu_export === ENTERPRISE_NOT_HOOK) {
|
||||
$html_menu_export = '';
|
||||
}
|
||||
|
||||
|
||||
$table->data[0][1] .= '</div>';
|
||||
$table->data[0][1] .= $html_menu_export;
|
||||
$table2->data[0][2] = '<div><span class="font-title-font">'.__('Set initial date').'</span><br>'.html_print_checkbox_switch('enable_init_date', 1, $enable_init_date, true).'</div><br>';
|
||||
$table2->data[0][2] .= '<div style="display:'.$display_to.'" id="string_from"><div><span class="font-title-font">'.__('From').':</span></div>';
|
||||
$table2->data[0][2] .= html_print_input_text('date_init', $date_init, '', 12, 10, true).' ';
|
||||
$table2->data[0][2] .= html_print_input_text('time_init', $time_init, '', 10, 7, true).' ';
|
||||
$table2->data[0][2] .= '</div><div style="display:'.$display_item.'" id="string_items"><span class="font-title-font">'.__('Items period before').':</span></div>';
|
||||
$table2->data[0][2] .= '<div style="display:'.$display_to.'" id="string_to"><span class="font-title-font">'.__('to').':</span></div>';
|
||||
$table2->data[0][2] .= html_print_input_text('date', $date, '', 12, 10, true).' ';
|
||||
$table2->data[0][2] .= html_print_input_text('time', $time, '', 10, 7, true).' ';
|
||||
$table2->data[0][3] = $html_menu_export;
|
||||
|
||||
|
||||
|
||||
$table->data[1][1] = '<div>'.__('From').': </div>';
|
||||
$table->data[1][1] .= html_print_input_text('date_init', $date_init, '', 12, 10, true).' ';
|
||||
$table->data[1][1] .= html_print_input_text('time_init', $time_init, '', 10, 7, true).' ';
|
||||
$table->data[1][2] = '<div style="display:'.$display_item.'" id="string_items">'.__('Items period before').':</div>';
|
||||
$table->data[1][2] .= '<div style="display:'.$display_to.'" id="string_to">'.__('to').':</div>';
|
||||
$table->data[1][2] .= html_print_input_text('date', $date, '', 12, 10, true).' ';
|
||||
$table->data[1][2] .= html_print_input_text('time', $time, '', 10, 7, true).' ';
|
||||
|
||||
$searchForm = '<form method="post" action="'.$url.'&pure='.$config['pure'].'" class="mrgn_right_0px">';
|
||||
$searchForm .= html_print_table($table, true);
|
||||
$searchForm .= html_print_table($table2, true);
|
||||
$searchForm .= html_print_input_hidden('id_report', $id_report, true);
|
||||
|
||||
$Actionbuttons .= html_print_submit_button(
|
||||
@ -354,10 +329,6 @@ for ($i = 0; $i < count($report['contents']); $i++) {
|
||||
reporting_html_print_report($report, false, $config['custom_report_info']);
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// The rowspan of the first row is only 2 in controls table. Why is used the same code here and in the items??
|
||||
$table->rowspan[0][0] = 1;
|
||||
|
||||
echo '<div id="loading" class="center">';
|
||||
echo html_print_image('images/wait.gif', true, ['border' => '0']);
|
||||
echo '<strong>'.__('Loading').'...</strong>';
|
||||
@ -396,7 +367,6 @@ $(document).ready (function () {
|
||||
changeYear: true,
|
||||
showAnim: "slideDown"});
|
||||
|
||||
|
||||
$('[id^=text-time_init]').timepicker({
|
||||
showSecond: true,
|
||||
timeFormat: '<?php echo TIME_FORMAT_JS; ?>',
|
||||
@ -414,22 +384,16 @@ $(document).ready (function () {
|
||||
changeYear: true,
|
||||
showAnim: "slideDown"});
|
||||
|
||||
|
||||
$("*", "#controls_table-0").css("display", ""); //Re-show the first row of form.
|
||||
|
||||
/* Show/hide begin date reports controls */
|
||||
$("#checkbox-enable_init_date").click(function() {
|
||||
flag = $("#checkbox-enable_init_date").is(':checked');
|
||||
if (flag == true) {
|
||||
$("#controls_table-1-1").css("display", "");
|
||||
$("#controls_table-1-2").css("display", "");
|
||||
$("#string_to").show();
|
||||
$('#string_from').show();
|
||||
$("#string_items").hide();
|
||||
}
|
||||
else {
|
||||
$("#controls_table-1-1").css("display", "none");
|
||||
$("#controls_table-1-2").css("display", "");
|
||||
} else {
|
||||
$("#string_to").hide();
|
||||
$('#string_from').hide();
|
||||
$("#string_items").show();
|
||||
}
|
||||
});
|
||||
|
@ -50,11 +50,11 @@ if ($config['pure']) {
|
||||
// Windowed.
|
||||
$link['text'] = '<a target="_top" href="'.$url.'&pure=0&refr=30">';
|
||||
$link['text'] .= html_print_image(
|
||||
'images/normal_screen.png',
|
||||
'images/exit_fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Normal screen'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$link['text'] .= '</a>';
|
||||
@ -62,11 +62,11 @@ if ($config['pure']) {
|
||||
// Fullscreen.
|
||||
$link['text'] = '<a target="_top" href="'.$url.'&pure=1&refr=0">';
|
||||
$link['text'] .= html_print_image(
|
||||
'images/full_screen.png',
|
||||
'images/fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Full screen'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
);
|
||||
$link['text'] .= '</a>';
|
||||
|
@ -39,20 +39,20 @@ $refr = (int) get_parameter('refr', 0);
|
||||
$fullscreen = [];
|
||||
if ($config['pure']) {
|
||||
$fullscreen['text'] = '<a target="_top" href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_statistics&pure=0&refr='.$refr.'">'.html_print_image(
|
||||
'images/normal_screen.png',
|
||||
'images/exit_fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Normal screen'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
} else {
|
||||
$fullscreen['text'] = '<a target="_top" href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_statistics&pure=1&refr='.$refr.'">'.html_print_image(
|
||||
'images/full_screen.png',
|
||||
'images/fullscreen@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Full screen'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
}
|
||||
@ -60,11 +60,11 @@ if ($config['pure']) {
|
||||
// List
|
||||
$list = [];
|
||||
$list['text'] = '<a href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_view&pure='.$config['pure'].'&refresh='.$refr.'">'.html_print_image(
|
||||
'images/op_snmp.png',
|
||||
'images/SNMP-network-numeric-data@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('List'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
|
||||
@ -72,11 +72,11 @@ $list['text'] = '<a href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_v
|
||||
$statistics = [];
|
||||
$statistics['active'] = true;
|
||||
$statistics['text'] = '<a href="index.php?sec=estado&sec2=operation/snmpconsole/snmp_statistics&pure='.$config['pure'].'&refr='.$refr.'">'.html_print_image(
|
||||
'images/op_reporting.png',
|
||||
'images/logs@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('Statistics'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>';
|
||||
|
||||
|
@ -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
|
||||
|
@ -77,28 +77,28 @@ if (is_metaconsole()) {
|
||||
user_meta_print_header();
|
||||
$urls['main'] = 'index.php?sec=advanced&sec2=advanced/users_setup&tab=user_edit';
|
||||
} else {
|
||||
$urls['main'] = 'index.php?sec=workspace&sec2=operation/users/user_edit';
|
||||
$urls['main'] = 'index.php?sec=gusuarios&sec2=godmode/users/user_list';
|
||||
$urls['notifications'] = 'index.php?sec=workspace&sec2=operation/users/user_edit_notifications';
|
||||
$buttons = [
|
||||
'main' => [
|
||||
'active' => $_GET['sec2'] === 'operation/users/user_edit',
|
||||
'active' => $_GET['sec2'] === 'godmode/users/user_list&tab=user&pure=0',
|
||||
'text' => "<a href='{$urls['main']}'>".html_print_image(
|
||||
'images/user.png',
|
||||
'images/user.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('User management'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
],
|
||||
'notifications' => [
|
||||
'active' => $_GET['sec2'] === 'operation/users/user_edit_notifications',
|
||||
'text' => "<a href='{$urls['notifications']}'>".html_print_image(
|
||||
'images/alerts_template.png',
|
||||
'images/alert@svg.svg',
|
||||
true,
|
||||
[
|
||||
'title' => __('User notifications'),
|
||||
'class' => 'invert_filter',
|
||||
'class' => 'main_menu_icon invert_filter',
|
||||
]
|
||||
).'</a>',
|
||||
],
|
||||
|
@ -15,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
|
||||
@ -58,7 +58,7 @@ if (get_parameter('change_label', 0)) {
|
||||
}
|
||||
|
||||
|
||||
echo '<div id="user-notifications-wrapper" class="white_box table_div table_three_columns">
|
||||
echo '<div id="user-notifications-wrapper" class="white_box table_div table_three_columns padding-2">
|
||||
<div class="table_thead">
|
||||
<div class="table_th"></div>
|
||||
<div class="table_th">'.__('Enable').'</div>
|
||||
@ -91,8 +91,9 @@ foreach ($sources as $source) {
|
||||
}
|
||||
|
||||
if ((bool) $disabled_flag === true) {
|
||||
$s = __('Controls have been disabled by the system administrator');
|
||||
echo '<span class="bolder color_ff0">'.$s.'</span>';
|
||||
ui_print_warning_message(
|
||||
__('Controls have been disabled by the system administrator')
|
||||
);
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.769
|
||||
%define release 230307
|
||||
%define release 230308
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.769
|
||||
%define release 230307
|
||||
%define release 230308
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.769
|
||||
%define release 230307
|
||||
%define release 230308
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
@ -34,19 +34,19 @@ if (\is_metaconsole() === true) {
|
||||
\alerts_meta_print_header($tabs);
|
||||
} else {
|
||||
// Header.
|
||||
\ui_print_page_header(
|
||||
// Title.
|
||||
__('Calendars Edit'),
|
||||
// Icon.
|
||||
\ui_print_standard_header(
|
||||
__('Alerts'),
|
||||
'images/gm_alerts.png',
|
||||
// Return.
|
||||
false,
|
||||
// Help.
|
||||
'alert_special_days',
|
||||
// Godmode.
|
||||
true,
|
||||
// Options.
|
||||
$tabs
|
||||
$tabs,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Calendars Edit'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -114,19 +114,24 @@ $inputs[] = [
|
||||
'rows' => 50,
|
||||
'columns' => 30,
|
||||
],
|
||||
'class' => 'w100p',
|
||||
];
|
||||
|
||||
|
||||
$button_create = '';
|
||||
if ($is_management_allowed === true) {
|
||||
// Submit.
|
||||
$inputs[] = [
|
||||
'arguments' => [
|
||||
'name' => 'button',
|
||||
'label' => (($create === true) ? __('Create') : __('Update')),
|
||||
'type' => 'submit',
|
||||
'attributes' => 'class="sub next"',
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
(($create === true) ? __('Create') : __('Update')),
|
||||
'button',
|
||||
false,
|
||||
[
|
||||
'icon' => 'wand',
|
||||
'form' => 'create_specia_days',
|
||||
],
|
||||
];
|
||||
true
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// Print form.
|
||||
@ -135,6 +140,8 @@ HTML::printForm(
|
||||
'form' => [
|
||||
'action' => $url.'&op=edit&action=save&id='.$calendar->id(),
|
||||
'method' => 'POST',
|
||||
'id' => 'create_specia_days',
|
||||
'class' => 'aaaa',
|
||||
],
|
||||
'inputs' => $inputs,
|
||||
],
|
||||
|
@ -101,7 +101,7 @@ try {
|
||||
[
|
||||
'id' => $tableId,
|
||||
'class' => 'info_table',
|
||||
'style' => 'width: 100%',
|
||||
'style' => 'width: 99%',
|
||||
'columns' => $columns,
|
||||
'column_names' => $column_names,
|
||||
'ajax_url' => $ajax_url,
|
||||
@ -117,12 +117,14 @@ try {
|
||||
[
|
||||
'label' => __('Free search'),
|
||||
'type' => 'text',
|
||||
'class' => 'mw250px',
|
||||
'class' => 'w25p',
|
||||
'id' => 'free_search',
|
||||
'name' => 'free_search',
|
||||
],
|
||||
],
|
||||
],
|
||||
'filter_main_class' => 'box-flat white_table_graph fixed_filter_bar',
|
||||
'dom_elements' => 'lftpB',
|
||||
]
|
||||
);
|
||||
} catch (Exception $e) {
|
||||
@ -130,7 +132,7 @@ try {
|
||||
}
|
||||
|
||||
if ((bool) check_acl($config['id_user'], 0, 'LM') === true) {
|
||||
HTML::printForm(
|
||||
$form_create = HTML::printForm(
|
||||
[
|
||||
'form' => [
|
||||
'action' => $url.'&op=edit',
|
||||
@ -142,10 +144,12 @@ if ((bool) check_acl($config['id_user'], 0, 'LM') === true) {
|
||||
'name' => 'button',
|
||||
'label' => __('Create'),
|
||||
'type' => 'submit',
|
||||
'attributes' => 'class="sub next"',
|
||||
'attributes' => ['icon' => 'wand'],
|
||||
],
|
||||
],
|
||||
],
|
||||
]
|
||||
],
|
||||
true
|
||||
);
|
||||
html_print_action_buttons($form_create);
|
||||
}
|
||||
|
@ -35,19 +35,19 @@ if (\is_metaconsole() === true) {
|
||||
\alerts_meta_print_header($tabs);
|
||||
} else {
|
||||
// Header.
|
||||
\ui_print_page_header(
|
||||
// Title.
|
||||
__('Special days'),
|
||||
// Icon.
|
||||
ui_print_standard_header(
|
||||
__('Alerts'),
|
||||
'images/gm_alerts.png',
|
||||
// Return.
|
||||
false,
|
||||
// Help.
|
||||
'alert_special_days',
|
||||
// Godmode.
|
||||
true,
|
||||
// Options.
|
||||
$tabs
|
||||
$tabs,
|
||||
[
|
||||
[
|
||||
'link' => '',
|
||||
'label' => __('Special days'),
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -85,6 +85,7 @@ $inputs[] = [
|
||||
'rows' => 10,
|
||||
'options' => ['required' => 1],
|
||||
],
|
||||
'class' => 'flex flex_column',
|
||||
];
|
||||
|
||||
$days = [];
|
||||
@ -104,6 +105,7 @@ $inputs[] = [
|
||||
'type' => 'select',
|
||||
'fields' => $days,
|
||||
],
|
||||
'class' => 'mrgn_right_20px',
|
||||
];
|
||||
|
||||
// Group.
|
||||
@ -114,6 +116,7 @@ $inputs[] = [
|
||||
'returnAllGroup' => true,
|
||||
'name' => 'id_group',
|
||||
],
|
||||
'class' => 'mrgn_right_20px',
|
||||
];
|
||||
|
||||
// Group.
|
||||
@ -128,6 +131,7 @@ $inputs[] = [
|
||||
'id' => 'overwrite',
|
||||
'disabled_hidden' => true,
|
||||
],
|
||||
'class' => 'flex flex_column',
|
||||
];
|
||||
|
||||
// Submit.
|
||||
@ -136,23 +140,39 @@ $inputs[] = [
|
||||
'name' => 'button',
|
||||
'label' => __('Upload'),
|
||||
'type' => 'submit',
|
||||
'attributes' => 'class="sub next"',
|
||||
'attributes' => [
|
||||
'icon' => 'wand',
|
||||
'class' => 'mini',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
if ($is_management_allowed === true) {
|
||||
// Print form.
|
||||
HTML::printForm(
|
||||
$form_upload = HTML::printForm(
|
||||
[
|
||||
'form' => [
|
||||
'action' => $url.'&op=upload_ical&id='.$id_calendar,
|
||||
'method' => 'POST',
|
||||
'id' => 'icalendar-special-days',
|
||||
'enctype' => 'multipart/form-data',
|
||||
'class' => 'calendar-upload-form',
|
||||
],
|
||||
'inputs' => $inputs,
|
||||
],
|
||||
false
|
||||
true
|
||||
);
|
||||
|
||||
ui_toggle(
|
||||
$form_upload,
|
||||
'<span class="subsection_header_title">'.__('Upload').'</span>',
|
||||
__('Upload'),
|
||||
'upload',
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
'white-box-content no_border',
|
||||
'filter-datatable-main box-flat white_table_graph fixed_filter_bar '
|
||||
);
|
||||
}
|
||||
|
||||
@ -216,7 +236,7 @@ for ($month = 1; $month <= 12; $month++) {
|
||||
|
||||
$cal_table = new stdClass();
|
||||
$cal_table->width = '100%';
|
||||
$cal_table->class = 'databox data';
|
||||
$cal_table->class = 'databox data special-days-thead';
|
||||
|
||||
$cal_table->data = [];
|
||||
$cal_table->head = [];
|
||||
@ -238,7 +258,7 @@ for ($month = 1; $month <= 12; $month++) {
|
||||
$cal_table->size[6] = '14%';
|
||||
$cal_table->align = [];
|
||||
$cal_table->border = '1';
|
||||
$cal_table->titlestyle = 'text-align:center; font-weight: bold;';
|
||||
$cal_table->titlestyle = 'text-align:center;';
|
||||
switch ($display_month) {
|
||||
case 1:
|
||||
$cal_table->title = __('January');
|
||||
@ -467,7 +487,7 @@ for ($month = 1; $month <= 12; $month++) {
|
||||
}
|
||||
|
||||
if ((bool) check_acl($config['id_user'], 0, 'LM') === true) {
|
||||
HTML::printForm(
|
||||
$form_create = HTML::printForm(
|
||||
[
|
||||
'form' => [
|
||||
'action' => $url.'&op=edit',
|
||||
@ -479,12 +499,14 @@ if ((bool) check_acl($config['id_user'], 0, 'LM') === true) {
|
||||
'name' => 'button',
|
||||
'label' => __('Create'),
|
||||
'type' => 'submit',
|
||||
'attributes' => 'class="sub next"',
|
||||
'attributes' => ['icon' => 'wand'],
|
||||
],
|
||||
],
|
||||
],
|
||||
]
|
||||
],
|
||||
true
|
||||
);
|
||||
html_print_action_buttons($form_create);
|
||||
}
|
||||
|
||||
echo '<div id="modal-alert-templates" class="invisible"></div>';
|
||||
|
@ -156,14 +156,18 @@ $inputs[] = [
|
||||
|
||||
if ($is_management_allowed === true) {
|
||||
// Submit.
|
||||
$inputs[] = [
|
||||
'arguments' => [
|
||||
'name' => 'button',
|
||||
'label' => (($create === true) ? __('Create') : __('Update')),
|
||||
'type' => 'submit',
|
||||
'attributes' => 'class="sub next"',
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
(($create === true) ? __('Create') : __('Update')),
|
||||
'button',
|
||||
false,
|
||||
[
|
||||
'icon' => 'wand',
|
||||
'form' => 'form-special-days',
|
||||
],
|
||||
];
|
||||
true
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// Print form.
|
||||
|
@ -1,5 +1,5 @@
|
||||
package: pandorafms-server
|
||||
Version: 7.0NG.769-230307
|
||||
Version: 7.0NG.769-230308
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
@ -14,7 +14,7 @@
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.769-230307"
|
||||
pandora_version="7.0NG.769-230308"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
||||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.769";
|
||||
my $pandora_build = "230307";
|
||||
my $pandora_build = "230308";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
||||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.769";
|
||||
my $pandora_build = "230307";
|
||||
my $pandora_build = "230308";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.769
|
||||
%define release 230307
|
||||
%define release 230308
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -4,7 +4,7 @@
|
||||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.769
|
||||
%define release 230307
|
||||
%define release 230308
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
@ -9,7 +9,7 @@
|
||||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.769"
|
||||
PI_BUILD="230307"
|
||||
PI_BUILD="230308"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
@ -35,7 +35,7 @@ use PandoraFMS::Config;
|
||||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.769 Build 230307";
|
||||
my $version = "7.0NG.769 Build 230308";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
||||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.769 Build 230307";
|
||||
my $version = "7.0NG.769 Build 230308";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user