summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-05 13:48:38 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-05 13:48:38 +0000
commitcd1c62734e8764107414b3fa3f44f6f9901aa8ad (patch)
tree9900a99b00f521fde294abecadf8e68608795b93
parentab9582df4faf46795b9a0c17b418fd244625f077 (diff)
downloadzabbix-cd1c62734e8764107414b3fa3f44f6f9901aa8ad.tar.gz
zabbix-cd1c62734e8764107414b3fa3f44f6f9901aa8ad.tar.xz
zabbix-cd1c62734e8764107414b3fa3f44f6f9901aa8ad.zip
- developed slideshow configuration (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@3977 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r--frontends/php/httpconf.php4
-rw-r--r--frontends/php/include/audit.inc.php1
-rw-r--r--frontends/php/include/defines.inc.php1
-rw-r--r--frontends/php/include/forms.inc.php135
-rw-r--r--frontends/php/include/locales/en_gb.inc.php20
-rw-r--r--frontends/php/include/screens.inc.php108
-rw-r--r--frontends/php/popup.php30
-rw-r--r--frontends/php/screenconf.php289
8 files changed, 525 insertions, 63 deletions
diff --git a/frontends/php/httpconf.php b/frontends/php/httpconf.php
index 522d5b5b..c7a220be 100644
--- a/frontends/php/httpconf.php
+++ b/frontends/php/httpconf.php
@@ -53,8 +53,8 @@ include_once "include/page_header.php";
"new_httpstep"=> array(T_ZBX_STR, O_OPT, null, null,null),
- "move_up"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(0,65534), null),
- "move_down"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(0,65534), null),
+ "move_up"=> array(T_ZBX_INT, O_OPT, P_ACT, BETWEEN(0,65534), null),
+ "move_down"=> array(T_ZBX_INT, O_OPT, P_ACT, BETWEEN(0,65534), null),
"sel_step"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(0,65534), null),
diff --git a/frontends/php/include/audit.inc.php b/frontends/php/include/audit.inc.php
index a567f512..a5a7aef1 100644
--- a/frontends/php/include/audit.inc.php
+++ b/frontends/php/include/audit.inc.php
@@ -41,6 +41,7 @@
$str_resource[AUDIT_RESOURCE_NODE] = S_NODE;
$str_resource[AUDIT_RESOURCE_SCENARIO] = S_SCENARIO;
$str_resource[AUDIT_RESOURCE_DISCOVERY_RULE] = S_DISCOVERY_RULE;
+ $str_resource[AUDIT_RESOURCE_SLIDESHOW] = S_SLIDESHOW;
if(isset($str_resource[$resource_type]))
return $str_resource[$resource_type];
diff --git a/frontends/php/include/defines.inc.php b/frontends/php/include/defines.inc.php
index a1c14ea5..332e5d14 100644
--- a/frontends/php/include/defines.inc.php
+++ b/frontends/php/include/defines.inc.php
@@ -97,6 +97,7 @@
define('AUDIT_RESOURCE_NODE', 21);
define('AUDIT_RESOURCE_SCENARIO', 22);
define('AUDIT_RESOURCE_DISCOVERY_RULE', 23);
+ define('AUDIT_RESOURCE_SLIDESHOW', 24);
define('CONDITION_TYPE_HOST_GROUP', 0);
define('CONDITION_TYPE_HOST', 1);
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php
index cf5ee929..8bf5ac5a 100644
--- a/frontends/php/include/forms.inc.php
+++ b/frontends/php/include/forms.inc.php
@@ -26,6 +26,137 @@
require_once "include/users.inc.php";
require_once "include/db.inc.php";
+ function insert_slideshow_form()
+ {
+ $form = new CFormTable(S_SLIDESHOW, null, 'post');
+ $form->SetHelp('config_advanced.php');
+
+ $form->AddVar('configid', 1);
+
+ if(isset($_REQUEST['slideshowid']))
+ {
+ $form->AddVar('slideshowid', $_REQUEST['slideshowid']);
+ }
+
+ $name = get_request('name', '');
+ $delay = get_request('delay', 5);
+ $steps = get_request('steps', array());
+
+ $new_step = get_request('new_step', null);
+
+ if((isset($_REQUEST['slideshowid']) && !isset($_REQUEST['form_refresh'])))
+ {
+ $slideshow_data = DBfetch(DBselect('select * from slideshows where slideshowid='.$_REQUEST['slideshowid']));
+
+ $name = $slideshow_data['name'];
+ $delay = $slideshow_data['delay'];
+ $steps = array();
+ $db_steps = DBselect('select * from slides where slideshowid='.$_REQUEST['slideshowid'].' order by step');
+ while($step_data = DBfetch($db_steps))
+ {
+ $steps[$step_data['step']] = array(
+ 'screenid' => $step_data['screenid'],
+ 'delay' => $step_data['delay']
+ );
+ }
+ }
+
+ $form->AddRow(S_NAME, new CTextBox('name', $name, 40));
+
+ $form->AddRow(S_UPDATE_INTERVAL_IN_SEC, new CNumericBox("delay",$delay,5));
+
+ $tblSteps = new CTableInfo(S_NO_SLIDES_DEFINED);
+ $tblSteps->SetHeader(array(S_SCREEN, S_DELAY, SPACE));
+ if(count($steps) > 0)
+ {
+ ksort($steps);
+ $first = min(array_keys($steps));
+ $last = max(array_keys($steps));
+ }
+ foreach($steps as $sid => $s)
+ {
+ if( !isset($s['screenid']) ) $s['screenid'] = 0;
+
+ if(isset($s['delay']) && $s['delay'] > 0 )
+ $s['delay'] = bold($s['delay']);
+ else
+ $s['delay'] = $delay;
+
+ $up = null;
+ if($sid != $first)
+ {
+ $up = new CLink(S_UP,'#','action');
+ $up->OnClick("return create_var('".$form->GetName()."','move_up',".$sid.", true);");
+ }
+
+ $down = null;
+ if($sid != $last)
+ {
+ $down = new CLink(S_DOWN,'#','action');
+ $down->OnClick("return create_var('".$form->GetName()."','move_down',".$sid.", true);");
+ }
+
+ $screen_data = get_screen_by_screenid($s['screenid']);
+ $name = new CLink($screen_data['name'],'#','action');
+ $name->OnClick("return create_var('".$form->GetName()."','edit_step',".$sid.", true);");
+
+ $tblSteps->AddRow(array(
+ array(new CCheckBox('sel_step[]',null,null,$sid), $name),
+ $s['delay'],
+ array($up, isset($up) && isset($down) ? SPACE : null, $down)
+ ));
+ }
+ $form->AddVar('steps', $steps);
+
+ $form->AddRow(S_SLIDES, array(
+ $tblSteps,
+ !isset($new_step) ? new CButton('add_step',S_ADD,
+ "return create_var('".$form->GetName()."','add_step',1, true);") : null,
+ (count($steps) > 0) ? new CButton('del_sel_step',S_DELETE_SELECTED) : null
+ ));
+
+ if(isset($new_step))
+ {
+ if( !isset($new_step['screenid']) ) $new_step['screenid'] = 0;
+ if( !isset($new_step['delay']) ) $new_step['delay'] = 0;
+
+ if( isset($new_step['sid']) )
+ $form->AddVar('new_step[sid]',$new_step['sid']);
+
+ $form->AddVar('new_step[screenid]',$new_step['screenid']);
+
+ $screen_data = get_screen_by_screenid($new_step['screenid']);
+
+ $form->AddRow(S_NEW_SLIDE, array(
+ new CTextBox('screen_name', $screen_data['name'], 25, 'yes'),
+ new CButton('select_screen',S_SELECT,
+ 'return PopUp("popup.php?dstfrm='.$form->GetName().'&srctbl=screens'.
+ '&dstfld1=screen_name&srcfld1=name'.
+ '&dstfld2=new_step%5Bscreenid%5D&srcfld2=screenid");'),
+ S_DELAY,
+ new CNumericBox('new_step[delay]', $new_step['delay'], 5), BR,
+ new CButton('add_step', isset($new_step['sid']) ? S_SAVE : S_ADD),
+ new CButton('cancel_step', S_CANCEL)
+
+ ),
+ isset($new_step['sid']) ? 'edit' : 'new');
+ }
+
+ $form->AddItemToBottomRow(new CButton("save",S_SAVE));
+ if(isset($_REQUEST['slideshowid']))
+ {
+ $form->AddItemToBottomRow(SPACE);
+ $form->AddItemToBottomRow(new CButton('clone',S_CLONE));
+ $form->AddItemToBottomRow(SPACE);
+ $form->AddItemToBottomRow(new CButtonDelete(S_DELETE_SLIDESHOW_Q,
+ url_param('form').url_param('slideshowid').url_param('configid')));
+ }
+ $form->AddItemToBottomRow(SPACE);
+ $form->AddItemToBottomRow(new CButtonCancel());
+
+ $form->Show();
+ }
+
function insert_drule_form()
{
$frm_title = S_DISCOVERY_RULE;
@@ -3327,6 +3458,8 @@ include_once 'include/discovery.inc.php';
$frmScr = new CFormTable($frm_title,"screenconf.php");
$frmScr->SetHelp("web.screenconf.screen.php");
+ $frmScr->AddVar('configid', 0);
+
if(isset($_REQUEST["screenid"]))
{
$frmScr->AddVar("screenid",$_REQUEST["screenid"]);
@@ -3338,6 +3471,8 @@ include_once 'include/discovery.inc.php';
$frmScr->AddItemToBottomRow(new CButton("save",S_SAVE));
if(isset($_REQUEST["screenid"]))
{
+ $form->AddItemToBottomRow(SPACE);
+ $form->AddItemToBottomRow(new CButton('clone',S_CLONE));
$frmScr->AddItemToBottomRow(SPACE);
$frmScr->AddItemToBottomRow(new CButtonDelete(S_DELETE_SCREEN_Q,
url_param("form").url_param("screenid")));
diff --git a/frontends/php/include/locales/en_gb.inc.php b/frontends/php/include/locales/en_gb.inc.php
index 483b27c8..7782bbb0 100644
--- a/frontends/php/include/locales/en_gb.inc.php
+++ b/frontends/php/include/locales/en_gb.inc.php
@@ -993,6 +993,16 @@
'S_EDIT'=> 'Edit',
'S_DIMENSION_COLS_ROWS'=> 'Dimension (cols x rows)',
+ 'S_SLIDESHOWS'=> 'Slideshows',
+ 'S_SLIDESHOW'=> 'Slideshow',
+ 'S_CONFIGURATION_OF_SLIDESHOWS_BIG'=> 'CONFIGURATION OF SLIDESHOWS',
+ 'S_SLIDESHOWS_BIG'=> 'SLIDESHOWS',
+ 'S_NO_SLIDESHOWS_DEFINED'=> 'No slideshows defined',
+ 'S_COUNT_OF_SLIDES'=> 'Count of slides',
+ 'S_NO_SLIDES_DEFINED'=> 'No slides defined',
+ 'S_SLIDES'=> 'Slides',
+ 'S_NEW_SLIDE'=> 'New slide',
+
// screenedit.php
'S_MAP'=> 'Map',
'S_AS_PLAIN_TEXT'=> 'As plain text',
@@ -1035,6 +1045,14 @@
'S_SELECT_SCREEN_DOT_DOT_DOT'=> 'Select screen ...',
'S_NO_SCREENS_DEFINED'=> 'No screens defined',
+ 'S_SLIDESHOW_UPDATED'=> 'Slideshow updated',
+ 'S_CANNOT_UPDATE_SLIDESHOW'=> 'Cannot_update slideshow',
+ 'S_SLIDESHOW_ADDED'=> 'Slideshow added',
+ 'S_CANNOT_ADD_SLIDESHOW'=> 'Cannot add slideshow',
+ 'S_SLIDESHOW_DELETED'=> 'Slideshow deleted',
+ 'S_CANNOT_DELETE_SLIDESHOW'=> 'Cannot delete slideshow',
+ 'S_DELETE_SLIDESHOW_Q'=> 'Delete slideshow?',
+
// services.php
'S_ROOT_SMALL'=> 'root',
'S_IT_SERVICE'=> 'IT service',
@@ -1066,7 +1084,7 @@
'S_ACCEPTABLE_SLA_IN_PERCENT'=> 'Acceptabe SLA (in %)',
'S_LINK_TO_TRIGGER_Q'=> 'Link to trigger?',
'S_SORT_ORDER_0_999'=> 'Sort order (0->999)',
- 'S_DELETE_SERVICE_Q'=> 'S_DELETE_SERVICE_Q',
+ 'S_DELETE_SERVICE_Q'=> 'Delete service?',
'S_LINK_TO'=> 'Link to',
'S_SOFT_LINK_Q'=> 'Soft link?',
'S_ADD_SERVER_DETAILS'=> 'Add server details',
diff --git a/frontends/php/include/screens.inc.php b/frontends/php/include/screens.inc.php
index 070a4a44..d8bcd58f 100644
--- a/frontends/php/include/screens.inc.php
+++ b/frontends/php/include/screens.inc.php
@@ -114,6 +114,9 @@
$result=DBexecute("delete from screens_items where resourceid=$screenid and resourcetype=".SCREEN_RESOURCE_SCREEN);
if(!$result) return $result;
+ $result=DBexecute('delete from slides where screenid='.$screenid);
+ if(!$result) return $result;
+
return DBexecute("delete from screens where screenid=$screenid");
}
@@ -155,7 +158,7 @@
{
return $row;
}
- error("No screen with screenid=[$screenid]");
+ // error("No screen with screenid=[$screenid]");
return FALSE;
}
@@ -214,7 +217,7 @@
}
}
$table = new CTable(
- new CLink("No rows in screen ".$row["name"],"screenconf.php?form=update&screenid=".$screenid),
+ new CLink("No rows in screen ".$row["name"],"screenconf.php?config=0&form=update&screenid=".$screenid),
($editmode == 0 || $editmode == 2) ? "screen_view" : "screen_edit");
for($r=0;$r<$row["vsize"];$r++)
@@ -400,4 +403,105 @@
}
return $table;
}
+
+ function slideshow_accessiable($slideshowid, $perm)
+ {
+ global $USER_DETAILS;
+
+ $result = false;
+
+ if(DBselect("select slideshowid from slideshows where slideshowid=".$slideshowid.
+ " and ".DBid2nodeid('slideshowid')." in (".get_accessible_nodes_by_user($USER_DETAILS,$perm).")"))
+ {
+ $result = true;
+ $db_slides = DBselect('select distinct screenid from slides where slideshowid='.$slideshowid);
+ while($slide_data = DBfetch($db_slides))
+ {
+ if( !($result = screen_accessiable($slide_data["screenid"], PERM_READ_ONLY)) ) break;
+ }
+ }
+ return $result;
+ }
+
+ function get_slideshow_by_slideshowid($slideshowid)
+ {
+ return DBfetch(DBselect('select * from slideshows where slideshowid='.$slideshowid));
+ }
+
+ function validate_slide($slide)
+ {
+ if(!screen_accessiable($slide["screenid"], PERM_READ_ONLY)) return false;
+
+ if( !is_numeric($slide['delay']) ) return false;
+
+ return true;
+ }
+
+ function add_slideshow($name, $delay, $slides)
+ {
+ foreach($slides as $slide)
+ {
+ if( !validate_slide($slide) )
+ return false;
+ }
+
+ $slideshowid = get_dbid('slideshows','slideshowid');
+ $result = DBexecute('insert into slideshows (slideshowid,name,delay) '.
+ ' values ('.$slideshowid.','.zbx_dbstr($name).','.$delay.')');
+
+ $i = 0;
+ foreach($slides as $slide)
+ {
+ $slideid = get_dbid('slides','slideid');
+ if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '.
+ ' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) )
+ {
+ break;
+ }
+ }
+
+ if( !$result )
+ {
+ delete_slideshow($slideshowid);
+ return false;
+ }
+ return $slideshowid;
+ }
+
+ function update_slideshow($slideshowid, $name, $delay, $slides)
+ {
+ foreach($slides as $slide)
+ {
+ if( !validate_slide($slide) )
+ return false;
+ }
+
+ if( !($result = DBexecute('update slideshows set name='.zbx_dbstr($name).',delay='.$delay.' where slideshowid='.$slideshowid)) )
+ return false;
+
+ DBexecute('delete from slides where slideshowid='.$slideshowid);
+
+ $i = 0;
+ foreach($slides as $slide)
+ {
+ $slideid = get_dbid('slides','slideid');
+ if( !($result = DBexecute('insert into slides (slideid,slideshowid,screenid,step,delay) '.
+ ' values ('.$slideid.','.$slideshowid.','.$slide['screenid'].','.($i++).','.$slide['delay'].')')) )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function delete_slideshow($slideshowid)
+ {
+ return (
+ DBexecute('delete from slideshows where slideshowid='.$slideshowid) &&
+ DBexecute('delete from slides where slideshowid='.$slideshowid)
+ );
+ }
+
+
?>
diff --git a/frontends/php/popup.php b/frontends/php/popup.php
index 12bf7577..033d7781 100644
--- a/frontends/php/popup.php
+++ b/frontends/php/popup.php
@@ -70,6 +70,10 @@
$page["title"] = "S_STANDARD_ITEMS_BIG";
$min_user_type = USER_TYPE_ZABBIX_USER;
break;
+ case 'screens':
+ $page["title"] = "S_SCREENS_BIG";
+ $min_user_type = USER_TYPE_ZABBIX_ADMIN;
+ break;
case 'nodes':
if(ZBX_DISTRIBUTED)
{
@@ -195,7 +199,7 @@ include_once "include/page_header.php";
}
else
{
- if(in_array($srctbl,array("hosts","host_group","triggers","logitems","items",'applications')))
+ if(in_array($srctbl,array("hosts","host_group","triggers","logitems","items",'applications','screens')))
{
if(ZBX_DISTRIBUTED)
{
@@ -794,6 +798,30 @@ function add_item_variable(s_formname,x_value)
}
$table->Show();
}
+ elseif($srctbl == 'screens')
+ {
+ require_once "include/screens.inc.php";
+
+ $table = new CTableInfo(S_NO_NODES_DEFINED);
+ $table->SetHeader(S_NAME);
+
+ $result = DBselect('select screenid,name from screens where '.DBid2nodeid('screenid').'='.$nodeid.' order by name');
+ while($row=DBfetch($result))
+ {
+ if(!screen_accessiable($row["screenid"], PERM_READ_ONLY))
+ continue;
+
+ $name = new CLink($row["name"],"#","action");
+ $name->SetAction(
+ get_window_opener($dstfrm, $dstfld1, $row[$srcfld1]).
+ (isset($srcfld2) ? get_window_opener($dstfrm, $dstfld2, $row[$srcfld2]) : '').
+ ' close_window(); return false;');
+
+ $table->AddRow($name);
+ }
+
+ $table->Show();
+ }
?>
<?php
diff --git a/frontends/php/screenconf.php b/frontends/php/screenconf.php
index c673cb44..928c3d7e 100644
--- a/frontends/php/screenconf.php
+++ b/frontends/php/screenconf.php
@@ -30,96 +30,271 @@ include_once "include/page_header.php";
?>
<?php
+ $_REQUEST['config'] = get_request('config',get_profile('web.screens.config',0));
// VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION
$fields=array(
- "screenid"=> array(T_ZBX_INT, O_NO, P_SYS, DB_ID, '{form}=="update"'),
- "name"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, 'isset({save})'),
- "hsize"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(1,100), 'isset({save})'),
- "vsize"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(1,100), 'isset({save})'),
-
- "save"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
- "delete"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL),
- "cancel"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL),
- "form"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL),
- "form_refresh"=> array(T_ZBX_INT, O_OPT, NULL, NULL, NULL)
+ "config"=> array(T_ZBX_INT, O_OPT, P_SYS, IN("0,1"), null), // 0 - screens, 1 - slides
+
+ "screenid"=> array(T_ZBX_INT, O_NO, P_SYS, DB_ID, '{config}==0&&{form}=="update"'),
+ "name"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==0&&isset({save})'),
+ "hsize"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(1,100), '{config}==0&&isset({save})'),
+ "vsize"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(1,100), '{config}==0&&isset({save})'),
+
+ "slideshowid"=> array(T_ZBX_INT, O_NO, P_SYS, DB_ID, '{config}==1&&{form}=="update"'),
+ "name"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==1&&isset({save})'),
+ "delay"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(1,86400),'{config}==1&&isset({save})'),
+
+ "steps"=> array(null, O_OPT, null, null, null),
+ "new_step"=> array(null, O_OPT, null, null, null),
+
+ "move_up"=> array(T_ZBX_INT, O_OPT, P_ACT, BETWEEN(0,65534), null),
+ "move_down"=> array(T_ZBX_INT, O_OPT, P_ACT, BETWEEN(0,65534), null),
+
+ "edit_step"=> array(T_ZBX_INT, O_OPT, P_ACT, BETWEEN(0,65534), null),
+ "add_step"=> array(T_ZBX_STR, O_OPT, P_ACT, null, null),
+ "cancel_step"=> array(T_ZBX_STR, O_OPT, P_ACT, null, null),
+
+ "sel_step"=> array(T_ZBX_INT, O_OPT, P_ACT, BETWEEN(0,65534), null),
+ "del_sel_step"=> array(T_ZBX_STR, O_OPT, P_ACT, null, null),
+
+ "clone"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null),
+ "save"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null),
+ "delete"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null),
+ "cancel"=> array(T_ZBX_STR, O_OPT, P_SYS, null, null),
+ "form"=> array(T_ZBX_STR, O_OPT, P_SYS, null, null),
+ "form_refresh"=> array(T_ZBX_INT, O_OPT, null, null, null)
);
check_fields($fields);
+
+ $config = $_REQUEST['config'] = get_request('config', 0);
+
+ update_profile('web.screens.config', $_REQUEST['config']);
?>
<?php
- if(isset($_REQUEST["screenid"]))
- {
- if(!screen_accessiable($_REQUEST["screenid"], PERM_READ_WRITE))
- access_deny();
- }
-
- if(isset($_REQUEST["save"]))
+ if( 0 == $config )
{
if(isset($_REQUEST["screenid"]))
{
- // TODO check permission by new value.
- $result=update_screen($_REQUEST["screenid"],
- $_REQUEST["name"],$_REQUEST["hsize"],$_REQUEST["vsize"]);
- $audit_action = AUDIT_ACTION_UPDATE;
- show_messages($result, S_SCREEN_UPDATED, S_CANNOT_UPDATE_SCREEN);
- } else {
- if(count(get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_WRITE,PERM_MODE_LT,PERM_RES_IDS_ARRAY,$ZBX_CURNODEID)))
+ if(!screen_accessiable($_REQUEST["screenid"], PERM_READ_WRITE))
access_deny();
+ }
- $result=add_screen($_REQUEST["name"],$_REQUEST["hsize"],$_REQUEST["vsize"]);
- $audit_action = AUDIT_ACTION_ADD;
- show_messages($result,S_SCREEN_ADDED,S_CANNOT_ADD_SCREEN);
+ if(isset($_REQUEST['clone']) && isset($_REQUEST['screenid']))
+ {
+ unset($_REQUEST['screenid']);
+ $_REQUEST['form'] = 'clone';
}
- if($result){
- add_audit($audit_action,AUDIT_RESOURCE_SCREEN," Name [".$_REQUEST['name']."] ");
- unset($_REQUEST["form"]);
+ else if(isset($_REQUEST['save']))
+ {
+ if(isset($_REQUEST["screenid"]))
+ {
+ // TODO check permission by new value.
+ $result=update_screen($_REQUEST["screenid"],
+ $_REQUEST["name"],$_REQUEST["hsize"],$_REQUEST["vsize"]);
+ $audit_action = AUDIT_ACTION_UPDATE;
+ show_messages($result, S_SCREEN_UPDATED, S_CANNOT_UPDATE_SCREEN);
+ } else {
+ if(count(get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_WRITE,PERM_MODE_LT,PERM_RES_IDS_ARRAY,$ZBX_CURNODEID)))
+ access_deny();
+
+ $result=add_screen($_REQUEST["name"],$_REQUEST["hsize"],$_REQUEST["vsize"]);
+ $audit_action = AUDIT_ACTION_ADD;
+ show_messages($result,S_SCREEN_ADDED,S_CANNOT_ADD_SCREEN);
+ }
+ if($result){
+ add_audit($audit_action,AUDIT_RESOURCE_SCREEN," Name [".$_REQUEST['name']."] ");
+ unset($_REQUEST["form"]);
+ unset($_REQUEST["screenid"]);
+ }
+ }
+ if(isset($_REQUEST["delete"])&&isset($_REQUEST["screenid"]))
+ {
+ if($screen = get_screen_by_screenid($_REQUEST["screenid"]))
+ {
+ $result = delete_screen($_REQUEST["screenid"]);
+ show_messages($result, S_SCREEN_DELETED, S_CANNOT_DELETE_SCREEN);
+ add_audit_if($result, AUDIT_ACTION_DELETE,AUDIT_RESOURCE_SCREEN," Name [".$screen['name']."] ");
+ }
unset($_REQUEST["screenid"]);
+ unset($_REQUEST["form"]);
}
}
- if(isset($_REQUEST["delete"])&&isset($_REQUEST["screenid"]))
+ else
{
- if($screen = get_screen_by_screenid($_REQUEST["screenid"]))
+ if(isset($_REQUEST['slideshowid']))
{
- $result = delete_screen($_REQUEST["screenid"]);
- show_messages($result, S_SCREEN_DELETED, S_CANNOT_DELETE_SCREEN);
- add_audit_if($result, AUDIT_ACTION_DELETE,AUDIT_RESOURCE_SCREEN," Name [".$screen['name']."] ");
+ if(!slideshow_accessiable($_REQUEST['slideshowid'], PERM_READ_WRITE))
+ access_deny();
+ }
+
+ if(isset($_REQUEST['clone']) && isset($_REQUEST['slideshowid']))
+ {
+ unset($_REQUEST['slideshowid']);
+ $_REQUEST['form'] = 'clone';
+ }
+ else if(isset($_REQUEST['save']))
+ {
+ $slides = get_request('steps', array());
+
+ if(isset($_REQUEST['slideshowid']))
+ { /* update */
+ $result=update_slideshow($_REQUEST['slideshowid'],$_REQUEST['name'],$_REQUEST['delay'],$slides);
+ $audit_action = AUDIT_ACTION_UPDATE;
+ show_messages($result, S_SLIDESHOW_UPDATED, S_CANNOT_UPDATE_SLIDESHOW);
+ }
+ else
+ { /* add */
+ $result=add_slideshow($_REQUEST['name'],$_REQUEST['delay'],$slides);
+ $audit_action = AUDIT_ACTION_ADD;
+ show_messages($result, S_SLIDESHOW_ADDED, S_CANNOT_ADD_SLIDESHOW);
+ }
+ if($result){
+ add_audit($audit_action,AUDIT_RESOURCE_SLIDESHOW," Name [".$_REQUEST['name']."] ");
+ unset($_REQUEST['form'], $_REQUEST['slideshowid']);
+ }
+ }
+ else if(isset($_REQUEST['cancel_step']))
+ {
+ unset($_REQUEST['add_step'], $_REQUEST['new_step']);
+ }
+ else if(isset($_REQUEST['add_step']))
+ {
+ if(isset($_REQUEST['new_step']))
+ {
+ if(isset($_REQUEST['new_step']['sid']))
+ $_REQUEST['steps'][$_REQUEST['new_step']['sid']] = $_REQUEST['new_step'];
+ else
+ $_REQUEST['steps'][] = $_REQUEST['new_step'];
+
+ unset($_REQUEST['add_step'], $_REQUEST['new_step']);
+ }
+ else
+ {
+ $_REQUEST['new_step'] = array();
+ }
+ }
+ else if(isset($_REQUEST['edit_step']))
+ {
+ $_REQUEST['new_step'] = $_REQUEST['steps'][$_REQUEST['edit_step']];
+ $_REQUEST['new_step']['sid'] = $_REQUEST['edit_step'];
+ }
+ else if(isset($_REQUEST['del_sel_step'])&&isset($_REQUEST['sel_step'])&&is_array($_REQUEST['sel_step']))
+ {
+ foreach($_REQUEST['sel_step'] as $sid)
+ if(isset($_REQUEST['steps'][$sid]))
+ unset($_REQUEST['steps'][$sid]);
+ }
+ else if(isset($_REQUEST['move_up']) && isset($_REQUEST['steps'][$_REQUEST['move_up']]))
+ {
+ $new_id = $_REQUEST['move_up'] - 1;
+
+ if(isset($_REQUEST['steps'][$new_id]))
+ {
+ $tmp = $_REQUEST['steps'][$new_id];
+ $_REQUEST['steps'][$new_id] = $_REQUEST['steps'][$_REQUEST['move_up']];
+ $_REQUEST['steps'][$_REQUEST['move_up']] = $tmp;
+ }
+ }
+ else if(isset($_REQUEST['move_down']) && isset($_REQUEST['steps'][$_REQUEST['move_down']]))
+ {
+ $new_id = $_REQUEST['move_down'] + 1;
+
+ if(isset($_REQUEST['steps'][$new_id]))
+ {
+ $tmp = $_REQUEST['steps'][$new_id];
+ $_REQUEST['steps'][$new_id] = $_REQUEST['steps'][$_REQUEST['move_down']];
+ $_REQUEST['steps'][$_REQUEST['move_down']] = $tmp;
+ }
+ }
+ else if(isset($_REQUEST['delete'])&&isset($_REQUEST['slideshowid']))
+ {
+ if($slideshow = get_slideshow_by_slideshowid($_REQUEST['slideshowid']))
+ {
+ $result = delete_slideshow($_REQUEST['slideshowid']);
+ show_messages($result, S_SLIDESHOW_DELETED, S_CANNOT_DELETE_SLIDESHOW);
+ add_audit_if($result, AUDIT_ACTION_DELETE,AUDIT_RESOURCE_SLIDESHOW," Name [".$slideshow['name']."] ");
+ }
+ unset($_REQUEST['slideshowid']);
+ unset($_REQUEST["form"]);
}
- unset($_REQUEST["screenid"]);
- unset($_REQUEST["form"]);
}
?>
<?php
- $form = new CForm("screenconf.php");
- $form->AddItem(new CButton("form",S_CREATE_SCREEN));
- show_table_header(S_CONFIGURATION_OF_SCREENS_BIG, $form);
+ $form = new CForm();
+
+ $cmbConfig = new CComboBox('config', $config, 'submit()');
+ $cmbConfig->AddItem(0, S_SCREENS);
+ $cmbConfig->AddItem(1, S_SLIDESHOWS);
+
+ $form->AddItem($cmbConfig);
+ $form->AddItem(new CButton("form", 0 == $config ? S_CREATE_SCREEN : S_SLIDESHOW));
+
+ show_table_header(0 == $config ? S_CONFIGURATION_OF_SCREENS_BIG : S_CONFIGURATION_OF_SLIDESHOWS_BIG, $form);
echo BR;
- if(isset($_REQUEST["form"]))
+ if( 0 == $config )
{
- insert_screen_form();
+ if(isset($_REQUEST["form"]))
+ {
+ insert_screen_form();
+ }
+ else
+ {
+ show_table_header(S_SCREENS_BIG);
+
+ $table = new CTableInfo(S_NO_SCREENS_DEFINED);
+ $table->SetHeader(array(S_NAME,S_DIMENSION_COLS_ROWS,S_SCREEN));
+
+ $result=DBselect("select screenid,name,hsize,vsize from screens where ".DBid2nodeid("screenid")."=".$ZBX_CURNODEID.
+ " order by name");
+ while($row=DBfetch($result))
+ {
+ if(!screen_accessiable($row["screenid"], PERM_READ_WRITE)) continue;
+
+ $table->AddRow(array(
+ new CLink($row["name"],"?config=1&form=update&screenid=".$row["screenid"],
+ 'action'),
+ $row["hsize"]." x ".$row["vsize"],
+ new CLink(S_EDIT,"screenedit.php?screenid=".$row["screenid"])
+ ));
+ }
+ $table->Show();
+ }
}
else
{
- show_table_header(S_SCREENS_BIG);
+ if(isset($_REQUEST["form"]))
+ {
+ insert_slideshow_form();
+ }
+ else
+ {
+ show_table_header(S_SLIDESHOWS_BIG);
- $table = new CTableInfo(S_NO_SCREENS_DEFINED);
- $table->SetHeader(array(S_NAME,S_DIMENSION_COLS_ROWS,S_SCREEN));
+ $table = new CTableInfo(S_NO_SLIDESHOWS_DEFINED);
+ $table->SetHeader(array(S_NAME,S_DELAY,S_COUNT_OF_SLIDES));
- $result=DBselect("select screenid,name,hsize,vsize from screens where ".DBid2nodeid("screenid")."=".$ZBX_CURNODEID.
- " order by name");
- while($row=DBfetch($result))
- {
- if(!screen_accessiable($row["screenid"], PERM_READ_WRITE)) continue;
+ $db_slides = DBselect('select s.slideshowid, s.name, s.delay, count(*) as cnt '.
+ ' from slideshows s left join slides sl on sl.slideshowid=s.slideshowid '.
+ ' where '.DBid2nodeid('s.slideshowid').'='.$ZBX_CURNODEID.
+ ' group by s.slideshowid,s.name,s.delay '.
+ ' order by s.name,s.slideshowid');
+ while($slide_data = DBfetch($db_slides))
+ {
+ if(!slideshow_accessiable($slide_data['slideshowid'], PERM_READ_WRITE)) continue;
- $table->AddRow(array(
- new CLink($row["name"],"screenconf.php?form=update&screenid=".$row["screenid"],
- 'action'),
- $row["hsize"]." x ".$row["vsize"],
- new CLink(S_EDIT,"screenedit.php?screenid=".$row["screenid"])
- ));
+ $table->AddRow(array(
+ new CLink($slide_data['name'],'?config=1&form=update&slideshowid='.$slide_data['slideshowid'],
+ 'action'),
+ $slide_data['delay'],
+ $slide_data['cnt']
+ ));
+ }
+ $table->Show();
}
- $table->Show();
+
}
?>