diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-30 16:13:15 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-30 16:13:15 +0000 |
| commit | 17a5d0466494cc294345eebddba054a27da7e49d (patch) | |
| tree | bdba49bf80d812ac79203a1df36d6615dcb10381 /frontends/php/include | |
| parent | 52ba9f54e0d36442deb5b4b0ce5c713de7b8ea30 (diff) | |
| download | zabbix-17a5d0466494cc294345eebddba054a27da7e49d.tar.gz zabbix-17a5d0466494cc294345eebddba054a27da7e49d.tar.xz zabbix-17a5d0466494cc294345eebddba054a27da7e49d.zip | |
- [DEV-52] added "Unlimited number of link styles for maps" (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5123 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include')
| -rw-r--r-- | frontends/php/include/forms.inc.php | 153 | ||||
| -rw-r--r-- | frontends/php/include/locales/en_gb.inc.php | 13 | ||||
| -rw-r--r-- | frontends/php/include/maps.inc.php | 106 | ||||
| -rw-r--r-- | frontends/php/include/page_header.php | 2 |
4 files changed, 177 insertions, 97 deletions
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php index 08de9df0..55cb5388 100644 --- a/frontends/php/include/forms.inc.php +++ b/frontends/php/include/forms.inc.php @@ -4870,116 +4870,151 @@ include_once 'include/discovery.inc.php'; $frmCnct->SetHelp("web.sysmap.connector.php"); $frmCnct->AddVar("sysmapid",$_REQUEST["sysmapid"]); - if(isset($_REQUEST["linkid"])) - { + if(isset($_REQUEST["linkid"]) && !isset($_REQUEST["form_refresh"])){ $frmCnct->AddVar("linkid",$_REQUEST["linkid"]); - $db_links = DBselect("SELECT * FROM sysmaps_links WHERE linkid=".$_REQUEST["linkid"]); + + $db_links = DBselect('SELECT * FROM sysmaps_links WHERE linkid='.$_REQUEST["linkid"]); $db_link = DBfetch($db_links); - } + - if(isset($_REQUEST["linkid"]) && !isset($_REQUEST["form_refresh"])) - { $selementid1 = $db_link["selementid1"]; $selementid2 = $db_link["selementid2"]; - $triggerid = $db_link["triggerid"]; + $triggers = array(); $drawtype_off = $db_link["drawtype_off"]; - $drawtype_on = $db_link["drawtype_on"]; - $color_off = $db_link["color_off"]; - $color_on = $db_link["color_on"]; + $color_off = $db_link["color_off"]; - if(is_null($triggerid)) $triggerid = 0; + $res = DBselect('SELECT * FROM sysmaps_link_triggers WHERE linkid='.$_REQUEST["linkid"]); + while($rows=DBfetch($res)){ + $triggers[] = $rows; + } } - else - { + else{ + if(isset($_REQUEST['linkid'])) $frmCnct->AddVar("linkid",$_REQUEST["linkid"]); $selementid1 = get_request("selementid1", 0); $selementid2 = get_request("selementid2", 0); - $triggerid = get_request("triggerid", 0); + $triggers = get_request("triggers", array()); $drawtype_off = get_request("drawtype_off", 0); - $drawtype_on = get_request("drawtype_on", 0); - $color_off = get_request("color_off", 0); - $color_on = get_request("color_on", 0); + $color_off = get_request("color_off", 0); } /* START comboboxes preparations */ $cmbElements1 = new CComboBox("selementid1",$selementid1); $cmbElements2 = new CComboBox("selementid2",$selementid2); - $db_selements = DBselect("SELECT selementid,label,elementid,elementtype FROM sysmaps_elements". - " WHERE sysmapid=".$_REQUEST["sysmapid"]); - while($db_selement = DBfetch($db_selements)) - { + + $db_selements = DBselect('SELECT selementid,label,elementid,elementtype '. + ' FROM sysmaps_elements '. + ' WHERE sysmapid='.$_REQUEST["sysmapid"]); + while($db_selement = DBfetch($db_selements)){ + $label = $db_selement["label"]; - if($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST) - { + if($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST){ $db_host = get_host_by_hostid($db_selement["elementid"]); $label .= ":".$db_host["host"]; } - elseif($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_MAP) - { + else if($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_MAP){ $db_map = get_sysmap_by_sysmapid($db_selement["elementid"]); $label .= ":".$db_map["name"]; } - elseif($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_TRIGGER) - { - if($db_selement["elementid"]>0) - { + else if($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_TRIGGER){ + if($db_selement["elementid"]>0){ $label .= ":".expand_trigger_description($db_selement["elementid"]); } } - elseif($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST_GROUP) - { - if($db_selement["elementid"]>0) - { + else if($db_selement["elementtype"] == SYSMAP_ELEMENT_TYPE_HOST_GROUP){ + if($db_selement["elementid"]>0){ $db_group = DBfetch(DBselect('SELECT name FROM groups WHERE groupid='.$db_selement["elementid"])); $label .= ":".$db_group['name']; } } + $cmbElements1->AddItem($db_selement["selementid"],$label); $cmbElements2->AddItem($db_selement["selementid"],$label); } $cmbType_off = new CComboBox("drawtype_off",$drawtype_off); - $cmbType_on = new CComboBox("drawtype_on",$drawtype_on); - foreach(map_link_drawtypes() as $i) - { + + foreach(map_link_drawtypes() as $i){ $value = map_link_drawtype2str($i); $cmbType_off->AddItem($i, $value); - $cmbType_on->AddItem($i, $value); - } - - + } $cmbColor_off = new CComboBox("color_off",$color_off); - $cmbColor_on = new CComboBox("color_on",$color_on); + foreach(array('Black','Blue','Cyan','Dark Blue','Dark Green', 'Dark Red','Dark Yellow','Green','Red','White','Yellow') as $value) { $cmbColor_off->AddItem($value, $value); - $cmbColor_on->AddItem($value, $value); } /* END preparation */ $frmCnct->AddRow("Element 1",$cmbElements1); $frmCnct->AddRow("Element 2",$cmbElements2); - $frmCnct->AddVar('triggerid',$triggerid); - - if($triggerid > 0) - $trigger = expand_trigger_description($triggerid); - else - $trigger = ""; - - $txtTrigger = new CTextBox('trigger',$trigger,60,'yes'); - - $btnSelect = new CButton('btn1',S_SELECT, - "return PopUp('popup.php?dstfrm=".$frmCnct->GetName(). - "&dstfld1=triggerid&dstfld2=trigger&srctbl=triggers&srcfld1=triggerid&srcfld2=description');", +//trigger links + foreach($triggers as $id => $trigger){ + if(isset($trigger['triggerid'])) + $triggers[$id]['description'] = expand_trigger_description($trigger['triggerid']); + } + + $table = new CTable(); + + $table->SetClass('tableinfo'); + $table->oddRowClass = 'even_row'; + $table->evenRowClass = 'even_row'; + $table->options['cellpadding'] = 3; + $table->options['cellspacing'] = 1; + $table->headerClass = 'header'; + $table->footerClass = 'footer'; + + $table->SetHeader(array( + new CCheckBox("all_triggers",null,"CheckAll('".$frmCnct->GetName()."','all_triggers','triggers');"), + S_TRIGGERS, + S_TYPE, + S_COLOR)); + + $table->AddOption('id','link_triggers'); + + foreach($triggers as $id => $trigger){ + if(!isset($trigger['triggerid'])) continue; + + $colorbox = new CSpan(SPACE.SPACE.SPACE); + $colorbox->AddOption('style','text-decoration: none; outline-color: black; outline-style: solid; outline-width: 1px; background-color:'.$trigger['color'].';'); + + $table->AddRow(array( + array( + new CCheckBox('triggers['.$trigger['triggerid'].'][triggerid]',null,null,$trigger['triggerid']), + new CVar('triggers['.$trigger['triggerid'].'][triggerid]', $trigger['triggerid']) + ), + array( + new CLink($trigger['description'],"javascript: openWinCentered('popup_link_tr.php?form=1&dstfrm=".$frmCnct->GetName()."&triggerid=".$trigger['triggerid'].url_param('linkid')."','ZBX_Link_Indicator',560,180,'scrollbars=1, toolbar=0, menubar=0, resizable=0');"), + new CVar('triggers['.$trigger['triggerid'].'][description]', $trigger['description']) + ), + array( + map_link_drawtype2str($trigger['drawtype']), + new CVar('triggers['.$trigger['triggerid'].'][drawtype]', $trigger['drawtype']) + ), + array( + $colorbox, + new CVar('triggers['.$trigger['triggerid'].'][color]', $trigger['color']) + ) + )); + } + + $btnAdd = new CButton('btn1',S_ADD, + "javascript: openWinCentered('popup_link_tr.php?form=1&dstfrm=".$frmCnct->GetName().url_param('linkid')."','ZBX_Link_Indicator',560,180,'scrollbars=1, toolbar=0, menubar=0, resizable=0');", 'T'); - $frmCnct->AddRow("Link status indicator",array($txtTrigger, $btnSelect)); + $btnRemove = new CButton('btn1', + S_REMOVE, + "javascript: remove_childs('".$frmCnct->GetName()."','triggers','tr');", + 'T'); + + $btnAdd->SetType('button'); + + $frmCnct->AddRow(S_LINK_STATUS_INDICATORS,array($table, BR, $btnAdd, $btnRemove)); - $frmCnct->AddRow("Type (OFF)",$cmbType_off); - $frmCnct->AddRow("Color (OFF)",$cmbColor_off); +//---------- - $frmCnct->AddRow("Type (ON)",$cmbType_on); - $frmCnct->AddRow("Color (ON)",$cmbColor_on); + $frmCnct->AddRow(S_TYPE.' ('.S_OFF.')',$cmbType_off); + $frmCnct->AddRow(S_COLOR.' ('.S_OFF.')',$cmbColor_off); $frmCnct->AddItemToBottomRow(new CButton("save_link",S_SAVE)); if(isset($_REQUEST["linkid"])) diff --git a/frontends/php/include/locales/en_gb.inc.php b/frontends/php/include/locales/en_gb.inc.php index 097e1f9f..502a81ab 100644 --- a/frontends/php/include/locales/en_gb.inc.php +++ b/frontends/php/include/locales/en_gb.inc.php @@ -830,13 +830,14 @@ 'S_CONFIGURATION_OF_NETWORK_MAPS'=> 'Configuration of network maps', // sysmaps.php - 'S_MAPS_BIG'=> 'MAPS', - 'S_NO_MAPS_DEFINED'=> 'No maps defined', + 'S_MAPS_BIG'=> 'MAPS', + 'S_NO_MAPS_DEFINED'=> 'No maps defined', 'S_CONFIGURATION_OF_NETWORK_MAPS'=> 'CONFIGURATION OF NETWORK MAPS', - 'S_CREATE_MAP'=> 'Create Map', - 'S_ICON_LABEL_LOCATION'=> 'Icon label location', - 'S_BOTTOM'=> 'Bottom', - 'S_TOP'=> 'Top', + 'S_CREATE_MAP'=> 'Create Map', + 'S_ICON_LABEL_LOCATION'=> 'Icon label location', + 'S_BOTTOM'=> 'Bottom', + 'S_TOP'=> 'Top', + 'S_LINK_STATUS_INDICATORS'=> 'Link status indicators', // map.php 'S_OK_BIG'=> 'OK', diff --git a/frontends/php/include/maps.inc.php b/frontends/php/include/maps.inc.php index 5b3d690e..d380c9cf 100644 --- a/frontends/php/include/maps.inc.php +++ b/frontends/php/include/maps.inc.php @@ -203,50 +203,94 @@ return $sysmapid; } - function add_link($sysmapid,$selementid1,$selementid2,$triggerid,$drawtype_off,$color_off,$drawtype_on,$color_on) - { - if($triggerid == 0) $triggerid = 'NULL'; - + function add_link($sysmapid,$selementid1,$selementid2,$triggers,$drawtype_off,$color_off){ $linkid=get_dbid("sysmaps_links","linkid"); + + $result=TRUE; + foreach($triggers as $id => $trigger){ + $result&=add_link_trigger($linkid,$trigger['triggerid'],$trigger['drawtype'],$trigger['color']); + } + + if(!$result){ + delete_link_trigger($linkid); + } - $result=DBexecute("insert into sysmaps_links". - " (linkid,sysmapid,selementid1,selementid2,triggerid,drawtype_off,". - "color_off,drawtype_on,color_on)". - " values ($linkid,$sysmapid,$selementid1,$selementid2,$triggerid,$drawtype_off,". - zbx_dbstr($color_off).",$drawtype_on,".zbx_dbstr($color_on).")"); + $result&=DBexecute("insert into sysmaps_links". + " (linkid,sysmapid,selementid1,selementid2,drawtype_off,color_off)". + " values ($linkid,$sysmapid,$selementid1,$selementid2,$drawtype_off,".zbx_dbstr($color_off).")"); if(!$result) return $result; - return $linkid; + return $linkid; } - function update_link($linkid,$sysmapid,$selementid1,$selementid2,$triggerid,$drawtype_off,$color_off,$drawtype_on,$color_on) - { - if($triggerid == 0) $triggerid = 'NULL'; + function update_link($linkid,$sysmapid,$selementid1,$selementid2,$triggers,$drawtype_off,$color_off){ + + $result=TRUE; + foreach($triggers as $id => $trigger){ + $result&=update_link_trigger($linkid,$trigger['triggerid'],$trigger['drawtype'],$trigger['color']); + } + + if(!$result){ + delete_link_trigger($linkid); + } + + $result&=DBexecute('UPDATE sysmaps_links SET '. + " sysmapid=$sysmapid,selementid1=$selementid1,selementid2=$selementid2,". + " drawtype_off=$drawtype_off,color_off=".zbx_dbstr($color_off). + " WHERE linkid=$linkid"); + return $result; + } - return DBexecute("update sysmaps_links set ". - "sysmapid=$sysmapid,selementid1=$selementid1,selementid2=$selementid2,". - "triggerid=$triggerid,drawtype_off=$drawtype_off,color_off=".zbx_dbstr($color_off).",". - "drawtype_on=$drawtype_on,color_on=".zbx_dbstr($color_on). - " where linkid=$linkid"); + function delete_link($linkid){ + $result = delete_all_link_triggers($linkid); + $result&= DBexecute("delete from sysmaps_links where linkid=$linkid"); + return $result; } - function delete_link($linkid) - { - return DBexecute("delete from sysmaps_links where linkid=$linkid"); + function get_link_triggers($linkid){ + $triggers = array(); + + $sql = "SELECT * FROM sysmaps_link_triggers WHERE linkid=$linkid"; + $res = DBselect($sql); + + while($rows = DBfetch($res)){ + $triggers[] = $rows; + } + return $triggers; } - /* - * Function: check_circle_elements_link - * - * Description: - * Check circeling of maps - * - * Author: - * Eugene Grigorjev - * - */ + function add_link_trigger($linkid,$triggerid,$drawtype,$color){ + $sql = 'INSERT INTO sysmaps_link_triggers (linkid,triggerid,drawtype,color) '. + " VALUES ('$linkid','$triggerid','$drawtype',".zbx_dbstr($color).")"; + return DBexecute($sql); + } + + function update_link_trigger($linkid,$triggerid,$drawtype,$color){ + $result = delete_link_trigger($linkid,$triggerid); + $result&= add_link_trigger($linkid,$triggerid,$drawtype,$color); + return $result; + } + + function delete_link_trigger($linkid,$triggerid){ + return DBexecute("DELETE FROM sysmaps_link_triggers WHERE linkid=$linkid AND triggerid=$triggerid"); + } + + function delete_all_link_triggers($linkid){ + return DBexecute("DELETE FROM sysmaps_link_triggers WHERE linkid=$linkid"); + } + +/* + * Function: check_circle_elements_link + * + * Description: + * Check circeling of maps + * + * Author: + * Eugene Grigorjev + * + */ function check_circle_elements_link($sysmapid,$elementid,$elementtype) { if($elementtype!=SYSMAP_ELEMENT_TYPE_MAP) return FALSE; diff --git a/frontends/php/include/page_header.php b/frontends/php/include/page_header.php index b692cb33..209d2a8d 100644 --- a/frontends/php/include/page_header.php +++ b/frontends/php/include/page_header.php @@ -162,7 +162,7 @@ COpt::profiling_start("page"); ), array("url"=>"actionconf.php" ,"label"=>S_ACTIONS), array("url"=>"sysmaps.php" ,"label"=>S_MAPS, - "sub_pages"=>array("sysmap.php") + "sub_pages"=>array("sysmap.php","popup_link_tr.php") ), array("url"=>"graphs.php" ,"label"=>S_GRAPHS, "sub_pages"=>array("popup_gitem.php") |
