]> err.no Git - scalable-opengroupware.org/commitdiff
proper handling of mailbox creation with altnamespace (#1472)
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 19 Jul 2005 13:16:36 +0000 (13:16 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 19 Jul 2005 13:16:36 +0000 (13:16 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@826 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/SOGoMailFolder.h
SOGo/SoObjects/Mailer/SOGoMailFolder.m
SOGo/SoObjects/Mailer/Version
SOGo/UI/MailerUI/ChangeLog
SOGo/UI/MailerUI/UIxMailAccountView.m
SOGo/UI/MailerUI/product.plist

index b23b9809f1e77847da9d5eb7de3a92f6401d23f0..afb810e92df335c48c0a724b510fc4b4998ccf15 100644 (file)
@@ -1,5 +1,9 @@
 2005-07-19  Helge Hess  <helge.hess@opengroupware.org>
 
+       * SOGoMailFolder.m: report NO in -isCreateAllowed when the folder is
+         the INBOX and SOGoSpecialFoldersInRoot (altnamespace) is enabled
+         (#1472) (v0.9.112)
+
        * SOGoDraftObject.m: made 'SOGoInternetMailSuffix' a pattern which can
          access request values (v0.9.111)
          
index 6d9e3c250aea224273c63809670f2c332e4e8452..ce49d2a4c5421b146410bc67e9238083f5f1ede4 100644 (file)
 
 - (NSException *)addFlagsToAllMessages:(id)_f;
 
+/* folder type */
+
+- (NSString *)outlookFolderClass;
+
 @end
 
 #endif /* __Mailer_SOGoMailFolder_H__ */
index 60b300aea592413956ab9181997228b1fa3e5d6a..429554a836b3bf2b9284a15180f8d9a356275815 100644 (file)
 
 @implementation SOGoMailFolder
 
+static BOOL useAltNamespace = NO;
+
 + (int)version {
   return [super version] + 0 /* v1 */;
 }
 
 + (void)initialize {
+  NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+
   NSAssert2([super version] == 1,
             @"invalid superclass (%@) version %i !",
             NSStringFromClass([self superclass]), [super version]);
+  
+  useAltNamespace = [ud boolForKey:@"SOGoSpecialFoldersInRoot"];
 }
 
 - (void)dealloc {
   [self _loadACLPermissionFlags];
   return self->somfFlags.isPostAllowed ? YES : NO;
 }
-- (BOOL)isCreateAllowed {
+
+- (BOOL)isCreateAllowedInACL {
+  /* we call this directly from UIxMailAccountView */
   [self _loadACLPermissionFlags];
   return self->somfFlags.isCreateAllowed ? YES : NO;
 }
+- (BOOL)isCreateAllowed {
+  if (useAltNamespace) {
+    /* with altnamespace, Cyrus doesn't allow mailboxes under INBOX */
+    if ([[self outlookFolderClass] isEqualToString:@"IPF.Inbox"])
+      return NO;
+  }
+  return [self isCreateAllowedInACL];
+}
+
 - (BOOL)hasAdminAccess {
   [self _loadACLPermissionFlags];
   return self->somfFlags.hasAdminAccess ? YES : NO;
index 6d6868c7f9002abcbf12fe819453e369df02b6c5..493dfefc6ec64000c6fa409df8355f7d9baa71f8 100644 (file)
@@ -1,6 +1,6 @@
 # Version file
 
-SUBMINOR_VERSION:=111
+SUBMINOR_VERSION:=112
 
 # v0.9.111 requires libNGExtensions v4.5.163
 # v0.9.96  requires libNGMime       v4.5.223
index 40d1570457a87b5f502044757db7dd37096273a2..affdf4fc1020507403555c916956ad008f1dbc11 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-19  Helge Hess  <helge.hess@opengroupware.org>
+
+       * UIxMailAccountView.m: directly check the ACL of the Inbox to check
+         permissions (the Inbox will return NO on isCreateAllowed when being
+         used by altnamespace ...) (#1472) (v0.9.153)
+
 2005-07-19  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * UIxMailAddressbook.m: don't restrict the Anais 'nature' flag anymore
index b3aeb7cfa64868736b3f08a335104264bd09d69f..9df7fbe4c19281b269cc4db6478cd5b0e2307c30 100644 (file)
 
 @end
 
+@interface SOGoMailFolder(UsedPrivates)
+- (BOOL)isCreateAllowedInACL;
+@end
+
 @implementation UIxMailAccountView
 
 static BOOL useAltNamespace = NO;
@@ -106,7 +110,7 @@ static BOOL useAltNamespace = NO;
     return NO;
   }
   
-  return [self->inbox isCreateAllowed];
+  return [self->inbox isCreateAllowedInACL];
 }
 
 /* error redirects */
index 6efeec2fa074f38150c30f03485f3f7a13d7260f..099c97a8d1531b5232867ff9fcd1addec8340dcb 100644 (file)
                 isSafe = NO;
                 cssClass = "tbicon_folderadd"; label = "Create"; },
               { link = "#"; onclick="return ctxFolderDelete(this)";
-                enabled  = "clientObject.isCreateAllowed";
+                enabled  = "clientObject.isCreateAllowed"; // TODO: correct?
                 isSafe = NO;
                 cssClass = "tbicon_folderdel"; label = "Delete"; },
             ),