diff options
author | DINH Viêt Hoà <dinh.viet.hoa@gmail.com> | 2013-04-22 15:33:52 -0700 |
---|---|---|
committer | DINH Viêt Hoà <dinh.viet.hoa@gmail.com> | 2013-04-22 15:33:52 -0700 |
commit | 9a5c778214090b9c0fa58d65521c35b01cbcd663 (patch) | |
tree | 73dd16206a521984a5a26b479038a4d7300070c9 | |
parent | 644cba1be241d1c24ad6b0df82733f7b9fbc1666 (diff) | |
parent | 525417569a211ce6cc1dc37bbd269cc5bd1bc2f2 (diff) |
Merge pull request #35 from kgrigsby59/master
Fixes for html rendering
-rw-r--r-- | src/core/abstract/MCMessageHeader.cc | 49 | ||||
-rw-r--r-- | src/core/renderer/MCHTMLRenderer.cpp | 12 | ||||
-rw-r--r-- | src/objc/abstract/MCOAbstractMessageRendererCallback.mm | 4 |
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(); |