diff --git a/assets/js/src/newsletter_editor/components/sidebar.js b/assets/js/src/newsletter_editor/components/sidebar.js index b7c5c1945e..259f20535d 100644 --- a/assets/js/src/newsletter_editor/components/sidebar.js +++ b/assets/js/src/newsletter_editor/components/sidebar.js @@ -245,14 +245,20 @@ define([ MailPoet.Ajax.post({ endpoint: 'newsletters', - action: 'render', + action: 'showPreview', data: json, }).done(function(response){ MailPoet.Modal.loading(false); - window.open('data:text/html;charset=utf-8,' + encodeURIComponent(response.rendered_body), '_blank'); + + if (response.result === true) { + window.open(response.data.url, '_blank') + } + MailPoet.Notice.error(response.errors); }).fail(function(error) { MailPoet.Modal.loading(false); - alert('Something went wrong, check console'); + MailPoet.Notice.error( + MailPoet.I18n.t('newsletterPreviewFailed') + ); }); }, sendPreview: function() { diff --git a/lib/Router/Newsletters.php b/lib/Router/Newsletters.php index 524b916d92..b2e82b3b39 100644 --- a/lib/Router/Newsletters.php +++ b/lib/Router/Newsletters.php @@ -1,24 +1,23 @@ false, + 'errors' => array(__('Newsletter data is missing.')) + ); } - $renderer = new Renderer($data); - $rendered_newsletter = $renderer->render(); - $shortcodes = new \MailPoet\Newsletter\Shortcodes\Shortcodes($data); - $rendered_newsletter = $shortcodes->replace($rendered_newsletter['html']); - return array('rendered_body' => $rendered_newsletter); + $newsletter_id = (isset($data['id'])) ? (int) $data['id'] : 0; + $newsletter = Newsletter::findOne($newsletter_id); + if (!$newsletter) { + return array( + 'result' => false, + 'errors' => array(__('Newsletter could not be read.')) + ); + } + $newsletter->body = $data['body']; + $newsletter->save(); + $wp_user =wp_get_current_user(); + $subscriber = Subscriber::where('email', $wp_user->data->user_email) + ->findOne(); + $subscriber = ($subscriber) ? $subscriber->asArray() : $subscriber; + $preview_url = Link::getViewInBrowserUrl($data, $subscriber); + return array( + 'result' => true, + 'data' => array('url' => $preview_url) + ); } function sendPreview($data = array()) {