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

sree at samba.org sree at samba.org
Wed Aug 23 19:33:44 GMT 2006


Author: sree
Date: 2006-08-23 19:33:44 +0000 (Wed, 23 Aug 2006)
New Revision: 17759

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

Log:
Add callback so that information in users list can be refreshed in place.

Make rename, new user, properties window, and delete use the callback.

Make context-menu available even when there are no users in list.

Fix bug in usermgmt.js, user_rename(), where unixName was renamed along with name.


Modified:
   branches/SOC/sree/ui/newuser.js
   branches/SOC/sree/ui/userbrowser.js
   branches/SOC/sree/ui/userprop.js


Changeset:
Modified: branches/SOC/sree/ui/newuser.js
===================================================================
--- branches/SOC/sree/ui/newuser.js	2006-08-23 17:10:35 UTC (rev 17758)
+++ branches/SOC/sree/ui/newuser.js	2006-08-23 19:33:44 UTC (rev 17759)
@@ -4,7 +4,7 @@
 */
 
 function __create_user(txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword, 
-		       chkChangePassword, chkAccountFlags, w1)
+		       chkChangePassword, chkAccountFlags, w1, updcallback)
 {
     var flags = 0;
     var otherflags = 0;
@@ -25,7 +25,15 @@
 		    function(rval) { 
 	if(rval) 
 	    {
-		//do ui callback
+		var obj = new Object();
+
+		obj.username = txtUsername.getValue();
+		obj.fullname = txtFullname.getValue();
+		obj.description = txtDescription.getValue();
+		obj.unixname = txtUnixname.getValue();
+
+		updcallback(null, obj, 'new');
+
 		w1.close();
 	    }
 	else
@@ -51,7 +59,7 @@
 }
 
 // creates the dialog
-function NewUserDialog()
+function NewUserDialog(updcallback)
 {
     var w1 = new QxWindow("New User");
     with(w1)
@@ -173,7 +181,8 @@
 	if(__validate_form(txtBoxes, txtPassword, txtConfirmPassword))
 	    {
 		__create_user(txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword, 
-			      chkChangePassword, [chkNoChangePassword, chkNoPasswordExpire, chkAccountDisabled], w1);
+			      chkChangePassword, [chkNoChangePassword, chkNoPasswordExpire, chkAccountDisabled],
+			      w1, updcallback);
 						
 	    }
     });

Modified: branches/SOC/sree/ui/userbrowser.js
===================================================================
--- branches/SOC/sree/ui/userbrowser.js	2006-08-23 17:10:35 UTC (rev 17758)
+++ branches/SOC/sree/ui/userbrowser.js	2006-08-23 19:33:44 UTC (rev 17759)
@@ -98,7 +98,7 @@
     return w;
 }
 
-function __create_rename_dialog(username)
+function __create_rename_dialog(username, updcallback, item)
 { 
     var w = new QxWindow("Rename user " + username);
     with (w)
@@ -143,8 +143,10 @@
 				function(result) { 
 		    if(result)
 			{
-			    //TODO: ui refresh
+			    var o = new Object();
+			    o.username = txtUsername.getValue();
 			    w.close();
+			    updcallback(item, o, 'update');
 			}
 		    else
 			window.alert("Unable to rename user");
@@ -171,11 +173,6 @@
 
 function __load_users(lv, list)
 {
-/*    // DEBUG
-    list = {0: {'sAMAccountName' : 'sree', 'displayName' : 'Sreepathi Pai',
-		'unixName' : 'sree2', 'description' : 'who left his computer behind'}, length: 1};
-    // END DEBUG */
-
     var ld = lv.getData();
 
     for(var i = 0; i < list.length; i++)
@@ -232,13 +229,50 @@
 	    setHeight(440);
 	    setBackgroundColor("white");
 	    getPane().getManager().setMultiSelection(false);
+	    setSortBy("username");
 	}
     
-    var m2 = new QxMenu;    
+    function __update_lv_inplace(item, props, action)
+	{
+	    var proplist = ['username', 'unixname', 'fullname', 'description'];
+	    if(action == 'delete')
+		{
+		    var data;
+		    data = lv.getData();
+		    var ndx = data.indexOf(item);
+		    data.splice(ndx, 1);
+		    if(ndx >= data.length) ndx = data.length - 1;
+		    if(ndx >= 0) lv.getPane().getManager().setSelectedItem(data[ndx]); 
+		}
+	    else if(action == 'new')
+		{
+		    var item = new Object();
+		    
+		    for(var i = 0; i < proplist.length; i++)
+			{
+			    item[proplist[i]] = new Object();
+			    item[proplist[i]].text = props[proplist[i]];
+			}
+		    
+		    lv.getData().push(item);
+		    lv.getPane().getManager().setSelectedItem(item);
+		}
+	    else if(action == 'update')
+		{
 
+		    for(var i = 0; i < proplist.length; i++)
+			if(props[proplist[i]]) item[proplist[i]].text = props[proplist[i]];
+		}
+
+	    lv.updateSort();	
+	    lv.updateContent();		
+	}
+
+
+    var m2 = new QxMenu;
     var q0 = new QxCommand();
     q0.addEventListener("execute", function(e) {
-	if(UserPropertiesDialog)
+	if(NewUserDialog)
 	    {
 		if(w1.newuserdialog && (w1.newuserdialog.getVisibility() == true))
 		    {		
@@ -248,7 +282,7 @@
 		else
 		    w1.newuserdialog = null;
 
-		var nu = NewUserDialog();
+		var nu = NewUserDialog(__update_lv_inplace);
 		__center_window_in_parent(w1, nu);
 
 		d.add(nu);	
@@ -291,7 +325,7 @@
 	else
 	    user.renamedialog = null;
 
-	var ren = __create_rename_dialog(user.username.text);
+	var ren = __create_rename_dialog(user.username.text, __update_lv_inplace, user);
 	__center_window_in_parent(w1, ren);
 
 	d.add(ren);	
@@ -307,13 +341,7 @@
 		server_call_url("/user_manager/usermgmt.esp", 'user_delete', 
 				function(result) {
 		    if(result)
-			{
-			    lv.getData().length = 0;
-			    lv.update();
-			    
-			    server_call_url("/user_manager/usermgmt.esp", 'user_get_all', 
-					    function(list) { __load_users(lv, list);}, attrs);
-			}
+			__update_lv_inplace(user, null, 'delete');		    
 		    else
 			window.alert("Could not delete user!");		    
 		}, user.username.text);		
@@ -344,7 +372,8 @@
 		{ 
 		    if(user_data)
 			{
-			    var prop = UserPropertiesDialog(user.username.text, user_data);
+			    var prop = UserPropertiesDialog(user.username.text, user_data, 
+							    __update_lv_inplace, user);
 			    __center_window_in_parent(w1, prop);
 			    
 			    d.add(prop);	
@@ -385,19 +414,18 @@
         if(e.getButton() == QxConst.BUTTON_RIGHT)
 	    {
 		var item = this.getListViewTarget(e);
-		if(item)
+		if (m2.isSeeable())
+		    m2.hide();
+		else
 		    {
-			if (m2.isSeeable())
-			    {
-				m2.hide();
-			    }
-			else
-			    {
-				m2.setLeft(e.getPageX());
-				m2.setTop(e.getPageY());
+			m2.setLeft(e.getPageX());
+			m2.setTop(e.getPageY());
 			
-				m2.show();
-			    }
+			var itemDependent = [mb2_01, mb2_02, mb2_03, mb2_04];
+			for(var i = 0; i < itemDependent.length; i++)
+			    itemDependent[i].setEnabled(item != null);
+			
+			m2.show();
 		    };
 	    
 		e.setPropagationStopped(true);

Modified: branches/SOC/sree/ui/userprop.js
===================================================================
--- branches/SOC/sree/ui/userprop.js	2006-08-23 17:10:35 UTC (rev 17758)
+++ branches/SOC/sree/ui/userprop.js	2006-08-23 19:33:44 UTC (rev 17759)
@@ -437,7 +437,7 @@
     tv.getPane().add(pp);    
 }
 
-function UserPropertiesDialog(username, user_data)
+function UserPropertiesDialog(username, user_data, updcallback, listitem)
 {
     var w1 = new QxWindow(username + " Properties");
     with(w1)
@@ -500,6 +500,7 @@
 			    function (result) {
 		if(result)
 		    {
+			updcallback(listitem, props.general, 'update');
 			if(close) w1.close();
 		    }
 		else



More information about the samba-cvs mailing list