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