2006-03-27 05:37:27 +02:00
< ? php
2020-12-02 15:56:18 +01:00
/**
2023-06-08 13:19:01 +02:00
* Pandora FMS - https :// pandorafms . com
2020-12-02 15:56:18 +01:00
* ==================================================
2023-06-08 11:53:13 +02:00
* Copyright ( c ) 2005 - 2023 Pandora FMS
2023-06-08 13:19:01 +02:00
* Please see https :// pandorafms . com / community / for full contribution list
2020-12-02 15:56:18 +01:00
* 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 .
*/
2020-12-23 06:48:22 +01:00
2019-01-30 16:18:44 +01:00
require_once 'include/functions_messages.php' ;
require_once 'include/functions_servers.php' ;
2019-02-26 10:43:59 +01:00
require_once 'include/functions_notifications.php' ;
2019-12-03 13:59:03 +01:00
require_once 'include/ajax/order_interpreter.php' ;
ui_require_css_file ( 'order_interpreter' );
* include/functions_graph.php
include/functions_html.php
include/functions_messages.php
include/db/postgresql.php
include/db/mysql.php
include/db/oracle.php
include/functions_reporting.php
include/functions_filemanager.php
include/functions_gis.php
include/auth/ldap.php
include/auth/mysql.php
include/functions_networkmap.php
include/functions_network_components.php
include/ajax/skins.ajax.php
include/ajax/reporting.ajax.php
include/ajax/visual_console_builder.ajax.php
include/ajax/alert_list.ajax.php
include/ajax/module.php
include/functions_config.php
include/functions_api.php
include/help/en/help_timesource.php
include/help/es/help_timesource.php
include/help/ja/help_timesource.php
include/config_process.php
include/functions_ui.php
include/functions_custom_graphs.php
include/fgraph.php
include/functions_incidents.php
include/api.php
include/functions_reports.php
include/functions_ui_renders.php
extensions/insert_data.php
extensions/system_info.php
extensions/extension_uploader.php
extensions/pandora_logs.php
extensions/agents_modules.php
extensions/update_manager.php
extensions/ssh_console.php
extensions/dbmanager.php
extensions/vnc_view.php
extensions/resource_registration.php
extensions/resource_exportation.php
extensions/users_connected.php
extensions/module_groups.php
extensions/update_manager/load_updatemanager.php
extensions/update_manager/lib/libupdate_manager_client.php
extensions/update_manager/lib/libupdate_manager.php
extensions/update_manager/lib/libupdate_manager_components.php
extensions/update_manager/lib/libupdate_manager_updates.php
extensions/update_manager/settings.php
extensions/update_manager/main.php
extensions/plugin_registration.php
operation/incidents/incident.php
operation/incidents/incident_detail.php
operation/incidents/incident_statistics.php
operation/search_modules.php
operation/visual_console/render_view.php
operation/visual_console/index.php
operation/extensions.php
operation/agentes/status_monitor.php
operation/agentes/export_csv.php
operation/agentes/estado_ultimopaquete.php
operation/agentes/datos_agente.php
operation/agentes/alerts_status.php
operation/agentes/estado_generalagente.php
operation/agentes/custom_fields.php
operation/agentes/estado_agente.php
operation/agentes/networkmap.topology.php
operation/agentes/networkmap.groups.php
operation/agentes/sla_view.php
operation/agentes/exportdata.php
operation/agentes/gis_view.php
operation/agentes/estado_monitores.php
operation/agentes/ver_agente.php
operation/agentes/graphs.php
operation/agentes/agent_fields.php
operation/agentes/tactical.php
operation/agentes/group_view.php
operation/agentes/networkmap.php
operation/agentes/stat_win.php
operation/servers/view_server.php
operation/servers/view_server_detail.php
operation/menu.php
operation/search_agents.php
operation/search_graphs.php
operation/snmpconsole/snmp_view.php
operation/users/user_edit.php
operation/gis_maps/render_view.php
operation/gis_maps/ajax.php
operation/integria_incidents/incident.php
operation/integria_incidents/incident_detail.php
operation/integria_incidents/incident_statistics.php
operation/events/event_statistics.php
operation/events/events_rss.php
operation/events/export_csv.php
operation/events/sound_events.php
operation/events/events_validate.php
operation/events/events_list.php
operation/events/events_marquee.php
operation/events/events.php
operation/search_alerts.php
operation/messages/message.php
operation/reporting/reporting_xml.php
operation/reporting/reporting_viewer.php
operation/reporting/graph_viewer.php
operation/search_reports.php
operation/search_maps.php
operation/search_users.php
extras/pandora_diag.php
mobile/operation/agents/monitor_status.php
mobile/operation/agents/view_agents.php
mobile/operation/agents/view_alerts.php
mobile/operation/agents/group_view.php
mobile/operation/events/events.php
mobile/index.php
general/error_authconfig.php
general/links_menu.php
general/logon_ok.php
general/error_dbconfig.php
general/ui/agents_list.php
general/header.php
godmode/groups/modu_group_list.php
godmode/groups/configure_group.php
godmode/groups/configure_modu_group.php
godmode/groups/group_list.php
godmode/admin_access_logs.php
godmode/db/db_main.php
godmode/db/db_audit.php
godmode/db/db_sanity.php
godmode/db/db_refine.php
godmode/db/db_info.php
godmode/db/db_event.php
godmode/db/db_purge.php
godmode/extensions.php
godmode/agentes/agent_template.php
godmode/agentes/module_manager_editor_common.php
godmode/agentes/fields_manager.php
godmode/agentes/agent_conf_gis.php
godmode/agentes/module_manager_editor_prediction.php
godmode/agentes/module_manager.php
godmode/agentes/modificar_agente.php
godmode/agentes/configurar_agente.php
godmode/agentes/configure_field.php
godmode/agentes/module_manager_editor.php
godmode/agentes/planned_downtime.php
godmode/agentes/manage_config_remote.php
godmode/agentes/agent_manager.php
godmode/servers/recon_script.php
godmode/servers/plugin.php
godmode/servers/manage_recontask.php
godmode/servers/modificar_server.php
godmode/servers/manage_recontask_form.php
godmode/alerts/alert_list.list.php
godmode/alerts/configure_alert_compound.php
godmode/alerts/alert_compounds.php
godmode/alerts/alert_list.php
godmode/alerts/configure_alert_template.php
godmode/alerts/alert_templates.php
godmode/alerts/configure_alert_action.php
godmode/alerts/configure_alert_command.php
godmode/alerts/alert_actions.php
godmode/alerts/alert_list.builder.php
godmode/alerts/alert_commands.php
godmode/setup/file_manager.php
godmode/setup/os.list.php
godmode/setup/news.php
godmode/setup/gis_step_2.php
godmode/setup/links.php
godmode/setup/setup.php
godmode/setup/os.php
godmode/setup/performance.php
godmode/setup/setup_auth.php
godmode/setup/gis.php
godmode/setup/os.builder.php
godmode/setup/setup_visuals.php
godmode/snmpconsole/snmp_alert.php
godmode/snmpconsole/snmp_filters.php
godmode/users/user_list.php
godmode/users/configure_profile.php
godmode/gis_maps/configure_gis_map.php
godmode/gis_maps/index.php
godmode/massive/massive_add_alerts.php
godmode/massive/massive_copy_modules.php
godmode/massive/massive_delete_agents.php
godmode/massive/massive_enable_disable_alerts.php
godmode/massive/massive_operations.php
godmode/massive/massive_delete_profiles.php
godmode/massive/massive_edit_agents.php
godmode/massive/massive_delete_action_alerts.php
godmode/massive/massive_delete_modules.php
godmode/massive/massive_add_profiles.php
godmode/massive/massive_delete_alerts.php
godmode/massive/massive_edit_modules.php
godmode/massive/massive_standby_alerts.php
godmode/massive/massive_add_action_alerts.php
godmode/modules/manage_network_components_form.php
godmode/modules/manage_nc_groups_form.php
godmode/modules/manage_network_templates.php
godmode/modules/module_list.php
godmode/modules/manage_network_components_form_common.php
godmode/modules/manage_network_components_form_network.php
godmode/modules/manage_network_templates_form.php
godmode/modules/manage_network_components_form_wmi.php
godmode/modules/manage_network_components.php
godmode/modules/manage_nc_groups.php
godmode/reporting/visual_console_builder.wizard.php
godmode/reporting/graph_builder.main.php
godmode/reporting/reporting_builder.list_items.php
godmode/reporting/visual_console_builder.php
godmode/reporting/reporting_builder.preview.php
godmode/reporting/reporting_builder.main.php
godmode/reporting/visual_console_builder.data.php
godmode/reporting/visual_console_builder.elements.php
godmode/reporting/graph_builder.php
godmode/reporting/visual_console_builder.preview.php
godmode/reporting/graph_builder.graph_editor.php
godmode/reporting/reporting_builder.php
godmode/reporting/visual_console_builder.editor.php
godmode/reporting/reporting_builder.item_editor.php
godmode/reporting/map_builder.php
godmode/reporting/graphs.php
godmode/reporting/graph_builder.preview.php
include/functions_db.php: Added some includes and functions of this code have "db_" prefix.
* include/functions.php: Moved function check_login(), check_acl(),
dame_nombre_pluginid(), get_os_name() from functions_db.php to functions.php.
* include/functions_groups.php: Moved functions get_childrens(), safe_acl_group()
and get_parents(), give_disabled_group(), isAllGroups(), get_group_icon(), get_all_groups(),
get_id_groups_recursive(), get_user_groups_tree_recursive(), get_group_status(),
get_group_name(), get_group_users() from functions_db.php to this code.
* include/functions_profile.php: New library with profile functions. Moved functions
get_profile_name(), get_profiles(), create_user_profile(), delete_user_profile(),
delete_profile() from functions_db.php to this code. Added new parameter in function
get_profile() to retrieve profiles with filter conditions applied.
* include/functions_users.php: New library with users functions. Moved functions
get_users_info(), get_all_model_groups(), get_user_groups(), get_user_groups_tree(),
get_user_first_group(), user_access_to_agent() from funtions_db.php to this code.
* godmode/users/configure_user.php: Changed get_profile_filter() function to get_profile().
* include/functions_agents.php: Moved functions get_group_agents(), get_agent_modules(),
get_agent_module_id(), get_agent_id(), get_agent_name(), get_agent_modules_data_count(),
check_alert_fired(), get_agent_interval(), get_agent_os(), give_agentmodule_flag(),
agent_add_address(), agent_delete_address(), get_agent_address(), get_agent_with_ip(),
get_agent_addresses(), get_agent_status(), delete_agent(), get_agentmodule_group(),
get_agent_group() from functions_db.php to this code.
* include/functions_modules.php: Moved functions get_agentmodule(), get_agentmodule_id(),
get_agentmodule_is_init(), get_agent_modules_count(), get_module_type_name(),
get_module_type_icon(), get_agentmodule_agent(), get_agentmodule_agent_name(),
get_agentmodule_name(), get_agentmodule_type(), get_monitor_downs_in_period(),
get_monitor_last_down_timestamp_in_period(), get_monitors_in_group(),
get_monitors_in_agent(), get_monitors_down(), get_moduletype_name(),
get_moduletype_description(), get_moduletypes(), get_module_interval(), show_icon_type(),
give_modulecategory_name(),
give_agent_id_from_module_id(), get_module_status(), get_agent_module_last_value(),
get_previous_data(), get_agentmodule_modulegroup(), get_modulegroups(),
get_modulegroup_name() from functions_db.php to this code.
* include/functions_alerts.php: Moved functions get_alert_type(), get_agent_alert_fired(),
get_module_alert_fired(), get_alert_fires_in_period(), get_group_alerts(), get_alerts_fired(),
get_alert_last_fire_timestamp_in_period(), get_agentmodule_status(),
get_agentmodule_last_status() from functions_db.php to this code.
* include/functions_exportserver.php: Moved function dame_nombre_servidorexportacion()
from functions_db.php to this code.
* include/functions_events.php: Moved functions get_group_events(), get_agent_events(),
get_module_events() from functions_db.php to this code.
* include/functions_servers.php: Moved functions get_server_name(), show_server_type(),
check_server_status(), server_status() from functions_db.php to this code.
* include/functions_network_profiles.php: Moved function get_networkprofile_name()
from functions_db.php to this code.
* include/functions_visual_map.php: Moved functions get_layoutdata_x(), get_layoutdata_y()
from fucntions_db.php to this code.
* include/functions_io.php: Moved function __() from functions_db.php to this code.
git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4258 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2011-04-19 20:42:49 +02:00
2011-06-16 21:26:45 +02:00
// Check permissions
2011-06-27 17:27:19 +02:00
// Global errors/warnings checking.
2021-03-11 15:40:23 +01:00
config_check ();
2021-06-16 15:29:28 +02:00
echo sprintf ( '<div id="header_table" class="header_table_%s">' , $menuTypeClass );
2019-03-05 12:54:11 +01:00
2019-03-25 19:37:45 +01:00
?>
2023-02-20 17:22:42 +01:00
< div id = " header_table_inner " >
2019-02-25 11:54:46 +01:00
< ? php
2019-03-04 08:39:56 +01:00
// ======= Notifications Discovery ===============================================
$notifications_numbers = notifications_get_counters ();
$header_discovery = '<div id="header_discovery">' . notifications_print_ball (
$notifications_numbers [ 'notifications' ],
$notifications_numbers [ 'last_id' ]
) . '</div>' ;
2019-03-11 12:36:52 +01:00
// ======= Servers List ===============================================
2022-02-25 10:16:12 +01:00
if (( bool ) check_acl ( $config [ 'id_user' ], 0 , 'AW' ) !== false ) {
$servers = [];
$servers [ 'all' ] = ( int ) db_get_value ( 'COUNT(id_server)' , 'tserver' );
if ( $servers [ 'all' ] != 0 ) {
$servers [ 'up' ] = ( int ) servers_check_status ();
$servers [ 'down' ] = ( $servers [ 'all' ] - $servers [ 'up' ]);
if ( $servers [ 'up' ] == 0 ) {
// All Servers down or no servers at all.
2023-02-20 17:22:42 +01:00
$servers_check_img = html_print_image ( 'images/system_error@header.svg' , true , [ 'alt' => 'cross' , 'class' => 'main_menu_icon bot' , 'title' => __ ( 'All systems' ) . ': ' . __ ( 'Down' )]);
2022-02-25 10:16:12 +01:00
} else if ( $servers [ 'down' ] != 0 ) {
// Some servers down.
2023-02-20 17:22:42 +01:00
$servers_check_img = html_print_image ( 'images/system_warning@header.svg' , true , [ 'alt' => 'error' , 'class' => 'main_menu_icon bot' , 'title' => $servers [ 'down' ] . ' ' . __ ( 'servers down' )]);
2022-02-25 10:16:12 +01:00
} else {
// All servers up.
2023-02-20 17:22:42 +01:00
$servers_check_img = html_print_image ( 'images/system_ok@header.svg' , true , [ 'alt' => 'ok' , 'class' => 'main_menu_icon bot' , 'title' => __ ( 'All systems' ) . ': ' . __ ( 'Ready' )]);
2022-02-25 10:16:12 +01:00
}
2019-03-11 12:36:52 +01:00
2022-02-25 10:16:12 +01:00
unset ( $servers );
// Since this is the header, we don't like to trickle down variables.
2023-02-20 17:22:42 +01:00
$servers_check_img_link = html_print_anchor (
[
'href' => 'index.php?sec=gservers&sec2=godmode/servers/modificar_server&refr=60' ,
'content' => $servers_check_img ,
],
true
);
2022-02-25 10:16:12 +01:00
};
2023-02-20 17:22:42 +01:00
$servers_list = html_print_div (
[
'id' => 'servers_list' ,
'content' => $servers_check_img_link ,
],
true
);
2022-02-25 10:16:12 +01:00
}
2019-03-11 12:36:52 +01:00
2019-03-04 08:39:56 +01:00
2019-02-25 11:54:46 +01:00
// ======= Alerts ===============================================
$check_minor_release_available = false ;
$pandora_management = check_acl ( $config [ 'id_user' ], 0 , 'PM' );
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
$check_minor_release_available = db_check_minor_relase_available ();
2023-02-20 17:22:42 +01:00
if ( $check_minor_release_available === true ) {
2019-02-25 11:54:46 +01:00
if ( users_is_admin ( $config [ 'id_user' ])) {
2023-02-20 17:22:42 +01:00
if ( $config [ 'language' ] === 'es' ) {
2021-11-04 16:28:15 +01:00
set_pandora_error_for_header ( 'Hay una o mas revisiones menores en espera para ser actualizadas. <a id="aviable_updates" target="blank" href="https://pandorafms.com/manual/es/documentation/02_installation/02_anexo_upgrade#version_70ng_rolling_release">' . __ ( 'Sobre actualización de revisión menor' ) . '</a>' , 'Revisión/es menor/es disponible/s' );
2019-02-25 11:54:46 +01:00
} else {
2021-11-04 16:28:15 +01:00
set_pandora_error_for_header ( 'There are one or more minor releases waiting for update. <a id="aviable_updates" target="blank" href="https://pandorafms.com/manual/en/documentation/02_installation/02_anexo_upgrade#version_70ng_rolling_release">' . __ ( 'About minor release update' ) . '</a>' , 'minor release/s available' );
2019-01-30 16:18:44 +01:00
}
2019-02-25 11:54:46 +01:00
}
}
2019-01-30 16:18:44 +01:00
2019-03-25 12:41:39 +01:00
// Search.
2019-02-25 11:54:46 +01:00
$acl_head_search = true ;
if ( $config [ 'acl_enterprise' ] == 1 && ! users_is_admin ()) {
$acl_head_search = db_get_sql (
" SELECT sec FROM tusuario
INNER JOIN tusuario_perfil ON tusuario . id_user = tusuario_perfil . id_usuario
INNER JOIN tprofile_view ON tprofile_view . id_profile = tusuario_perfil . id_perfil
WHERE tusuario . id_user = '".$config[' id_user ']."' AND ( sec = '*' OR sec = 'head_search' ) "
);
}
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
if ( $acl_head_search ) {
2019-03-25 12:41:39 +01:00
// Search bar.
2021-03-11 15:40:23 +01:00
$search_bar = '<form autocomplete="off" method="get" class="display_in" name="quicksearch" action="">' ;
'<input autocomplete="false" name="hidden" type="text" class="invisible">' ;
2019-02-25 11:54:46 +01:00
if ( ! isset ( $config [ 'search_keywords' ])) {
$search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>' ;
2019-01-30 16:18:44 +01:00
} else {
2019-02-25 11:54:46 +01:00
if ( strlen ( $config [ 'search_keywords' ]) == 0 ) {
$search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>' ;
} else {
$search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = false; </script>' ;
}
2019-01-30 16:18:44 +01:00
}
2023-03-10 12:40:21 +01:00
$search_bar .= '<div id="result_order" class="result_order"></div>' ;
2019-12-13 14:08:44 +01:00
$search_bar .= '<input id="keywords" name="keywords"' ;
2019-02-25 11:54:46 +01:00
if ( ! isset ( $config [ 'search_keywords' ])) {
$search_bar .= " value=' " . __ ( 'Enter keywords to search' ) . " ' " ;
} else if ( strlen ( $config [ 'search_keywords' ]) == 0 ) {
$search_bar .= " value=' " . __ ( 'Enter keywords to search' ) . " ' " ;
2019-01-30 16:18:44 +01:00
} else {
2019-02-25 11:54:46 +01:00
$search_bar .= " value=' " . $config [ 'search_keywords' ] . " ' " ;
2019-01-30 16:18:44 +01:00
}
2023-03-10 12:40:21 +01:00
$search_bar .= 'type="search" onfocus="javascript: if (fieldKeyWordEmpty) $(\'#keywords\').val(\'\');" onkeyup="showinterpreter()" class="search_input"/>' ;
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
// $search_bar .= 'onClick="javascript: document.quicksearch.submit()"';
$search_bar .= " <input type='hidden' name='head_search_keywords' value='abc' /> " ;
$search_bar .= '</form>' ;
2019-03-25 12:41:39 +01:00
$header_searchbar = '<div id="header_searchbar">' . $search_bar . '</div>' ;
2019-02-25 11:54:46 +01:00
}
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
// ======= Autorefresh code =============================
$autorefresh_txt = '' ;
$autorefresh_additional = '' ;
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
$ignored_params = [
'agent_config' => false ,
'code' => false ,
];
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
if ( ! isset ( $_GET [ 'sec2' ])) {
$_GET [ 'sec2' ] = '' ;
}
2019-01-30 16:18:44 +01:00
2019-05-21 12:16:06 +02:00
if ( $_GET [ 'sec' ] == 'main' || ! isset ( $_GET [ 'sec' ])) {
2020-12-02 15:56:18 +01:00
// Home screen chosen by the user.
2019-05-21 12:16:06 +02:00
$home_page = '' ;
if ( isset ( $config [ 'id_user' ])) {
$user_info = users_get_user_by_id ( $config [ 'id_user' ]);
$home_page = io_safe_output ( $user_info [ 'section' ]);
$home_url = $user_info [ 'data_section' ];
}
if ( $home_page != '' ) {
switch ( $home_page ) {
case 'Event list' :
$_GET [ 'sec2' ] = 'operation/events/events' ;
break ;
case 'Group view' :
$_GET [ 'sec2' ] = 'operation/agentes/group_view' ;
break ;
case 'Alert detail' :
$_GET [ 'sec2' ] = 'operation/agentes/alerts_status' ;
break ;
case 'Tactical view' :
$_GET [ 'sec2' ] = 'operation/agentes/tactical' ;
break ;
case 'Default' :
2020-12-02 15:56:18 +01:00
default :
2019-05-21 12:16:06 +02:00
$_GET [ 'sec2' ] = 'general/logon_ok' ;
break ;
case 'Dashboard' :
2020-03-26 12:29:38 +01:00
$_GET [ 'sec2' ] = 'operation/dashboard/dashboard' ;
2019-05-21 12:16:06 +02:00
break ;
case 'Visual console' :
$_GET [ 'sec2' ] = 'operation/visual_console/render_view' ;
break ;
case 'Other' :
$home_url = io_safe_output ( $home_url );
$url_array = parse_url ( $home_url );
parse_str ( $url_array [ 'query' ], $res );
foreach ( $res as $key => $param ) {
$_GET [ $key ] = $param ;
}
break ;
}
}
}
2019-02-25 11:54:46 +01:00
if ( ! isset ( $_GET [ 'refr' ])) {
$_GET [ 'refr' ] = null ;
}
2019-01-30 16:18:44 +01:00
2019-03-25 12:53:50 +01:00
$select = db_process_sql (
" SELECT autorefresh_white_list,time_autorefresh
FROM tusuario
WHERE id_user = '".$config[' id_user ']."' "
);
$autorefresh_list = json_decode (
$select [ 0 ][ 'autorefresh_white_list' ]
);
2019-01-30 16:18:44 +01:00
2022-01-11 14:36:05 +01:00
$header_autorefresh = '' ;
$header_autorefresh_counter = '' ;
2020-02-10 17:31:48 +01:00
if ( $config [ 'legacy_vc' ]
|| ( $_GET [ 'sec2' ] !== 'operation/visual_console/render_view' )
|| (( $_GET [ 'sec2' ] !== 'operation/visual_console/render_view' )
&& $config [ 'legacy_vc' ])
2019-03-25 12:53:50 +01:00
) {
2020-02-05 18:56:28 +01:00
if ( $autorefresh_list !== null
&& array_search ( $_GET [ 'sec2' ], $autorefresh_list ) !== false
) {
$do_refresh = true ;
if ( $_GET [ 'sec2' ] == 'operation/agentes/pandora_networkmap' ) {
if (( ! isset ( $_GET [ 'tab' ])) || ( $_GET [ 'tab' ] != 'view' )) {
$do_refresh = false ;
}
2019-01-30 16:18:44 +01:00
}
2020-02-05 18:56:28 +01:00
if ( $do_refresh ) {
$autorefresh_img = html_print_image (
2023-02-20 17:22:42 +01:00
'images/auto_refresh@header.svg' ,
2020-02-05 18:56:28 +01:00
true ,
[
2023-02-20 17:22:42 +01:00
'class' => 'main_menu_icon bot' ,
2020-02-05 18:56:28 +01:00
'alt' => 'lightning' ,
'title' => __ ( 'Configure autorefresh' ),
]
2019-03-25 12:53:50 +01:00
);
2019-01-30 16:18:44 +01:00
2020-02-05 18:56:28 +01:00
if (( isset ( $select [ 0 ][ 'time_autorefresh' ]) === true )
&& $select [ 0 ][ 'time_autorefresh' ] !== 0
&& $config [ 'refr' ] === null
) {
$config [ 'refr' ] = $select [ 0 ][ 'time_autorefresh' ];
$autorefresh_txt .= ' (<span id="refrcounter">' ;
$autorefresh_txt .= date (
'i:s' ,
$config [ 'refr' ]
);
$autorefresh_txt .= '</span>)' ;
} else if ( $_GET [ 'refr' ]) {
$autorefresh_txt .= ' (<span id="refrcounter">' ;
$autorefresh_txt .= date ( 'i:s' , $config [ 'refr' ]);
$autorefresh_txt .= '</span>)' ;
}
2019-02-25 11:54:46 +01:00
2020-02-05 18:56:28 +01:00
$ignored_params [ 'refr' ] = '' ;
$values = get_refresh_time_array ();
2022-04-19 15:23:12 +02:00
$autorefresh_additional = '<span id="combo_refr" class="invisible_events">' ;
2020-02-05 18:56:28 +01:00
$autorefresh_additional .= html_print_select (
$values ,
'ref' ,
'' ,
'' ,
__ ( 'Select' ),
'0' ,
true ,
false ,
false
);
$autorefresh_additional .= '</span>' ;
unset ( $values );
2019-05-21 12:16:06 +02:00
if ( $home_page != '' ) {
2020-02-05 18:56:28 +01:00
$autorefresh_link_open_img = '<a class="white autorefresh" href="index.php?refr=">' ;
2019-05-21 12:16:06 +02:00
} else {
2020-02-05 18:56:28 +01:00
$autorefresh_link_open_img = '<a class="white autorefresh" href="' . ui_get_url_refresh ( $ignored_params ) . '">' ;
2019-05-21 12:16:06 +02:00
}
2020-02-05 18:56:28 +01:00
if ( $_GET [ 'refr' ]
|| (( isset ( $select [ 0 ][ 'time_autorefresh' ]) === true )
&& $select [ 0 ][ 'time_autorefresh' ] !== 0 )
) {
if ( $home_page != '' ) {
$autorefresh_link_open_txt = '<a class="autorefresh autorefresh_txt" href="index.php?refr=">' ;
} else {
$autorefresh_link_open_txt = '<a class="autorefresh autorefresh_txt" href="' . ui_get_url_refresh ( $ignored_params ) . '">' ;
}
} else {
$autorefresh_link_open_txt = '<a>' ;
}
$autorefresh_link_close = '</a>' ;
$display_counter = 'display:block' ;
2019-01-30 16:18:44 +01:00
} else {
2021-03-11 15:40:23 +01:00
$autorefresh_img = html_print_image (
2023-02-20 17:22:42 +01:00
'images/auto_refresh@header.svg' ,
2021-03-11 15:40:23 +01:00
true ,
[
2023-02-20 17:22:42 +01:00
'class' => 'main_menu_icon bot autorefresh_disabled invert_filter' ,
2021-03-11 15:40:23 +01:00
'alt' => 'lightning' ,
'title' => __ ( 'Disabled autorefresh' ),
]
);
2020-02-05 18:56:28 +01:00
$ignored_params [ 'refr' ] = false ;
2019-01-30 16:18:44 +01:00
2020-02-05 18:56:28 +01:00
$autorefresh_link_open_img = '' ;
$autorefresh_link_open_txt = '' ;
$autorefresh_link_close = '' ;
$display_counter = 'display:none' ;
}
2019-02-25 11:54:46 +01:00
} else {
2020-02-05 18:56:28 +01:00
$autorefresh_img = html_print_image (
2023-02-20 17:22:42 +01:00
'images/auto_refresh@header.svg' ,
2020-02-05 18:56:28 +01:00
true ,
[
2023-02-20 17:22:42 +01:00
'class' => 'main_menu_icon bot autorefresh_disabled invert_filter' ,
2020-02-05 18:56:28 +01:00
'alt' => 'lightning' ,
'title' => __ ( 'Disabled autorefresh' ),
]
);
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
$ignored_params [ 'refr' ] = false ;
2019-01-30 16:18:44 +01:00
2019-02-25 11:54:46 +01:00
$autorefresh_link_open_img = '' ;
$autorefresh_link_open_txt = '' ;
$autorefresh_link_close = '' ;
2019-03-05 12:54:11 +01:00
$display_counter = 'display:none' ;
2019-02-25 11:54:46 +01:00
}
2019-01-30 16:18:44 +01:00
2020-02-05 18:56:28 +01:00
$header_autorefresh = '<div id="header_autorefresh">' ;
$header_autorefresh .= $autorefresh_link_open_img ;
$header_autorefresh .= $autorefresh_img ;
$header_autorefresh .= $autorefresh_link_close ;
$header_autorefresh .= '</div>' ;
$header_autorefresh_counter = '<div id="header_autorefresh_counter" style="' . $display_counter . '">' ;
$header_autorefresh_counter .= $autorefresh_link_open_txt ;
$header_autorefresh_counter .= $autorefresh_txt ;
$header_autorefresh_counter .= $autorefresh_link_close ;
$header_autorefresh_counter .= $autorefresh_additional ;
$header_autorefresh_counter .= '</div>' ;
2019-02-25 11:54:46 +01:00
}
2019-01-30 16:18:44 +01:00
2019-10-21 18:11:04 +02:00
// Button for feedback pandora.
2023-04-13 11:36:13 +02:00
if ( enterprise_installed () && $config [ 'activate_feedback' ] !== false ) {
2019-10-21 18:11:04 +02:00
$header_feedback = '<div id="feedback-icon-header">' ;
2021-03-11 15:40:23 +01:00
$header_feedback .= '<div id="modal-feedback-form" class="invisible"></div>' ;
$header_feedback .= '<div id="msg-header" class="invisible"></div>' ;
2019-10-21 18:11:04 +02:00
$header_feedback .= html_print_image (
2023-02-20 17:22:42 +01:00
'images/send_feedback@header.svg' ,
2019-10-21 18:11:04 +02:00
true ,
[
2023-02-22 16:24:11 +01:00
'class' => 'main_menu_icon invert_filter' ,
2019-10-21 18:11:04 +02:00
'title' => __ ( 'Feedback' ),
'id' => 'feedback-header' ,
'alt' => __ ( 'Feedback' ),
2019-11-20 10:00:57 +01:00
'style' => 'cursor: pointer;' ,
2019-10-21 18:11:04 +02:00
]
);
$header_feedback .= '</div>' ;
}
2019-01-30 16:18:44 +01:00
2019-03-25 12:41:39 +01:00
// Support.
2019-10-21 18:11:04 +02:00
if ( enterprise_installed ()) {
2019-11-05 17:09:29 +01:00
$header_support_link = $config [ 'custom_support_url' ];
2019-02-25 11:54:46 +01:00
} else {
2021-11-04 16:28:15 +01:00
$header_support_link = 'https://pandorafms.com/forums/' ;
2019-02-25 11:54:46 +01:00
}
2019-01-30 16:18:44 +01:00
2019-03-25 12:41:39 +01:00
$header_support = '<div id="header_support">' ;
2019-11-05 17:09:29 +01:00
$header_support .= '<a href="' . ui_get_full_external_url ( $header_support_link ) . '" target="_blank">' ;
2021-03-11 15:40:23 +01:00
$header_support .= html_print_image (
2023-02-20 17:22:42 +01:00
'images/support@header.svg' ,
2021-03-11 15:40:23 +01:00
true ,
[
'title' => __ ( 'Go to support' ),
2023-02-20 17:22:42 +01:00
'class' => 'main_menu_icon bot invert_filter' ,
2021-03-11 15:40:23 +01:00
'alt' => 'user' ,
]
);
2019-03-25 12:41:39 +01:00
$header_support .= '</a></div>' ;
// Documentation.
2019-04-05 13:51:35 +02:00
$header_docu = '<div id="header_docu">' ;
2019-11-05 17:09:29 +01:00
$header_docu .= '<a href="' . ui_get_full_external_url ( $config [ 'custom_docs_url' ]) . '" target="_blank">' ;
2021-03-11 15:40:23 +01:00
$header_docu .= html_print_image (
2023-02-20 17:22:42 +01:00
'images/documentation@header.svg' ,
2021-03-11 15:40:23 +01:00
true ,
[
'title' => __ ( 'Go to documentation' ),
2023-02-20 17:22:42 +01:00
'class' => 'main_menu_icon bot invert_filter' ,
2021-03-11 15:40:23 +01:00
'alt' => 'user' ,
]
);
2019-03-25 12:41:39 +01:00
$header_docu .= '</a></div>' ;
2019-02-25 11:54:46 +01:00
2019-03-11 12:36:52 +01:00
// User.
2023-02-03 12:37:09 +01:00
$headerUser = [];
$headerUser [] = html_print_image (
2023-02-20 17:22:42 +01:00
'images/edit_user@header.svg' ,
2023-02-03 12:37:09 +01:00
true ,
[
'title' => __ ( 'Edit my user' ),
2023-02-22 16:24:11 +01:00
'class' => 'main_menu_icon bot invert_filter' ,
2023-02-03 12:37:09 +01:00
'alt' => 'user' ,
]
);
$headerUser [] = sprintf ( '<span id="user_name_header">[ %s ]</span>' , $config [ 'id_user' ]);
$header_user = html_print_div (
[
'id' => 'header_user' ,
'content' => html_print_anchor (
[
'href' => sprintf ( 'index.php?sec=gusuarios&sec2=godmode/users/configure_user&edit_user=1&pure=0&id_user=%s' , $config [ 'id_user' ]),
'content' => implode ( '' , $headerUser ),
],
true
),
],
true
);
2019-02-25 11:54:46 +01:00
2019-03-11 12:36:52 +01:00
// Logout.
2019-02-25 11:54:46 +01:00
$header_logout = '<div id="header_logout"><a class="white" href="' . ui_get_full_url ( 'index.php?bye=bye' ) . '">' ;
2019-03-25 12:53:50 +01:00
$header_logout .= html_print_image (
2023-02-20 17:22:42 +01:00
'images/sign_out@header.svg' ,
2019-03-25 12:53:50 +01:00
true ,
[
'alt' => __ ( 'Logout' ),
2021-03-11 15:40:23 +01:00
'class' => 'bot invert_filter' ,
2019-03-25 12:53:50 +01:00
'title' => __ ( 'Logout' ),
]
);
2019-02-25 11:54:46 +01:00
$header_logout .= '</a></div>' ;
2022-07-08 13:40:20 +02:00
if ( is_reporting_console_node () === true ) {
echo '<div class="header_left">' ;
echo '<span class="header_title">' ;
echo $config [ 'custom_title_header' ];
echo '</span>' ;
echo '<span class="header_subtitle">' ;
echo $config [ 'custom_subtitle_header' ];
echo '</span>' ;
echo '</div>' ;
echo '<div class="header_center"></div>' ;
echo '<div class="header_right">' . $header_support , $header_docu , $header_user , $header_logout . '</div>' ;
} else {
echo '<div class="header_left"><span class="header_title">' . $config [ 'custom_title_header' ] . '</span><span class="header_subtitle">' . $config [ 'custom_subtitle_header' ] . ' </ span ></ div >
2019-03-25 12:41:39 +01:00
< div class = " header_center " > '.$header_searchbar.' </ div >
2020-05-08 15:39:24 +02:00
< div class = " header_right " > '.$header_autorefresh, $header_autorefresh_counter, $header_discovery, $servers_list, $header_feedback, $header_support, $header_docu, $header_user, $header_logout.' </ div > ' ;
2022-07-08 13:40:20 +02:00
}
2019-02-25 11:54:46 +01:00
?>
2019-10-21 18:11:04 +02:00
</ div > <!-- Closes #table_header_inner -->
2019-03-05 12:54:11 +01:00
</ div > <!-- Closes #table_header -->
2019-01-30 16:18:44 +01:00
2019-02-27 13:41:26 +01:00
<!-- Old style div wrapper -->
2021-03-11 15:40:23 +01:00
< div id = " alert_messages " class = " invisible " ></ div >
2019-02-27 13:41:26 +01:00
2012-03-05 Miguel de Dios <miguel.dedios@artica.es>
* extensions/update_manager/main.php, general/shortcut_bar.php,
godmode/reporting/reporting_builder.item_editor.php,
godmode/reporting/reporting_builder.php,
godmode/reporting/reporting_builder.preview.php, include/functions_api.php,
include/functions_html.php, include/htmlawed.php, include/pchart_graph.php,
operation/events/events_list.php, operation/netflow/nf_live_view.php:
cleaned source code style.
* godmode/menu.php, godmode/agentes/manage_config_remote.php: removed the
enterprise feature that have been wrong for years.
* general/header.php: changed to load the jquery-ui and jquery javascript
library to last version.
* extensions/insert_data.php, extensions/snmp_explorer.php,
godmode/agentes/agent_manager.php, include/ajax/agent.php,
include/javascript/pandora.js, operation/agentes/exportdata.php,
operation/events/events.php: changed the unknow plugin autocomplete for
the autocomple from jquery-ui.
* include/functions_ui.php: cleaned source code style and into the function
"ui_process_page_head" added the blacklist hardwrote for to use old jquery.
* include/styles/jquery-ui-1.8.17.custom.css,
include/javascript/jquery-1.7.1.min.js,
include/javascript/jquery.jquery-ui-1.8.17.custom.min.js: added the last
version of Jquery and Jquery-ui.
Merge from the branch "pandora_4.0"
* godmode/reporting/visual_console_builder.constans.php,
godmode/reporting/visual_console_builder.editor.js,
godmode/reporting/visual_console_builder.editor.php,
include/functions_visual_map.php,
include/ajax/visual_console_builder.ajax.php,
include/javascript/pandora_visual_console.js: changed the unknow
plugin autocomplete for the autocomple from jquery-ui and added function to
paint a Bubble Chart (http://en.wikipedia.org/wiki/Bubble_chart) with the
name "progress_bubble".
* images/percentile_item.disabled.png, images/percentile_item.png: added
images for button of percentile item (new item in visual map).
* include/styles/pandora.css: added the style for the new button percentile
item.
* include/functions_graph.php, include/graphs/fgraph.php,
include/graphs/functions_gd.php: cleaned source code style, and added the
params to set text and color in the function "progress_bar" and added
function to paint a Bubble Chart (http://en.wikipedia.org/wiki/Bubble_chart)
with the name "progress_bubble".
git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@5693 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-03-05 18:56:56 +01:00
< script type = " text/javascript " >
2019-01-30 16:18:44 +01:00
/* <![CDATA[ */
< ? php
$config_fixed_header = false ;
if ( isset ( $config [ 'fixed_header' ])) {
$config_fixed_header = $config [ 'fixed_header' ];
}
2019-02-08 14:23:05 +01:00
2019-01-30 16:18:44 +01:00
?>
2019-02-08 14:23:05 +01:00
function addNotifications ( event ) {
2019-02-08 18:53:28 +01:00
var element = document . getElementById ( " notification-content " );
2019-02-12 16:25:59 +01:00
if ( ! element ) {
console . error ( 'Cannot locate the notification content element.' );
return ;
}
// If notification-content is empty, retrieve the notifications.
if ( ! element . firstChild ) {
jQuery . post ( " ajax.php " ,
{
" page " : " godmode/setup/setup_notifications " ,
" get_notifications_dropdown " : 1 ,
},
function ( data , status ) {
// Apppend data
element . innerHTML = data ;
// Show the content
element . style . display = " block " ;
attatch_to_image ();
},
" html "
);
} else {
// If there is some notifications retrieved, only show it.
element . style . display = " block " ;
attatch_to_image ();
}
2019-02-08 14:23:05 +01:00
}
function attatch_to_image () {
2019-02-08 18:53:28 +01:00
var notification_elem = document . getElementById ( " notification-wrapper " );
2019-02-12 16:25:59 +01:00
if ( ! notification_elem ) return ;
2019-02-08 18:53:28 +01:00
var image_attached =
document . getElementById ( " notification-ball-header " )
. getBoundingClientRect ()
. left
;
notification_elem . style . left = image_attached - 300 + " px " ;
2019-02-08 14:23:05 +01:00
}
2019-02-08 18:53:28 +01:00
2019-02-13 11:09:15 +01:00
function notifications_clean_ui ( action , self_id ) {
switch ( action ) {
case 'item' :
// Recalculate the notification ball.
check_new_notifications ();
break ;
case 'toast' :
// Only remove the toast element.
document . getElementById ( self_id ) . remove ();
break ;
}
}
2019-02-08 18:53:28 +01:00
function notifications_hide () {
var element = document . getElementById ( " notification-content " );
element . style . display = " none "
2019-02-08 14:23:05 +01:00
}
2019-02-11 17:53:37 +01:00
function click_on_notification_toast ( event ) {
2019-02-13 11:09:15 +01:00
var match = / notification - ( .* ) - id - ([ 0 - 9 ] + ) /. exec ( event . target . id );
2019-02-12 15:27:14 +01:00
if ( ! match ) {
console . error (
" Cannot handle toast click event. Id not valid: " ,
event . target . id
);
return ;
}
jQuery . post ( " ajax.php " ,
{
" page " : " godmode/setup/setup_notifications " ,
" mark_notification_as_read " : 1 ,
2019-02-13 11:09:15 +01:00
" message " : match [ 2 ]
2019-02-12 15:27:14 +01:00
},
function ( data , status ) {
if ( ! data . result ) {
console . error ( " Cannot redirect to URL. " );
return ;
}
2019-02-13 11:09:15 +01:00
notifications_clean_ui ( match [ 1 ], event . target . id );
2019-02-12 15:27:14 +01:00
},
" json "
)
. fail ( function ( xhr , textStatus , errorThrown ){
console . error (
" Failed onclik event on toast. Error: " ,
xhr . responseText
);
});
2019-02-11 17:53:37 +01:00
}
2020-05-08 11:32:44 +02:00
function closeToast ( event ) {
var match = / notification - ( .* ) - id - ([ 0 - 9 ] + ) /. exec ( event . target . id );
var div_id = document . getElementById ( match . input );
$ ( div_id ) . attr ( " hidden " , true );
}
function print_toast ( title , subtitle , severity , url , id , onclick , closeToast ) {
2019-02-11 17:53:37 +01:00
// TODO severity.
severity = '' ;
// Start the toast.
2020-05-08 11:32:44 +02:00
var parent_div = document . createElement ( 'div' );
// Print close image
var img = document . createElement ( 'img' );
img . setAttribute ( 'id' , id );
img . setAttribute ( " src " , './images/close_button_dialog.png' );
img . setAttribute ( 'onclick' , closeToast );
img . setAttribute ( 'style' , 'margin-left: 95%;' );
parent_div . appendChild ( img );
// Print a element
2019-02-13 11:09:15 +01:00
var toast = document . createElement ( 'a' );
toast . setAttribute ( 'target' , '_blank' );
2020-05-08 11:32:44 +02:00
toast . setAttribute ( 'href' , url );
toast . setAttribute ( 'onclick' , onclick );
var link_div = document . createElement ( 'div' );
2019-02-11 17:53:37 +01:00
// Fill toast.
2019-02-13 11:09:15 +01:00
var toast_div = document . createElement ( 'div' );
toast_div . className = 'snackbar ' + severity ;
toast_div . id = id ;
2019-02-11 17:53:37 +01:00
var toast_title = document . createElement ( 'h3' );
var toast_text = document . createElement ( 'p' );
toast_title . innerHTML = title ;
toast_text . innerHTML = subtitle ;
2020-05-08 11:32:44 +02:00
// Append Elements
toast_div . appendChild ( img );
link_div . appendChild ( toast_title );
toast . appendChild ( link_div );
toast_div . appendChild ( toast );
2019-02-13 11:09:15 +01:00
toast_div . appendChild ( toast_text );
2019-02-11 17:53:37 +01:00
// Show and program the hide event.
2019-02-13 11:09:15 +01:00
toast_div . className = toast_div . className + ' show' ;
2019-02-11 17:53:37 +01:00
setTimeout ( function (){
2019-02-13 11:09:15 +01:00
toast_div . className = toast_div . className . replace ( " show " , " " );
2019-02-11 17:53:37 +01:00
}, 8000 );
2020-05-08 11:32:44 +02:00
toast_div . appendChild ( parent_div );
2019-02-11 17:53:37 +01:00
2020-05-08 11:32:44 +02:00
return toast_div ;
}
2019-02-11 13:35:36 +01:00
function check_new_notifications () {
var last_id = document . getElementById ( 'notification-ball-header' )
. getAttribute ( 'last_id' );
if ( last_id === null ) {
console . error ( 'Cannot retrieve notifications ball last_id.' );
return ;
}
2020-05-19 12:03:23 +02:00
// Get notifications buffer in local storage.
var user_notifications = localStorage . getItem ( 'user_notifications' );
if ( user_notifications !== null && user_notifications . length ) {
var user_notifications_parsed = JSON . parse ( user_notifications );
var current_timestamp = Math . floor ( Date . now () / 1000 );
// Remove old notifications from local storage.
user_notifications_parsed_updated = user_notifications_parsed . filter ( function ( notification ) {
return ( notification . item_datetime > current_timestamp - 90 );
});
if ( user_notifications_parsed_updated . length !== user_notifications_parsed . length ) {
localStorage . setItem ( 'user_notifications' , JSON . stringify ( user_notifications_parsed_updated ));
user_notifications_parsed = user_notifications_parsed_updated ;
}
}
2019-02-11 13:35:36 +01:00
jQuery . post ( " ajax.php " ,
2019-02-11 17:53:37 +01:00
{
" page " : " godmode/setup/setup_notifications " ,
2019-02-11 13:35:36 +01:00
" check_new_notifications " : 1 ,
" last_id " : last_id
},
function ( data , status ) {
2019-02-11 17:53:37 +01:00
// Clean the toasts wrapper at first.
var toast_wrapper = document . getElementById (
'notifications-toasts-wrapper'
);
if ( toast_wrapper === null ) {
console . error ( 'Cannot place toast notifications.' );
return ;
}
while ( toast_wrapper . firstChild ) {
toast_wrapper . removeChild ( toast_wrapper . firstChild );
}
// Return if no new notification.
2019-02-11 14:44:14 +01:00
if ( ! data . has_new_notifications ) return ;
2019-02-11 17:53:37 +01:00
2019-02-11 14:44:14 +01:00
// Substitute the ball
var new_ball = atob ( data . new_ball );
var ball_wrapper = document
. getElementById ( 'notification-ball-header' )
. parentElement ;
if ( ball_wrapper === null ) {
console . error ( 'Cannot update notification ball' );
return ;
}
2019-02-12 16:25:59 +01:00
// Print the new ball and clean old notifications
2019-02-11 14:44:14 +01:00
ball_wrapper . innerHTML = new_ball ;
2019-02-12 16:25:59 +01:00
var not_drop = document . getElementById ( 'notification-content' );
while ( not_drop . firstChild && not_drop ) {
not_drop . removeChild ( not_drop . firstChild );
}
2020-05-19 12:03:23 +02:00
// Prevent to print toasts if tab is not active.
if ( document . hidden === false ) {
var localStorageItemsArray = [];
// Add the new toasts.
if ( Array . isArray ( data . new_notifications )) {
data . new_notifications . forEach ( function ( ele ) {
// Keep track of notifications in browser local storage to avoid displaying toasts more than once across different tabs for a specific user.
if ( typeof user_notifications_parsed !== " undefined " ) {
localStorageItemsArray = user_notifications_parsed ;
// Check if toast has already been fired and therefore it should be skipped.
if ( localStorageItemsArray . some ( function ( item ) {
return item . message_id == ele . id_mensaje && ele . id_usuario_origen == ele . id_usuario_origen
})) {
return ;
}
}
localStorageItemsArray . push ({ message_id : ele . id_mensaje , source_user_id : ele . id_usuario_origen , item_datetime : Math . floor ( Date . now () / 1000 )});
localStorage . setItem ( 'user_notifications' , JSON . stringify ( localStorageItemsArray ));
toast_wrapper . appendChild (
print_toast (
ele . subject ,
ele . mensaje ,
ele . criticity ,
ele . full_url ,
'notification-toast-id-' + ele . id_mensaje ,
'click_on_notification_toast(event)' ,
'closeToast(event)'
)
);
});
}
2019-02-12 15:27:14 +01:00
}
2019-02-11 13:35:36 +01:00
},
" json "
)
. fail ( function ( xhr , textStatus , errorThrown ){
console . error (
" Cannot get new notifications. Error: " ,
xhr . responseText
);
});
}
2019-12-03 18:19:32 +01:00
// Resize event.
2019-02-08 14:23:05 +01:00
window . addEventListener ( " resize " , function () {
attatch_to_image ();
});
2019-01-30 16:18:44 +01:00
var fixed_header = < ? php echo json_encode (( bool ) $config_fixed_header ); ?> ;
2019-10-23 19:50:57 +02:00
2019-12-03 13:59:03 +01:00
function showinterpreter (){
2019-12-19 14:11:07 +01:00
2019-12-19 14:10:43 +01:00
document . onclick = function ( e ) {
$ ( '#result_order' ) . hide ();
$ ( '#keywords' ) . addClass ( 'search_input' );
$ ( '#keywords' ) . removeClass ( 'results-found' );
2019-12-19 14:11:07 +01:00
$ ( '#keywords' ) . value = '' ;
2019-12-19 14:10:43 +01:00
$ ( '#keywords' ) . attr ( 'placeholder' , 'Enter keywords to search' );
}
2019-12-13 14:08:44 +01:00
2019-12-13 14:11:12 +01:00
if ( event . keyCode == 13 && $ ( " #result_items li.active " ) . length != 0 )
2019-12-13 14:08:44 +01:00
{
window . location = $ ( '#result_items' ) . find ( " li.active a " ) . attr ( 'href' );
}
var code = event . key ;
switch ( code ){
case 'ArrowDown' :
if ( $ ( " #result_items li.active " ) . length != 0 )
{
var storeTarget = $ ( '#result_items' ) . find ( " li.active " ) . next ();
$ ( " #result_items li.active " ) . removeClass ( " active " );
storeTarget . focus () . addClass ( " active " );
}
else
{
$ ( '#result_items' ) . find ( " li:first " ) . focus () . addClass ( " active " );
}
return ;
case 'ArrowUp' :
if ( $ ( " #result_items li.active " ))
{
var storeTarget = $ ( '#result_items' ) . find ( " li.active " ) . prev ();
$ ( " #result_items li.active " ) . removeClass ( " active " );
storeTarget . focus () . addClass ( " active " );
}
else
{
$ ( '#result_items' ) . find ( " li:first " ) . focus () . addClass ( " active " );
}
return ;
case 'ArrowRight' :
return ;
case 'ArrowLeft' :
return ;
}
2019-12-03 13:59:03 +01:00
if ( $ ( '#keywords' ) . val () === '' ){
2019-12-11 18:42:46 +01:00
$ ( '#keywords' ) . addClass ( 'search_input' );
$ ( '#keywords' ) . removeClass ( 'results-found' );
2019-12-03 13:59:03 +01:00
$ ( '#result_order' ) . hide ();
2019-12-13 14:08:44 +01:00
$ ( '#keywords' ) . attr ( 'placeholder' , 'Enter keywords to search' );
2019-12-03 13:59:03 +01:00
} else {
2019-12-03 15:11:16 +01:00
$ . ajax ({
type : " POST " ,
url : " ajax.php " ,
2019-12-03 18:19:32 +01:00
dataType : " html " ,
2019-12-03 15:11:16 +01:00
data : {
page : 'include/ajax/order_interpreter' ,
method : 'getResult' ,
text : $ ( '#keywords' ) . val (),
2020-12-02 15:49:13 +01:00
enterprise : < ? php echo ( int ) enterprise_installed (); ?> ,
2019-12-03 15:11:16 +01:00
},
success : function ( data ) {
2019-12-03 18:19:32 +01:00
$ ( '#result_order' ) . html ( data );
2020-01-21 16:26:36 +01:00
},
2019-12-03 15:11:16 +01:00
error : function ( data ) {
console . error ( " Fatal error in AJAX call to interpreter order " , data )
}
});
2019-12-11 18:42:46 +01:00
$ ( '#keywords' ) . removeClass ( 'search_input' );
$ ( '#keywords' ) . addClass ( 'results-found' );
2019-12-03 13:59:03 +01:00
$ ( '#result_order' ) . show ();
2019-12-11 18:42:46 +01:00
2019-12-03 13:59:03 +01:00
}
}
2019-10-21 18:11:04 +02:00
/**
* Loads modal from AJAX to add feedback .
*/
function show_feedback () {
var btn_ok_text = '<?php echo __(' Send '); ?>' ;
var btn_cancel_text = '<?php echo __(' Cancel '); ?>' ;
var title = '<?php echo __(' Report an issue '); ?>' ;
var url = '<?php echo ' tools / diagnostics '; ?>' ;
load_modal ({
target : $ ( '#modal-feedback-form' ),
form : 'modal_form_feedback' ,
url : '<?php echo ui_get_full_url(' ajax . php ', false, false, false); ?>' ,
modal : {
title : title ,
ok : btn_ok_text ,
cancel : btn_cancel_text ,
},
onshow : {
page : url ,
method : 'formFeedback' ,
},
onsubmit : {
page : url ,
method : 'createdScheduleFeedbackTask' ,
2019-10-23 19:50:57 +02:00
dataType : 'json' ,
},
ajax_callback : generalShowMsg ,
idMsgCallback : 'msg-header' ,
2019-10-21 18:11:04 +02:00
});
}
2019-01-30 16:18:44 +01:00
$ ( document ) . ready ( function () {
2019-02-11 13:35:36 +01:00
// Check new notifications on a periodic way
2020-05-19 12:03:23 +02:00
setInterval ( check_new_notifications , 60000 );
2019-02-11 13:35:36 +01:00
2019-02-11 17:53:37 +01:00
// Print the wrapper for notifications
var notifications_toasts_wrapper = document . createElement ( 'div' );
notifications_toasts_wrapper . id = 'notifications-toasts-wrapper' ;
document . body . insertBefore (
notifications_toasts_wrapper ,
document . body . firstChild
);
2019-01-30 16:18:44 +01:00
< ? php
2019-03-25 12:53:50 +01:00
if (( $autorefresh_list !== null )
&& ( array_search (
$_GET [ 'sec2' ],
$autorefresh_list
) !== false ) && ( ! isset ( $_GET [ 'refr' ]))
) {
2019-01-30 16:18:44 +01:00
$do_refresh = true ;
if ( $_GET [ 'sec2' ] == 'operation/agentes/pandora_networkmap' ) {
if (( ! isset ( $_GET [ 'tab' ])) || ( $_GET [ 'tab' ] != 'view' )) {
$do_refresh = false ;
}
}
2020-03-26 12:29:38 +01:00
if ( $_GET [ 'sec2' ] == 'operation/dashboard/dashboard' && $new_dashboard ) {
2019-01-30 16:18:44 +01:00
$do_refresh = false ;
}
}
?>
if ( fixed_header ) {
$ ( 'div#head' ) . addClass ( 'fixed_header' );
2019-04-03 16:48:28 +02:00
$ ( 'div#main' ) . css ( 'padding-top' , $ ( 'div#head' ) . innerHeight () + 'px' );
2019-01-30 16:18:44 +01:00
}
2022-04-19 15:23:12 +02:00
2019-01-30 16:18:44 +01:00
/* Temporal fix to hide graphics when ui_dialog are displayed */
2022-04-19 15:23:12 +02:00
$ ( " #yougotalert " ) . click ( function () {
2019-01-30 16:18:44 +01:00
$ ( " #agent_access " ) . css ( " display " , " none " );
});
$ ( " #ui_close_dialog_titlebar " ) . click ( function () {
$ ( " #agent_access " ) . css ( " display " , " " );
});
2019-10-21 18:11:04 +02:00
2019-11-12 16:22:58 +01:00
< ? php if ( enterprise_installed ()) { ?>
// Feedback.
$ ( " #feedback-header " ) . click ( function () {
// Clean DOM.
$ ( " #feedback-header " ) . empty ();
// Function charge Modal.
show_feedback ();
});
< ? php } ?>
2019-10-21 18:11:04 +02:00
2019-01-30 16:18:44 +01:00
function blinkpubli (){
$ ( " .publienterprise " ) . delay ( 100 ) . fadeTo ( 300 , 0.2 ) . delay ( 100 ) . fadeTo ( 300 , 1 , blinkpubli );
}
2019-02-13 11:47:33 +01:00
blinkpubli ();
2019-01-30 16:18:44 +01:00
< ? php
2021-02-10 15:00:23 +01:00
if ( $_GET [ 'refr' ]
|| ( isset ( $do_refresh ) === true && $do_refresh === true )
) {
2022-01-11 14:36:05 +01:00
$autorefresh_draw = false ;
2019-07-15 17:41:20 +02:00
if ( $_GET [ 'sec2' ] == 'operation/events/events' ) {
$autorefresh_draw = true ;
}
2019-01-30 16:18:44 +01:00
?>
2019-07-15 17:41:20 +02:00
var autorefresh_draw = '<?php echo $autorefresh_draw; ?>' ;
2019-03-05 12:54:11 +01:00
$ ( " #header_autorefresh " ) . css ( 'padding-right' , '5px' );
2022-04-19 15:23:12 +02:00
if ( autorefresh_draw == true ) {
2019-07-15 17:41:20 +02:00
var refresh_interval = parseInt ( '<?php echo ($config[' refr '] * 1000); ?>' );
var until_time = '' ;
function events_refresh () {
until_time = new Date ();
until_time . setTime ( until_time . getTime () + parseInt ( < ? php echo ( $config [ 'refr' ] * 1000 ); ?> ));
$ ( " #refrcounter " ) . countdown ({
2022-04-19 15:23:12 +02:00
until : until_time ,
2019-07-15 17:41:20 +02:00
layout : '%M%nn%M:%S%nn%S' ,
labels : [ '' , '' , '' , '' , '' , '' , '' ],
onExpiry : function () {
2022-07-18 16:44:31 +02:00
$ ( " #table_events " )
. DataTable ()
. draw ( false );
2019-07-15 17:41:20 +02:00
}
});
}
// Start the countdown when page is loaded (first time).
events_refresh ();
// Repeat countdown according to refresh_interval.
setInterval ( events_refresh , refresh_interval );
} else {
var refr_time = < ? php echo ( int ) get_parameter ( 'refr' , $config [ 'refr' ]); ?> ;
var t = new Date ();
2022-04-19 15:23:12 +02:00
t . setTime ( t . getTime () + parseInt ( < ? php echo ( $config [ 'refr' ] * 1000 ); ?> ));
2019-07-15 17:41:20 +02:00
$ ( " #refrcounter " ) . countdown ({
2022-04-19 15:23:12 +02:00
until : t ,
2019-07-15 17:41:20 +02:00
layout : '%M%nn%M:%S%nn%S' ,
labels : [ '' , '' , '' , '' , '' , '' , '' ],
onExpiry : function () {
2019-01-30 16:18:44 +01:00
href = $ ( " a.autorefresh " ) . attr ( " href " );
href = href + refr_time ;
$ ( document ) . attr ( " location " , href );
}
});
2019-07-15 17:41:20 +02:00
}
2019-01-30 16:18:44 +01:00
< ? php
}
?>
$ ( " a.autorefresh " ) . click ( function () {
$ ( " a.autorefresh_txt " ) . toggle ();
2022-04-20 14:10:23 +02:00
$ ( " #combo_refr " ) . toggle ();
2019-01-30 16:18:44 +01:00
$ ( " select#ref " ) . change ( function () {
href = $ ( " a.autorefresh " ) . attr ( " href " );
2022-04-19 15:23:12 +02:00
2019-07-15 17:41:20 +02:00
if ( autorefresh_draw == true ){
inputs = $ ( " #events_form :input " );
values = {};
inputs . each ( function () {
values [ this . name ] = $ ( this ) . val ();
})
2022-04-19 15:23:12 +02:00
var newValue = btoa ( JSON . stringify ( values ));
2019-07-16 16:46:36 +02:00
< ? php
// Check if the url has the parameter fb64.
2021-02-10 15:00:23 +01:00
if ( isset ( $_GET [ 'fb64' ]) === true ) {
2019-07-16 16:46:36 +02:00
$fb64 = $_GET [ 'fb64' ];
?>
2022-04-19 15:23:12 +02:00
var fb64 = '<?php echo $fb64; ?>' ;
2019-07-16 16:46:36 +02:00
// Check if the filters have changed.
if ( fb64 !== newValue ){
href = href . replace ( fb64 , newValue );
2022-04-19 15:23:12 +02:00
}
2019-07-16 16:46:36 +02:00
$ ( document ) . attr ( " location " , href + '&refr=' + this . value );
< ? php
} else {
?>
$ ( document ) . attr ( " location " , href + '&fb64=' + newValue + '&refr=' + this . value );
< ? php
}
?>
2019-07-15 17:41:20 +02:00
} else {
$ ( document ) . attr ( " location " , href + this . value );
}
});
2022-04-19 15:23:12 +02:00
2019-01-30 16:18:44 +01:00
return false ;
});
});
2009-02-05 16:36:06 +01:00
/* ]]> */
2019-03-05 12:54:11 +01:00
</ script >