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();
