Add a method for sending newsletters via new Mailer class

This commit is contained in:
Tautvidas Sipavičius
2016-01-13 13:04:21 +02:00
parent 1b2cf7bd16
commit 2cb32e7a78
4 changed files with 54 additions and 18 deletions

View File

@ -73,7 +73,7 @@ define([
Module.previewNewsletter = function(options) {
return MailPoet.Ajax.post({
endpoint: 'newsletters',
action: 'preview',
action: 'sendPreview',
data: options || {},
});
};

View File

@ -242,26 +242,25 @@ define([
console.log('trying to send a preview');
// get form data
var data = {
from_name: this.$('#mailpoet_preview_from_name').val(),
from_email: this.$('#mailpoet_preview_from_email').val(),
to_email: this.$('#mailpoet_preview_to_email').val(),
newsletter: App.newsletterId,
sender: {
name: this.$('#mailpoet_preview_from_name').val(),
address: this.$('#mailpoet_preview_from_email').val(),
},
subscriber: this.$('#mailpoet_preview_to_email').val(),
id: App.getNewsletter().get('id'),
};
// send test email
MailPoet.Modal.loading(true);
// TODO: Migrate logic to new AJAX format
CommunicationComponent.previewNewsletter(data).done(function(response) {
if(response.success !== undefined && response.success === true) {
MailPoet.Notice.success(App.getConfig().get('translations.testEmailSent'));
} else if(response.error !== undefined) {
if(response.error.length === 0) {
MailPoet.Notice.error(App.getConfig().get('translations.unknownErrorOccurred'));
if(response.result !== undefined && response.result === true) {
MailPoet.Notice.success(App.getConfig().get('translations.newsletterPreviewSent'));
} else {
$(response.error).each(function(i, error) {
MailPoet.Notice.error(error);
});
if (_.isArray(response.errors)) {
MailPoet.Notice.error("\n".join(response.errors));
} else {
MailPoet.Notice.error(App.getConfig().get('translations.newsletterPreviewFailedToSend'));
}
}
MailPoet.Modal.loading(false);

View File

@ -217,6 +217,43 @@ class Newsletters {
wp_send_json(array('rendered_body' => $renderer->render()));
}
function sendPreview($data = array()) {
$id = (isset($data['id'])) ? (int) $data['id'] : 0;
$newsletter = Newsletter::findOne($id);
if($newsletter === false) {
wp_send_json(array(
'result' => false
));
} else {
$newsletter = $newsletter->asArray();
$renderer = new Renderer($newsletter);
$rendered_body = $renderer->render();
$newsletter['body'] = array(
'html' => $rendered_body,
'text' => '',
);
try {
$mailer = new \MailPoet\Mailer\Mailer(
false,
(isset($data['sender'])) ? $data['sender'] : false,
false
);
wp_send_json(array(
'result' => $mailer->send($newsletter, $data['subscriber'])
));
} catch (\Exception $e) {
wp_send_json(array(
'result' => false,
'errors' => array($e->getMessage()),
));
}
}
}
function listing($data = array()) {
$listing = new Listing\Handler(
'\MailPoet\Models\Newsletter',

View File

@ -1239,10 +1239,10 @@
'<%= __('Select a shortcode') %>',
unsubscribeLinkMissing:
'<%= __('Please include an unsubscribe link to continue.') %>',
testEmailSent:
'<%= __('Test email successfully sent!') %>',
unknownErrorOccurred:
'<%= __('An unknown error occurred, please check your settings.') %>',
newsletterPreviewSent:
'<%= __('Newsletter preview email has been successfully sent!') %>',
newsletterPreviewFailedToSend:
'<%= __('Attempt to send a newsletter preview email failed. Please verify that your sending method is configured correctly try again.') %>',
templateNameMissing:
'<%= __('Please add a template name') %>',
templateDescriptionMissing: