summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-08-14 15:18:47 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-08-14 15:18:47 +0000
commitfe273fd8055bbb22f821d638f87d532664da2cfe (patch)
tree7f32b6da932794220523c3f94bb70747802f89f9
parent0266c585d15a0c85d06940bbc801a2ff8516109e (diff)
downloadzabbix-fe273fd8055bbb22f821d638f87d532664da2cfe.tar.gz
zabbix-fe273fd8055bbb22f821d638f87d532664da2cfe.tar.xz
zabbix-fe273fd8055bbb22f821d638f87d532664da2cfe.zip
- [DEV-199] performance improvements of js scripts in users screen (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5916 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r--frontends/php/dashboard.php4
-rw-r--r--frontends/php/include/triggers.inc.php9
-rw-r--r--frontends/php/include/users.inc.php80
-rw-r--r--frontends/php/js/common.js4
-rw-r--r--frontends/php/js/dashboard.js2
-rw-r--r--frontends/php/js/users.js103
-rw-r--r--frontends/php/users.php5
7 files changed, 198 insertions, 9 deletions
diff --git a/frontends/php/dashboard.php b/frontends/php/dashboard.php
index 462aee17..d23964f6 100644
--- a/frontends/php/dashboard.php
+++ b/frontends/php/dashboard.php
@@ -220,8 +220,8 @@ include_once "include/page_header.php";
make_refresh_menu('hat_webovr',get_profile('web.dahsboard.rf_rate.hat_webovr',60),$menu,$submenu);
make_refresh_menu('hat_dscvry',get_profile('web.dahsboard.rf_rate.hat_dscvry',60),$menu,$submenu);
- insert_js('var dashboard_menu='.zbx_jsvalue($menu)."\n".
- 'var dashboard_submenu='.zbx_jsvalue($submenu)."\n"
+ insert_js('var dashboard_menu='.zbx_jsvalue($menu).";\n".
+ 'var dashboard_submenu='.zbx_jsvalue($submenu).";\n"
);
// --------------
diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php
index acbd22c6..85754180 100644
--- a/frontends/php/include/triggers.inc.php
+++ b/frontends/php/include/triggers.inc.php
@@ -1818,26 +1818,25 @@
function get_triggers_overview($groupid,$view_style=null){
global $USER_DETAILS;
- $available_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY,PERM_RES_IDS_ARRAY);
+ $available_triggers = get_accessible_triggers(PERM_READ_ONLY,PERM_RES_IDS_ARRAY);
if(is_null($view_style)) $view_style = get_profile('web.overview.view.style',STYLE_TOP);
$table = new CTableInfo(S_NO_TRIGGERS_DEFINED);
if($groupid > 0){
- $group_where = ',hosts_groups hg where hg.groupid='.$groupid.' and hg.hostid=h.hostid and';
+ $group_where = ',hosts_groups hg WHERE hg.groupid='.$groupid.' AND hg.hostid=h.hostid AND ';
}
else {
- $group_where = ' where';
+ $group_where = ' WHERE ';
}
-
$result=DBselect('SELECT DISTINCT t.triggerid,t.description,t.expression,t.value,t.priority,t.lastchange,h.hostid,h.host'.
' FROM hosts h,items i,triggers t, functions f '.
$group_where.' h.status='.HOST_STATUS_MONITORED.
' AND h.hostid=i.hostid '.
' AND i.itemid=f.itemid '.
' AND f.triggerid=t.triggerid'.
- ' AND '.DBcondition('h.hostid',$available_hosts).
+ ' AND '.DBcondition('t.triggerid',$available_triggers).
' AND t.status='.TRIGGER_STATUS_ENABLED.
' AND i.status='.ITEM_STATUS_ACTIVE.
' ORDER BY t.description');
diff --git a/frontends/php/include/users.inc.php b/frontends/php/include/users.inc.php
index 10a119db..21c64a32 100644
--- a/frontends/php/include/users.inc.php
+++ b/frontends/php/include/users.inc.php
@@ -417,8 +417,88 @@
}
/********************************/
+ function get_user_menu_array($userids = array()){
+ $menu_all = array();
+ $menu_gui_access = array();
+ $menu_users_status = array();
+
+ $res = DBselect('SELECT DISTINCT g.usrgrpid, g.name, g.gui_access, g.users_status'.
+ ' FROM usrgrp g'.
+ ' WHERE '.DBin_node('g.usrgrpid', get_current_nodeid(false)).
+ ' ORDER BY g.name');
+
+ while($group=DBfetch($res)){
+ $group['name'] = htmlspecialchars($group['name']);
+
+ $gui_access = $group['gui_access'];
+ $users_status = $group['users_status'];
+
+ unset($group['gui_access']);
+ unset($group['users_status']);
+
+ $menu_all[] = $group;
+ if($gui_access != GROUP_GUI_ACCESS_SYSTEM){
+ $menu_gui_access[] = $group;
+ }
+
+ if($users_status == GROUP_STATUS_DISABLED){
+ $menu_users_status[] = $group;
+ }
+ }
+ insert_js(
+ 'var menu_usrgrp_all='.zbx_jsvalue($menu_all).";\n".
+ 'var menu_usrgrp_gui='.zbx_jsvalue($menu_gui_access).";\n".
+ 'var menu_usrgrp_status='.zbx_jsvalue($menu_users_status).";\n"
+ );
+
+ }
function get_user_actionmenu($userid){
+ $usr_grp_all_in = array();
+ $usr_grp_gui_in = array();
+ $usr_grp_status_in = array();
+
+ $sql = 'SELECT DISTINCT g.name, g.usrgrpid, g.gui_access, g.users_status '.
+ ' FROM users_groups ug, usrgrp g '.
+ ' WHERE ug.userid='.$userid.
+ ' AND g.usrgrpid=ug.usrgrpid '.
+ ' AND '.DBin_node('g.usrgrpid', get_current_nodeid(false));
+ if($res = DBselect($sql)){
+ while($group = DBFetch($res)){
+ $group['name'] = htmlspecialchars($group['name']);
+
+ $gui_access = $group['gui_access'];
+ $users_status = $group['users_status'];
+
+ unset($group['gui_access']);
+ unset($group['users_status']);
+
+ $usr_grp_all_in[] = $group;
+ if($gui_access != GROUP_GUI_ACCESS_SYSTEM){
+ $usr_grp_gui_in[] = $groups;
+ }
+ if($users_status == GROUP_STATUS_DISABLED){
+ $usr_grp_status_in[] = $group;
+ }
+ }
+ }
+
+ $action = new CSpan(S_SELECT);
+
+ $script = new CScript("javascript: create_user_menu(event,".
+ $userid.",".
+ zbx_jsvalue($usr_grp_all_in).",".
+ zbx_jsvalue($usr_grp_gui_in).",".
+ zbx_jsvalue($usr_grp_status_in).");"
+ );
+
+ $action->AddAction('onclick',$script);
+ $action->AddOption('onmouseover','javascript: this.style.cursor = "pointer";');
+
+ return $action;
+ }
+
+ function get_user_actionmenu_old($userid){
global $USER_DETAILS;
$action = new CSpan(S_SELECT);
diff --git a/frontends/php/js/common.js b/frontends/php/js/common.js
index 2dc484bb..ba02fb49 100644
--- a/frontends/php/js/common.js
+++ b/frontends/php/js/common.js
@@ -593,11 +593,14 @@ function moveListBoxSelectedItem(formname,objname,from,to,action){
for(i = 0; i < from.options.length; i++) {
if(from.options[i].selected == true) {
+/*
var temp = document.createElement('option');
temp.setAttribute('value',from.options[i].value);
var caption = IE?from.options[i].innerText:from.options[i].textContent;
temp.appendChild(document.createTextNode(caption));
+*/
+ var temp = from.options[i].cloneNode(true);
if(action.toLowerCase() == 'add'){
result &= create_var(formname, objname+'['+from.options[i].value+']', from.options[i].value, false);
@@ -612,5 +615,6 @@ function moveListBoxSelectedItem(formname,objname,from,to,action){
i--;
}
}
+ alert('OPA');
return result;
} \ No newline at end of file
diff --git a/frontends/php/js/dashboard.js b/frontends/php/js/dashboard.js
index 0a8c8270..56f2c90f 100644
--- a/frontends/php/js/dashboard.js
+++ b/frontends/php/js/dashboard.js
@@ -33,7 +33,7 @@ function setRefreshRate(id,interval){
}
function create_menu(e,id){
- if (!e) var e = window.event;
+ if(!e) var e = window.event;
id='menu_'+id;
var dbrd_menu = new Array();
diff --git a/frontends/php/js/users.js b/frontends/php/js/users.js
new file mode 100644
index 00000000..d05aca70
--- /dev/null
+++ b/frontends/php/js/users.js
@@ -0,0 +1,103 @@
+// JavaScript Document
+//var menu_usrgrp_all = new Array();
+//var menu_usrgrp_gui = new Array();
+//var menu_usrgrp_status = new Array();
+
+function create_user_menu(e,userid,usr_grp_all_in,usr_grp_gui_in,usr_grp_status_in){
+ if(!e) var e = window.event;
+
+// ALL GROUPS
+ var grp_add_to = new Array('Add to',null,null,{'outer' : ['pum_o_submenu'],'inner' : ['pum_i_submenu']});
+ grp_add_to.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]);
+
+ var grp_rmv_frm = new Array('Remove from',null,null,{'outer' : 'pum_o_submenu','inner' : ['pum_i_submenu']});
+ grp_rmv_frm.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]);
+
+// add to
+ for(var i=0; i < menu_usrgrp_all.length; i++){
+ if((typeof(menu_usrgrp_all[i]) != 'undefined') && !empty(menu_usrgrp_all[i])){
+ var row = menu_usrgrp_all[i];
+ var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=1&userid="+userid+"&usrgrpid="+row.usrgrpid);
+ grp_add_to.push(menu_row);
+ }
+ }
+
+// remove from
+ for(var i=0; i < usr_grp_all_in.length; i++){
+ if((typeof(usr_grp_all_in[i]) != 'undefined') && !empty(usr_grp_all_in[i])){
+ var row = usr_grp_all_in[i];
+ var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=0&userid="+userid+"&usrgrpid="+row.usrgrpid);
+ grp_rmv_frm.push(menu_row);
+ }
+ }
+
+// GUI ACCESS GROUPS
+ var grp_gui_add_to = new Array('Add to',null,null,{'outer' : ['pum_o_submenu'],'inner' : ['pum_i_submenu']});
+ grp_gui_add_to.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]);
+
+ var grp_gui_rmv_frm = new Array('Remove from',null,null,{'outer' : 'pum_o_submenu','inner' : ['pum_i_submenu']});
+ grp_gui_rmv_frm.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]);
+
+// add to
+ for(var i=0; i < menu_usrgrp_gui.length; i++){
+ if((typeof(menu_usrgrp_gui[i]) != 'undefined') && !empty(menu_usrgrp_gui[i])){
+ var row = menu_usrgrp_gui[i];
+ var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=1&userid="+userid+"&usrgrpid="+row.usrgrpid);
+ grp_gui_add_to.push(menu_row);
+ }
+ }
+
+// remove from
+ for(var i=0; i < usr_grp_gui_in.length; i++){
+ if((typeof(usr_grp_all_in[i]) != 'undefined') && !empty(usr_grp_gui_in[i])){
+ var row = usr_grp_gui_in[i];
+ var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=0&userid="+userid+"&usrgrpid="+row.usrgrpid);
+ grp_gui_rmv_frm.push(menu_row);
+ }
+ }
+
+// DISABLED STATUS GROUPS
+ var grp_status_add_to = new Array('Add to',null,null,{'outer' : ['pum_o_submenu'],'inner' : ['pum_i_submenu']});
+ grp_status_add_to.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]);
+
+ var grp_status_rmv_frm = new Array('Remove from',null,null,{'outer' : 'pum_o_submenu','inner' : ['pum_i_submenu']});
+ grp_status_rmv_frm.push(['Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}]);
+
+// add to
+ for(var i=0; i < menu_usrgrp_status.length; i++){
+ if((typeof(menu_usrgrp_status[i]) != 'undefined') && !empty(menu_usrgrp_status[i])){
+ var row = menu_usrgrp_status[i];
+ var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=1&userid="+userid+"&usrgrpid="+row.usrgrpid);
+ grp_status_add_to.push(menu_row);
+ }
+ }
+
+// remove from
+ for(var i=0; i < usr_grp_status_in.length; i++){
+ if((typeof(usr_grp_status_in[i]) != 'undefined') && !empty(usr_grp_status_in[i])){
+ var row = usr_grp_status_in[i];
+ var menu_row = new Array(row.name,"users.php?config=0&form=update&grpaction=0&userid="+userid+"&usrgrpid="+row.usrgrpid);
+ grp_status_rmv_frm.push(menu_row);
+ }
+ }
+//['&lt;span class=&quot;red&quot;&gt;Disabled users&lt;/span&gt;','users.php?config=0&form=update&grpaction=1&userid=2&usrgrpid=9']
+ var grp_menu = new Array(
+ Array('Groups',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}),
+ grp_add_to,
+ grp_rmv_frm,
+ Array('GUI access',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}),
+ grp_gui_add_to,
+ grp_gui_rmv_frm,
+ Array('Status disabled',null,null,{'outer' : ['pum_oheader'],'inner' : ['pum_iheader']}),
+ grp_status_add_to,
+ grp_status_rmv_frm
+ );
+
+//to create a copy of array, but not references!!!!
+//alert(id+' : '+dashboard_menu[id]);
+
+
+
+//alert(dashboard_menu[id]);
+ show_popup_menu(e,grp_menu,280);// JavaScript Document
+} \ No newline at end of file
diff --git a/frontends/php/users.php b/frontends/php/users.php
index 7ec6d593..4e3e4499 100644
--- a/frontends/php/users.php
+++ b/frontends/php/users.php
@@ -29,6 +29,7 @@
$page['title'] = 'S_USERS';
$page['file'] = 'users.php';
$page['hist_arg'] = array('config');
+ $page['scripts'] = array('users.js');
include_once 'include/page_header.php';
@@ -483,7 +484,7 @@ include_once 'include/page_header.php';
S_STATUS,
S_ACTIONS
));
-
+
$cond_from = '';
$cond_where = '';
@@ -569,6 +570,8 @@ include_once 'include/page_header.php';
$jsmenu = new CPUMenu(null,270);
$jsmenu->InsertJavaScript();
+
+ get_user_menu_array();
}
}
else if($_REQUEST['config']==1){ // USER GROUPS