Author: sree Date: 2006-08-18 22:10:08 +0000 (Fri, 18 Aug 2006) New Revision: 17608
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17608 Log: Add usermgmt.esp, the server for calls to usermgmt.js Add "New user" to the menu in userbrowser.js Make userbrowser load users from Samba (yay!) Clean up code in newuser.js Added: branches/SOC/sree/ui/usermgmt.esp Modified: branches/SOC/sree/ui/README branches/SOC/sree/ui/newuser.js branches/SOC/sree/ui/test.html branches/SOC/sree/ui/userbrowser.js Changeset: Modified: branches/SOC/sree/ui/README =================================================================== --- branches/SOC/sree/ui/README 2006-08-18 16:25:09 UTC (rev 17607) +++ branches/SOC/sree/ui/README 2006-08-18 22:10:08 UTC (rev 17608) @@ -1,9 +1,9 @@ -This is the UI code for the User Management Interface for SWAT. It is -however not yet linked to SWAT, and will run independently of samba. +This is the UI code for the User Management Interface for SWAT. It +however not yet linked completely yet to SWAT. -The contents of this directory will finally end up in -/usr/local/samba/share/swat/user_manager/ and will be accessible -through SWAT. +The contents of this directory must be installed in +/usr/local/samba/share/swat/user_manager/ and must be accessed through +SWAT. Qooxdoo 0.5.3 is used instead of the Qooxdoo supplied with Samba. Modified: branches/SOC/sree/ui/newuser.js =================================================================== --- branches/SOC/sree/ui/newuser.js 2006-08-18 16:25:09 UTC (rev 17607) +++ branches/SOC/sree/ui/newuser.js 2006-08-18 22:10:08 UTC (rev 17608) @@ -3,7 +3,26 @@ Client-side routines for the New User Dialog. */ +function __create_user() +{ + //TODO: call server to create user + return false; +} +function __validate_form(txtBoxes, txtPassword1, txtPassword2) +{ + for(var i = 0; i < txtBoxes.length; i++) + { + var x = txtBoxes[i].getValue(); + if(!x) return false; + } + + if(txtPassword1.getValue() != txtPassword2.getValue()) + return false; + + return true; +} + // creates the dialog function NewUserDialog() { @@ -101,6 +120,14 @@ chkNoChangePassword.setEnabled(false); chkNoPasswordExpire.setEnabled(false); + var bl2 = new QxBoxLayout; + with (bl2) + { + setHeight("auto"); + setHorizontalChildrenAlign("right"); + setSpacing(10); + } + var btnCancel = new QxButton("Cancel"); var btnCreate = new QxButton("Create"); with (btnCreate) @@ -108,7 +135,39 @@ setSpacing(15); setEnabled(false); } + + bl2.add(btnCreate); + bl2.add(btnCancel); + + var txtBoxes = [txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword, txtConfirmPassword]; + + btnCancel.addEventListener("click", function() { w1.close(); }); + btnCreate.addEventListener("click", function() { + if(__validate_form(txtBoxes, txtPassword, txtConfirmPassword)) + { + if(__create_user(txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword)) + { + //TODO: do UI client callback + + // and then close + w1.close(); + } + else + window.alert("Unable to create user!"); + } + }); + + function __toggle_create(e) { + btnCreate.setEnabled(__validate_form(txtBoxes, txtPassword, txtConfirmPassword)); + } + // this doesn't work well, as no changeText function exists + for(var i = 0; i < txtBoxes.length; i++) + { + txtBoxes[i].addEventListener("input", __toggle_create); + // txtBoxes[i].addEventListener("blur", __toggle_create); + } + bl.setOrientation(QxConst.ORIENTATION_VERTICAL); bl.add(g1); bl.add(new QxVerticalSpacer); @@ -119,49 +178,8 @@ bl.add(chkNoPasswordExpire); bl.add(chkAccountDisabled); bl.add(new QxVerticalSpacer); + bl.add(bl2); - var bl2 = new QxBoxLayout; - with (bl2) - { - setHeight("auto"); - setHorizontalChildrenAlign("right"); - setSpacing(10); - } - - var txtBoxes = [txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword, txtConfirmPassword]; - - function validateFormContents() - { - for(var i = 0; i < txtBoxes.length; i++) - { - var x = txtBoxes[i].getValue(); - if(!x) return false; - } - - if(txtPassword.getValue() != txtConfirmPassword.getValue()) return false; - - return true; - } - - function toggleCreateButton(e) - { - btnCreate.setEnabled(validateFormContents()); - } - - // this doesn't work well, as no changeText function exists - for(var i = 0; i < txtBoxes.length; i++) - { - txtBoxes[i].addEventListener("focus", toggleCreateButton); - txtBoxes[i].addEventListener("keyup", toggleCreateButton); - txtBoxes[i].addEventListener("blur", toggleCreateButton); - } - - - btnCancel.addEventListener("click", function() { w1.close(); }); - - bl2.add(btnCreate); - bl2.add(btnCancel); - bl.add(bl2); w1.add(bl); return w1; Modified: branches/SOC/sree/ui/test.html =================================================================== --- branches/SOC/sree/ui/test.html 2006-08-18 16:25:09 UTC (rev 17607) +++ branches/SOC/sree/ui/test.html 2006-08-18 22:10:08 UTC (rev 17608) @@ -12,6 +12,8 @@ <script type="text/javascript" src="newuser.js"></script> <script type="text/javascript" src="userprop.js"></script> <script type="text/javascript" src="userbrowser.js"></script> +<script type="text/javascript" src="/scripting/client/encoder.js"></script> +<script type="text/javascript" src="/scripting/client/call.js"></script> </head> <body> Modified: branches/SOC/sree/ui/userbrowser.js =================================================================== --- branches/SOC/sree/ui/userbrowser.js 2006-08-18 16:25:09 UTC (rev 17607) +++ branches/SOC/sree/ui/userbrowser.js 2006-08-18 22:10:08 UTC (rev 17608) @@ -128,6 +128,25 @@ return w; } +function __load_users(lv, list) +{ + var ld = lv.getData(); + + for(var i = 0; i < list.length; i++) + { + var obj = new Object(); + + obj.username = {text: list[i]['sAMAccountName']}; + obj.fullname = {text: list[i]['displayName']}; + obj.unixname = {text: list[i]['unixName']}; + obj.description = {text: list[i]['description']}; + + ld.push(obj); + } + + lv.updateContent(); +} + function UserBrowser(d) { var w1 = new QxWindow("Browse Users"); @@ -166,6 +185,29 @@ } var m2 = new QxMenu; + + var q0 = new QxCommand(); + q0.addEventListener("execute", function(e) { + if(UserPropertiesDialog) + { + if(w1.newuserdialog && (w1.newuserdialog.getVisibility() == true)) + { + w1.newuserdialog.focus(); + return; + } + else + w1.newuserdialog = null; + + var nu = NewUserDialog(); + __center_window_in_parent(w1, nu); + + d.add(nu); + nu.open(); + + w1.newuserdialog = nu; + } + }); + var q1 = new QxCommand(); q1.addEventListener("execute", function(e) { var user = lv.getPane().getSelectedItem(); @@ -235,12 +277,14 @@ } }); + var mb2_00 = new QxMenuButton("New User...", null, q0); + var mb2_s = new QxMenuSeparator(); var mb2_01 = new QxMenuButton("Reset Password", null, q1); var mb2_02 = new QxMenuButton("Rename", null, q2); var mb2_03 = new QxMenuButton("Delete", null, q3); var mb2_04 = new QxMenuButton("Properties...", null, q4); - m2.add(mb2_01, mb2_02, mb2_03, mb2_04); + m2.add(mb2_00, mb2_s, mb2_01, mb2_02, mb2_03, mb2_04); d.add(m2); @@ -276,12 +320,11 @@ bl.add(lv); w1.add(bl); + var attrs = new Object(); + attrs = {0:"sAMAccountName", 1:"displayName", 2:"description", 3:"unixName"}; - ld.push({username: {text: "sreepathi"}, fullname: {text: "Sreepathi Pai"}, unixname: {text: "sree"}, description: {text: "Somebody"}}); + server_call_url("/user_manager/usermgmt.esp", 'user_get_all', + function(list) { __load_users(lv, list);}, attrs); - ld.push({username: {text: "sree"}, fullname: {text: "K. Sreepathi Pai"}, unixname: {text: "sree2"}, description: {text: "Somebody else"}}); - - lv.updateContent(); - return w1; } Added: branches/SOC/sree/ui/usermgmt.esp =================================================================== --- branches/SOC/sree/ui/usermgmt.esp 2006-08-18 16:25:09 UTC (rev 17607) +++ branches/SOC/sree/ui/usermgmt.esp 2006-08-18 22:10:08 UTC (rev 17608) @@ -0,0 +1,37 @@ +<% + +libinclude("base.js"); +libinclude("server_call.js"); +libinclude("usermgmt.js"); + + +// temporary +function __user_get_all(attrs) +{ + /*var options = GetOptions(ARGV, "POPT_COMMON_CREDENTIALS"); + var system_session = system_session(); + var creds = options.get_credentials(); + sam = user_init(system_session, creds); + */ + var sam = user_init(session, session.authinfo.credentials); + + var user_dn = sprintf("CN=Users,%s", sam.domain_dn); + var results; + + if(attrs.length == 0) + results = sam.ldb.search(NULL, user_dn); + else + results = sam.ldb.search('(objectClass=user)', user_dn, sam.ldb.SCOPE_DEFAULT, attrs); + + printVars(results); + user_deinit(sam); + return results; +} + + +var call = servCallObj(); +call.add('user_get_all', __user_get_all); +call.run(); + +//__user_get_all(null); +%>
