]> err.no Git - scalable-opengroupware.org/commitdiff
work on identities
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 22 Jul 2005 10:24:49 +0000 (10:24 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 22 Jul 2005 10:24:49 +0000 (10:24 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@887 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/SOGoMailAccount.m
SOGo/SoObjects/Mailer/SOGoMailAccounts.h
SOGo/SoObjects/Mailer/SOGoMailAccounts.m
SOGo/SoObjects/Mailer/SOGoMailBaseObject.h
SOGo/SoObjects/Mailer/SOGoMailBaseObject.m
SOGo/SoObjects/Mailer/SOGoMailIdentity.m
SOGo/SoObjects/Mailer/SOGoUser+Mail.m
SOGo/SoObjects/Mailer/Version

index 654c8260f0c84f5d15263521485cf0c3d41948d0..9a8d45701dc2a3130152153f7b2a9ba453ed5298 100644 (file)
@@ -1,3 +1,17 @@
+2005-07-22  Helge Hess  <helge.hess@opengroupware.org>
+
+       * v0.9.120
+
+       * SOGoMailBaseObject.m: added a method to locate the mail accounts
+         folderby traversing the container hierarchy
+
+       * SOGoMailIdentity.m: include sent folder in -description
+
+       * SOGoMailAccounts.m: added method to fetch just the identities with
+         emitter permissions
+
+       * SOGoUser+Mail.m: properly create mail identity objects
+       
 2005-07-21  Helge Hess  <helge.hess@opengroupware.org>
 
        * v0.9.119
index b6479a92b41b5aadb817160232e5e562d7e69c8c..03d8478b5bcd7f62a959c7a5384838947e817693 100644 (file)
@@ -271,7 +271,7 @@ static BOOL     useAltNamespace       = NO;
     ud = [NSUserDefaults standardUserDefaults];
     s = [[ud stringForKey:@"SOGoSentFolderName"] copy];
     if ([s length] == 0) s = @"Sent";
-    NSLog(@"Note: using SOGoSentFolderName: '%@'", s);
+    [self logWithFormat:@"Note: using SOGoSentFolderName: '%@'", s];
   }
   return s;
 }
index 0b22916ffee6fbfdb6c057188412c2ed6ee539a7..3bccf908797ca6fe24a21f42c32a391cb612f5be 100644 (file)
@@ -44,6 +44,7 @@
 }
 
 - (NSArray *)fetchAllIdentities;
+- (NSArray *)fetchIdentitiesWithEmitterPermissions;
 
 @end
 
index fa3eab5ab58efb725b7ed196e06f186f28a17073..002de868d4e8dfbb1096660fc7bde3cff3811ced 100644 (file)
@@ -94,7 +94,7 @@ static NSString *AgenorShareLoginMarker  = @".-.";
     : [account arrayByAddingObjectsFromArray:shares];
 }
 
-- (NSArray *)fetchAllIdentities {
+- (NSArray *)fetchIdentitiesWithOnlyEmitterAccess:(BOOL)_flag {
   WOContext *ctx;
   
   if ((ctx = [[WOApplication application] context]) == nil) {
@@ -105,10 +105,19 @@ static NSString *AgenorShareLoginMarker  = @".-.";
   
   if ([self isInternetRequest]) { /* only show primary mailbox in Internet */
     // just return the primary identity
-    return [[ctx activeUser] primaryMailIdentity];
+    id identity;
+    
+    identity = [[ctx activeUser] primaryMailIdentity];
+    return [identity isNotNull] ? [NSArray arrayWithObject:identity] : nil;
   }
   
-  return [[ctx activeUser] fetchAllMailIdentitiesWithOnlyEmitterAccess:NO];
+  return [[ctx activeUser] fetchAllMailIdentitiesWithOnlyEmitterAccess:_flag];
+}
+- (NSArray *)fetchAllIdentities {
+  return [self fetchIdentitiesWithOnlyEmitterAccess:NO];
+}
+- (NSArray *)fetchIdentitiesWithEmitterPermissions {
+  return [self fetchIdentitiesWithOnlyEmitterAccess:YES];
 }
 
 /* name lookup */
index cc0de820281315afcd9f962c18eded76bff6d2b2..ad12a4172fcda1a76330988b3c1e624c87018158 100644 (file)
@@ -40,7 +40,7 @@
 
 @class NSString, NSArray, NSURL;
 @class NGImap4ConnectionManager, NGImap4Connection;
-@class SOGoMailAccount;
+@class SOGoMailAccount, SOGoMailAccounts;
 
 @interface SOGoMailBaseObject : SOGoObject
 {
@@ -53,6 +53,7 @@
 /* hierarchy */
 
 - (SOGoMailAccount *)mailAccountFolder;
+- (SOGoMailAccounts *)mailAccountsFolder;
 
 /* IMAP4 */
 
index ecd1a45f336c59c0c7993445ac08f93a4a2aebfd..26d996b86896b16e2e3c4825d541f6ef1ceb2ef8 100644 (file)
@@ -68,6 +68,16 @@ static BOOL debugOn = YES;
   return [[self container] mailAccountFolder];
 }
 
+- (SOGoMailAccounts *)mailAccountsFolder {
+  id o;
+  
+  for (o = [self container]; [o isNotNull]; o = [o container]) {
+    if ([o isKindOfClass:NSClassFromString(@"SOGoMailAccounts")])
+      return o;;
+  }
+  return nil;
+}
+
 /* IMAP4 */
 
 - (NGImap4ConnectionManager *)mailManager {
index 2debef069661b9b338e9a10a76bf3dc551999c29..a9373dfae423047fa00ade5ffc94eedf3f71c52e 100644 (file)
   if (self->name  != nil) [ms appendFormat:@" name='%@'",  self->name];
   if (self->email != nil) [ms appendFormat:@" email='%@'", self->email];
   
+  if (self->sentFolderName != nil) 
+    [ms appendFormat:@" sent='%@'", self->sentFolderName];
+  
   if ([self->sentBCC length] > 0) [ms appendString:@" sent-bcc"];
   if ([self->vCard length]   > 0) [ms appendString:@" vcard"];
   
index 0b5d5e2fd74c074b6fab9016fb72d1581920425a..c32a2a8baf4f1c9ce69b28a972667118f749343a 100644 (file)
 
 @implementation SOGoUser(Mail)
 
+- (NSString *)agenorSentFolderName {
+  /* Note: specialty: the Sent folder is called the same in all accounts */
+  static NSString *s = nil;
+  if (s == nil) {
+    NSUserDefaults *ud;
+    
+    ud = [NSUserDefaults standardUserDefaults];
+    s = [[ud stringForKey:@"SOGoSentFolderName"] copy];
+    if (![s isNotEmpty]) s = @"Sent";
+    [self logWithFormat:@"Note: using SOGoSentFolderName: '%@'", s];
+  }
+  return s;
+}
+
+- (NSString *)agenorSentFolderForAccount:(NSString *)_account {
+  // TODO: support different locations for shares!
+  NSString *p;
+  
+  if (![_account isNotEmpty]) 
+    return nil;
+  
+  // if ([_account rangeOfString:@".-."].length == 0)
+  // TODO: check whether we need special handling for shares!
+  p = [_account stringByAppendingString:@"/"];
+  p = [p stringByAppendingString:[self agenorSentFolderName]];
+  return p;
+}
+
 - (SOGoMailIdentity *)primaryMailIdentity {
+  SOGoMailIdentity *identity;
   NSString *account;
-  
+
   account = [self valueForKey:@"primaryIMAP4AccountString"];
   
-#warning IMPLEMENT ME
-  return nil;
+  identity = [[[SOGoMailIdentity alloc] init] autorelease];
+  [identity setName:[self cn]];
+  [identity setEmail:[self email]];
+  [identity setSentFolderName:[self agenorSentFolderForAccount:account]];
+  return identity;
 }
 
 - (SOGoMailIdentity *)mailIdentityForAccount:(NSString *)_account
   emitter:(NSString *)_em
 {
-#warning IMPLEMENT ME
-  return nil;
+  SOGoMailIdentity *identity;
+  
+  identity = [[[SOGoMailIdentity alloc] init] autorelease];
+  [identity setName:[self cn]]; // TODO: should we use something else?
+  if ([_em isNotEmpty]) [identity setName:_em];
+  [identity setSentFolderName:[self agenorSentFolderForAccount:_account]];
+  return identity;
 }
 
 - (NSArray *)fetchAllMailIdentitiesWithOnlyEmitterAccess:(BOOL)_onlyGC {
       [identities addObject:identity];
   }
   
-  [self logWithFormat:@"TODO: WORK ON IDENTITIES: %@", shares];
-  return nil;
+  return identities;
 }
 
 @end /* SOGoUser(Mail) */
index 8a6b1aad7bbb9382f546722f59101ddc43b6c9b9..125f07393b0b9904781d87217b418f8a48707653 100644 (file)
@@ -1,6 +1,6 @@
 # Version file
 
-SUBMINOR_VERSION:=119
+SUBMINOR_VERSION:=120
 
 # v0.9.114 requires libNGMime       v4.5.229
 # v0.9.114 requires libNGExtensions v4.5.165