File: 1.02.4b/server/web/view.edit.php (View as Code)

1: 2: /* ------------------------------------------------------------- 3: This file is part of FreeNATS 4: 5: FreeNATS is (C) Copyright 2008 PurplePixie Systems 6: 7: FreeNATS is free software: you can redistribute it and/or modify 8: it under the terms of the GNU General Public License as published by 9: the Free Software Foundation, either version 3 of the License, or 10: (at your option) any later version. 11: 12: FreeNATS is distributed in the hope that it will be useful, 13: but WITHOUT ANY WARRANTY; without even the implied warranty of 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: GNU General Public License for more details. 16: 17: You should have received a copy of the GNU General Public License 18: along with FreeNATS. If not, see www.gnu.org/licenses 19: 20: For more information see www.purplepixie.org/freenats 21: -------------------------------------------------------------- */ 22: 23: ob_start(); 24: require("include.php"); 25: $NATS->Start(); 26: if (!$NATS_Session->Check($NATS->DB)) 27: { 28: header("Location: ./?login_msg=Invalid+Or+Expired+Session"); 29: exit(); 30: } 31: if ($NATS_Session->userlevel<5) UL_Error("Edit View"); 32: 33: function chs($var,$def=0) 34: { 35: if (isset($_REQUEST[$var])) return ss($_REQUEST[$var]); 36: else return $def; 37: } 38: 39: 40: if (isset($_REQUEST['action'])) 41: { 42: switch ($_REQUEST['action']) 43: { 44: case "create": 45: $q="INSERT INTO fnview(vtitle,vclick,vstyle) VALUES(\"".ss($_REQUEST['vtitle'])."\",\"standard\",\"standard\")"; 46: $NATS->DB->Query($q); 47: $_REQUEST['viewid']=$NATS->DB->Insert_Id(); 48: $_REQUEST['show_options']=1; 49: $msg="Created View"; 50: break; 51: 52: case "delete": 53: if (!isset($_REQUEST['confirmed'])) 54: { 55: $back=urlencode("view.edit.php?action=delete&confirmed=1&viewid=".$_REQUEST['viewid']); 56: $link="confirm.php?action=Delete+View&back=".$back; 57: header("Location: ".$link); 58: exit(); 59: } 60: // otherwise delete 61: $qi="DELETE FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid']); 62: $NATS->DB->Query($qi); 63: $idel=$NATS->DB->Affected_Rows(); 64: $q="DELETE FROM fnview WHERE viewid=".ss($_REQUEST['viewid']); 65: $NATS->DB->Query($q); 66: $vdel=$NATS->DB->Affected_Rows(); 67: $msg="Deleted ".$vdel." Views (".$idel." Items)"; 68: header("Location: main.php?message=".urlencode($msg)); 69: exit(); 70: break; 71: 72: case "save_edit": 73: if (isset($_REQUEST['vpublic'])) $public=1; 74: else $public=0; 75: if (isset($_REQUEST['vcolon'])) $colon=1; 76: else $colon=0; 77: if (isset($_REQUEST['vdashes'])) $dashes=1; 78: else $dashes=0; 79: if (isset($_REQUEST['vtimeago'])) $ago=1; 80: else $ago=0; 81: if (!is_numeric($_REQUEST['vrefresh'])) $vref=0; 82: else $vref=ss($_REQUEST['vrefresh']); 83: $q="UPDATE fnview SET vtitle=\"".ss($_REQUEST['vtitle'])."\",vstyle=\"".ss($_REQUEST['vstyle'])."\","; 84: $q.="vclick=\"".ss($_REQUEST['vclick'])."\",vpublic=".$public.",vlinkv=".ss($_REQUEST['vlinkv']).",vrefresh=".$vref; 85: $q.=",vcolumns=".ss($_REQUEST['vcolumns']).",vdashes=".$dashes.",vcolon=".$colon.",vtimeago=".$ago; 86: $q.=" WHERE viewid=".ss($_REQUEST['viewid']); 87: $NATS->DB->Query($q); 88: if ($NATS->DB->Affected_Rows()<=0) $msg="Failed to update or nothing changed"; 89: else $msg="Saved changes ok"; 90: break; 91: 92: case "create_item": 93: $wq="SELECT iweight FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." ORDER BY iweight DESC LIMIT 0,1"; 94: $wr=$NATS->DB->Query($wq); 95: if ($row=$NATS->DB->Fetch_Array($wr)) 96: { 97: $iweight=$row['iweight']+10; 98: } 99: else $iweight=10; 100: $NATS->DB->Free($wr); 101: 102: if (isset($_REQUEST['iname'])) $iname=ss($_REQUEST['iname']); 103: else $iname=""; 104: 105: $itype=ss($_REQUEST['itype']); 106: if ($itype=="node") $ioption=ss($_REQUEST['ioption_node']); 107: else if($itype=="group") $ioption=ss($_REQUEST['ioption_group']); 108: else if($itype=="testgraph") $ioption=ss($_REQUEST['ioption_testgraph']."/".$_REQUEST['ioption_testgraph_time']); 109: else if($itype=="testdetail") 110: { 111: $ioption=ss($_REQUEST['ioption_testdetail']); 112: $iname=ss($_REQUEST['iname_testdetail']); 113: } 114: else if($itype=="title") $ioption=ss($_REQUEST['ioption_title']); 115: else $ioption=""; 116: $q="INSERT INTO fnviewitem(viewid,itype,ioption,iweight,iname) VALUES(".ss($_REQUEST['viewid']).","; 117: $q.="\"".$itype."\",\"".$ioption."\",".$iweight.",\"".$iname."\")"; 118: $NATS->DB->Query($q); 119: if ($NATS->DB->Affected_Rows()>0) $msg="Created Item"; 120: else $msg="Create Item Failed"; 121: break; 122: 123: case "del_item": 124: $q="DELETE FROM fnviewitem WHERE viewitemid=".ss($_REQUEST['viewitemid']); 125: $NATS->DB->Query($q); 126: if ($NATS->DB->Affected_Rows()>0) $msg="Deleted Item"; 127: else $msg="Delete Item Failed"; 128: break; 129: 130: case "save_view_item": 131: $icol=chs("icolour",0); 132: $itxt=chs("itextstatus",0); 133: $isize=chs("isize",0); 134: $igraphic=chs("igraphic",0); 135: $idetail=chs("idetail",0); 136: $q="UPDATE fnviewitem SET "; 137: $q.="icolour=".$icol.","; 138: $q.="itextstatus=".$itxt.","; 139: $q.="isize=".$isize.","; 140: $q.="igraphic=".$igraphic.","; 141: $q.="idetail=".$idetail." "; 142: $q.="WHERE viewitemid=".ss($_REQUEST['viewitemid']); 143: $NATS->DB->Query($q); 144: //echo $q; 145: if ($NATS->DB->Affected_Rows()<=0) $msg="Save Failed or Nothing Changed"; 146: else $msg="Saved Item Changes"; 147: break; 148: 149: case "move_item": 150: if (isset($_REQUEST['dir'])) $dir=$_REQUEST['dir']; 151: else $dir="up"; 152: 153: $mywq="SELECT iweight FROM fnviewitem WHERE viewitemid=".ss($_REQUEST['viewitemid']); 154: $mywr=$NATS->DB->Query($mywq); 155: $row=$NATS->DB->Fetch_Array($mywr); 156: $myweight=$row['iweight']; 157: $NATS->DB->Free($mywr); 158: 159: if ($dir=="up") // get the next lowest one down 160: { 161: $q="SELECT viewitemid,iweight FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." AND iweight<".$myweight." "; 162: $q.="ORDER BY iweight DESC LIMIT 0,1"; 163: $r=$NATS->DB->Query($q); 164: if ($row=$NATS->DB->Fetch_Array($r)) // found one to swap with 165: { 166: $uq="UPDATE fnviewitem SET iweight=".$myweight." WHERE viewitemid=".$row['viewitemid']; 167: $NATS->DB->Query($uq); 168: $uq="UPDATE fnviewitem SET iweight=".$row['iweight']." WHERE viewitemid=".ss($_REQUEST['viewitemid']); 169: $NATS->DB->Query($uq); 170: $msg="Moved Item"; 171: } 172: else $msg="Nowhere to Move Item To"; 173: } 174: else if ($dir=="down") // get the next highest 175: { 176: $q="SELECT viewitemid,iweight FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." AND iweight>".$myweight." "; 177: $q.="ORDER BY iweight DESC LIMIT 0,1"; 178: $r=$NATS->DB->Query($q); 179: if ($row=$NATS->DB->Fetch_Array($r)) // found one to swap with 180: { 181: $uq="UPDATE fnviewitem SET iweight=".$myweight." WHERE viewitemid=".$row['viewitemid']; 182: $NATS->DB->Query($uq); 183: $uq="UPDATE fnviewitem SET iweight=".$row['iweight']." WHERE viewitemid=".ss($_REQUEST['viewitemid']); 184: $NATS->DB->Query($uq); 185: $msg="Moved Item"; 186: } 187: else $msg="Nowhere to Move Item To"; 188: } 189: 190: break; 191: 192: case "moveitembefore": 193: // viewitemid newweight 194: $q="UPDATE fnviewitem SET iweight=iweight+1 WHERE viewid=".ss($_REQUEST['viewid'])." AND iweight>=".ss($_REQUEST['newweight']); 195: $NATS->DB->Query($q); 196: $q="UPDATE fnviewitem SET iweight=".ss($_REQUEST['newweight'])." WHERE viewitemid=".ss($_REQUEST['viewitemid']); 197: //$NATS-DB->Query($q); 198: $NATS->DB->Query($q); 199: break; 200: 201: default: $msg="Unknown Action"; 202: } 203: } 204: 205: ob_end_flush(); 206: Screen_Header("View Editor",1,1,"","main","views"); 207: 208: 209: $q="SELECT * FROM fnview WHERE viewid=".ss($_REQUEST['viewid'])." LIMIT 0,1"; 210: $r=$NATS->DB->Query($q); 211: if (!$row=$NATS->DB->Fetch_Array($r)) 212: { 213: echo "No such view.

";
214: Screen_Footer(); 215: exit(); 216: } 217: 218: $NATS->DB->Free($r); 219: if (isset($msg)) 220: { 221: echo "".$msg."

";
222: $poplist[]=$msg; 223: } 224: 225: //echo "
"; 226: echo "Editing View: ".$row['vtitle'].""; 227: //echo "Preview View / "; 228: //echo "Link to View"; 229: //echo "
";
230: echo " [ Preview | "; 231: echo "Linking ]";
232: echo "
";
233: 234: echo "
"; 235: echo "
"; 236: echo ""; 237: 238: echo ""; 239: echo ""; 240: 241: echo ""; 245: echo ""; 246: 247: echo ""; 248: echo ""; 253: echo ""; 254: 255: echo ""; 256: echo ""; 271: 272: echo ""; 273: echo ""; 305: 306: echo ""; 307: echo ""; 312: 313: echo ""; 314: echo ""; 319: 320: echo ""; 321: echo ""; 326: 327: echo ""; 331: echo ""; 335: echo ""; 338: echo "
View Title"; 242: echo ""; 243: echo ""; 244: echo "
 
Public View"; 249: if ($row['vpublic']==1) $s=" checked"; 250: else $s=""; 251: echo " ".hlink("View:Public"); 252: echo "
 
Page Style"; 257: if ($row['vstyle']=="standard") $s=" checked"; 258: else $s=""; 259: echo " Standard
";
260: echo "Standard full-page headers and footers with "local" page and style includes

";
261: if ($row['vstyle']=="mobile") $s=" checked"; 262: else $s=""; 263: echo " Mobile/Minimal
";
264: echo "Very minimal and absolute page style suitable for mobile browser and/or inline JS usage

";
265: if ($row['vstyle']=="plain") $s=" checked"; 266: else $s=""; 267: echo " Plain
";
268: echo "Totally plain output

";
269: 270: echo "
Link Types"; 274: if ($row['vclick']=="standard") $s=" checked"; 275: else $s=""; 276: echo " Standard
";
277: echo "Standard a href links for same window/frame

";
278: if ($row['vclick']=="frametop") $s=" checked"; 279: else $s=""; 280: echo " Same Window (Frame Top)
";
281: echo "a href link to the window/frame top

";
282: if ($row['vclick']=="newwindow") $s=" checked"; 283: else $s=""; 284: echo " New Window
";
285: echo "Open a New Window

";
286: if ($row['vclick']=="disabled") $s=" checked"; 287: else $s=""; 288: echo " Disabled
";
289: echo "No links (disabled)

";
290: if ($row['vlinkv']==0) $s=""; else $s=" selected"; 291: $lq="SELECT viewid,vtitle FROM fnview WHERE viewid!=".ss($_REQUEST['viewid']); 292: $lr=$NATS->DB->Query($lq); 293: echo "Links to Another View: "; 294: echo " ".hlink("View:LinkAnotherView")."

";
303: $NATS->DB->Free($lr); 304: echo "
Colons (before text status)"; 308: if ($row['vcolon']==1) $s=" checked"; 309: else $s=""; 310: echo " ".hlink("View:Colons"); 311: echo "
Dashes (before times)"; 315: if ($row['vdashes']==1) $s=" checked"; 316: else $s=""; 317: echo " ".hlink("View:Dashes"); 318: echo "
Times use XX:XX ago"; 322: if ($row['vtimeago']==1) $s=" checked"; 323: else $s=""; 324: echo " ".hlink("View:TimeAgo"); 325: echo "
Columns"; 328: echo ""; 329: echo " ".hlink("View:Columns"); 330: echo "
Refresh"; 332: echo ""; 333: echo " ".hlink("View:Refresh"); 334: echo "
Save "; 336: echo "Cancel / Abandon Changes"; 337: echo "
";
339: echo "
";
340: echo "";
341: echo "\n\n"; 350: 351: // movement list 352: $movs=array(); 353: $movc=0; 354: $q="SELECT itype,ioption,iweight FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." ORDER BY iweight ASC"; 355: $r=$NATS->DB->Query($q); 356: while ($row=$NATS->DB->Fetch_Array($r)) 357: { 358: $movs[$movc]['name']=substr(ViewItemTxt($row['itype'],$row['ioption']),0,32)."..."; 359: $movs[$movc]['weight']=$row['iweight']; 360: $movc++; 361: } 362: $NATS->DB->Free($r); 363: 364: //echo "

";
365: $q="SELECT * FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." ORDER BY iweight ASC"; 366: $r=$NATS->DB->Query($q); 367: if ($NATS->DB->Num_Rows($r)<=0) echo "No view objects yet defined.

";
368: else $l=$NATS->DB->Num_Rows($r); 369: $f=0; 370: 371: $pitem=0; 372: echo "\n"; 385: 386: 387: while ($row=$NATS->DB->Fetch_Array($r)) 388: { 389: echo "
"; 390: echo ""; 391: 392: echo ""; 393: echo ViewItemTxt($row['itype'],$row['ioption']); 394: echo ""; 395: //echo " (show/hide options)"; 396: //echo "
";
397: echo "
"; 398: //echo ""; 399: echo "
"; 400: echo "
"; 401: 402: echo ""; 403: echo ""; 404: echo ""; 405: echo ""; 414: 415: echo ""; 423: 424: echo ""; 436: echo ""; 451: 452: echo ""; 460: 461: echo ""; 462: 463: echo "
"; 406: echo "
"; 407: echo "Use Colour :"; 408: echo ""; 409: if ($row['icolour']==1) $s=" checked"; 410: else $s=""; 411: echo ""; 412: echo " ".hlink("View:UseColour"); 413: echo ""; 416: echo "Text Status :"; 417: echo ""; 418: if ($row['itextstatus']==1) $s=" checked"; 419: else $s=""; 420: echo ""; 421: echo " ".hlink("View:TextStatus"); 422: echo "
"; 425: echo "Item Size :"; 426: echo ""; 427: echo ""; 435: echo ""; 437: echo "Graphics :"; 438: echo ""; 439: echo ""; 450: echo "
"; 453: echo "Show Detail :"; 454: echo ""; 455: if ($row['idetail']>0) $s=" checked"; 456: else $s=""; 457: echo ""; 458: echo " ".hlink("View:ShowDetail"); 459: echo "
"; 464: echo ""; 465: echo "
";
466: echo ""; 467: echo ""; 468: echo ""; 469: 470: echo ""; 500: echo ""; 501: echo "
Move: "; 471: 472: if ($f==0) echo ""; 473: else 474: { 475: echo ""; 476: echo ""; 477: echo ""; 478: } 479: 480: if ($f>=($l-1)) echo ""; 481: else 482: { 483: echo ""; 484: echo ""; 485: echo ""; 486: } 487: 488: $f++; 489: 490: echo " Before: "; 494: 495: echo ""; 496: echo "item options  "; 497: echo ""; 498: echo ""; 499: echo "
";
502: echo "\n"; 507: echo "
";
508: //echo "
";
509: echo "
";
510: } 511: 512: $NATS->DB->Free($r); 513: 514: 515: echo "\n\n"; 522: 523: echo "

";
524: echo ""; 525: echo "
";
526: echo ""; 527: echo ""; 528: echo ""; 529: 530: echo ""; 544: /* 545: id=\"newitem_node\" 546: onchange=\"view_radio_select('node')\" 547: */ 548: echo ""; 562: 563: $tests=array(); 564: $tq="SELECT localtestid,nodeid,testname,testtype,testparam,testrecord FROM fnlocaltest ORDER BY nodeid"; 565: $tr=$NATS->DB->Query($tq); 566: while ($test=$NATS->DB->Fetch_Array($tr)) 567: { 568: $tid="L".$test['localtestid']; 569: $tests[$tid]=$test; 570: $tests[$tid]['testid']=$tid; 571: } 572: $NATS->DB->Free($tr); 573: 574: $tq="SELECT nstestid,nodeid,testname,testtype,testdesc,testrecord FROM fnnstest WHERE testenabled=1 ORDER BY nodeid"; 575: $tr=$NATS->DB->Query($tq); 576: while ($test=$NATS->DB->Fetch_Array($tr)) 577: { 578: $tid="N".$test['nstestid']; 579: $tests[$tid]=$test; 580: $tests[$tid]['testid']=$tid; 581: $tests[$tid]['testparam']=$test['testdesc']; 582: if ($test['testname']=="") 583: { 584: if ($test['testdesc']=="") $tests[$tid]['testname']=$test['testtype']; 585: else $tests[$tid]['testname']=$test['testdesc']; 586: } 587: } 588: $NATS->DB->Free($tr); 589: 590: 591: echo ""; 596: 597: echo ""; 602: 603: echo ""; 608: 609: echo ""; 614: 615: echo ""; 620: 621: echo ""; 641: 642: echo ""; 665: 666: echo ""; 671: 672: echo ""; 676: /* TODO - if ok don't be lazy and put the def options in here */ 677: 678: echo "
Create New Item
"; 531: echo ""; 532: echo ""; 533: echo "Individual Node: "; 534: echo ""; 543: echo "
"; 549: echo ""; 550: echo ""; 551: echo "Individual Group: "; 552: echo ""; 561: echo "
"; 592: echo ""; 593: echo ""; 594: echo "List All (Enabled) Nodes"; 595: echo "
"; 598: echo ""; 599: echo ""; 600: echo "List All Groups"; 601: echo "
"; 604: echo ""; 605: echo ""; 606: echo "List Alerting Nodes"; 607: echo "
"; 610: echo ""; 611: echo ""; 612: echo "List Alerting Groups"; 613: echo "
"; 616: echo ""; 617: echo ""; 618: echo "List All Current Alerts"; 619: echo "
"; 622: echo ""; 623: echo ""; 624: echo "Detail for Test "; 625: echo ""; 639: echo "
"; 640: echo "Display Name:
"; 643: echo ""; 644: echo ""; 645: echo "Graph for Test "; 646: echo "
";
663: echo "Show Last Hours"; 664: echo "
"; 667: echo ""; 668: echo ""; 669: echo "Title: "; 670: echo "
 "; 673: echo " "; 674: //echo ""; 675: echo "
";
679: ?> 680: 681: 682: 683: Screen_Footer(); 684: ?> 685: