svn commit: samba r17627 - in branches/SOC/sree: . ui

sree at samba.org sree at samba.org
Sun Aug 20 18:43:19 GMT 2006


Author: sree
Date: 2006-08-20 18:43:19 +0000 (Sun, 20 Aug 2006)
New Revision: 17627

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

Log:
Functions user_group_add() and user_group_remove() now require full DNs of groups.

Properties dialog is now fully functional, with the Add Groups dialog now working!

Modified:
   branches/SOC/sree/ui/usermgmt.esp
   branches/SOC/sree/ui/userprop.js
   branches/SOC/sree/usermgmt.js


Changeset:
Modified: branches/SOC/sree/ui/usermgmt.esp
===================================================================
--- branches/SOC/sree/ui/usermgmt.esp	2006-08-20 17:55:06 UTC (rev 17626)
+++ branches/SOC/sree/ui/usermgmt.esp	2006-08-20 18:43:19 UTC (rev 17627)
@@ -107,21 +107,21 @@
     return result;	
 }
 
-function __user_group_add(username, groupname)
+function __user_group_add(username, group_dn)
 {
-    printf("user_group_add: %s %s\n", username, groupname); 
+    printf("user_group_add: %s %s\n", username, group_dn); 
     var sam = user_init(session.authinfo.session_info, session.authinfo.credentials);
-    result = user_group_add(sam, username, groupname);
+    result = user_group_add(sam, username, group_dn);
 
     user_deinit(sam);
     return result;
 }
 
-function __user_group_remove(username, groupname)
+function __user_group_remove(username, group_dn)
 {
-    printf("user_group_remove: %s %s\n", username, groupname); 
+    printf("user_group_remove: %s %s\n", username, group_dn); 
     var sam = user_init(session.authinfo.session_info, session.authinfo.credentials);
-    result = user_group_remove(sam, username, groupname);
+    result = user_group_remove(sam, username, group_dn);
 
     user_deinit(sam);
     return result;   

Modified: branches/SOC/sree/ui/userprop.js
===================================================================
--- branches/SOC/sree/ui/userprop.js	2006-08-20 17:55:06 UTC (rev 17626)
+++ branches/SOC/sree/ui/userprop.js	2006-08-20 18:43:19 UTC (rev 17627)
@@ -3,6 +3,96 @@
    Client-side routines for the User Properties Dialog.
 */
 
+function __create_addgroup_dialog(username, donecallback)
+{
+    var w = new QxWindow("Add " + username + " to Group");
+
+    with(w)
+	{
+	    setWidth(304);
+	    setHeight(355);
+	    setCentered(true);
+	    setShowMaximize(false);
+	    setShowMinimize(false);
+	    setResizeable(false);	    
+	}
+
+    var bl = new QxBoxLayout(QxConst.ORIENTATION_VERTICAL);
+    with(bl)
+	{
+	    setWidth("100%");
+	    setHeight("100%");
+	    setSpacing(5);
+	    setPadding(10);
+	}    
+    
+    bl.add(new QxLabel("Select Groups:", "s"));
+
+    var grpList = new QxList;
+    grpList.getManager().setMultiSelection(false);
+    grpList.setHeight("80%");
+
+    var bl2 = new QxBoxLayout(QxConst.ORIENTATION_HORIZONTAL);
+    bl2.setWidth("100%");
+    bl2.setSpacing(10);
+    var btnAdd = new QxButton("Add");
+    var btnCancel = new QxButton("Cancel");    
+
+    btnCancel.addEventListener("click", function() { w.close(); });
+
+    btnAdd.addEventListener("click", function() {	
+	var item = grpList.getSelectedItem();
+	
+	if(item == null)
+	    {
+		window.alert("Please select a group!");
+		return;
+	    }
+	
+	server_call_url("/user_manager/usermgmt.esp", 'user_group_add', 
+			function(result) {
+	    if(result)
+		{
+		    w.close();
+		    donecallback();
+		}
+	    else
+		window.alert("Could not add user to group!");
+	}, username, item.getValue());
+    });
+
+    btnAdd.setWidth(80);
+    btnCancel.setWidth(80);
+    bl2.add(btnAdd, btnCancel);
+    bl.add(grpList);
+    bl.add(bl2);
+    w.add(bl);
+
+    var loading = new QxListItem("Loading...");
+    loading.setEnabled(false);
+    grpList.add(loading);
+
+    var attrs = new Object();
+    attrs = {0:"cn", 1:"dn"};
+
+    server_call_url("/user_manager/usermgmt.esp", 'user_group_get_all', 
+		    function(groups) { 
+	if(groups)
+	    {
+		grpList.removeAll();
+		for(var i = 0; i < groups.length; i++)
+		    {
+			var item = new QxListItem(groups[i]['cn'], null, groups[i]['dn']);
+			grpList.add(item);
+		    }
+	    }
+	else
+	    window.alert("Could not load groups!");	
+    }, attrs);
+    
+    return w;
+}
+
 function __create_general_pane(tv, tb, user_data)
 {
     var gp = new QxTabViewPage(tb);
@@ -99,7 +189,7 @@
 	}
     else
 	{
-	    window.alert("Could not load user's groups!");
+	    window.alert("Could not load user groups!");
 	}
 }
 function __create_memberof_pane(tv, tb, user_data)
@@ -126,12 +216,44 @@
     var btnAdd = new QxButton("Add...");
     var btnRemove = new QxButton("Remove");    
 
+    function _do_server_load_groups()
+	{
+	    // seems to have problems with Remove
+	    /*grpList.removeAll();
+	    var loading = new QxListItem("Loading...");
+	    loading.setEnabled(false);
+	    grpList.add(loading);*/
+
+	    server_call_url("/user_manager/usermgmt.esp", 'user_group_get', 
+			    function(results) { __load_user_groups(results, grpList);}, 
+			    mp.getUserData('username'));
+	}
+
+    btnAdd.addEventListener("click", function() {
+	if(mp.addgroupdialog && (mp.addgroupdialog.getVisibility() == true))
+	    {		
+		mp.addgroupdialog.focus();
+		return;
+	    }
+	else
+	    mp.addgroupdialog = null;
+
+	var d = window.application.getClientWindow().getClientDocument();
+
+	var agd = __create_addgroup_dialog(mp.getUserData('username'), _do_server_load_groups);
+	//__center_window_in_parent(mp.getParent().getParent().getParent(), agd);
+
+	d.add(agd);
+	agd.open();
+	mp.addgroupdialog = agd;	
+    });
+
     btnRemove.addEventListener("click", function() {
 	var item = grpList.getSelectedItem();
 	
 	if(item == null)
 	    {
-		window.alert("Please select an item!");
+		window.alert("Please select a group!");
 		return;
 	    }
 
@@ -141,12 +263,10 @@
 		server_call_url("/user_manager/usermgmt.esp", 'user_group_remove', 
 				function(result) {
 		    if(result)
-			server_call_url("/user_manager/usermgmt.esp", 'user_group_get', 
-					function(results) { __load_user_groups(results, grpList);}, 
-					mp.getUserData('username'));	
+			_do_server_load_groups();
 		    else
 			window.alert("Could not remove user from group!");
-		}, mp.getUserData('username'), item.getLabel());			
+		}, mp.getUserData('username'), item.getValue());			
 	    }    
     });
     
@@ -159,12 +279,8 @@
     mp.add(bl);
 
     if(user_data['memberOf'])
-	{
-	    server_call_url("/user_manager/usermgmt.esp", 'user_group_get', 
-			    function(results) { __load_user_groups(results, grpList);}, 
-			    mp.getUserData('username'));
-	}
-    
+	_do_server_load_groups();
+       
     tv.getPane().add(mp);
 }
 

Modified: branches/SOC/sree/usermgmt.js
===================================================================
--- branches/SOC/sree/usermgmt.js	2006-08-20 17:55:06 UTC (rev 17626)
+++ branches/SOC/sree/usermgmt.js	2006-08-20 18:43:19 UTC (rev 17627)
@@ -495,12 +495,10 @@
 }
 
 // add a user to a group
-function user_group_add(sam, username, groupname)
+function user_group_add(sam, username, group_dn)
 {
     var user_dn = sprintf("CN=%s,CN=Users,%s", 
 			  username, sam.domain_dn);
-    var group_dn = sprintf("CN=%s,CN=Users,%s", 
-			  groupname, sam.domain_dn);
 
     sam.ldb.transaction_start();
 
@@ -546,12 +544,10 @@
 }
 
 // remove a user from a group
-function user_group_remove(sam, username, groupname)
+function user_group_remove(sam, username, group_dn)
 {
     var user_dn = sprintf("CN=%s,CN=Users,%s", 
 			  username, sam.domain_dn);
-    var group_dn = sprintf("CN=%s,CN=Users,%s", 
-			  groupname, sam.domain_dn);
 
     sam.ldb.transaction_start();
 
@@ -591,7 +587,7 @@
 delete: memberOf
 memberOf: %s
 ", group_dn, user_dn, user_dn, group_dn);
-
+    
     if(sam.ldb.modify(ldifmod) != true)
 	{
 	    print("Failed to remove user from group!\n");
@@ -599,7 +595,7 @@
 	    return false;
 	}
 
-    return(sam.ldb.transaction_commit());
+    return(sam.ldb.transaction_commit()); 
 }
 
 // reset user's password



More information about the samba-cvs mailing list