Monotone-Parent: 4f6055656f29743c9da3d3dcce84f449939717bf

Monotone-Revision: 60ad639c204e75de92c1111a09d2ecfe2cbd655b

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2006-07-11T17:53:09
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2006-07-11 17:53:09 +00:00
parent 77d9730062
commit fcd86bfa96
10 changed files with 147 additions and 97 deletions

View File

@@ -27,9 +27,12 @@
#include <SoObjects/Mailer/SOGoMailObject.h>
#include "common.h"
#import "../Common/NSString+URL.h"
@implementation UIxMailEditorAction
- (void)dealloc {
- (void)dealloc
{
[self->newDraft release];
[super dealloc];
}
@@ -74,42 +77,63 @@
/* compose */
- (id)composeAction {
- (id) composeAction
{
SOGoDraftsFolder *drafts;
WOResponse *r;
NSString *url;
id accountFolder;
NSString *urlBase, *url;
NSMutableDictionary *urlParams;
id parameter;
id returnValue;
drafts = [self draftsFolder];
if (![drafts isNotNull])
return [self didNotFindDraftsError];
if ([drafts isKindOfClass:[NSException class]])
return drafts;
if ([drafts isNotNull])
{
if ([drafts isKindOfClass: [NSException class]])
returnValue = drafts;
else
{
urlBase = [drafts newObjectBaseURLInContext: [self context]];
if ([urlBase isNotNull])
{
urlParams = [NSMutableDictionary new];
[urlParams autorelease];
/* attach mail-account info */
parameter
= [[self clientObject] valueForKey: @"mailAccountFolder"];
if (parameter && ![parameter isExceptionOrNull])
[urlParams setObject: [parameter nameInContainer]
forKey: @"account"];
parameter = [[self request] formValueForKey: @"mailto"];
if (parameter)
[urlParams setObject: parameter
forKey: @"mailto"];
url = [urlBase composeURLWithAction: @"edit"
parameters: urlParams
andHash: NO];
/* perform redirect */
[self debugWithFormat:@"compose on %@: %@", drafts, url];
url = [drafts newObjectBaseURLInContext:[self context]];
if (![url isNotNull])
return [self couldNotCreateDraftError:drafts];
if (![url hasSuffix:@"/"]) url = [url stringByAppendingString:@"/"];
url = [url stringByAppendingString:@"edit"];
/* 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 */];
[r setHeader:url forKey:@"location"];
[self reset];
return r;
r = [[self context] response];
[r setStatus: 302 /* move d */];
[r setHeader: url forKey: @"location"];
[self reset];
returnValue = r;
}
else
returnValue = [self couldNotCreateDraftError: drafts];
}
}
else
returnValue = [self didNotFindDraftsError];
return returnValue;
}
/* creating new draft object */