Implemented mail messages templates and layouts

This commit is contained in:
Franck Allimant
2013-11-26 19:20:45 +01:00
committed by Manuel Raynaud
parent e675be4cff
commit 33e0a854f2
40 changed files with 2377 additions and 201 deletions

View File

@@ -82,9 +82,15 @@ class Message extends BaseAction implements EventSubscriberInterface
->setTitle($event->getTitle())
->setSubject($event->getSubject())
->setHtmlMessage($event->getHtmlMessage())
->setTextMessage($event->getTextMessage())
->setHtmlLayoutFileName($event->getHtmlLayoutFileName())
->setHtmlTemplateFileName($event->getHtmlTemplateFileName())
->setTextLayoutFileName($event->getTextLayoutFileName())
->setTextTemplateFileName($event->getTextTemplateFileName())
->save();
$event->setMessage($message);

View File

@@ -288,8 +288,18 @@ class Order extends BaseAction implements EventSubscriberInterface
*/
public function sendOrderEmail(OrderEvent $event)
{
$store_email = ConfigQuery::read('store_email');
if($store_email) {
$contact_email = ConfigQuery::read('contact_email');
if($contact_email) {
$message = MessageQuery::create()
->filterByName('order_confirmation')
->findOne();
if (false === $message) {
throw new \Exception("Failed to load message 'order_confirmation'.");
}
$order = $event->getOrder();
$customer = $order->getCustomer();
@@ -298,24 +308,16 @@ class Order extends BaseAction implements EventSubscriberInterface
$parser->assign('order_id', $order->getId());
$parser->assign('order_ref', $order->getRef());
$message = MessageQuery::create()
->filterByName('order_confirmation')
->findOne();
$message
->setLocale($order->getLang()->getLocale());
$subject = $parser->fetch(sprintf("string:%s", $message->getSubject()));
$htmlMessage = $parser->fetch(sprintf("string:%s", $message->getHtmlMessage()));
$textMessage = $parser->fetch(sprintf("string:%s", $message->getTextMessage()));
$instance = \Swift_Message::newInstance($subject)
$instance = \Swift_Message::newInstance()
->addTo($customer->getEmail(), $customer->getFirstname()." ".$customer->getLastname())
->addFrom($store_email, ConfigQuery::read('store_name'))
->addFrom(ConfigQuery::read('contact_email'), ConfigQuery::read('company_name'))
;
$instance
->setBody($htmlMessage, 'text/html')
->addPart($textMessage, 'text/plain');
// Build subject and body
$message->build($parser, $instance);
$mail = $this->getMailer()->send($instance);
}