2014-02-06 Sergio Martin <sergio.martin@artica.es>

* mobile/index.php
	mobile/operation/visualmap.php
	mobile/operation/visualmaps.php
	mobile/operation/networkmap.php
	mobile/operation/home.php
	mobile/operation/agent.php
	mobile/include/style/main.css
	mobile/include/user.class.php: Added visual
	consoles in mobile console. Improve the apparience with
	new icons (pandora ones), better layout, etc.

	* godmode/reporting/map_builder.php: Fix type
	in gettext function



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@9409 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
zarzuelo 2014-02-06 17:39:39 +00:00
parent da0603577e
commit 6d33b6fe83
10 changed files with 533 additions and 24 deletions

View File

@ -1,3 +1,19 @@
2014-02-06 Sergio Martin <sergio.martin@artica.es>
* mobile/index.php
mobile/operation/visualmap.php
mobile/operation/visualmaps.php
mobile/operation/networkmap.php
mobile/operation/home.php
mobile/operation/agent.php
mobile/include/style/main.css
mobile/include/user.class.php: Added visual
consoles in mobile console. Improve the apparience with
new icons (pandora ones), better layout, etc.
* godmode/reporting/map_builder.php: Fix type
in gettext function
2014-02-06 Junichi Satoh <junichi@rworks.jp>
* include/languages/ja.po, include/languages/ja.mo: Updated

View File

@ -166,7 +166,7 @@ else
$maps = visual_map_get_user_layouts ($config['id_user'], false, false, false);
if (!$maps) {
echo '<div class="nf">'.('No maps defined').'</div>';
echo '<div class="nf">'.__('No maps defined').'</div>';
}
else {
foreach ($maps as $map) {

View File

@ -474,23 +474,23 @@ table.event_details td.cell_event_name {
/*INIT-----------Agents styles----------------------------------------*/
.red, .redb, .redi, .error {
background: #CC0000 !important;
background: #FF4040 !important;
}
.green {
background: #5A8629 !important;
background: #6EB432 !important;
}
.orange {
background: #ffa300 !important;
background: #FF8800 !important;
}
.yellow {
background: #F3C500 !important;
background: #F2D400 !important;
}
.grey {
background: #808080 !important;
background: #AAAAAA !important;
font-weight: bold;
}
@ -506,7 +506,11 @@ table.event_details td.cell_event_name {
}
.agent_details {
line-height: 25px;
line-height: 35px;
}
.agent_details img {
float: left;
}
.agent_name {
@ -516,10 +520,12 @@ table.event_details td.cell_event_name {
#list_agents .cell_0 img {
float: left;
margin-right: 3px;
}
#list_agents td:hover, #list_networkmaps td:hover,
#list_events td:hover, #list_Modules td:hover {
#list_events td:hover, #list_Modules td:hover,
#list_visualmaps td:hover {
cursor: pointer;
}
@ -528,6 +534,12 @@ table.event_details td.cell_event_name {
padding-top: 20px;
}
.agents_tiny_stats_tactical {
display: block;
text-align: center;
width: 100%;
}
@media screen and (max-width: 25em) {
#list_agents .cell_2 .ui-table-cell-label,
#list_agents .cell_3 .ui-table-cell-label,
@ -618,16 +630,86 @@ table.event_details td.cell_event_name {
/*END-----------Alerts styles---------------------------------------*/
/*INIT-----------Alerts styles---------------------------------------*/
/*INIT-----------Network maps styles---------------------------------------*/
#list_networkmaps td {
height: 35px;
padding-top: 20px;
}
/*END-----------Alerts styles---------------------------------------*/
/*END-----------Network maps styles---------------------------------------*/
/*INIT-----------Visual maps styles---------------------------------------*/
#list_visualmaps td {
height: 35px;
padding-top: 20px;
}
#rendered_visual_map div {
color: #003a3a;
text-shadow: none !important;
}
#rendered_visual_map {
text-align: center;
}
/* For mobiles */
@media screen and (max-width: 750px)
{
#rendered_visual_map div {
font-size: 6pt !important;
}
}
/* For tablets */
@media screen and (min-width: 750px)
{
#rendered_visual_map div {
font-size: 8pt !important;
}
}
/* For mobiles */
@media screen and (max-width: 750px)
{
.resize_visual_font_size_8pt * {
font-size: 4pt !important;
}
.resize_visual_font_size_14pt * {
font-size: 6pt !important;
}
.resize_visual_font_size_24pt * {
font-size: 10pt !important;
}
.resize_visual_font_size_36pt * {
font-size: 14pt !important;
}
.resize_visual_font_size_72pt * {
font-size: 27pt !important;
}
}
/* For tablets */
@media screen and (min-width: 750px)
{
.resize_visual_font_size_8pt * {
font-size: 4pt !important;
}
.resize_visual_font_size_14pt * {
font-size: 7pt !important;
}
.resize_visual_font_size_24pt * {
font-size: 12pt !important;
}
.resize_visual_font_size_36pt * {
font-size: 18pt !important;
}
.resize_visual_font_size_72pt * {
font-size: 36pt !important;
}
}
/*END-----------Visual maps styles---------------------------------------*/
/*INIT-----------Modules styles---------------------------------------*/
@media screen and (max-width: 25em) {
@ -1019,9 +1101,92 @@ table.tactical_bars {
font-weight: bold;
}
.ui-icon-eye {
background-image: url(../../images/eye.png) !important;
/*INIT-----------Icons styles---------------------------------------*/
.ui-icon-tactical_view {
background-image: url(../../../images/op_monitoring.png) !important;
}
.ui-icon-events {
background-image: url(../../../images/op_events.png) !important;
}
.ui-icon-groups {
background-image: url(../../../images/group.png) !important;
}
.ui-icon-alerts {
background-image: url(../../../images/op_alerts.png) !important;
}
.ui-icon-agents {
background-image: url(../../../images/agent_mc.png) !important;
}
.ui-icon-modules {
background-image: url(../../../images/brick.png) !important;
}
.ui-icon-network_maps {
background-image: url(../../../images/op_network.png) !important;
}
.ui-icon-visual_console {
background-image: url(../../../images/visual_console.png) !important;
}
.ui-icon-tactical_view, .ui-icon-events,
.ui-icon-groups, .ui-icon-alerts,
.ui-icon-agents, .ui-icon-modules,
.ui-icon-network_maps, .ui-icon-visual_console {
background-color: #333 !important;
background-position: center;
border-radius: 15px !important;
-webkit-border-radius: 15px !important;
}
#login_btn-container .ui-icon {
background-color: #333 !important;
border-radius: 15px !important;
-webkit-border-radius: 15px !important;
}
/* For mobiles */
@media screen and (max-width: 750px)
{
.ui-icon-tactical_view, .ui-icon-events,
.ui-icon-groups, .ui-icon-alerts,
.ui-icon-agents, .ui-icon-modules,
.ui-icon-network_maps, .ui-icon-visual_console {
width: 22px !important;
height: 22px !important;
margin-top: -13px !important;
background-size: 16px 16px;
}
}
/* For tablets */
@media screen and (min-width: 750px)
{
.ui-icon-tactical_view, .ui-icon-events,
.ui-icon-groups, .ui-icon-alerts,
.ui-icon-agents, .ui-icon-modules,
.ui-icon-network_maps, .ui-icon-visual_console {
width: 32px !important;
height: 32px !important;
margin-top: -17px !important;
}
}
/*END-----------Network maps styles---------------------------------------*/
#logout_dialog-button_close {
display: block;
margin: 0 auto;
margin-top: 20px;
}
.ui-btn-active {
background: #6db431 !important;
}
span.nobold * {
@ -1043,7 +1208,7 @@ span.nobold * {
display: block !important;
}
#list_Modules *, #list_agents *, #list_alerts *, #list_networkmaps * {
#list_Modules *, #list_agents *, #list_alerts *, #list_networkmaps *, #list_visualmaps * {
color: #222;
}

View File

@ -178,7 +178,7 @@ class User {
$ui->formAddInputPassword($options);
$options = array(
'value' => __('Login'),
'icon' => 'star',
'icon' => 'arrow-r',
'icon_pos' => 'right',
'name' => 'login_btn'
);

View File

@ -36,6 +36,8 @@ require_once('operation/module_graph.php');
require_once('operation/agent.php');
require_once('operation/networkmaps.php');
require_once('operation/networkmap.php');
require_once('operation/visualmaps.php');
require_once('operation/visualmap.php');
$enterpriseHook = enterprise_include('mobile/include/enterprise.class.php');
$system = System::getInstance();
@ -78,6 +80,10 @@ switch ($action) {
$module_graph = new ModuleGraph();
$module_graph->ajax($parameter2);
break;
case 'visualmap':
$visualmap = new Visualmap();
$visualmap->ajax($parameter2);
break;
}
return;
break;
@ -152,6 +158,14 @@ switch ($action) {
$networkmap = new Networkmap();
$networkmap->show();
break;
case 'visualmaps':
$visualmaps = new Visualmaps();
$visualmaps->show();
break;
case 'visualmap':
$visualmap = new Visualmap();
$visualmap->show();
break;
}
break;
}

View File

@ -120,7 +120,7 @@ class Agent {
$html = '<div class="agent_details">';
$html .= ui_print_group_icon ($this->agent["id_grupo"], true) . '&nbsp;&nbsp;';
$html .= ui_print_group_icon ($this->agent["id_grupo"], true, "groups_small", "", false) . '&nbsp;&nbsp;';
$html .= '<span class="agent_name">' . $agent_name . '</span><br />';
$html .= $ip;
$html .= $last_contact;
@ -132,10 +132,12 @@ class Agent {
$html = graph_agent_status ($this->id, 160, 160, true);
$graph_js = ob_get_clean();
$html = $graph_js . $html;
unset($this->agent['fired_count']);
$html .= '<span class="agents_tiny_stats agents_tiny_stats_tactical">' . reporting_tiny_stats($this->agent, true) . ' </span><br>';
$html .= "<b>" . __('Events (24h)') . "</b><br />";
$html .= graph_graphic_agentevents(
$this->id, 250, 15, 86400, ui_get_full_url(false), true);
$html .= '<br><br>';
$html .= '<br>';
$ui->contentGridAddCell($html);
$ui->contentEndGrid();

View File

@ -50,41 +50,46 @@ class Home {
$ui->endForm();
//List of buttons
$options = array('icon' => 'gear',
$options = array('icon' => 'tactical_view',
'pos' => 'right',
'text' => __('Tactical view'),
'href' => 'index.php?page=tactical');
$ui->contentAddHtml($ui->createButton($options));
$options = array('icon' => 'info',
$options = array('icon' => 'events',
'pos' => 'right',
'text' => __('Events'),
'href' => 'index.php?page=events');
$ui->contentAddHtml($ui->createButton($options));
$options = array('icon' => 'arrow-u',
$options = array('icon' => 'groups',
'pos' => 'right',
'text' => __('Groups'),
'href' => 'index.php?page=groups');
$ui->contentAddHtml($ui->createButton($options));
$options = array('icon' => 'alert',
$options = array('icon' => 'alerts',
'pos' => 'right',
'text' => __('Alerts'),
'href' => 'index.php?page=alerts');
$ui->contentAddHtml($ui->createButton($options));
$options = array('icon' => 'grid',
$options = array('icon' => 'agents',
'pos' => 'right',
'text' => __('Agents'),
'href' => 'index.php?page=agents');
$ui->contentAddHtml($ui->createButton($options));
$options = array('icon' => 'check',
$options = array('icon' => 'modules',
'pos' => 'right',
'text' => __('Modules'),
'href' => 'index.php?page=modules');
$ui->contentAddHtml($ui->createButton($options));
$options = array('icon' => 'star',
$options = array('icon' => 'network_maps',
'pos' => 'right',
'text' => __('Networkmaps'),
'href' => 'index.php?page=networkmaps');
$ui->contentAddHtml($ui->createButton($options));
$options = array('icon' => 'visual_console',
'pos' => 'right',
'text' => __('Visual consoles'),
'href' => 'index.php?page=visualmaps');
$ui->contentAddHtml($ui->createButton($options));
$ui->endContent();
$ui->showPage();
return;

View File

@ -82,7 +82,7 @@ class Networkmap {
$ui->createPage();
$ui->createDefaultHeader(
sprintf("%s",
$this->network_map['name']),
$this->networkmap['name']),
$ui->createHeaderButton(
array('icon' => 'back',
'pos' => 'left',

View File

@ -0,0 +1,145 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 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.
require_once ('../include/functions_visual_map.php');
class Visualmap {
private $correct_acl = false;
private $acl = "RR";
private $id = 0;
private $visual_map = null;
function __construct() {
$system = System::getInstance();
if ($system->checkACL($this->acl)) {
$this->correct_acl = true;
}
else {
$this->correct_acl = false;
}
}
private function getFilters() {
$system = System::getInstance();
$this->id = (int)$system->getRequest('id', 0);
}
public function show() {
if (!$this->correct_acl) {
$this->show_fail_acl();
}
else {
$this->getFilters();
$this->visualmap = db_get_row('tlayout',
'id', $this->id);
$this->show_visualmap();
}
}
private function show_fail_acl() {
$error['title_text'] = __('You don\'t have access to this page');
$error['content_text'] = __('Access to this page is restricted to authorized users only, please contact system administrator if you need assistance. <br><br>Please know that all attempts to access this page are recorded in security logs of Pandora System Database');
$home = new Home();
$home->show($error);
}
public function ajax($parameter2 = false) {
$system = System::getInstance();
if (!$this->correct_acl) {
return;
}
else {
switch ($parameter2) {
case 'render_map':
$map_id = $system->getRequest('map_id', '0');
$width = $system->getRequest('width', '400');
visual_map_print_visual_map($map_id, false, true, $width);
exit;
}
}
}
private function show_visualmap() {
$ui = Ui::getInstance();
$system = System::getInstance();
$ui->createPage();
$ui->createDefaultHeader(
sprintf("%s",
$this->visualmap['name']),
$ui->createHeaderButton(
array('icon' => 'back',
'pos' => 'left',
'text' => __('Back'),
'href' => 'index.php?page=visualmaps')));
$ui->showFooter(false);
$ui->beginContent();
ob_start();
$rendered_map = '<div id="rendered_visual_map">';
$rendered_map .= html_print_image('images/spinner.gif', true);
$rendered_map .= '</div>';
ob_clean();
$ui->contentAddHtml($rendered_map);
$ui->contentAddHtml("<script type=\"text/javascript\">
function ajax_load_map() {
//$('#rendered_visual_map').html('<img src=\"images/spinner.gif\">);
var map_max_width = window.innerWidth * 0.90;
var map_max_height = (window.innerHeight - 47) * 0.90;
var original_width = " . $this->visualmap['width'] . ";
var original_height = " . $this->visualmap['height'] . ";
var map_width = map_max_width;
var map_height = original_height / (original_width / map_width);
if(map_height > map_max_height) {
map_height = map_max_height;
map_width = original_width / (original_height / map_height);
}
postvars = {};
postvars[\"action\"] = \"ajax\";
postvars[\"parameter1\"] = \"visualmap\";
postvars[\"parameter2\"] = \"render_map\";
postvars[\"map_id\"] = \"" . $this->id . "\";
postvars[\"width\"] = map_width;
$.post(\"index.php\",
postvars,
function (data) {
$('#rendered_visual_map').html(data);
},
\"html\");
}
ajax_load_map();
$( window ).resize(function() {
ajax_load_map();
});
</script>");
$ui->endContent();
$ui->showPage();
}
}
?>

View File

@ -0,0 +1,162 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 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.
ob_start();
require_once ('../include/functions_visual_map.php');
ob_get_clean(); //Fixed unused javascript code.
class Visualmaps {
private $correct_acl = false;
private $acl = "RR";
private $default = true;
private $default_filters = array();
private $group = 0;
private $type = 0;
private $list_types = null;
function __construct() {
$system = System::getInstance();
if ($system->checkACL($this->acl)) {
$this->correct_acl = true;
}
else {
$this->correct_acl = false;
}
}
private function getFilters() {
$system = System::getInstance();
$user = User::getInstance();
$this->default_filters['group'] = true;
$this->default_filters['type'] = true;
$this->group = (int)$system->getRequest('group', __("Group"));
if (!$user->isInGroup($this->acl, $this->group)) {
$this->group = 0;
}
if (($this->group === __("Group")) || ($this->group == 0)) {
$this->group = 0;
}
else {
$this->default = false;
$this->default_filters['group'] = false;
}
$this->type = $system->getRequest('type', __("Type"));
if (($this->type === __("Type")) || ($this->type === '0')) {
$this->type = '0';
}
else {
$this->default = false;
$this->default_filters['type'] = false;
}
}
public function show() {
if (!$this->correct_acl) {
$this->show_fail_acl();
}
else {
$this->getFilters();
$this->show_visualmaps();
}
}
private function show_fail_acl() {
$error['title_text'] = __('You don\'t have access to this page');
$error['content_text'] = __('Access to this page is restricted to authorized users only, please contact system administrator if you need assistance. <br><br>Please know that all attempts to access this page are recorded in security logs of Pandora System Database');
$home = new Home();
$home->show($error);
}
private function show_visualmaps() {
$ui = Ui::getInstance();
$ui->createPage();
$ui->createDefaultHeader(__("Visual consoles"),
$ui->createHeaderButton(
array('icon' => 'back',
'pos' => 'left',
'text' => __('Back'),
'href' => 'index.php?page=home')));
$ui->showFooter(false);
$ui->beginContent();
$this->listVisualmapsHtml();
$ui->endContent();
$ui->showPage();
}
private function listVisualmapsHtml() {
$system = System::getInstance();
$ui = Ui::getInstance();
// Create filter
$where = array();
// Order by type field
$where['order'] = 'type';
if ($this->group != '0')
$where['id_group'] = $this->group;
if ($this->type != '0')
$where['type'] = $this->type;
// Only display maps of "All" group if user is administrator
// or has "RR" privileges, otherwise show only maps of user group
$id_user = $system->getConfig('id_user');
$own_info = get_user_info ($id_user);
if ($own_info['is_admin'] || $system->checkACL($this->acl))
$maps = visual_map_get_user_layouts ();
else
$maps = visual_map_get_user_layouts ($id_user, false, false, false);
if (empty($maps)) {
$maps = array();
}
$list = array();
foreach ($maps as $map) {
$row = array();
$row[__('Name')] = '<a class="ui-link" data-ajax="false" href="index.php?page=visualmap&id=' . $map['id'] . '">' . io_safe_output($map['name']) . '</a>';
//$row[__('Type')] = $map['type'];
$row[__('Group')] = ui_print_group_icon($map["id_group"], true, "groups_small", "" , false);
$list[] = $row;
}
if (count($maps) == 0) {
$ui->contentAddHtml('<p style="color: #ff0000;">' . __('No maps defined') . '</p>');
}
else {
$table = new Table();
$table->id = 'list_visualmaps';
$table->importFromHash($list);
$ui->contentAddHtml($table->getHTML());
}
$ui->contentAddHtml("<script type=\"text/javascript\">
//Set link on entire row
$('#list_visualmaps tr').click( function() {
var link = $(this).find('a').attr('href');
if (link != undefined) {
window.location = $(this).find('a').attr('href');
}
});
</script>");
}
}
?>