Author: tridge
Date: 2005-08-22 01:53:06 +0000 (Mon, 22 Aug 2005)
New Revision: 9466

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9466

Log:
add display of values as well as keys in the registry editor


Modified:
   branches/SAMBA_4_0/swat/scripting/client/regedit.js
   branches/SAMBA_4_0/swat/scripting/server/regedit.esp


Changeset:
Modified: branches/SAMBA_4_0/swat/scripting/client/regedit.js
===================================================================
--- branches/SAMBA_4_0/swat/scripting/client/regedit.js 2005-08-22 01:52:22 UTC 
(rev 9465)
+++ branches/SAMBA_4_0/swat/scripting/client/regedit.js 2005-08-22 01:53:06 UTC 
(rev 9466)
@@ -5,10 +5,17 @@
        released under the GNU GPL Version 2 or later
 */
 
-function __folder_list(fParent, list) 
+
+/*
+  callback from the key enumeration call
+*/
+function __folder_keys(fParent, list) 
 {
        var i;
-       fParent.removeAll();
+       if (fParent.working == 1) {
+               fParent.working = 0;
+               fParent.removeAll();
+       }
        for (i=0;i<list.length;i++) {
                var fChild;
                fChild = new QxTreeFolder(list[i]);
@@ -19,21 +26,51 @@
                } else {
                        fChild.reg_path = fParent.reg_path + '\\' + list[i];
                }
+               fChild.working = 1;
                fChild.add(new QxTreeFolder('Working ...'));
                fChild.addEventListener("click", function() { 
                        var el = this; __folder_click(el); 
                });
-               fParent.setOpen(1);
        }
+       fParent.setOpen(1);
 }
 
+/*
+  callback from the key enumeration call
+*/
+function __folder_values(fParent, list) 
+{
+       var i;
+       if (list.length == 0) {
+               return;
+       }
+       if (fParent.working == 1) {
+               fParent.working = 0;
+               fParent.removeAll();
+       }
+       for (i=0;i<list.length;i++) {
+               var fChild;
+               fChild = new QxTreeFile(list[i].name);
+               fChild.parent = fParent;
+               fChild.details = list[i];
+               fParent.add(fChild);
+       }
+       fParent.setOpen(1);
+}
+
+/*
+  called when someone clicks on a folder
+*/
 function __folder_click(node) 
 {
        if (!node.populated) {
                node.populated = true;
-               server_call_url("/scripting/server/regedit.esp", 'enum_path', 
-                               function(list) { __folder_list(node, list); }, 
+               server_call_url("/scripting/server/regedit.esp", 'enum_keys', 
+                               function(list) { __folder_keys(node, list); }, 
                                node.binding, node.reg_path);
+               server_call_url("/scripting/server/regedit.esp", 'enum_values', 
+                               function(list) { __folder_values(node, list); 
}, 
+                               node.binding, node.reg_path);
        }
 }
 

Modified: branches/SAMBA_4_0/swat/scripting/server/regedit.esp
===================================================================
--- branches/SAMBA_4_0/swat/scripting/server/regedit.esp        2005-08-22 
01:52:22 UTC (rev 9465)
+++ branches/SAMBA_4_0/swat/scripting/server/regedit.esp        2005-08-22 
01:53:06 UTC (rev 9466)
@@ -8,10 +8,10 @@
 libinclude("server_call.js");
 
 /* 
-   server side call to return a listing of elements in a winreg path
+   server side call to return a listing of keys in a winreg path
 */
-function enum_path(binding, path) {
-       printf("enum_path(%s, %s)\n", binding, path);
+function enum_keys(binding, path) {
+       printf("enum_keys(%s, %s)\n", binding, path);
        var reg = winreg_init();
        security_init(reg);
 
@@ -22,13 +22,31 @@
                printVars(status);
                return undefined;
        }
-       var list = winreg_enum_path(reg, path);
-       return list;
+       return winreg_enum_path(reg, path);
 }
 
+/* 
+   server side call to return a listing of values in a winreg path
+*/
+function enum_values(binding, path) {
+       printf("enum_values(%s, %s)\n", binding, path);
+       var reg = winreg_init();
+       security_init(reg);
+
+       reg.credentials = session.authinfo.credentials;
+
+       var status = reg.connect(binding);
+       if (status.is_ok != true) {
+               printVars(status);
+               return undefined;
+       }
+       return winreg_enum_values(reg, path);
+}
+
 /* register a call for clients to make */
 var call = servCallObj();
-call.add('enum_path', enum_path);
+call.add('enum_keys', enum_keys);
+call.add('enum_values', enum_values);
 
 /* run the function that was asked for */
 call.run();

Reply via email to