From 2cb32e7a783a64dee4e7cc85ef242b381df14f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tautvidas=20Sipavi=C4=8Dius?= Date: Wed, 13 Jan 2016 13:04:21 +0200 Subject: [PATCH] Add a method for sending newsletters via new Mailer class --- .../components/communication.js | 2 +- .../newsletter_editor/components/sidebar.js | 25 ++++++------- lib/Router/Newsletters.php | 37 +++++++++++++++++++ views/newsletter/form.html | 8 ++-- 4 files changed, 54 insertions(+), 18 deletions(-) diff --git a/assets/js/src/newsletter_editor/components/communication.js b/assets/js/src/newsletter_editor/components/communication.js index 712c92e014..2647474f4f 100644 --- a/assets/js/src/newsletter_editor/components/communication.js +++ b/assets/js/src/newsletter_editor/components/communication.js @@ -73,7 +73,7 @@ define([ Module.previewNewsletter = function(options) { return MailPoet.Ajax.post({ endpoint: 'newsletters', - action: 'preview', + action: 'sendPreview', data: options || {}, }); }; diff --git a/assets/js/src/newsletter_editor/components/sidebar.js b/assets/js/src/newsletter_editor/components/sidebar.js index 4a0b9033b1..3cc253560e 100644 --- a/assets/js/src/newsletter_editor/components/sidebar.js +++ b/assets/js/src/newsletter_editor/components/sidebar.js @@ -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 { + if (_.isArray(response.errors)) { + MailPoet.Notice.error("\n".join(response.errors)); } else { - $(response.error).each(function(i, error) { - MailPoet.Notice.error(error); - }); + MailPoet.Notice.error(App.getConfig().get('translations.newsletterPreviewFailedToSend')); } } MailPoet.Modal.loading(false); diff --git a/lib/Router/Newsletters.php b/lib/Router/Newsletters.php index b075fb0671..5034f7b5d6 100644 --- a/lib/Router/Newsletters.php +++ b/lib/Router/Newsletters.php @@ -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', diff --git a/views/newsletter/form.html b/views/newsletter/form.html index 67ee3fbdba..28fd390576 100644 --- a/views/newsletter/form.html +++ b/views/newsletter/form.html @@ -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: