2007-11-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
+ -contentForReply]): make use of the SOGoMailReply WO page.
+
+ * SoObjects/Mailer/SOGoMailReply.[hm]: new class module copied
+ from SOGoMailForward to handle mail replies instead. Only three
+ methods remaining: date, from and messageBody. The latter is
+ quoted properly.
+
+ * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
+ -fetchMailForForwarding:sourceMail]): fetch attachments for
+ forwarded messages.
+
+ * UI/MailerUI/UIxMailListView.m ([UIxMailListView
+ -hasMessageAttachment]): initialize hasAttachment with "NO" to
+ avoid false positives.
+
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor -extractQuickFieldsFromEvent:_event])
([OCSiCalFieldExtractor -extractQuickFieldsFromTodo:_task]):
set title to an empty string where the event/task summary is null.
SOGoVCardMailBodyPart.m \
\
SOGoMailForward.m \
+ SOGoMailReply.m \
\
NSData+Mail.m \
NSString+Mail.m
Mailer_RESOURCE_FILES += \
SOGoMailEnglishForward.wo \
SOGoMailFrenchForward.wo \
- SOGoMailGermanForward.wo
+ SOGoMailGermanForward.wo \
+ SOGoMailEnglishReply.wo \
+ SOGoMailFrenchReply.wo \
+ SOGoMailGermanReply.wo
ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/sope-gdl1/
ADDITIONAL_LIB_DIRS += -L../../SOPE/sope-gdl1/GDLContentStore/obj/
if (headerValue)
[headers setObject: headerValue
forKey: headerKeys[count]];
- else
+ else if ([headers objectForKey: headerKeys[count]])
[headers removeObjectForKey: headerKeys[count]];
}
/* attach message */
currentUser = [context activeUser];
if ([[currentUser messageForwarding] isEqualToString: @"inline"])
- [self setText: [sourceMail contentForInlineForward]];
+ {
+ [self setText: [sourceMail contentForInlineForward]];
+ [self _fetchAttachments: [sourceMail fetchFileAttachmentKeys]
+ fromMail: sourceMail];
+ }
else
{
// TODO: use subject for filename?
--- /dev/null
+On <#date/>, <#from/> wrote:
+
+<#messageBody/>
--- /dev/null
+date: WOString {
+ value = date;
+ escapeHTML = NO;
+}
+
+from: WOString {
+ value = from;
+ escapeHTML = NO;
+}
+
+messageBody: WOString {
+ value = messageBody;
+ escapeHTML = NO;
+}
--- /dev/null
+Le <#date/>, <#from/> a écrit:
+
+<#messageBody/>
--- /dev/null
+date: WOString {
+ value = date;
+ escapeHTML = NO;
+}
+
+from: WOString {
+ value = from;
+ escapeHTML = NO;
+}
+
+messageBody: WOString {
+ value = messageBody;
+ escapeHTML = NO;
+}
--- /dev/null
+On <#date/>, <#from/> wrote:
+
+<#messageBody/>
--- /dev/null
+date: WOString {
+ value = date;
+ escapeHTML = NO;
+}
+
+from: WOString {
+ value = from;
+ escapeHTML = NO;
+}
+
+messageBody: WOString {
+ value = messageBody;
+ escapeHTML = NO;
+}
#import "NSString+Mail.h"
#import "SOGoMailForward.h"
#import "SOGoMailObject+Draft.h"
+#import "SOGoMailReply.h"
#define maxFilenameLength 64
- (NSString *) contentForReply
{
- return [[self contentForEditing] stringByApplyingMailQuoting];
+ SOGoUser *currentUser;
+ NSString *pageName;
+ SOGoMailReply *page;
+
+ currentUser = [context activeUser];
+ pageName = [NSString stringWithFormat: @"SOGoMail%@Reply",
+ [currentUser language]];
+ page = [[WOApplication application] pageWithName: pageName
+ inContext: context];
+ [page setRepliedMail: self];
+
+ return [[page generateResponse] contentAsString];
}
- (NSString *) filenameForForward
--- /dev/null
+/* SOGoMailReply.h - this file is part of SOGo
+ *
+ * Copyright (C) 2007 Inverse groupe conseil
+ *
+ * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef SOGOMAILREPLY_H
+#define SOGOMAILREPLY_H
+
+#import <NGObjWeb/SoComponent.h>
+
+@class SOGoMailObject;
+
+@interface SOGoMailReply : SoComponent
+{
+ SOGoMailObject *sourceMail;
+ NSString *field;
+ NSString *currentValue;
+}
+
+- (void) setRepliedMail: (SOGoMailObject *) newSourceMail;
+
+@end
+
+@interface SOGoMailEnglishReply : SOGoMailReply
+@end
+
+@interface SOGoMailFrenchReply : SOGoMailReply
+@end
+
+@interface SOGoMailGermanReply : SOGoMailReply
+@end
+
+#endif /* SOGOMAILREPLY_H */
--- /dev/null
+/* SOGoMailReply.m - this file is part of SOGo
+ *
+ * Copyright (C) 2007 Inverse groupe conseil
+ *
+ * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#import <NGObjWeb/WOContext+SoObjects.h>
+
+#import <SoObjects/SOGo/SOGoDateFormatter.h>
+#import <SoObjects/SOGo/SOGoUser.h>
+
+#import "SOGoMailObject+Draft.h"
+#import "SOGoMailReply.h"
+
+@implementation SOGoMailReply
+
+- (id) init
+{
+ if ((self = [super init]))
+ {
+ sourceMail = nil;
+ currentValue = nil;
+ }
+
+ return self;
+}
+
+- (void) dealloc
+{
+ [sourceMail release];
+ [currentValue release];
+ [super dealloc];
+}
+
+- (void) setRepliedMail: (SOGoMailObject *) newSourceMail
+{
+ ASSIGN (sourceMail, newSourceMail);
+}
+
+- (NSString *) date
+{
+ SOGoDateFormatter *formatter;
+
+ formatter = [[context activeUser] dateFormatterInContext: context];
+
+ return [formatter formattedDateAndTime: [sourceMail date]];
+}
+
+- (NSString *) from
+{
+ return [[sourceMail mailHeaders] objectForKey: @"from"];
+}
+
+- (NSString *) messageBody
+{
+ return [[sourceMail contentForEditing] stringByApplyingMailQuoting];
+}
+
+@end
+
+@implementation SOGoMailEnglishReply
+@end
+
+@implementation SOGoMailFrenchReply
+@end
+
+@implementation SOGoMailGermanReply
+@end
NSDictionary *currentDisp;
BOOL hasAttachment;
+ hasAttachment = NO;
+
parts = [[message objectForKey: @"body"] objectForKey: @"parts"];
if ([parts count] > 1)
{
hasAttachment = ([[currentDisp objectForKey: @"type"]
isEqualToString: @"ATTACHMENT"]);
}
- else
- hasAttachment = NO;
return hasAttachment;
}
{ visibility: hidden;
position: absolute;
z-index: 1000;
+ top: -1000px;
background-color: #d6cfc6;
color: #000;
margin: 0px;