diff --git a/ChangeLog b/ChangeLog index c6ffd8341..1f3cb42ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,32 @@ 2006-07-11 Wolfgang Sourdeau + * UI/Templates/MailerUI/UIxMailView.wox: added a div of class + "menu" and id "addressMenu" have the header email addresses + display it with the new menu code in generic.js. + + * UI/Templates/MailerUI/UIxMailPanelFrame.wox: same as below + + replaced the body tables with a div of class "pageContent" + (standardization across the page templates). + + * UI/Templates/MailerUI/UIxMailMainFrame.wox: include + productJavaScriptURL and pageJavaScriptURL (conditionnally) since + those are now inherited from UIxPageFrame. + + * UI/MailerUI/UIxMailView.js: new file specific to UIxMailView. + + * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): if + a "mailto" URL parameter is detected and the "to" array is empty, + initialize "to" with the value of "mailto" before returning it. + + * UI/MailerUI/UIxMailEditorAction.m ([UIxMailEditorAction + -composeAction]): rewrote method in a cleaner way and with usage + of the URL extensions to NSString and NSDictionary (see below). + Also, if a "mailto" url parameter is detected, pass it to the + redirected url. + + * UI/MailerUI/UIxMailMainFrame.m: subclassed from UIxPageFrame to + reduce code. + * UI/Common/NSDictionary+URL.m ([NSDictionary -asURLParameters]): returns a parameter string to add to a base URL. diff --git a/UI/MailerUI/French.lproj/Localizable.strings b/UI/MailerUI/French.lproj/Localizable.strings index 4f5876518..49ab9ac29 100644 --- a/UI/MailerUI/French.lproj/Localizable.strings +++ b/UI/MailerUI/French.lproj/Localizable.strings @@ -88,3 +88,8 @@ /* MailMoveToPopUp */ "MoveTo" = "Déplacer vers"; + +/* Address Popup menu */ +"Add to Address Book..." = "Ajouter au carnet d'adresses"; +"Compose Mail To" = "Écrire à"; +"Create Filter From Message..." = "Créer un filtre à partir du message..."; diff --git a/UI/MailerUI/GNUmakefile b/UI/MailerUI/GNUmakefile index 6c6aac881..9def5acbb 100644 --- a/UI/MailerUI/GNUmakefile +++ b/UI/MailerUI/GNUmakefile @@ -45,6 +45,7 @@ MailerUI_OBJC_FILES += \ MailerUI_RESOURCE_FILES += \ Version \ product.plist \ + UIxMailView.js \ Toolbars/*.toolbar \ Images/*.png diff --git a/UI/MailerUI/UIxMailEditorAction.m b/UI/MailerUI/UIxMailEditorAction.m index eabab2598..ab43a8703 100644 --- a/UI/MailerUI/UIxMailEditorAction.m +++ b/UI/MailerUI/UIxMailEditorAction.m @@ -27,9 +27,12 @@ #include #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 */ diff --git a/UI/MailerUI/UIxMailMainFrame.m b/UI/MailerUI/UIxMailMainFrame.m index 8a9d08604..5a95c8400 100644 --- a/UI/MailerUI/UIxMailMainFrame.m +++ b/UI/MailerUI/UIxMailMainFrame.m @@ -20,13 +20,13 @@ */ #include +#include "../Common/UIxPageFrame.h" -@interface UIxMailMainFrame : UIxComponent +@interface UIxMailMainFrame : UIxPageFrame { NSString *title; NSString *rootURL; NSString *userRootURL; - id item; struct { int hideFolderTree:1; int hideFrame:1; /* completely disables all the frame around the comp. */ @@ -61,8 +61,6 @@ static NSString *treeRootClassName = nil; } - (void)dealloc { - [self->item release]; - [self->title release]; [self->rootURL release]; [self->userRootURL release]; [super dealloc]; @@ -88,23 +86,6 @@ static NSString *treeRootClassName = nil; return self->mmfFlags.hideFrame ? YES : NO; } -- (void)setTitle:(NSString *)_value { - ASSIGNCOPY(self->title, _value); -} -- (NSString *)title { - if ([self->title length] == 0) - return @"OpenGroupware.org"; - - return self->title; -} - -- (void)setItem:(id)_item { - ASSIGN(self->item, _item); -} -- (id)item { - return self->item; -} - - (NSString *)pageFormURL { NSString *u; NSRange r; @@ -161,13 +142,6 @@ static NSString *treeRootClassName = nil; return nil; } -/* notifications */ - -- (void)sleep { - [self->item release]; self->item = nil; - [super sleep]; -} - /* URL generation */ // TODO: I think all this should be done by the clientObject?! // TODO: is the stuff below necessary at all in the mailer frame? @@ -236,24 +210,6 @@ static NSString *treeRootClassName = nil; @"", errorText]; } -/* URLs */ - -- (NSString *)relativeHomePath { - return [self relativePathToUserFolderSubPath:@""]; -} - -- (NSString *)relativeCalendarPath { - return [self relativePathToUserFolderSubPath:@"Calendar/"]; -} - -- (NSString *)relativeContactsPath { - return [self relativePathToUserFolderSubPath:@"Contacts/"]; -} - -- (NSString *)relativeMailPath { - return [self relativePathToUserFolderSubPath:@"Mail/"]; -} - @end /* UIxMailMainFrame */ @implementation UIxMailPanelFrame diff --git a/UI/MailerUI/UIxMailToSelection.m b/UI/MailerUI/UIxMailToSelection.m index bd8024432..251c43be6 100644 --- a/UI/MailerUI/UIxMailToSelection.m +++ b/UI/MailerUI/UIxMailToSelection.m @@ -102,11 +102,20 @@ static NSArray *headers = nil; /* accessors */ -- (void)setTo:(NSArray *)_to { +- (void)setTo:(NSArray *)_to +{ _to = [self properlySplitAddresses:_to]; ASSIGNCOPY(self->to, _to); } -- (NSArray *)to { + +- (NSArray *) to +{ + NSString *mailto; + + mailto = [self queryParameterForKey:@"mailto"]; + if ([mailto length] > 0 && ![to count]) + to = [NSArray arrayWithObject: mailto]; + return self->to; } @@ -114,6 +123,7 @@ static NSArray *headers = nil; _cc = [self properlySplitAddresses:_cc]; ASSIGNCOPY(self->cc, _cc); } + - (NSArray *)cc { return self->cc; } diff --git a/UI/MailerUI/product.plist b/UI/MailerUI/product.plist index 79e0802d8..2ec676446 100644 --- a/UI/MailerUI/product.plist +++ b/UI/MailerUI/product.plist @@ -306,15 +306,15 @@ methods = { view = { protectedBy = "View"; - pageName = "UIxMailListView"; + pageName = "UIxMailListView"; }; getMail = { protectedBy = "View"; - pageName = "UIxMailListView"; + pageName = "UIxMailListView"; }; compose = { protectedBy = "View"; - actionClass = "UIxMailEditorAction"; + actionClass = "UIxMailEditorAction"; actionName = "compose"; }; }; diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index d3be199b6..2cac0afc2 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -17,13 +17,21 @@ + - + + + + + + + + diff --git a/UI/Templates/MailerUI/UIxMailPanelFrame.wox b/UI/Templates/MailerUI/UIxMailPanelFrame.wox index 92ade7685..9bf352252 100644 --- a/UI/Templates/MailerUI/UIxMailPanelFrame.wox +++ b/UI/Templates/MailerUI/UIxMailPanelFrame.wox @@ -17,6 +17,7 @@ + @@ -27,6 +28,13 @@ /> + + + + + + + @@ -36,7 +44,7 @@ - + @@ -101,14 +109,10 @@ - - - - - -
- -
+ +
+ +
diff --git a/UI/Templates/MailerUI/UIxMailView.wox b/UI/Templates/MailerUI/UIxMailView.wox index 2821a6256..2f0acc301 100644 --- a/UI/Templates/MailerUI/UIxMailView.wox +++ b/UI/Templates/MailerUI/UIxMailView.wox @@ -9,6 +9,21 @@ className="UIxMailPanelFrame" title="panelTitle" > + + +