diff options
author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-05 13:48:38 +0000 |
---|---|---|
committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-05 13:48:38 +0000 |
commit | cd1c62734e8764107414b3fa3f44f6f9901aa8ad (patch) | |
tree | 9900a99b00f521fde294abecadf8e68608795b93 | |
parent | ab9582df4faf46795b9a0c17b418fd244625f077 (diff) | |
download | zabbix-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.php | 4 | ||||
-rw-r--r-- | frontends/php/include/audit.inc.php | 1 | ||||
-rw-r--r-- | frontends/php/include/defines.inc.php | 1 | ||||
-rw-r--r-- | frontends/php/include/forms.inc.php | 135 | ||||
-rw-r--r-- | frontends/php/include/locales/en_gb.inc.php | 20 | ||||
-rw-r--r-- | frontends/php/include/screens.inc.php | 108 | ||||
-rw-r--r-- | frontends/php/popup.php | 30 | ||||
-rw-r--r-- | frontends/php/screenconf.php | 289 |
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(); + } ?> |