]> err.no Git - scalable-opengroupware.org/commitdiff
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1064 d1b88da0-ebda-0310...
authorwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 11 May 2007 21:46:53 +0000 (21:46 +0000)
committerwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 11 May 2007 21:46:53 +0000 (21:46 +0000)
ChangeLog
SoObjects/SOGo/AgenorUserDefaults.m
SoObjects/SOGo/SOGoUser.m
UI/Common/UIxFolderActions.m
UI/Common/UIxObjectActions.m
UI/Common/product.plist
UI/Scheduler/UIxTaskEditor.m
UI/Scheduler/UIxTimeDateControl.m
UI/WebServerResources/UIxAclEditor.js
UI/WebServerResources/UIxComponentEditor.js

index 6d86d528ae4788e968f7fb7b8b86b054ef1066e4..fefc4345b506a5c82e9ff96fac1f9bcf22d9d6c1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 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...
+
+       * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
+       -primaryFetchProfile]): when building with libFoundation, don't
+       use the "propertyList" method from NSString. Rather, we convert
+       the string to an NSData instance and passit as parameter to
+       NSDeserializer. This way, we obtain a mutable dictionary rather
+       than an immutable one.
+
        * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -bodyPartForText]) 
        ([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): use the
        constant string "contentTypeValue".
index e7031c7c7269cb4a16e67631b3a7716a451da3e1..d904acbc0d69af6b090cf35ad66b5f475acdd288 100644 (file)
@@ -109,6 +109,9 @@ static NSString *uidColumnName = @"uid";
   NSString *sql, *value;
   NSArray *attrs;
   BOOL rc;
+#if LIB_FOUNDATION_LIBRARY
+  NSData *plistData;
+#endif
 
   rc = NO;
   
@@ -144,7 +147,17 @@ static NSString *uidColumnName = @"uid";
          /* remember values */
          value = [row objectForKey: fieldName];
          if ([value isNotNull])
-           [values setDictionary: [value propertyList]];
+           {
+#if LIB_FOUNDATION_LIBRARY
+             plistData = [value dataUsingEncoding: NSUTF8StringEncoding];
+             [values setDictionary: [NSDeserializer
+                                      deserializePropertyListFromData: plistData
+                                      mutableContainers: YES]];
+
+#else
+             [values setDictionary: [value propertyList]];
+#endif
+           }
 
          ASSIGN (lastFetch, [NSCalendarDate date]);
          defFlags.modified = NO;
index c91e7573c7ceec545fb1119e6ae0b23cd675cae8..f84d3065597b744aa3473453120196f9c62874c0 100644 (file)
@@ -69,12 +69,12 @@ static NSURL *AgenorProfileURL = nil;
     ASSIGN (fallbackIMAP4Server, [ud stringForKey: @"SOGoFallbackIMAP4Server"]);
 }
 
-+ (SOGoUser *) userWithLogin: (NSString *) login
-                      roles: (NSArray *) roles
++ (SOGoUser *) userWithLogin: (NSString *) newLogin
+                      roles: (NSArray *) newRoles
 {
   SOGoUser *user;
 
-  user = [[self alloc] initWithLogin: login roles: roles];
+  user = [[self alloc] initWithLogin: newLogin roles: newRoles];
   [user autorelease];
 
   return user;
index 25480d1b11ac8508cf9e29ad9ab1ffc3c41d1628..fdd9f80172d9efd9ba9a489ebafea798e66ae2a6 100644 (file)
   else
     folderName = email;
 
-  folderDict = [NSMutableDictionary new];
+  folderDict = [NSMutableDictionary dictionary];
   [folderDict setObject: folderName forKey: @"displayName"];
   [folderDict setObject: [NSNumber numberWithBool: NO] forKey: @"active"];
 
index 277d1ac66a0f2f392dc024936ca5424829e31c44..1d154a6654ff5d9f01abc9534756999cf4f38715 100644 (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]
   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
index 0d94f25e6cce0fa37a50dc5c4c4ae96106441947..9e014e8e978d001f575bf745a7369f97ca882866 100644 (file)
                actionClass = "UIxObjectActions";
                actionName  = "addUserInAcls";
             };
+            removeUserFromAcls = { 
+               protectedBy = "SaveAcls";
+               actionClass = "UIxObjectActions";
+               actionName  = "removeUserFromAcls";
+            };
            acls = {
               protectedBy = "ReadAcls";
               pageName    = "UIxAclEditor";
index 607e0adf9117cb842f667add377ba150bac6749c..c2764a3935017114c34e53dc02b321048adff999 100644 (file)
 
 - (BOOL) statusPercentDisabled
 {
-  NSLog (@"status: '%@'", status);
   return ([status length] == 0
          || [status isEqualToString: @"CANCELLED"]);
 }
index 5b3646656aa6d028179f3deba7471860832fbe93..e8b84a399a9e8883adf173a1fd92db792783b70c 100644 (file)
@@ -99,7 +99,6 @@
 }
 
 - (void)setHour:(id)_hour {
-  NSLog (@"---------------- setHour:");
   ASSIGN(hour, _hour);
 }
 
 
 - (void) setDayStartHour: (unsigned int) aStartHour
 {
-  NSLog (@"******************** setDayStartHour...");
   startHour = aStartHour;
 }
 
index 18eaab99da4dea28a5a89706417b57e2328f1d13..d7a3c6d09cfacc02fbe5c8f99e9725127d756ddb 100644 (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();
 }
 
index fb8725e03e855a5970010ee117128811a042910b..beeac618a103905469d10bda89d9be00a677c05a 100644 (file)
@@ -58,7 +58,7 @@ function onMenuSetClassification(event) {
    this.addClassName("_chosen");
    this.parentNode.chosenNode = this;
 
-   log("classification: " + classification);
+//    log("classification: " + classification);
    var privacyInput = document.getElementById("privacy");
    privacyInput.value = classification;
 }