Monotone-Parent: 0b2ba2d3c49b01c45b4abeb2e5a83fa8ea053a84

Monotone-Revision: f6270207331bcfe8521e449bfa34781eddb03eaa

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-05-11T21:45:33
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-05-11 21:45:33 +00:00
parent 09889ad0a5
commit 8e00779654
4 changed files with 58 additions and 5 deletions
+4
View File
@@ -1,5 +1,9 @@
2007-05-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/Common/UIxObjectActions.m ([UIxObjectActions
-removeUserFromAclsAction]): implemented this method which was
missing and is required to remove users from ACLs.
* UI/Common/UIxFolderActions.m ([UIxFolderActions
-subscribeAction]): folderDict was not autoreleased, resulting in
a leak...
+29 -3
View File
@@ -36,7 +36,7 @@
{
WOResponse *response;
WORequest *request;
NSString *uid, *email;
NSString *uid;
unsigned int code;
LDAPUserManager *um;
SOGoObject *clientObject;
@@ -47,8 +47,7 @@
if ([uid length] > 0)
{
um = [LDAPUserManager sharedUserManager];
email = [um getEmailForUID: uid];
if ([email length] > 0)
if ([um contactInfosForUserWithUIDorEmail: uid])
{
clientObject = [self clientObject];
[clientObject setRoles: [clientObject defaultAclRoles]
@@ -63,4 +62,31 @@
return response;
}
- (WOResponse *) removeUserFromAclsAction
{
WOResponse *response;
WORequest *request;
NSString *uid;
unsigned int code;
LDAPUserManager *um;
code = 403;
request = [context request];
uid = [request formValueForKey: @"uid"];
if ([uid length] > 0)
{
um = [LDAPUserManager sharedUserManager];
if ([um contactInfosForUserWithUIDorEmail: uid])
{
[[self clientObject] removeAclsForUsers: [NSArray arrayWithObject: uid]];
code = 204;
}
}
response = [context response];
[response setStatus: code];
return response;
}
@end
+5
View File
@@ -37,6 +37,11 @@
actionClass = "UIxObjectActions";
actionName = "addUserInAcls";
};
removeUserFromAcls = {
protectedBy = "SaveAcls";
actionClass = "UIxObjectActions";
actionName = "removeUserFromAcls";
};
acls = {
protectedBy = "ReadAcls";
pageName = "UIxAclEditor";
+20 -2
View File
@@ -50,11 +50,29 @@ function onUserAdd(event) {
event.preventDefault();
}
function removeUserCallback(http) {
var node = http.callbackData;
if (http.readyState == 4
&& http.status == 204)
node.parentNode.removeChild(node);
else
log("error deleting user: " + node.getAttribute("id"));
}
function onUserRemove(event) {
var userList = $("userList");
var nodes = userList.getSelectedRows();
for (var i = 0; i < nodes.length; i++)
userList.removeChild(nodes[i]);
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "removeUserFromAcls?uid=";
var baseURL = elements.join("/");
for (var i = 0; i < nodes.length; i++) {
var userId = nodes[i].getAttribute("id");
triggerAjaxRequest(baseURL + userId, removeUserCallback, nodes[i]);
}
event.preventDefault();
}