r9579: Desktop SWAT opens now with a little server status window.
authorDeryck Hodge <deryck@samba.org>
Wed, 24 Aug 2005 11:53:01 +0000 (11:53 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:34:31 +0000 (13:34 -0500)
This includes a table layout that can be reused (see
QxListView in status.js).

Some formatting fixes, too.

deryck

swat/desktop/index.esp
swat/scripting/client/status.js [new file with mode: 0644]
swat/scripting/server/status.esp [new file with mode: 0644]

index e945215c27ab4e150de35d94cde06bb04139b97b..424f848e4452ebe42c794880909eea9d975c7eab 100644 (file)
 <% 
-/*** Reg stuff ***/
 libinclude("base.js");
        page_header("desktop", "Virtual Desktop Design Test", "desktop");
 %>
 
 <script type="text/javascript" src="/scripting/client/encoder.js"></script>
-<script type="text/javascript" src="/scripting/client/call.js"></script>
 <script type="text/javascript" src="/scripting/client/regedit.js"></script>
+<script type="text/javascript" src="/scripting/client/status.js"></script>
 
 <script type="text/javascript">
 
 /* Qooxdoo's browser sniffer doesn't distinguish IE version.
-    We'll cover IE 6 for now, but these checks need to be
-    revisited for fuller browser coverage. */
+We'll cover IE 6 for now, but these checks need to be
+revisited for fuller browser coverage. */
 var browser = QxClient().engine;
 
 function docWidth()
 {
-  var x;
-  if (browser != "mshtml") {
-    x = window.innerWidth;
-  } else {
-    x = document.documentElement.clientWidth;
-  }
-  return x;
+       var x;
+       if (browser != "mshtml") {
+               x = window.innerWidth;
+       } else {
+               x = document.documentElement.clientWidth;
+       }
+       return x;
 }
 
 function docHeight()
 {
-  var y;
-  // Less 25px to not cover the toolbar
-  if (browser != "mshtml") {
-    y = window.innerHeight - 25;
-  } else {
-    y = document.documentElement.clientHeight;
-  }
-  return y;
+       var y;
+       // Less 25px to not cover the toolbar
+       if (browser != "mshtml") {
+               y = window.innerHeight - 25;
+       } else {
+               y = document.documentElement.clientHeight;
+       }
+       return y;
 }
 
 function showMessage(m)
 {
-    var message = new QxWindow();
-    with(message) {
-      setWidth(300);
-      setTop("35%");
-      setLeft("35%");
-      setShowMaximize(false);
-      setShowMinimize(false);
-    }
-
-    var note = new QxAtom(m);
-    with(note) {
-      setTop(10);
-      setLeft(10);
-    }
-
-    var ok = new QxButton("OK");
-    with(ok) {
-      setLeft("42%");
-      setBottom(2);
-    }
-    ok.addEventListener("click", function() {
-      w.remove(message);
-    });
-
-    message.add(note);
-    message.add(ok);
-    w.add(message);
-    message.setVisible(true);
+       var message = new QxWindow();
+       with(message) {
+               setWidth(300);
+               setTop("35%");
+               setLeft("35%");
+               setShowMaximize(false);
+               setShowMinimize(false);
+       }
+
+       var note = new QxAtom(m);
+       with(note) {
+               setTop(10);
+               setLeft(10);
+       }
+
+       var ok = new QxButton("OK");
+       with(ok) {
+               setLeft("42%");
+               setBottom(2);
+       }
+       ok.addEventListener("click", function() {
+               w.remove(message);
+       });
+
+       message.add(note);
+       message.add(ok);
+       w.add(message);
+       message.setVisible(true);
 }
 
 function showContextMenu(e)
 {
+       var aboutCmd = new QxCommand();
+       aboutCmd.addEventListener("execute", function() {
+               showMessage("SWAT, the Samba Web Administration Tool.<br/>This tool is currently under development.");
+       });
 
-  var aboutCmd = new QxCommand();
-  aboutCmd.addEventListener("execute", function() {
-    showMessage("SWAT, the Samba Web Administration Tool.<br/>This tool is currently under development.");
-  });
+       var menu = new QxMenu;
 
-  var menu = new QxMenu;
+       var sub1 = new QxMenuButton("About SWAT", null, aboutCmd);
+       var sep = new QxMenuSeparator();
+       var sub2 = new QxMenuButton("More menu later...", null);
 
-  var sub1 = new QxMenuButton("About SWAT", null, aboutCmd);
-  var sep = new QxMenuSeparator();
-  var sub2 = new QxMenuButton("More menu later...", null);
+       menu.add(sub1, sep, sub2);
 
-  menu.add(sub1, sep, sub2);
-
-  menu.setLeft(e.getClientX());
-  menu.setTop(e.getClientY());
-  w.add(menu);
-  menu.setVisible(true);
+       menu.setLeft(e.getClientX());
+       menu.setTop(e.getClientY());
+       w.add(menu);
+       menu.setVisible(true);
 }
 
 /*** init the page for qooxdoo ***/
 window.application.main = function()
 {
-  var doc = this.getClientWindow().getClientDocument();
-  // Don't declare local with var
-  w = new QxWidget();
-  with(w) {
-    setTop(0);
-    setLeft(0);
-    setWidth(docWidth());
-    setHeight(docHeight());
-  }
-  doc.addEventListener("contextmenu", showContextMenu);
-  doc.add(w);
-
+       var doc = this.getClientWindow().getClientDocument();
+       // Don't declare local with var
+       w = new QxWidget();
+       with(w) {
+               setTop(0);
+               setLeft(0);
+               setWidth(docWidth());
+               setHeight(docHeight());
+       }
+       doc.addEventListener("contextmenu", showContextMenu);
+       doc.add(w);
+
+
+       // Always open with stats
+       var win = new QxWindow();
+       with(win) {
+               setTop(50);
+               setRight(50);
+               setHeight(175);
+       }
+       w.add(win);
+       getServerStatus(win);
+       
 }
 
 window.onresize = function() 
 {
-  w.setWidth(docWidth());
-  w.setHeight(docHeight());
+       w.setWidth(docWidth());
+       w.setHeight(docHeight());
 }
 
 function showReg()
@@ -124,68 +133,68 @@ function showReg()
 
 function startSwat()
 {
-  var sMenu = new QxMenu;
-  with(sMenu) {
-    setWidth(150);
-    setHeight(150);
-  }
-
-  var srvMenu = new QxMenu;
-  var srv1 = new QxMenuButton("LDAP Server", null);
-  var srv2 = new QxMenuButton("CDAP Server", null);
-  var srv3 = new QxMenuButton("RPC Server", null);
-  var srv4 = new QxMenuButton("NBT Server", null);
-  var srv5 = new QxMenuButton("WINS Server", null);
-  var srv6 = new QxMenuButton("Kerberos Server", null);
-  srvMenu.add(srv1, srv2, srv3, srv4, srv5, srv6);
-  w.add(srvMenu);
-  srvMenu.setVisible(false);
-
-  var editReg = new QxCommand;
-  editReg.addEventListener("execute", function() {
-    showReg();
-  });
-
-  var espMenu = new QxMenu;
-  var esp1 = new QxMenuButton("Registry Editor", null, editReg);
-  espMenu.add(esp1);
-  w.add(espMenu);
-  espMenu.setVisible(false);
-
-  var opt1 = new QxMenuButton("Servers", null)
-  opt1.addEventListener("mouseover", function() {
-    srvMenu.setVisible(true);
-    srvMenu.setLeft(this.getComputedPageBoxRight() + 4);
-    srvMenu.setTop(this.getComputedPageBoxTop() - 3);
-    if (espMenu.getVisible()) {
-      espMenu.setVisible(false);
-    }
-  }); 
-  var opt2 = new QxMenuButton("Installation", null);
-  var opt3 = new QxMenuButton("Configuration", null);
-  var opt4 = new QxMenuButton("ESP Tests", null);
-  opt4.addEventListener("mouseover", function() {
-    espMenu.setVisible(true);
-    espMenu.setLeft(this.getComputedPageBoxRight() + 4);
-    espMenu.setTop(this.getComputedPageBoxTop() - 3);
-    if (srvMenu.getVisible()) {
-      srvMenu.setVisible(false);
-    }
-  }); 
-  var opt5 = new QxMenuButton("Documentation", null);
-  var sep1 = new QxMenuSeparator();
-  var sep2 = new QxMenuSeparator();
-
-  sMenu.add(opt1, opt2, opt3, sep1, opt4, sep2, opt5);
-  sMenu.setLeft(0);
-  sMenu.setTop(docHeight() - 150);
-  w.add(sMenu);
-  sMenu.setVisible(true);
+       var sMenu = new QxMenu;
+       with(sMenu) {
+               setWidth(150);
+               setHeight(150);
+       }
+
+       var srvMenu = new QxMenu;
+       var srv1 = new QxMenuButton("LDAP Server", null);
+       var srv2 = new QxMenuButton("CDAP Server", null);
+       var srv3 = new QxMenuButton("RPC Server", null);
+       var srv4 = new QxMenuButton("NBT Server", null);
+       var srv5 = new QxMenuButton("WINS Server", null);
+       var srv6 = new QxMenuButton("Kerberos Server", null);
+       srvMenu.add(srv1, srv2, srv3, srv4, srv5, srv6);
+       w.add(srvMenu);
+       srvMenu.setVisible(false);
+
+       var editReg = new QxCommand;
+       editReg.addEventListener("execute", function() {
+               showReg();
+       });
+
+       var espMenu = new QxMenu;
+       var esp1 = new QxMenuButton("Registry Editor", null, editReg);
+       espMenu.add(esp1);
+       w.add(espMenu);
+       espMenu.setVisible(false);
+
+       var opt1 = new QxMenuButton("Servers", null)
+       opt1.addEventListener("mouseover", function() {
+               srvMenu.setVisible(true);
+               srvMenu.setLeft(this.getComputedPageBoxRight() + 4);
+               srvMenu.setTop(this.getComputedPageBoxTop() - 3);
+               if (espMenu.getVisible()) {
+                       espMenu.setVisible(false);
+               }
+       }); 
+       var opt2 = new QxMenuButton("Installation", null);
+       var opt3 = new QxMenuButton("Configuration", null);
+       var opt4 = new QxMenuButton("ESP Tests", null);
+       opt4.addEventListener("mouseover", function() {
+               espMenu.setVisible(true);
+               espMenu.setLeft(this.getComputedPageBoxRight() + 4);
+               espMenu.setTop(this.getComputedPageBoxTop() - 3);
+               if (srvMenu.getVisible()) {
+                       srvMenu.setVisible(false);
+               }
+       }); 
+       var opt5 = new QxMenuButton("Documentation", null);
+       var sep1 = new QxMenuSeparator();
+       var sep2 = new QxMenuSeparator();
+
+       sMenu.add(opt1, opt2, opt3, sep1, opt4, sep2, opt5);
+       sMenu.setLeft(0);
+       sMenu.setTop(docHeight() - 150);
+       w.add(sMenu);
+       sMenu.setVisible(true);
 }
 </script>
 
 <div id="toolbar">
-       <h3><a href="javascript:startSwat()">SWAT (Start)</a></h3>
+<h3><a href="javascript:startSwat()">SWAT (Start)</a></h3>
 </div>
 
 <% page_footer(); %>
diff --git a/swat/scripting/client/status.js b/swat/scripting/client/status.js
new file mode 100644 (file)
index 0000000..fa2c3b5
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+       server status library for SWAT
+
+       released under the GNU GPL Version 2 or later
+*/
+
+
+/* Ensure we always include the proper libs
+   Playing with a way to add/del scripts on the fly...
+*/
+var lib = document.createElement('script');
+lib.setAttribute('type', 'text/javascript');
+lib.setAttribute('src', '/scripting/client/call.js');
+var head = document.getElementsByTagName('head')[0];
+head.appendChild(lib);
+
+// Format for a server status table
+var s = [
+       { id : "server",
+         label : "Server",
+         content: "text",
+          defaultValue : "-",
+          width : 100,
+       },
+
+       { id : "status",
+         label : "Status",
+         content: "text",
+         defaultValue : "-",
+         width: 100,
+       }
+];
+
+function __load_status_table(info, container)
+{
+       var table = new QxListView(s);
+       var i;
+       for (i in info) {
+               table.addData( {server : i, status : info[i]} );
+       }
+       container.add(table);
+       container.setVisible(true);
+}
+
+function getServerStatus(container) 
+{
+       server_call_url("/scripting/server/status.esp", 'serverInfo',
+                               function(info) { __load_status_table(info, container); });
+}
diff --git a/swat/scripting/server/status.esp b/swat/scripting/server/status.esp
new file mode 100644 (file)
index 0000000..8ca2067
--- /dev/null
@@ -0,0 +1,27 @@
+<%
+
+libinclude("management.js");
+libinclude("server_call.js");
+
+function serverInfo()
+{
+       var info = new Object();
+       info["NBT Server"]      = server_status("nbt");
+       info["WINS Server"]     = server_status("wins");
+       info["CLDAP Server"]    = server_status("cldap");
+       info["Kerberos Server"] = server_status("kdc");
+       info["SMB Server"]      = stream_server_status("smb");
+       info["LDAP Server"]     = stream_server_status("ldap");
+       info["RPC Server"]      = stream_server_status("rpc");
+
+       return info;
+}
+
+/* register a call for clients to make */
+var call = servCallObj();
+call.add('serverInfo', serverInfo);
+
+/* run the function that was asked for */
+call.run();
+
+%>