From 62905f12b49ef82a84023ee18ef145a64ad1445a Mon Sep 17 00:00:00 2001 From: helge Date: Tue, 12 Jul 2005 14:28:21 +0000 Subject: [PATCH] perform some validation prior trying to send mail (#1451) git-svn-id: http://svn.opengroupware.org/SOGo/trunk@724 d1b88da0-ebda-0310-925b-ed51d893ca5b --- SOGo/UI/MailerUI/ChangeLog | 4 ++++ SOGo/UI/MailerUI/UIxMailEditor.m | 34 +++++++++++++++++++++++++++++++- SOGo/UI/MailerUI/Version | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/SOGo/UI/MailerUI/ChangeLog b/SOGo/UI/MailerUI/ChangeLog index 39c4ceff..afe4b66a 100644 --- a/SOGo/UI/MailerUI/ChangeLog +++ b/SOGo/UI/MailerUI/ChangeLog @@ -1,5 +1,9 @@ 2005-07-12 Helge Hess + * UIxMailEditor.m: perform some validation plus error handling prior + trying to send a mail (check whether we have recipients, check + whether the subject is set) (#1451) (v0.9.139) + * UIxMailEditor.m: properly determine from-email addresses (v0.9.138) * UIxMailEditor.m: use new SoUser API instead of AgenorUserManager diff --git a/SOGo/UI/MailerUI/UIxMailEditor.m b/SOGo/UI/MailerUI/UIxMailEditor.m index ebc46c2b..449744cb 100644 --- a/SOGo/UI/MailerUI/UIxMailEditor.m +++ b/SOGo/UI/MailerUI/UIxMailEditor.m @@ -169,6 +169,13 @@ static NSArray *infoKeys = nil; return [self->bcc isNotNull] ? self->bcc : [NSArray array]; } +- (BOOL)hasOneOrMoreRecipients { + if ([[self to] count] > 0) return YES; + if ([[self cc] count] > 0) return YES; + if ([[self bcc] count] > 0) return YES; + return NO; +} + /* from addresses */ - (NSArray *)fromEMails { @@ -324,6 +331,21 @@ static NSArray *infoKeys = nil; return [self _saveFormInfo] ? self : [self failedToSaveFormResponse]; } +- (NSException *)validateForSend { + // TODO: localize errors + + if (![self hasOneOrMoreRecipients]) { + return [NSException exceptionWithHTTPStatus:400 /* Bad Request */ + reason:@"Please select a recipient!"]; + } + if ([[self subject] length] == 0) { + return [NSException exceptionWithHTTPStatus:400 /* Bad Request */ + reason:@"Please set a subject!"]; + } + + return nil; +} + - (id)sendAction { NSException *error; NSString *mailPath; @@ -335,7 +357,17 @@ static NSArray *infoKeys = nil; if (![self _saveFormInfo]) return [self failedToSaveFormResponse]; - + + /* validate for send */ + + if ((error = [self validateForSend]) != nil) { + id url; + + url = [[error reason] stringByEscapingURL]; + url = [@"edit?error=" stringByAppendingString:url]; + return [self redirectToLocation:url]; + } + /* setup some extra headers if required */ h = [self isInternetRequest] ? internetMailHeaders : nil; diff --git a/SOGo/UI/MailerUI/Version b/SOGo/UI/MailerUI/Version index 5ce1ef83..72fcdb5c 100644 --- a/SOGo/UI/MailerUI/Version +++ b/SOGo/UI/MailerUI/Version @@ -1,6 +1,6 @@ # version file -SUBMINOR_VERSION:=138 +SUBMINOR_VERSION:=139 # v0.9.134 requires libSOGo v0.9.41 # v0.9.100 requires libNGMime v4.5.213 -- 2.39.2