aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar DINH Viêt Hoà <dinh.viet.hoa@gmail.com>2013-04-22 15:33:52 -0700
committerGravatar DINH Viêt Hoà <dinh.viet.hoa@gmail.com>2013-04-22 15:33:52 -0700
commit9a5c778214090b9c0fa58d65521c35b01cbcd663 (patch)
tree73dd16206a521984a5a26b479038a4d7300070c9
parent644cba1be241d1c24ad6b0df82733f7b9fbc1666 (diff)
parent525417569a211ce6cc1dc37bbd269cc5bd1bc2f2 (diff)
Merge pull request #35 from kgrigsby59/master
Fixes for html rendering
-rw-r--r--src/core/abstract/MCMessageHeader.cc49
-rw-r--r--src/core/renderer/MCHTMLRenderer.cpp12
-rw-r--r--src/objc/abstract/MCOAbstractMessageRendererCallback.mm4
3 files changed, 44 insertions, 21 deletions
diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc
index 61c126ff..e0476743 100644
--- a/src/core/abstract/MCMessageHeader.cc
+++ b/src/core/abstract/MCMessageHeader.cc
@@ -1070,8 +1070,9 @@ Array * MessageHeader::recipientWithReplyAll(bool replyAll, bool includeTo, bool
hasCc = false;
addedAddresses = new Set();
- if (senderEmails->containsObject(from()->mailbox()->lowercaseString()) ||
- senderEmails->containsObject(sender()->mailbox()->lowercaseString())) {
+ if (senderEmails != NULL &&
+ (senderEmails->containsObject(from()->mailbox()->lowercaseString()) ||
+ senderEmails->containsObject(sender()->mailbox()->lowercaseString()))) {
Array * recipient;
recipient = new Array();
@@ -1130,7 +1131,7 @@ Array * MessageHeader::recipientWithReplyAll(bool replyAll, bool includeTo, bool
else {
addedAddresses->addObjectsFromArray(senderEmails);
- if (replyTo()->count() > 0) {
+ if (replyTo() != NULL && replyTo()->count() > 0) {
hasTo = true;
toField = replyTo();
for(unsigned int i = 0 ; i < replyTo()->count() ; i ++) {
@@ -1141,7 +1142,7 @@ Array * MessageHeader::recipientWithReplyAll(bool replyAll, bool includeTo, bool
}
}
else {
- if (from()->mailbox() != NULL) {
+ if (from() != NULL && from()->mailbox() != NULL) {
hasTo = true;
toField = Array::arrayWithObject(from());
addedAddresses->addObject(from()->mailbox()->lowercaseString());
@@ -1201,14 +1202,23 @@ MessageHeader * MessageHeader::replyHeader(bool replyAll, Array * addressesExclu
Array * inReplyTo;
Array * toValue;
Array * ccValue;
-
+
+ referencesValue = NULL;
+ inReplyTo = NULL;
+
result = new MessageHeader();
subjectValue = MCSTR("Re: ")->stringByAppendingString(subject());
- referencesValue = (Array *) (references()->copy());
- referencesValue->autorelease();
- referencesValue->addObject(messageID());
- inReplyTo = Array::array();
- inReplyTo->addObject(messageID());
+ if (references() != NULL) {
+ referencesValue = (Array *) (references()->copy());
+ referencesValue->autorelease();
+ if (messageID() != NULL ) {
+ referencesValue->addObject(messageID());
+ }
+ }
+ if (messageID()) {
+ inReplyTo = Array::array();
+ inReplyTo->addObject(messageID());
+ }
toValue = recipientWithReplyAll(replyAll, true, false, addressesExcludedFromRecipient);
ccValue = recipientWithReplyAll(replyAll, false, true, addressesExcludedFromRecipient);;
@@ -1229,13 +1239,22 @@ MessageHeader * MessageHeader::forwardHeader()
Array * referencesValue;
Array * inReplyTo;
+ referencesValue = NULL;
+ inReplyTo = NULL;
+
result = new MessageHeader();
subjectValue = MCSTR("Fw: ")->stringByAppendingString(subject());
- referencesValue = (Array *) (references()->copy());
- referencesValue->autorelease();
- referencesValue->addObject(messageID());
- inReplyTo = Array::array();
- inReplyTo->addObject(messageID());
+ if (references() != NULL) {
+ referencesValue = (Array *) (references()->copy());
+ referencesValue->autorelease();
+ if (messageID() != NULL ) {
+ referencesValue->addObject(messageID());
+ }
+ }
+ if (messageID()) {
+ inReplyTo = Array::array();
+ inReplyTo->addObject(messageID());
+ }
result->setSubject(subjectValue);
result->setReferences(referencesValue);
result->setInReplyTo(inReplyTo);
diff --git a/src/core/renderer/MCHTMLRenderer.cpp b/src/core/renderer/MCHTMLRenderer.cpp
index 71454a0e..7d03f650 100644
--- a/src/core/renderer/MCHTMLRenderer.cpp
+++ b/src/core/renderer/MCHTMLRenderer.cpp
@@ -328,17 +328,21 @@ String * htmlForAbstractSinglePart(AbstractPart * part, htmlRendererContext * co
String * htmlForAbstractMessagePart(AbstractMessagePart * part, htmlRendererContext * context)
{
- String * substring = htmlForAbstractPart(part->mainPart(), context);
if (context->pass == 0) {
return NULL;
}
+ String * substring = htmlForAbstractPart(part->mainPart(), context);
MCAssert(substring != NULL);
- String * result = String::string();
HashMap * values = context->htmlCallback->templateValuesForHeader(part->header());
String * headerString = renderTemplate(context->htmlCallback->templateForEmbeddedMessageHeader(), values);
- result->appendString(headerString);
- result->appendString(substring);
+
+ HashMap * msgValues = new HashMap();
+ msgValues->setObjectForKey(MCSTR("HEADER"), headerString);
+ msgValues->setObjectForKey(MCSTR("BODY"), substring);
+ String * result = renderTemplate(context->htmlCallback->templateForEmbeddedMessage(), msgValues);
+ msgValues->release();
+
return result;
}
diff --git a/src/objc/abstract/MCOAbstractMessageRendererCallback.mm b/src/objc/abstract/MCOAbstractMessageRendererCallback.mm
index 8905acf5..883cb25f 100644
--- a/src/objc/abstract/MCOAbstractMessageRendererCallback.mm
+++ b/src/objc/abstract/MCOAbstractMessageRendererCallback.mm
@@ -104,7 +104,7 @@ mailcore::String * MCOAbstractMessageRendererCallback::templateForEmbeddedMessag
{
mailcore::String * result = NULL;
if ([mRendererDelegate respondsToSelector:@selector(MCOAbstractMessage_templateForEmbeddedMessage:)]) {
- return MCO_FROM_OBJC(mailcore::String, [mRendererDelegate MCOAbstractMessage_templateForEmbeddedMessage:mMessage]);
+ result = MCO_FROM_OBJC(mailcore::String, [mRendererDelegate MCOAbstractMessage_templateForEmbeddedMessage:mMessage]);
}
if (result == NULL) {
result = mailcore::HTMLRendererTemplateCallback::templateForEmbeddedMessage();
@@ -116,7 +116,7 @@ mailcore::String * MCOAbstractMessageRendererCallback::templateForEmbeddedMessag
{
mailcore::String * result = NULL;
if ([mRendererDelegate respondsToSelector:@selector(MCOAbstractMessage_templateForEmbeddedMessageHeader:)]) {
- return MCO_FROM_OBJC(mailcore::String, [mRendererDelegate MCOAbstractMessage_templateForEmbeddedMessageHeader:mMessage]);
+ result = MCO_FROM_OBJC(mailcore::String, [mRendererDelegate MCOAbstractMessage_templateForEmbeddedMessageHeader:mMessage]);
}
if (result == NULL) {
result = mailcore::HTMLRendererTemplateCallback::templateForEmbeddedMessageHeader();