File: 0.02.55a/server/web/view.edit.php (View as HTML)

  1: <?php
  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 (!is_numeric($_REQUEST['vrefresh'])) $vref=0;
 76: 			else $vref=ss($_REQUEST['vrefresh']);
 77: 			$q="UPDATE fnview SET vtitle=\"".ss($_REQUEST['vtitle'])."\",vstyle=\"".ss($_REQUEST['vstyle'])."\",";
 78: 			$q.="vclick=\"".ss($_REQUEST['vclick'])."\",vpublic=".$public.",vrefresh=".$vref." WHERE viewid=".ss($_REQUEST['viewid']);
 79: 			$NATS->DB->Query($q);
 80: 			if ($NATS->DB->Affected_Rows()<=0) $msg="Failed to update or nothing changed";
 81: 			else $msg="Saved changes ok";
 82: 			break;
 83: 			
 84: 		case "create_item":
 85: 			$wq="SELECT iweight FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." ORDER BY iweight DESC LIMIT 0,1";
 86: 			$wr=$NATS->DB->Query($wq);
 87: 			if ($row=$NATS->DB->Fetch_Array($wr))
 88: 				{
 89: 				$iweight=$row['iweight']+10;
 90: 				}
 91: 			else $iweight=10;
 92: 			$NATS->DB->Free($wr);
 93: 		
 94: 			$itype=ss($_REQUEST['itype']);
 95: 			if ($itype=="node") $ioption=ss($_REQUEST['ioption_node']);
 96: 			else if($itype=="group") $ioption=ss($_REQUEST['ioption_group']);
 97: 			else $ioption="";
 98: 			$q="INSERT INTO fnviewitem(viewid,itype,ioption,iweight) VALUES(".ss($_REQUEST['viewid']).",";
 99: 			$q.="\"".$itype."\",\"".$ioption."\",".$iweight.")";
100: 			$NATS->DB->Query($q);
101: 			if ($NATS->DB->Affected_Rows()>0) $msg="Created Item";
102: 			else $msg="Create Item Failed";
103: 			break;
104: 			
105: 		case "del_item":
106: 			$q="DELETE FROM fnviewitem WHERE viewitemid=".ss($_REQUEST['viewitemid']);
107: 			$NATS->DB->Query($q);
108: 			if ($NATS->DB->Affected_Rows()>0) $msg="Deleted Item";
109: 			else $msg="Delete Item Failed";
110: 			break;
111: 			
112: 		case "save_view_item":
113: 			$icol=chs("icolour",0);
114: 			$itxt=chs("itextstatus",0);
115: 			$isize=chs("isize",0);
116: 			$igraphic=chs("igraphic",0);
117: 			$idetail=chs("idetail",0);
118: 			$q="UPDATE fnviewitem SET ";
119: 			$q.="icolour=".$icol.",";
120: 			$q.="itextstatus=".$itxt.",";
121: 			$q.="isize=".$isize.",";
122: 			$q.="igraphic=".$igraphic.",";
123: 			$q.="idetail=".$idetail." ";
124: 			$q.="WHERE viewitemid=".ss($_REQUEST['viewitemid']);
125: 			$NATS->DB->Query($q);
126: 			//echo $q;
127: 			if ($NATS->DB->Affected_Rows()<=0) $msg="Save Failed or Nothing Changed";
128: 			else $msg="Saved Item Changes";
129: 			break;
130: 		
131: 		case "move_item":
132: 			if (isset($_REQUEST['dir'])) $dir=$_REQUEST['dir'];
133: 			else $dir="up";
134: 			
135: 			$mywq="SELECT iweight FROM fnviewitem WHERE viewitemid=".ss($_REQUEST['viewitemid']);
136: 			$mywr=$NATS->DB->Query($mywq);
137: 			$row=$NATS->DB->Fetch_Array($mywr);
138: 			$myweight=$row['iweight'];
139: 			$NATS->DB->Free($mywr);
140: 			
141: 			if ($dir=="up") // get the next lowest one down
142: 				{
143: 				$q="SELECT viewitemid,iweight FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." AND iweight<".$myweight." ";
144: 				$q.="ORDER BY iweight DESC LIMIT 0,1";
145: 				$r=$NATS->DB->Query($q);
146: 				if ($row=$NATS->DB->Fetch_Array($r)) // found one to swap with
147: 					{
148: 					$uq="UPDATE fnviewitem SET iweight=".$myweight." WHERE viewitemid=".$row['viewitemid'];
149: 					$NATS->DB->Query($uq);
150: 					$uq="UPDATE fnviewitem SET iweight=".$row['iweight']." WHERE viewitemid=".ss($_REQUEST['viewitemid']);
151: 					$NATS->DB->Query($uq);
152: 					$msg="Moved Item";
153: 					}
154: 				else $msg="Nowhere to Move Item To";
155: 				}
156: 			else if ($dir=="down") // get the next highest
157: 				{
158: 				$q="SELECT viewitemid,iweight FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." AND iweight>".$myweight." ";
159: 				$q.="ORDER BY iweight DESC LIMIT 0,1";
160: 				$r=$NATS->DB->Query($q);
161: 				if ($row=$NATS->DB->Fetch_Array($r)) // found one to swap with
162: 					{
163: 					$uq="UPDATE fnviewitem SET iweight=".$myweight." WHERE viewitemid=".$row['viewitemid'];
164: 					$NATS->DB->Query($uq);
165: 					$uq="UPDATE fnviewitem SET iweight=".$row['iweight']." WHERE viewitemid=".ss($_REQUEST['viewitemid']);
166: 					$NATS->DB->Query($uq);
167: 					$msg="Moved Item";
168: 					}
169: 				else $msg="Nowhere to Move Item To";
170: 				}
171: 				
172: 			break;
173: 		
174: 		default: $msg="Unknown Action";
175: 		}
176: 	}
177: 
178: ob_end_flush();
179: Screen_Header("View Editor",1);
180: 	
181: 
182: $q="SELECT * FROM fnview WHERE viewid=".ss($_REQUEST['viewid'])." LIMIT 0,1";
183: $r=$NATS->DB->Query($q);
184: if (!$row=$NATS->DB->Fetch_Array($r))
185: 	{
186: 	echo "No such view.<br><br>";
187: 	Screen_Footer();
188: 	exit();
189: 	}
190: 	
191: $NATS->DB->Free($r);
192: if (isset($msg))
193: 	{
194: 	echo "<b>".$msg."</b><br><br>";
195: 	$poplist[]=$msg;
196: 	}
197: 	
198: echo "<table width=100% border=0 cellspacing=0 cellpadding=0><tr><td align=left>";
199: echo "<b class=\"minortitle\">Editing View: <a href=view.php?viewid=".$_REQUEST['viewid'].">".$row['vtitle']."</a></b>";
200: echo "</td><td align=right><b class=\"minortitle\"><a href=\"view.php?viewid=".$_REQUEST['viewid']."\" target=top>Preview View</a> / ";
201: echo "<a href=view.link.php?viewid=".$_REQUEST['viewid'].">Link to View</a></b>";
202: echo "</td></tr></table>";
203: echo "<br>";
204: 
205: echo "<form action=view.edit.php method=post>";
206: echo "<div id=\"view_edit_options\">";
207: echo "<table class=\"nicetable\">";
208: 
209: echo "<input type=hidden name=action value=save_edit>";
210: echo "<input type=hidden name=viewid value=".$_REQUEST['viewid'].">";
211: 
212: echo "<tr><td align=left valign=top><b>View Title";
213: echo "</b></td><td align=left>";
214: echo "<input type=text name=vtitle size=30 maxlength=64 value=\"".$row['vtitle']."\">";
215: echo "</td></tr>";
216: echo "<tr><td colspan=2>&nbsp;<br></td></tr>";
217: 
218: echo "<tr><td><b>Public View</b></td>";
219: echo "<td>";
220: if ($row['vpublic']==1) $s=" checked";
221: else $s="";
222: echo "<input type=checkbox name=vpublic value=1".$s."> ".hlink("View:Public");
223: echo "</td></tr>";
224: echo "<tr><td colspan=2>&nbsp;<br></td></tr>";
225: 
226: echo "<tr><td align=left valign=top><b>Page Style</b></td>";
227: echo "<td>";
228: if ($row['vstyle']=="standard") $s=" checked";
229: else $s="";
230: echo "<b><input type=radio name=vstyle value=standard".$s."> Standard</b><br>";
231: echo "Standard full-page headers and footers with &quot;local&quot; page and style includes<br><br>";
232: if ($row['vstyle']=="mobile") $s=" checked";
233: else $s="";
234: echo "<b><input type=radio name=vstyle value=mobile".$s."> Mobile/Minimal</b><br>";
235: echo "Very minimal and absolute page style suitable for mobile browser and/or inline JS usage<br><br>";
236: if ($row['vstyle']=="plain") $s=" checked";
237: else $s="";
238: echo "<b><input type=radio name=vstyle value=plain".$s."> Plain</b><br>";
239: echo "Totally plain output<br><br>";
240: 
241: echo "</td></tr>";
242: 
243: echo "<tr><td align=left valign=top><b>Link Types</b></td>";
244: echo "<td>";
245: if ($row['vclick']=="standard") $s=" checked";
246: else $s="";
247: echo "<b><input type=radio name=vclick value=standard".$s."> Standard</b><br>";
248: echo "Standard <i>a href</i> links for same window/frame<br><br>";
249: if ($row['vclick']=="frametop") $s=" checked";
250: else $s="";
251: echo "<b><input type=radio name=vclick value=frametop".$s."> Same Window (Frame Top)</b><br>";
252: echo "<i>a href</i> link to the window/frame top<br><br>";
253: if ($row['vclick']=="newwindow") $s=" checked";
254: else $s="";
255: echo "<b><input type=radio name=vclick value=newwindow".$s."> New Window</b><br>";
256: echo "Open a New Window<br><br>";
257: if ($row['vclick']=="disabled") $s=" checked";
258: else $s="";
259: echo "<b><input type=radio name=vclick value=disabled".$s."> Disabled</b><br>";
260: echo "No links (disabled)<br><br>";
261: 
262: echo "</td></tr>";
263: echo "<tr><td><b>Refresh";
264: echo "</b></td><td align=left>";
265: echo "<input type=text name=vrefresh size=6 maxlength=6 value=\"".$row['vrefresh']."\"> ".hlink("View:Refresh");
266: echo "</td></tr>";
267: echo "<tr><td><b>Save</b></td><td><input type=submit value=\"Save View Settings\"> ";
268: echo "<a href=view.edit.php?viewid=".$_REQUEST['viewid'].">Cancel / Abandon Changes</a>";
269: echo "</td></tr>";
270: echo "</table>";
271: echo "</div>";
272: echo "</form>";
273: echo "\n<script type=\"text/javascript\">\n";
274: echo "var editData=document.getElementById('view_edit_options').innerHTML;\n";
275: echo "function show_edit_options()\n";
276: echo "{\n";
277: echo "document.getElementById('view_edit_options').innerHTML=editData;\n";
278: echo "}\n";
279: if (!isset($_REQUEST['show_options']))
280:  echo "document.getElementById('view_edit_options').innerHTML=\"<b>[ <a href=\\\"javascript:show_edit_options()\\\">Expand View Options</a> ]</b>\";\n";
281: echo "</script>\n";
282: 
283: //echo "<br><br>";
284: $q="SELECT * FROM fnviewitem WHERE viewid=".ss($_REQUEST['viewid'])." ORDER BY iweight ASC";
285: $r=$NATS->DB->Query($q);
286: if ($NATS->DB->Num_Rows($r)<=0) echo "<i>No view objects yet defined.</i><br><br>";
287: else $l=$NATS->DB->Num_Rows($r);
288: $f=0;
289: 
290: 
291: while ($row=$NATS->DB->Fetch_Array($r))
292: 	{
293: 	echo "<a name=#".$row['viewitemid']."></a>";
294: 	echo "<table width=600 class=\"nicetable\">";
295: 	echo "<form action=view.edit.php#".$row['viewitemid']." method=post>";
296: 	echo "<input type=hidden name=viewid value=".$_REQUEST['viewid'].">";
297: 	echo "<input type=hidden name=action value=save_view_item>";
298: 	echo "<input type=hidden name=viewitemid value=".$row['viewitemid'].">";
299: 	echo "<tr><td align=left valign=top colspan=4>";
300: 	echo "Item Type: <b>";
301: 	echo ViewItemTxt($row['itype'],$row['ioption']);
302: 	echo "</b>";
303: 	echo "</td></tr>";
304: 	
305: 	echo "<tr><td width=25% align=right>";
306: 	echo "Use Colour :";
307: 	echo "</td><td align=left width=25%>";
308: 	if ($row['icolour']==1) $s=" checked";
309: 	else $s="";
310: 	echo "<input type=checkbox name=icolour value=1".$s.">";
311: 	echo " ".hlink("View:UseColour");
312: 	echo "</td>";
313: 	
314: 	echo "<td align=right width=25%>";
315: 	echo "Text Status :";
316: 	echo "</td><td align=left width=25%>";
317: 	if ($row['itextstatus']==1) $s=" checked";
318: 	else $s="";
319: 	echo "<input type=checkbox name=itextstatus value=1".$s.">";
320: 	echo " ".hlink("View:TextStatus");
321: 	echo "</td></tr>";
322: 	
323: 	echo "<tr><td align=right>";
324: 	echo "Item Size :";
325: 	echo "</td><td align=left>";
326: 	echo "<select name=isize>";
327: 	if ($row['isize']>0) echo "<option value=1 checked>Large</option>";
328: 	else echo "<option value=0 checked>Small</option>";
329: 	echo "<option value=1>";
330: 	echo "Large</option>";
331: 	echo "<option value=0>";
332: 	echo "Small</option>";
333: 	echo "</select>";
334: 	echo "</td>";
335: 	echo "<td align=right>";
336: 	echo "Graphics :";
337: 	echo "</td><td align=left>";
338: 	echo "<select name=igraphic>";
339: 	if ($row['igraphic']==2) echo "<option value=2 checked>Node/Group</option>";
340: 	else if ($row['igraphic']==1) echo "<option value=1 checked>Status Light</option>";
341: 	else echo "<option value=0 checked>No Graphic</option>";
342: 	echo "<option value=2>";
343: 	echo "Node/Group</option>";
344: 	echo "<option value=1>";
345: 	echo "Status Light</option>";
346: 	echo "<option value=0>";
347: 	echo "No Graphic</option>";
348: 	echo "</select>";
349: 	echo "</td></tr>";
350: 	
351: 	echo "<tr><td width=25% align=right>";
352: 	echo "Show Detail :";
353: 	echo "</td><td align=left width=25%>";
354: 	if ($row['idetail']>0) $s=" checked";
355: 	else $s="";
356: 	echo "<input type=checkbox name=idetail value=1".$s.">";
357: 	echo " ".hlink("View:ShowDetail");
358: 	echo "</td>";
359: 	
360: 	echo "<td align=center colspan=2><input type=submit value=\"Save Changes to Item\"></td></tr>";
361: 	
362: 	echo "<tr><td colspan=2 align=left><b>Move: </b>";
363: 	
364: 	if ($f==0) echo "<img src=images/arrows/off/arrow_top.png>";
365: 	else 
366: 		{
367: 		echo "<a href=view.edit.php?viewid=".$_REQUEST['viewid']."&action=move_item&dir=up&viewitemid=".$row['viewitemid'].">";
368: 		echo "<img src=\"images/arrows/on/arrow_top.png\" border=0>";
369: 		echo "</a>";
370: 		}
371: 	
372: 	if ($f>=($l-1)) echo "<img src=images/arrows/off/arrow_down.png>";
373: 	else 
374: 		{
375: 		echo "<a href=view.edit.php?viewid=".$_REQUEST['viewid']."&action=move_item&dir=down&viewitemid=".$row['viewitemid'].">";
376: 		echo "<img src=\"images/arrows/on/arrow_down.png\" border=0>";
377: 		echo "</a>";
378: 		}
379: 		
380: 	$f++;
381: 	
382: 	echo "</td><td colspan=2 align=right><b><a href=view.edit.php?viewid=".$_REQUEST['viewid']."&action=del_item&viewitemid=".$row['viewitemid'].">Delete Item</a>";
383: 	echo "</b></td></tr>";
384: 	
385: 	echo "</form></table><br>";
386: 	}
387: 	
388: $NATS->DB->Free($r);
389: 
390: echo "<br><br>";
391: echo "<table width=600 class=\"nicetable\">";
392: echo "<form action=view.edit.php method=post>";
393: echo "<input type=hidden name=viewid value=".$_REQUEST['viewid'].">";
394: echo "<input type=hidden name=action value=create_item>";
395: echo "<tr><td colspan=4><b>Create New Item</b></td></tr>";
396: 
397: echo "<tr><td width=25% align=center>";
398: echo "<input type=radio name=itype value=node checked>";
399: echo "</td><td colspan=3 align=left>";
400: echo "<b>Individual Node: </b>";
401: echo "<select name=ioption_node>";
402: $nq="SELECT nodeid,nodename FROM fnnode";
403: $nr=$NATS->DB->Query($nq);
404: while ($node=$NATS->DB->Fetch_Array($nr))
405: 	{
406: 	echo "<option value=".$node['nodeid'].">".$node['nodename']." (".$node['nodeid'].")</option>";
407: 	}
408: $NATS->DB->Free($nr);
409: echo "</select>";
410: echo "</td></tr>";
411: 
412: echo "<tr><td width=25% align=center>";
413: echo "<input type=radio name=itype value=group>";
414: echo "</td><td colspan=3 align=left>";
415: echo "<b>Individual Group: </b>";
416: echo "<select name=ioption_group>";
417: $nq="SELECT groupid,groupname FROM fngroup";
418: $nr=$NATS->DB->Query($nq);
419: while ($group=$NATS->DB->Fetch_Array($nr))
420: 	{
421: 	echo "<option value=".$group['groupid'].">".$group['groupname']." (".$group['groupid'].")</option>";
422: 	}
423: $NATS->DB->Free($nr);
424: echo "</select>";
425: echo "</td></tr>";
426: 
427: echo "<tr><td align=center>";
428: echo "<input type=radio name=itype value=allnodes>";
429: echo "</td><td colspan=3 align=left><b>";
430: echo "List All (Enabled) Nodes";
431: echo "</b></td></tr>";
432: 
433: echo "<tr><td align=center>";
434: echo "<input type=radio name=itype value=allgroups>";
435: echo "</td><td colspan=3 align=left><b>";
436: echo "List All Groups";
437: echo "</b></td></tr>";
438: 
439: echo "<tr><td align=center>";
440: echo "<input type=radio name=itype value=alertnodes>";
441: echo "</td><td colspan=3 align=left><b>";
442: echo "List Alerting Nodes";
443: echo "</b></td></tr>";
444: 
445: echo "<tr><td align=center>";
446: echo "<input type=radio name=itype value=alertgroups>";
447: echo "</td><td colspan=3 align=left><b>";
448: echo "List Alerting Groups";
449: echo "</b></td></tr>";
450: 
451: echo "<tr><td align=center>";
452: echo "<input type=radio name=itype value=alerts>";
453: echo "</td><td colspan=3 align=left><b>";
454: echo "List All Current Alerts";
455: echo "</b></td></tr>";
456: 
457: echo "<tr><td>&nbsp;</td><td colspan=3>";
458: echo "<input type=submit value=\"Create New Item\"> ";
459: //echo "<select name=create_position><option value=end checked>At the End</option><option value=start>At the Top</option></select>";
460: echo "</td></tr>";
461: /* TODO - if ok don't be lazy and put the def options in here */
462: 
463: echo "</form></table>";
464: ?>
465: 
466: 
467: <?php
468: Screen_Footer();
469: ?>
470: