diff --git a/ChangeLog b/ChangeLog index 701bbb331..c82dd5abb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,29 @@ +2008-10-02 Cyril Robert + + * SoObjects/Mailer/SOGoMailFolder.m + Modified zip command acces path, defaults to /usr/bin/zip, + overwritable by sogo defaults + + * UI/MailPartViewers/UIxMailPartViewer.m + Added - (NSString *) mimeImageUrl to get an icon path for attachments + + * UI/MailerUI/UIxMailListView.m + Added: + - (NSArray *) columnsDisplayOrder + Returns the current columns order, either from sogo defaults or user defaults. + - (NSDictionary *) columnsMetaData + Returns an array of metadata (id, class) for columns header. + + * UI/MailerUI/UIxMailMainFrame.m + Added - (NSString *) defaultColumnsOrder to get the order from a js call. + + Summary: + * Columns in UIxMailListView can now be changed + * "Priority" column is smaller + * Path to zip command now configurable + * Fixed a js bug (loadImagesButton is null) + * Attachments now have an icon according to their mimetype + 2008-10-01 Wolfgang Sourdeau * SoObjects/Appointments/SOGoCalendarComponent.m diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index a462d3b90..f3908615c 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -322,7 +322,7 @@ static NSString *spoolFolder = nil; { NSException *error; NSFileManager *fm; - NSString *spoolPath, *fileName; + NSString *spoolPath, *fileName, *zipPath; NSDictionary *msgs; NSArray *messages; NSData *content, *zipContent; @@ -337,9 +337,13 @@ static NSString *spoolFolder = nil; reason: @"spoolFolderPath doesn't exist"]; return (WOResponse *)error; } + + zipPath = [[NSUserDefaults standardUserDefaults] stringForKey: @"SOGoZipPath"]; + if (![zipPath length]) + zipPath = [NSString stringWithString: @"/usr/bin/zip"]; fm = [NSFileManager defaultManager]; - if ( ![fm fileExistsAtPath: @"/usr/bin/zip"] ) { + if ( ![fm fileExistsAtPath: zipPath] ) { error = [NSException exceptionWithHTTPStatus: 500 reason: @"zip not available"]; return (WOResponse *)error; @@ -347,7 +351,7 @@ static NSString *spoolFolder = nil; zipTask = [[NSTask alloc] init]; [zipTask setCurrentDirectoryPath: spoolPath]; - [zipTask setLaunchPath: @"/usr/bin/zip"]; + [zipTask setLaunchPath: zipPath]; zipTaskArguments = [NSMutableArray arrayWithObjects: nil]; [zipTaskArguments addObject: @"SavedMessages.zip"]; diff --git a/UI/MailPartViewers/UIxMailPartViewer.m b/UI/MailPartViewers/UIxMailPartViewer.m index 596fb3198..1767a59c9 100644 --- a/UI/MailPartViewers/UIxMailPartViewer.m +++ b/UI/MailPartViewers/UIxMailPartViewer.m @@ -36,6 +36,7 @@ #import "UI/MailerUI/WOContext+UIxMailer.h" #import "UIxMailRenderingContext.h" #import "UIxMailSizeFormatter.h" +#import "UI/SOGoUI/UIxComponent.h" #import "UIxMailPartViewer.h" @@ -364,4 +365,29 @@ return url; } +- (NSString *) mimeImageUrl +{ + NSString *mimeImageFile, *mimeImageUrl; + + mimeImageFile = [NSString stringWithFormat: @"mime-%@-%@.png", + [bodyInfo objectForKey: @"type"], + [bodyInfo objectForKey: @"subtype"]]; + + mimeImageUrl = [self urlForResourceFilename: mimeImageFile]; + + if ( [mimeImageUrl length] == 0 ) + { + mimeImageFile = [NSString stringWithFormat: @"mime-%@.png", + [bodyInfo objectForKey: @"type"]]; + mimeImageUrl = [self urlForResourceFilename: mimeImageFile]; + } + + if ( [mimeImageUrl length] == 0 ) + { + mimeImageUrl = [self urlForResourceFilename: @"mime-unknown.png"]; + } + + return mimeImageUrl; +} + @end /* UIxMailPartViewer */ diff --git a/UI/MailerUI/UIxMailListView.m b/UI/MailerUI/UIxMailListView.m index efe2d15ad..8d3de1ad5 100644 --- a/UI/MailerUI/UIxMailListView.m +++ b/UI/MailerUI/UIxMailListView.m @@ -49,6 +49,7 @@ #import #import #import +#import #import "UIxMailListView.h" @@ -667,6 +668,67 @@ return [labels componentsJoinedByString: @" "]; } +- (NSArray *) columnsDisplayOrder +{ + NSMutableArray *columnsDisplayOrder; + NSMutableDictionary *columnsMetaData; + NSArray *userDefinedOrder; + SOGoUserDefaults *ud; + int i; + + ud = [[context activeUser] userSettings]; + userDefinedOrder = [NSArray arrayWithArray: [ud arrayForKey: @"SOGoMailListViewColumnsOrder"]]; + if ( [userDefinedOrder count] == 0 ) { + userDefinedOrder = [[NSUserDefaults standardUserDefaults] arrayForKey: @"SOGoMailListViewColumnsOrder"]; + } + + columnsMetaData = [self columnsMetaData]; + columnsDisplayOrder = [NSMutableArray array]; + + for(i = 0; i < [userDefinedOrder count]; i += 1) + { + [columnsDisplayOrder addObject: + [columnsMetaData objectForKey: + [userDefinedOrder objectAtIndex: i]]]; + } + + return columnsDisplayOrder; +} + +- (NSDictionary *) columnsMetaData +{ + NSMutableDictionary *columnsMetaData; + NSArray *tmpColumns, *tmpKeys; + columnsMetaData = [NSMutableDictionary dictionaryWithCapacity:8]; + + tmpKeys = [NSArray arrayWithObjects: @"headerClass", @"headerId", @"value", nil]; + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell sortableTableHeader", @"subjectHeader", @"Subject", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"Subject"]; + + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell messageFlagColumn", @"invisibleHeader", @"Invisible", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"Invisible"]; + + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell messageFlagColumn", @"attachmentHeader", @"Attachment", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"Attachment"]; + + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell", @"messageFlagHeader", @"Unread", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"Unread"]; + + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell sortableTableHeader", @"toHeader", @"To", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"To"]; + + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell sortableTableHeader", @"fromHeader", @"From", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"From"]; + + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell sortableTableHeader", @"dateHeader", @"Date", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"Date"]; + + tmpColumns = [NSArray arrayWithObjects: @"tbtv_headercell", @"priorityHeader", @"Priority", nil]; + [columnsMetaData setObject: [NSDictionary dictionaryWithObjects: tmpColumns forKeys: tmpKeys] forKey: @"Priority"]; + + return columnsMetaData; +} + @end /* UIxMailListView */ diff --git a/UI/MailerUI/UIxMailMainFrame.m b/UI/MailerUI/UIxMailMainFrame.m index 65ad37976..6222ca1c7 100644 --- a/UI/MailerUI/UIxMailMainFrame.m +++ b/UI/MailerUI/UIxMailMainFrame.m @@ -21,6 +21,7 @@ #import #import +#import #import #import @@ -78,6 +79,17 @@ return [accountNames jsonRepresentation]; } +- (NSString *) defaultColumnsOrder +{ + NSArray *defaultColumnsOrder; + NSUserDefaults *sud; + + sud = [NSUserDefaults standardUserDefaults]; + defaultColumnsOrder = [NSArray arrayWithArray: [sud arrayForKey: @"SOGoMailListViewColumnsOrder"]]; + + return [defaultColumnsOrder jsonRepresentation]; +} + - (NSString *) quotaSupport { NSEnumerator *accountNames; diff --git a/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox b/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox index f08af1f3c..bba7fd1a1 100644 --- a/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox +++ b/UI/Templates/MailPartViewers/UIxMailPartLinkViewer.wox @@ -10,14 +10,11 @@ + > +
- : - / - , - - : - + ()