summaryrefslogtreecommitdiffstats
path: root/frontends/php/include
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-30 16:13:15 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-30 16:13:15 +0000
commit17a5d0466494cc294345eebddba054a27da7e49d (patch)
treebdba49bf80d812ac79203a1df36d6615dcb10381 /frontends/php/include
parent52ba9f54e0d36442deb5b4b0ce5c713de7b8ea30 (diff)
downloadzabbix-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.php153
-rw-r--r--frontends/php/include/locales/en_gb.inc.php13
-rw-r--r--frontends/php/include/maps.inc.php106
-rw-r--r--frontends/php/include/page_header.php2
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")