]> err.no Git - scalable-opengroupware.org/commitdiff
improved handling of from-popup
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 22 Jul 2005 13:00:03 +0000 (13:00 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 22 Jul 2005 13:00:03 +0000 (13:00 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@897 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/UI/MailerUI/ChangeLog
SOGo/UI/MailerUI/UIxMailEditor.m
SOGo/UI/MailerUI/UIxMailEditorAction.m
SOGo/UI/MailerUI/Version

index 85e633a8fc5366a732119a9b5bb7e3b35a5223ab..07804f53a6b2720649e3b91e3708c004ffac34e5 100644 (file)
@@ -1,3 +1,13 @@
+2005-07-22  Helge Hess  <helge.hess@opengroupware.org>
+
+       * v0.9.170
+
+       * UIxMailEditor.m: the mail editor now presets the proper 'from' based
+         on the 'account' query parameter
+       
+       * UIxMailEditorAction.m: the compose action now adds the current
+         account as a query parameter when calling the compose panel
+       
 2005-07-22  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * English.lproj/Localizable.strings: added error labels for JavaScript
index 35d557690ef9f741e9b77ef0e36a274e9fc86cbf..49f7a552529a47eb5a1e3c67995469a49a682c32 100644 (file)
@@ -118,7 +118,7 @@ static NSArray      *infoKeys            = nil;
   ASSIGNCOPY(self->from, _value);
 }
 - (NSString *)from {
-  if (![self->from isNotNull])
+  if (![self->from isNotEmpty])
     return [[[self context] activeUser] email];
   return self->from;
 }
@@ -274,13 +274,49 @@ static NSArray      *infoKeys            = nil;
   return ((self->sentFolder = [folder retain]));
 }
 
+- (void)_presetFromBasedOnAccountsQueryParameter {
+  /* preset the from field to the primary identity of the given account */
+  /* Note: The compose action sets the 'accounts' query parameter */
+  NSString         *accountID;
+  SOGoMailAccounts *accounts;
+  SOGoMailAccount  *account;
+  SOGoMailIdentity *identity;
+  
+  if (useLocationBasedSentFolder) /* from will be based on location */
+    return;
+  
+  if ([self->from isNotEmpty]) /* a from is already set */
+    return;
+  
+  accountID = [[[self context] request] formValueForKey:@"account"];
+  if (![accountID isNotEmpty])
+    return;
+  
+  accounts = [[self clientObject] mailAccountsFolder];
+  if ([accounts isExceptionOrNull])
+    return; /* we don't treat this as an error but are tolerant */
+
+  account = [accounts lookupName:accountID inContext:[self context]
+                     acquire:NO];
+  if ([account isExceptionOrNull])
+    return; /* we don't treat this as an error but are tolerant */
+  
+  identity = [account valueForKey:@"preferredIdentity"];
+  if (![identity isNotNull]) {
+    [self warnWithFormat:@"Account has no preferred identity: %@", account];
+    return;
+  }
+  
+  [self setFrom:[identity email]];
+}
+
 - (SOGoMailIdentity *)selectedMailIdentity {
   SOGoMailAccounts *accounts;
   NSEnumerator     *e;
   SOGoMailIdentity *identity;
   
   accounts = [[self clientObject] mailAccountsFolder];
-  if ([accounts isKindOfClass:[NSException class]]) return (id)accounts;
+  if ([accounts isExceptionOrNull]) return (id)accounts;
   
   // TODO: This is still a hack because we detect the identity based on the
   //       from. In Agenor all of the identities have unique emails, but this
@@ -432,6 +468,7 @@ static NSArray      *infoKeys            = nil;
 #endif
   
   [self loadInfo:[[self clientObject] fetchInfo]];
+  [self _presetFromBasedOnAccountsQueryParameter];
   return self;
 }
 
index 5d1c747056baac9cbc586b37925fcab9e717df3d..eabab2598c8f1ab554d3a5e58648e7ed5e83e6b6 100644 (file)
@@ -78,6 +78,7 @@
   SOGoDraftsFolder *drafts;
   WOResponse *r;
   NSString   *url;
+  id accountFolder;
   
   drafts = [self draftsFolder];
   if (![drafts isNotNull])
   if (![url hasSuffix:@"/"]) url = [url stringByAppendingString:@"/"];
   url = [url stringByAppendingString:@"edit"];
   
-  // TODO: debug log
-  [self logWithFormat:@"compose on %@: %@", drafts, url];
+  /* attach mail-account info */
+  
+  accountFolder = [[self clientObject] valueForKey:@"mailAccountFolder"];
+  if (![accountFolder isExceptionOrNull]) {
+    url = [url stringByAppendingString:@"?account="];
+    url = [url stringByAppendingString:[accountFolder nameInContainer]];
+  }
+  
+  /* perform redirect */
+  
+  [self debugWithFormat:@"compose on %@: %@", drafts, url];
   
   r = [[self context] response];
   [r setStatus:302 /* moved */];
index 40704a1fe459e7e0fdc87945b07ab3949ea71b5f..d781c774e6cd945b30782fae963ec2e1222a49d8 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=169
+SUBMINOR_VERSION:=170
 
 # v0.9.140 requires SoObjects/Mailer v0.9.100
 # v0.9.134 requires libSOGo          v0.9.41