diff --git a/ChangeLog b/ChangeLog index 54275283a..a1bba5dc7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-03-06 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m + (-archiveUIDs:inArchiveNamed:inContext:): output filename is now + escaped without its extension. + + * SoObjects/Contacts/NGVCard+SOGo.m + (-_setupEmailFieldsInLDIFRecord:): simplified code and fixed a bug + where the home mail would be taken for both first and second email + fields when no work mail was present. + 2012-03-02 Wolfgang Sourdeau * OpenChange/MAPIStoreAppointmentWrapper.m,, diff --git a/SoObjects/Contacts/NGVCard+SOGo.m b/SoObjects/Contacts/NGVCard+SOGo.m index da86be3fa..250dc7e1a 100644 --- a/SoObjects/Contacts/NGVCard+SOGo.m +++ b/SoObjects/Contacts/NGVCard+SOGo.m @@ -351,40 +351,38 @@ convention: - (void) _setupEmailFieldsInLDIFRecord: (NSMutableDictionary *) ldifRecord { NSArray *elements; - NSString *workMail, *homeMail, *potential; - unsigned int max; + NSString *workMail, *homeMail, *mail, *secondEmail; + NSUInteger max; elements = [self childrenWithTag: @"email"]; - max = [elements count]; - workMail = [self _simpleValueForType: @"work" - inArray: elements excluding: nil]; - homeMail = [self _simpleValueForType: @"home" - inArray: elements excluding: nil]; + max = [elements count]; if (max > 0) { - potential = [[elements objectAtIndex: 0] flattenedValuesForKey: @""]; - if (!workMail) - { - if (homeMail && homeMail == potential) - { - if (max > 1) - workMail = [[elements objectAtIndex: 1] flattenedValuesForKey: @""]; - } - else - workMail = potential; - } - if (!homeMail && max > 1) - { - if (workMail && workMail == potential) - homeMail = [[elements objectAtIndex: 1] flattenedValuesForKey: @""]; - else - homeMail = potential; - } - } + workMail = [self _simpleValueForType: @"work" + inArray: elements excluding: nil]; + homeMail = [self _simpleValueForType: @"home" + inArray: elements excluding: nil]; - [self _setValue: @"mail" to: workMail inLDIFRecord: ldifRecord]; - [self _setValue: @"mozillasecondemail" to: homeMail inLDIFRecord: ldifRecord]; + mail = workMail; + if (mail) + secondEmail = homeMail; + else + { + secondEmail = nil; + mail = homeMail; + } + + if (!mail) + { + mail = [elements objectAtIndex: 0]; + if (max > 1) /* we know secondEmail is not set here either... */ + secondEmail = [elements objectAtIndex: 1]; + } + + [self _setValue: @"mail" to: mail inLDIFRecord: ldifRecord]; + [self _setValue: @"mozillasecondemail" to: secondEmail inLDIFRecord: ldifRecord]; + } [self _setValue: @"mozillausehtmlmail" to: [[self uniqueChildWithTag: @"x-mozilla-html"] diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index 886a9b032..1ba3109da 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -482,7 +482,7 @@ static NSString *defaultUserID = @"anyone"; { NSException *error; NSFileManager *fm; - NSString *spoolPath, *fileName, *zipPath, *qpFileName; + NSString *spoolPath, *fileName, *baseName, *extension, *zipPath, *qpFileName; NSDictionary *msgs; NSArray *messages; NSData *content, *zipContent; @@ -547,7 +547,17 @@ static NSString *defaultUserID = @"anyone"; } response = [context response]; - qpFileName = [archiveName asQPSubjectString: @"utf-8"]; + + baseName = [archiveName stringByDeletingPathExtension]; + extension = [archiveName pathExtension]; + if ([extension length] > 0) + extension = [@"." stringByAppendingString: extension]; + else + extension = @""; + + qpFileName = [NSString stringWithFormat: @"%@%@", + [baseName asQPSubjectString: @"utf-8"], + extension]; [response setHeader: [NSString stringWithFormat: @"application/zip;" @" name=\"%@\"", qpFileName]