Monotone-Parent: f6829bdd7a8f8207d69f2c7bd6e1dc52fe733eb0

Monotone-Revision: 2d07c11d93d913a43469f1241e1bd63bece15be7

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-01-04T15:58:52
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2010-01-04 15:58:52 +00:00
parent 0a187f9d38
commit b8fafe42da
9 changed files with 92 additions and 25 deletions

View File

@ -1,3 +1,10 @@
2010-01-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/Mailer/SOGoMailForward.m (-): we use
-[SOGoUserDefaults mailComposeMessageType] instead of querying the
defaults key, so that the fallbacking mechanism between the
different preference layers can be used.
2009-12-26 Ludovic Marcotte <lmarcotte@inverse.ca>
* SoObjects/SOGo/SOGoMailer.m (_smtpSendData:

View File

@ -55,6 +55,7 @@ typedef enum {
SOGoSentFolder *sentFolder;
SOGoTrashFolder *trashFolder;
SOGoIMAPAclStyle imapAclStyle;
NSMutableArray *namespaces;
}
- (void) setAccountName: (NSString *) newAccountName;

View File

@ -39,6 +39,7 @@
#import <NGImap4/NGSieveClient.h>
#import <SOGo/NSArray+Utilities.h>
#import <SOGo/NSString+Utilities.h>
#import <SOGo/SOGoDomainDefaults.h>
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h>
@ -67,6 +68,7 @@ static NSString *sieveScriptName = @"sogo";
trashFolder = nil;
accountName = nil;
imapAclStyle = undefined;
namespaces = nil;
}
return self;
@ -74,6 +76,7 @@ static NSString *sieveScriptName = @"sogo";
- (void) dealloc
{
[namespaces release];
[inboxFolder release];
[draftsFolder release];
[sentFolder release];
@ -94,24 +97,55 @@ static NSString *sieveScriptName = @"sogo";
return NO;
}
- (void) _appendNamespace: (NSArray *) namespace
toFolders: (NSMutableArray *) folders
{
NSString *newFolder;
NSDictionary *currentPart;
int count, max;
max = [namespace count];
for (count = 0; count < max; count++)
{
currentPart = [namespace objectAtIndex: count];
newFolder
= [[currentPart objectForKey: @"prefix"] substringFromIndex: 1];
if ([newFolder length])
[folders addObject: [newFolder asCSSIdentifier]];
}
}
- (void) _appendNamespaces: (NSMutableArray *) folders
{
NSDictionary *namespaceDict;
NSArray *namespace;
NGImap4Client *client;
client = [[self imap4Connection] client];
namespaceDict = [client namespace];
namespace = [namespaceDict objectForKey: @"personal"];
if (namespace)
[self _appendNamespace: namespace toFolders: folders];
namespace = [namespaceDict objectForKey: @"other users"];
if (namespace)
[self _appendNamespace: namespace toFolders: folders];
namespace = [namespaceDict objectForKey: @"shared"];
if (namespace)
[self _appendNamespace: namespace toFolders: folders];
}
- (NSArray *) toManyRelationshipKeys
{
NSMutableArray *folders;
NSArray *imapFolders, *additionalFolders;
folders = [NSMutableArray array];
NSArray *imapFolders;
imapFolders = [[self imap4Connection] subfoldersForURL: [self imap4URL]];
additionalFolders
= [NSArray arrayWithObject: [self draftsFolderNameInContext: nil]];
if ([imapFolders count] > 0)
[folders addObjectsFromArray: imapFolders];
if ([additionalFolders count] > 0)
{
[folders removeObjectsInArray: additionalFolders];
[folders addObjectsFromArray: additionalFolders];
}
folders = [imapFolders mutableCopy];
[folders autorelease];
[folders addObjectUniquely: [self draftsFolderNameInContext: nil]];
[self _appendNamespaces: folders];
return [folders stringsWithFormat: @"folder%@"];
}
@ -420,6 +454,8 @@ static NSString *sieveScriptName = @"sogo";
Class klazz;
id obj;
[[[self imap4Connection] client] namespace];
if ([_key hasPrefix: @"folder"])
{
folderName = [_key substringFromIndex: 6];

View File

@ -120,7 +120,7 @@ static BOOL debugOn = YES;
{
if (!imap4)
{
imap4 = [[self mailManager] connectionForURL: [self imap4URL]
imap4 = [[self mailManager] connectionForURL: [self imap4URL]
password: [self imap4Password]];
if (imap4)
[imap4 retain];

View File

@ -43,8 +43,11 @@
NSMutableArray *filenames;
NSString *folderType;
NSDictionary *mailboxACL;
BOOL isNamespace;
}
- (void) setIsNamespace: (BOOL) newIsNamespace;
- (NSString *) absoluteImap4Name;
/* messages */

View File

@ -44,6 +44,7 @@
#import <SOGo/DOMNode+SOGo.h>
#import <SOGo/NSArray+Utilities.h>
#import <SOGo/NSString+Utilities.h>
#import <SOGo/NSString+DAV.h>
#import <SOGo/NSArray+DAV.h>
#import <SOGo/NSObject+DAV.h>
@ -106,6 +107,7 @@ static NSString *defaultUserID = @"anyone";
{
[self _adjustOwner];
mailboxACL = nil;
isNamespace = NO;
}
return self;
@ -113,7 +115,7 @@ static NSString *defaultUserID = @"anyone";
- (void) dealloc
{
[filenames release];
[filenames release];
[folderType release];
[mailboxACL release];
[super dealloc];
@ -121,9 +123,14 @@ static NSString *defaultUserID = @"anyone";
/* IMAP4 */
- (void) setIsNamespace: (BOOL) newIsNamespace
{
isNamespace = newIsNamespace;
}
- (NSString *) relativeImap4Name
{
return [nameInContainer substringFromIndex: 6];
return [[nameInContainer substringFromIndex: 6] fromCSSIdentifier];
}
- (NSString *) absoluteImap4Name

View File

@ -34,17 +34,13 @@
- (id) init
{
SOGoUserDefaults *ud;
if ((self = [super init]))
{
SOGoUserDefaults *ud;
ud = [[context activeUser] userDefaults];
// Backward comptability with <= 1.1.0 (ComposeMessagesType)
if ([ud objectForKey: @"ComposeMessagesType"])
htmlComposition = [[ud objectForKey: @"ComposeMessagesType"] isEqualToString: @"html"];
else
htmlComposition = [[ud objectForKey: @"SOGoMailComposeMessageType"] isEqualToString: @"html"];
htmlComposition
= [[ud mailComposeMessageType] isEqualToString: @"html"];
sourceMail = nil;
currentValue = nil;
}

View File

@ -47,7 +47,7 @@
- (NSString *) jsonRepresentation;
- (NSString *) asCSSIdentifier;
- (NSString *) fromCSSIdentifier;
/* bare email addresses */
- (NSString *) pureEMailAddress;

View File

@ -322,6 +322,23 @@ static NSMutableCharacterSet *urlStartChars = nil;
return cssIdentifier;
}
- (NSString *) fromCSSIdentifier
{
NSMutableString *newString;
newString = [NSMutableString stringWithString: self];
[newString replaceString: @"_U_" withString: @"_"];
[newString replaceString: @"_D_" withString: @"."];
[newString replaceString: @"_H_" withString: @"#"];
[newString replaceString: @"_A_" withString: @"@"];
[newString replaceString: @"_S_" withString: @"*"];
[newString replaceString: @"_C_" withString: @":"];
[newString replaceString: @"_CO_" withString: @","];
[newString replaceString: @"_SP_" withString: @" "];
return newString;
}
- (NSString *) pureEMailAddress
{
NSString *pureAddress;