Move data from constructor
[MAILPOET-2899]
This commit is contained in:
@ -570,8 +570,8 @@ class Newsletter extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function render() {
|
public function render() {
|
||||||
$renderer = new Renderer($this);
|
$renderer = new Renderer();
|
||||||
return $renderer->render();
|
return $renderer->render($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function wasScheduledForSubscriber($subscriberId) {
|
public function wasScheduledForSubscriber($subscriberId) {
|
||||||
|
@ -38,8 +38,8 @@ class SendPreviewController {
|
|||||||
throw new SendPreviewException("Newsletter with ID '{$newsletter->getId()}' not found");
|
throw new SendPreviewException("Newsletter with ID '{$newsletter->getId()}' not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
$renderer = new Renderer($newsletterModel, $preview = true);
|
$renderer = new Renderer();
|
||||||
$renderedNewsletter = $renderer->render();
|
$renderedNewsletter = $renderer->render($newsletterModel, $preview = true);
|
||||||
$divider = '***MailPoet***';
|
$divider = '***MailPoet***';
|
||||||
$dataForShortcodes = array_merge(
|
$dataForShortcodes = array_merge(
|
||||||
[$newsletter->getSubject()],
|
[$newsletter->getSubject()],
|
||||||
|
@ -17,20 +17,13 @@ class Renderer {
|
|||||||
public $columnsRenderer;
|
public $columnsRenderer;
|
||||||
public $preprocessor;
|
public $preprocessor;
|
||||||
public $cSSInliner;
|
public $cSSInliner;
|
||||||
public $newsletter;
|
|
||||||
public $preview;
|
|
||||||
public $premiumActivated;
|
public $premiumActivated;
|
||||||
public $mssActivated;
|
public $mssActivated;
|
||||||
private $template;
|
private $template;
|
||||||
const NEWSLETTER_TEMPLATE = 'Template.html';
|
const NEWSLETTER_TEMPLATE = 'Template.html';
|
||||||
const FILTER_POST_PROCESS = 'mailpoet_rendering_post_process';
|
const FILTER_POST_PROCESS = 'mailpoet_rendering_post_process';
|
||||||
|
|
||||||
/**
|
public function __construct() {
|
||||||
* @param \MailPoet\Models\Newsletter|array $newsletter
|
|
||||||
*/
|
|
||||||
public function __construct($newsletter, $preview = false) {
|
|
||||||
$this->newsletter = ($newsletter instanceof Newsletter) ? $newsletter->asArray() : $newsletter;
|
|
||||||
$this->preview = $preview;
|
|
||||||
$this->blocksRenderer = ContainerWrapper::getInstance()->get(Blocks\Renderer::class);
|
$this->blocksRenderer = ContainerWrapper::getInstance()->get(Blocks\Renderer::class);
|
||||||
$this->columnsRenderer = new Columns\Renderer();
|
$this->columnsRenderer = new Columns\Renderer();
|
||||||
$this->preprocessor = new Preprocessor(
|
$this->preprocessor = new Preprocessor(
|
||||||
@ -44,8 +37,11 @@ class Renderer {
|
|||||||
$this->mssActivated = $bridge->isMPSendingServiceEnabled();
|
$this->mssActivated = $bridge->isMPSendingServiceEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render($type = false) {
|
/**
|
||||||
$newsletter = $this->newsletter;
|
* @param \MailPoet\Models\Newsletter|array $newsletter
|
||||||
|
*/
|
||||||
|
public function render($newsletter, $preview = false, $type = false) {
|
||||||
|
$newsletter = ($newsletter instanceof Newsletter) ? $newsletter->asArray() : $newsletter;
|
||||||
$body = (is_array($newsletter['body']))
|
$body = (is_array($newsletter['body']))
|
||||||
? $newsletter['body']
|
? $newsletter['body']
|
||||||
: [];
|
: [];
|
||||||
@ -56,12 +52,12 @@ class Renderer {
|
|||||||
? $body['globalStyles']
|
? $body['globalStyles']
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
if (!$this->premiumActivated && !$this->mssActivated && !$this->preview) {
|
if (!$this->premiumActivated && !$this->mssActivated && !$preview) {
|
||||||
$content = $this->addMailpoetLogoContentBlock($content, $styles);
|
$content = $this->addMailpoetLogoContentBlock($content, $styles);
|
||||||
}
|
}
|
||||||
|
|
||||||
$content = $this->preprocessor->process($newsletter, $content);
|
$content = $this->preprocessor->process($newsletter, $content);
|
||||||
$renderedBody = $this->renderBody($content);
|
$renderedBody = $this->renderBody($newsletter, $content);
|
||||||
$renderedStyles = $this->renderStyles($styles);
|
$renderedStyles = $this->renderStyles($styles);
|
||||||
$customFontsLinks = StylesHelper::getCustomFontsLinks($styles);
|
$customFontsLinks = StylesHelper::getCustomFontsLinks($styles);
|
||||||
|
|
||||||
@ -89,18 +85,19 @@ class Renderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param array $newsletter
|
||||||
* @param array $content
|
* @param array $content
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
private function renderBody($content) {
|
private function renderBody($newsletter, $content) {
|
||||||
$blocks = (array_key_exists('blocks', $content))
|
$blocks = (array_key_exists('blocks', $content))
|
||||||
? $content['blocks']
|
? $content['blocks']
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
$_this = $this;
|
$_this = $this;
|
||||||
$renderedContent = array_map(function($contentBlock) use($_this) {
|
$renderedContent = array_map(function($contentBlock) use($_this, $newsletter) {
|
||||||
|
|
||||||
$columnsData = $_this->blocksRenderer->render($_this->newsletter, $contentBlock);
|
$columnsData = $_this->blocksRenderer->render($newsletter, $contentBlock);
|
||||||
|
|
||||||
return $_this->columnsRenderer->render(
|
return $_this->columnsRenderer->render(
|
||||||
$contentBlock,
|
$contentBlock,
|
||||||
|
@ -47,8 +47,8 @@ class ViewInBrowserRenderer {
|
|||||||
$newsletterBody = str_replace(Links::DATA_TAG_OPEN, '', $newsletterBody);
|
$newsletterBody = str_replace(Links::DATA_TAG_OPEN, '', $newsletterBody);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$renderer = new Renderer($newsletter, $wpUserPreview);
|
$renderer = new Renderer();
|
||||||
$newsletterBody = $renderer->render('html');
|
$newsletterBody = $renderer->render($newsletter, $wpUserPreview, 'html');
|
||||||
}
|
}
|
||||||
$shortcodes = new Shortcodes(
|
$shortcodes = new Shortcodes(
|
||||||
$newsletter,
|
$newsletter,
|
||||||
|
@ -27,8 +27,8 @@ class Renderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function render(Newsletter $newsletter, NewsletterRenderer $renderer = null) {
|
public function render(Newsletter $newsletter, NewsletterRenderer $renderer = null) {
|
||||||
$renderer = $renderer ?: new NewsletterRenderer($newsletter, true);
|
$renderer = $renderer ?: new NewsletterRenderer();
|
||||||
$html = explode(Preprocessor::WC_CONTENT_PLACEHOLDER, $renderer->render('html'));
|
$html = explode(Preprocessor::WC_CONTENT_PLACEHOLDER, $renderer->render($newsletter, true, 'html'));
|
||||||
$this->htmlBeforeContent = $html[0];
|
$this->htmlBeforeContent = $html[0];
|
||||||
$this->htmlAfterContent = $html[1];
|
$this->htmlAfterContent = $html[1];
|
||||||
}
|
}
|
||||||
|
@ -33,14 +33,13 @@ class RendererTest extends \MailPoetTest {
|
|||||||
'type' => 'standard',
|
'type' => 'standard',
|
||||||
'status' => 'active',
|
'status' => 'active',
|
||||||
];
|
];
|
||||||
$this->renderer = new Renderer($this->newsletter);
|
$this->renderer = new Renderer();
|
||||||
$this->columnRenderer = new ColumnRenderer();
|
$this->columnRenderer = new ColumnRenderer();
|
||||||
$this->dOMParser = new \pQuery();
|
$this->dOMParser = new \pQuery();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItRendersCompleteNewsletter() {
|
public function testItRendersCompleteNewsletter() {
|
||||||
$this->renderer->preview = true; // do not render logo
|
$template = $this->renderer->render($this->newsletter, true);// do not render logo
|
||||||
$template = $this->renderer->render();
|
|
||||||
expect(isset($template['html']))->true();
|
expect(isset($template['html']))->true();
|
||||||
expect(isset($template['text']))->true();
|
expect(isset($template['text']))->true();
|
||||||
$DOM = $this->dOMParser->parseStr($template['html']);
|
$DOM = $this->dOMParser->parseStr($template['html']);
|
||||||
@ -549,48 +548,45 @@ class RendererTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItSetsSubject() {
|
public function testItSetsSubject() {
|
||||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||||
$template = $this->renderer->render();
|
$template = $this->renderer->render($this->newsletter);
|
||||||
$DOM = $this->dOMParser->parseStr($template['html']);
|
$DOM = $this->dOMParser->parseStr($template['html']);
|
||||||
$subject = trim($DOM('title')->text());
|
$subject = trim($DOM('title')->text());
|
||||||
expect($subject)->equals($this->newsletter['subject']);
|
expect($subject)->equals($this->newsletter['subject']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItSetsPreheader() {
|
public function testItSetsPreheader() {
|
||||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||||
$template = $this->renderer->render();
|
$template = $this->renderer->render($this->newsletter);
|
||||||
$DOM = $this->dOMParser->parseStr($template['html']);
|
$DOM = $this->dOMParser->parseStr($template['html']);
|
||||||
$preheader = trim($DOM('td.mailpoet_preheader')->text());
|
$preheader = trim($DOM('td.mailpoet_preheader')->text());
|
||||||
expect($preheader)->equals($this->newsletter['preheader']);
|
expect($preheader)->equals($this->newsletter['preheader']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItDoesNotAddMailpoetLogoWhenPremiumIsActive() {
|
public function testItDoesNotAddMailpoetLogoWhenPremiumIsActive() {
|
||||||
$this->renderer->preview = false;
|
|
||||||
$this->renderer->mssActivated = false;
|
$this->renderer->mssActivated = false;
|
||||||
$this->renderer->premiumActivated = true;
|
$this->renderer->premiumActivated = true;
|
||||||
|
|
||||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||||
$template = $this->renderer->render();
|
$template = $this->renderer->render($this->newsletter, false);
|
||||||
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItDoesNotAddMailpoetLogoWhenMSSIsActive() {
|
public function testItDoesNotAddMailpoetLogoWhenMSSIsActive() {
|
||||||
$this->renderer->preview = false;
|
|
||||||
$this->renderer->premiumActivated = false;
|
$this->renderer->premiumActivated = false;
|
||||||
$this->renderer->mssActivated = true;
|
$this->renderer->mssActivated = true;
|
||||||
|
|
||||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||||
$template = $this->renderer->render();
|
$template = $this->renderer->render($this->newsletter, false);
|
||||||
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItDoesNotAddMailpoetLogoWhenPreviewIsEnabled() {
|
public function testItDoesNotAddMailpoetLogoWhenPreviewIsEnabled() {
|
||||||
$this->renderer->mssActivated = false;
|
$this->renderer->mssActivated = false;
|
||||||
$this->renderer->premiumActivated = false;
|
$this->renderer->premiumActivated = false;
|
||||||
$this->renderer->preview = true;
|
|
||||||
|
|
||||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||||
$template = $this->renderer->render();
|
$template = $this->renderer->render($this->newsletter, true);
|
||||||
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -598,15 +594,14 @@ class RendererTest extends \MailPoetTest {
|
|||||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||||
$this->renderer->mssActivated = false;
|
$this->renderer->mssActivated = false;
|
||||||
$this->renderer->premiumActivated = false;
|
$this->renderer->premiumActivated = false;
|
||||||
$this->renderer->preview = false;
|
|
||||||
|
|
||||||
$template = $this->renderer->render();
|
$template = $this->renderer->render($this->newsletter, false);
|
||||||
expect($template['html'])->contains('mailpoet_logo_newsletter.png');
|
expect($template['html'])->contains('mailpoet_logo_newsletter.png');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItPostProcessesTemplate() {
|
public function testItPostProcessesTemplate() {
|
||||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||||
$template = $this->renderer->render();
|
$template = $this->renderer->render($this->newsletter);
|
||||||
// !important should be stripped from everywhere except from with the <style> tag
|
// !important should be stripped from everywhere except from with the <style> tag
|
||||||
expect(preg_match('/<style.*?important/s', $template['html']))->equals(1);
|
expect(preg_match('/<style.*?important/s', $template['html']))->equals(1);
|
||||||
expect(preg_match('/mailpoet_template.*?important/s', $template['html']))->equals(0);
|
expect(preg_match('/mailpoet_template.*?important/s', $template['html']))->equals(0);
|
||||||
|
@ -37,7 +37,7 @@ class RendererTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testGetHTMLBeforeContent() {
|
public function testGetHTMLBeforeContent() {
|
||||||
$renderer = new Renderer(new csstidy);
|
$renderer = new Renderer(new csstidy);
|
||||||
$newsletterRenderer = new NewsletterRenderer($this->newsletter, true);
|
$newsletterRenderer = new NewsletterRenderer();
|
||||||
$newsletterRenderer->preprocessor = new Preprocessor(
|
$newsletterRenderer->preprocessor = new Preprocessor(
|
||||||
$newsletterRenderer->blocksRenderer,
|
$newsletterRenderer->blocksRenderer,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
@ -60,7 +60,7 @@ class RendererTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testGetHTMLAfterContent() {
|
public function testGetHTMLAfterContent() {
|
||||||
$renderer = new Renderer(new csstidy);
|
$renderer = new Renderer(new csstidy);
|
||||||
$newsletterRenderer = new NewsletterRenderer($this->newsletter, true);
|
$newsletterRenderer = new NewsletterRenderer();
|
||||||
$newsletterRenderer->preprocessor = new Preprocessor(
|
$newsletterRenderer->preprocessor = new Preprocessor(
|
||||||
$newsletterRenderer->blocksRenderer,
|
$newsletterRenderer->blocksRenderer,
|
||||||
Stub::make(
|
Stub::make(
|
||||||
|
Reference in New Issue
Block a user