diff --git a/lib/Form/Block/Checkbox.php b/lib/Form/Block/Checkbox.php
index c0521e8937..6942639de9 100644
--- a/lib/Form/Block/Checkbox.php
+++ b/lib/Form/Block/Checkbox.php
@@ -2,6 +2,7 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\WP\Functions as WPFunctions;
class Checkbox {
@@ -9,11 +10,15 @@ class Checkbox {
/** @var BlockRendererHelper */
private $rendererHelper;
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
/** @var WPFunctions */
private $wp;
- public function __construct(BlockRendererHelper $rendererHelper, WPFunctions $wp) {
+ public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper, WPFunctions $wp) {
$this->rendererHelper = $rendererHelper;
+ $this->wrapper = $wrapper;
$this->wp = $wp;
}
@@ -23,8 +28,6 @@ class Checkbox {
$fieldName = 'data[' . $this->rendererHelper->getFieldName($block) . ']';
$fieldValidation = $this->rendererHelper->getInputValidation($block);
- $html .= '
';
-
$html .= $this->rendererHelper->renderLabel($block, $formSettings);
$options = (!empty($block['params']['values'])
@@ -60,8 +63,6 @@ class Checkbox {
$html .= '';
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
}
diff --git a/lib/Form/Block/Date.php b/lib/Form/Block/Date.php
index 0d83a631b1..c2ff0b300c 100644
--- a/lib/Form/Block/Date.php
+++ b/lib/Form/Block/Date.php
@@ -2,23 +2,26 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
+
class Date {
/** @var BlockRendererHelper */
private $rendererHelper;
- public function __construct(BlockRendererHelper $rendererHelper) {
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
+ public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper) {
$this->rendererHelper = $rendererHelper;
+ $this->wrapper = $wrapper;
}
public function render(array $block, array $formSettings): string {
$html = '';
- $html .= '';
$html .= $this->rendererHelper->renderLabel($block, $formSettings);
$html .= $this->renderDateSelect($block);
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
private function renderDateSelect(array $block = []): string {
diff --git a/lib/Form/Block/Radio.php b/lib/Form/Block/Radio.php
index f0897cae03..0e74c11d2e 100644
--- a/lib/Form/Block/Radio.php
+++ b/lib/Form/Block/Radio.php
@@ -2,6 +2,7 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\WP\Functions as WPFunctions;
class Radio {
@@ -12,8 +13,12 @@ class Radio {
/** @var WPFunctions */
private $wp;
- public function __construct(BlockRendererHelper $rendererHelper, WPFunctions $wp) {
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
+ public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper, WPFunctions $wp) {
$this->rendererHelper = $rendererHelper;
+ $this->wrapper = $wrapper;
$this->wp = $wp;
}
@@ -23,8 +28,6 @@ class Radio {
$fieldName = 'data[' . $this->rendererHelper->getFieldName($block) . ']';
$fieldValidation = $this->rendererHelper->getInputValidation($block);
- $html .= '';
-
$html .= $this->rendererHelper->renderLabel($block, $formSettings);
$options = (!empty($block['params']['values'])
@@ -68,8 +71,6 @@ class Radio {
$html .= '';
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
}
diff --git a/lib/Form/Block/Segment.php b/lib/Form/Block/Segment.php
index 87780fdf56..08d940695d 100644
--- a/lib/Form/Block/Segment.php
+++ b/lib/Form/Block/Segment.php
@@ -2,6 +2,7 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\WP\Functions as WPFunctions;
class Segment {
@@ -12,8 +13,12 @@ class Segment {
/** @var WPFunctions */
private $wp;
- public function __construct(BlockRendererHelper $rendererHelper, WPFunctions $wp) {
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
+ public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper, WPFunctions $wp) {
$this->rendererHelper = $rendererHelper;
+ $this->wrapper = $wrapper;
$this->wp = $wp;
}
@@ -23,8 +28,6 @@ class Segment {
$fieldName = 'data[' . $this->rendererHelper->getFieldName($block) . ']';
$fieldValidation = $this->rendererHelper->getInputValidation($block);
- $html .= '';
-
$html .= $this->rendererHelper->renderLabel($block, $formSettings);
$options = (!empty($block['params']['values'])
@@ -50,8 +53,6 @@ class Segment {
$html .= '';
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
}
diff --git a/lib/Form/Block/Select.php b/lib/Form/Block/Select.php
index 70d366d079..585eadd45f 100644
--- a/lib/Form/Block/Select.php
+++ b/lib/Form/Block/Select.php
@@ -2,6 +2,7 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\WP\Functions as WPFunctions;
class Select {
@@ -12,8 +13,12 @@ class Select {
/** @var WPFunctions */
private $wp;
- public function __construct(BlockRendererHelper $rendererHelper, WPFunctions $wp) {
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
+ public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper, WPFunctions $wp) {
$this->rendererHelper = $rendererHelper;
+ $this->wrapper = $wrapper;
$this->wp = $wp;
}
@@ -23,7 +28,6 @@ class Select {
$fieldName = 'data[' . $this->rendererHelper->getFieldName($block) . ']';
$automationId = ($block['id'] == 'status') ? 'data-automation-id="form_status"' : '';
- $html .= '';
$html .= $this->rendererHelper->renderLabel($block, $formSettings);
$html .= '';
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
}
diff --git a/lib/Form/Block/Submit.php b/lib/Form/Block/Submit.php
index 7920f82b0d..8196bf4bc6 100644
--- a/lib/Form/Block/Submit.php
+++ b/lib/Form/Block/Submit.php
@@ -2,19 +2,25 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
+
class Submit {
/** @var BlockRendererHelper */
private $rendererHelper;
- public function __construct(BlockRendererHelper $rendererHelper) {
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
+ public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper) {
$this->rendererHelper = $rendererHelper;
+ $this->wrapper = $wrapper;
}
public function render(array $block): string {
$html = '';
- $html .= 'rendererHelper->getFieldLabel($block) . '" ';
@@ -24,8 +30,6 @@ class Submit {
$html .= '';
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
}
diff --git a/lib/Form/Block/Text.php b/lib/Form/Block/Text.php
index f594c9aa93..8f9760d99b 100644
--- a/lib/Form/Block/Text.php
+++ b/lib/Form/Block/Text.php
@@ -2,19 +2,27 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Form\TextInputStylesRenderer;
class Text {
-
/** @var BlockRendererHelper */
private $rendererHelper;
/** @var TextInputStylesRenderer */
private $inputStylesRenderer;
- public function __construct(BlockRendererHelper $rendererHelper, TextInputStylesRenderer $inputStylesRenderer) {
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
+ public function __construct(
+ BlockRendererHelper $rendererHelper,
+ TextInputStylesRenderer $inputStylesRenderer,
+ BlockWrapperRenderer $wrapper
+ ) {
$this->rendererHelper = $rendererHelper;
$this->inputStylesRenderer = $inputStylesRenderer;
+ $this->wrapper = $wrapper;
}
public function render(array $block, array $formSettings): string {
@@ -34,7 +42,7 @@ class Text {
$automationId = 'data-automation-id="form_' . $block['id'] . '" ';
}
- $html = '';
+ $html = '';
$html .= $this->rendererHelper->renderLabel($block, $formSettings);
@@ -60,8 +68,6 @@ class Text {
$html .= '/>';
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
}
diff --git a/lib/Form/Block/Textarea.php b/lib/Form/Block/Textarea.php
index 919e512377..6fd0a17b9c 100644
--- a/lib/Form/Block/Textarea.php
+++ b/lib/Form/Block/Textarea.php
@@ -2,6 +2,7 @@
namespace MailPoet\Form\Block;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Form\TextInputStylesRenderer;
class Textarea {
@@ -11,17 +12,23 @@ class Textarea {
/** @var TextInputStylesRenderer */
private $inputStylesRenderer;
- public function __construct(BlockRendererHelper $rendererHelper, TextInputStylesRenderer $inputStylesRenderer) {
+ /** @var BlockWrapperRenderer */
+ private $wrapper;
+
+ public function __construct(
+ BlockRendererHelper $rendererHelper,
+ TextInputStylesRenderer $inputStylesRenderer,
+ BlockWrapperRenderer $wrapper
+ ) {
$this->rendererHelper = $rendererHelper;
$this->inputStylesRenderer = $inputStylesRenderer;
+ $this->wrapper = $wrapper;
}
public function render(array $block, array $formSettings): string {
$html = '';
$styles = $this->inputStylesRenderer->render($block['styles'] ?? []);
- $html .= '';
-
$html .= $this->rendererHelper->renderLabel($block, $formSettings);
$lines = (isset($block['params']['lines']) ? (int)$block['params']['lines'] : 1);
@@ -42,8 +49,6 @@ class Textarea {
$html .= '>' . $this->rendererHelper->getFieldValue($block) . '';
- $html .= '
';
-
- return $html;
+ return $this->wrapper->render($block, $html);
}
}
diff --git a/tests/unit/Form/Block/CheckboxTest.php b/tests/unit/Form/Block/CheckboxTest.php
index 53c640bd80..f1c2906876 100644
--- a/tests/unit/Form/Block/CheckboxTest.php
+++ b/tests/unit/Form/Block/CheckboxTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Checkbox;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Test\Form\HtmlParser;
use MailPoet\WP\Functions as WPFunctions;
use PHPUnit\Framework\MockObject\MockObject;
@@ -20,6 +21,9 @@ class CheckboxTest extends \MailPoetUnitTest {
/** @var MockObject & BlockRendererHelper */
private $rendererHelperMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
/** @var HtmlParser */
private $htmlParser;
@@ -46,7 +50,9 @@ class CheckboxTest extends \MailPoetUnitTest {
$this->wpMock = $this->createMock(WPFunctions::class);
$this->wpMock->method('escAttr')->will($this->returnArgument(0));
$this->rendererHelperMock = $this->createMock(BlockRendererHelper::class);
- $this->checkbox = new Checkbox($this->rendererHelperMock, $this->wpMock);
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
+ $this->checkbox = new Checkbox($this->rendererHelperMock, $this->wrapperMock, $this->wpMock);
$this->htmlParser = new HtmlParser();
}
diff --git a/tests/unit/Form/Block/DateTest.php b/tests/unit/Form/Block/DateTest.php
index 96a2407338..29c026d294 100644
--- a/tests/unit/Form/Block/DateTest.php
+++ b/tests/unit/Form/Block/DateTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Date;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Test\Form\HtmlParser;
use MailPoetVendor\Carbon\Carbon;
use PHPUnit\Framework\MockObject\MockObject;
@@ -17,6 +18,9 @@ class DateTest extends \MailPoetUnitTest {
/** @var MockObject & BlockRendererHelper */
private $baseMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
/** @var HtmlParser */
private $htmlParser;
@@ -39,7 +43,9 @@ class DateTest extends \MailPoetUnitTest {
public function _before() {
parent::_before();
$this->baseMock = $this->createMock(BlockRendererHelper::class);
- $this->date = new Date($this->baseMock);
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
+ $this->date = new Date($this->baseMock, $this->wrapperMock);
$this->htmlParser = new HtmlParser();
}
diff --git a/tests/unit/Form/Block/RadioTest.php b/tests/unit/Form/Block/RadioTest.php
index 644ef76964..617f586cd8 100644
--- a/tests/unit/Form/Block/RadioTest.php
+++ b/tests/unit/Form/Block/RadioTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Radio;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Test\Form\HtmlParser;
use MailPoet\WP\Functions as WPFunctions;
use PHPUnit\Framework\MockObject\MockObject;
@@ -20,6 +21,9 @@ class RadioTest extends \MailPoetUnitTest {
/** @var MockObject & WPFunctions */
private $rendererHelperMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
/** @var HtmlParser */
private $htmlParser;
@@ -48,8 +52,10 @@ class RadioTest extends \MailPoetUnitTest {
parent::_before();
$this->rendererHelperMock = $this->createMock(WPFunctions::class);
$this->rendererHelperMock->method('escAttr')->will($this->returnArgument(0));
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
$this->baseMock = $this->createMock(BlockRendererHelper::class);
- $this->radio = new Radio($this->baseMock, $this->rendererHelperMock);
+ $this->radio = new Radio($this->baseMock, $this->wrapperMock, $this->rendererHelperMock);
$this->htmlParser = new HtmlParser();
}
diff --git a/tests/unit/Form/Block/SegmentTest.php b/tests/unit/Form/Block/SegmentTest.php
index addbbd66bd..d747fdc905 100644
--- a/tests/unit/Form/Block/SegmentTest.php
+++ b/tests/unit/Form/Block/SegmentTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Segment;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Test\Form\HtmlParser;
use MailPoet\WP\Functions as WPFunctions;
use PHPUnit\Framework\MockObject\MockObject;
@@ -20,6 +21,9 @@ class SegmentTest extends \MailPoetUnitTest {
/** @var MockObject & BlockRendererHelper */
private $rendererHelperMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
/** @var HtmlParser */
private $htmlParser;
@@ -47,8 +51,10 @@ class SegmentTest extends \MailPoetUnitTest {
parent::_before();
$this->wpMock = $this->createMock(WPFunctions::class);
$this->wpMock->method('escAttr')->will($this->returnArgument(0));
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
$this->rendererHelperMock = $this->createMock(BlockRendererHelper::class);
- $this->segment = new Segment($this->rendererHelperMock, $this->wpMock);
+ $this->segment = new Segment($this->rendererHelperMock, $this->wrapperMock, $this->wpMock);
$this->htmlParser = new HtmlParser();
}
diff --git a/tests/unit/Form/Block/SelectTest.php b/tests/unit/Form/Block/SelectTest.php
index e354217fb7..e5987355f6 100644
--- a/tests/unit/Form/Block/SelectTest.php
+++ b/tests/unit/Form/Block/SelectTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Select;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Models\Subscriber;
use MailPoet\WP\Functions;
use PHPUnit\Framework\MockObject\MockObject;
@@ -21,16 +22,21 @@ class SelectTest extends \MailPoetUnitTest {
/** @var MockObject & BlockRendererHelper */
private $rendererHelperMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
public function _before() {
parent::_before();
$this->wpMock = $this->createMock(Functions::class);
$this->wpMock->method('escAttr')->will($this->returnArgument(0));
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
$this->rendererHelperMock = $this->createMock(BlockRendererHelper::class);
$this->rendererHelperMock->method('getFieldName')->will($this->returnValue('select'));
$this->rendererHelperMock->method('renderLabel')->will($this->returnValue(''));
$this->rendererHelperMock->method('getFieldLabel')->will($this->returnValue('Field label'));
$this->rendererHelperMock->method('getFieldValue')->will($this->returnValue('1'));
- $this->selectBlock = new Select($this->rendererHelperMock, $this->wpMock);
+ $this->selectBlock = new Select($this->rendererHelperMock, $this->wrapperMock, $this->wpMock);
$this->block = [
'id' => 'status',
'type' => 'select',
diff --git a/tests/unit/Form/Block/SubmitTest.php b/tests/unit/Form/Block/SubmitTest.php
index 3cf82baf73..05feeb46d4 100644
--- a/tests/unit/Form/Block/SubmitTest.php
+++ b/tests/unit/Form/Block/SubmitTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Submit;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Test\Form\HtmlParser;
use PHPUnit\Framework\MockObject\MockObject;
@@ -16,6 +17,9 @@ class SubmitTest extends \MailPoetUnitTest {
/** @var MockObject & BlockRendererHelper */
private $rendererHelperMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
/** @var HtmlParser */
private $htmlParser;
@@ -34,7 +38,9 @@ class SubmitTest extends \MailPoetUnitTest {
public function _before() {
parent::_before();
$this->rendererHelperMock = $this->createMock(BlockRendererHelper::class);
- $this->submit = new Submit($this->rendererHelperMock);
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
+ $this->submit = new Submit($this->rendererHelperMock, $this->wrapperMock);
$this->htmlParser = new HtmlParser();
}
diff --git a/tests/unit/Form/Block/TextTest.php b/tests/unit/Form/Block/TextTest.php
index 2a6f3ac288..c6d93ca26d 100644
--- a/tests/unit/Form/Block/TextTest.php
+++ b/tests/unit/Form/Block/TextTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Text;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Form\TextInputStylesRenderer;
use MailPoet\Test\Form\HtmlParser;
use PHPUnit\Framework\MockObject\MockObject;
@@ -20,6 +21,9 @@ class TextTest extends \MailPoetUnitTest {
/** @var MockObject & TextInputStylesRenderer */
private $stylesRendererMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
/** @var HtmlParser */
private $htmlParser;
@@ -41,7 +45,9 @@ class TextTest extends \MailPoetUnitTest {
parent::_before();
$this->rendererHelperMock = $this->createMock(BlockRendererHelper::class);
$this->stylesRendererMock = $this->createMock(TextInputStylesRenderer::class);
- $this->text = new Text($this->rendererHelperMock, $this->stylesRendererMock);
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
+ $this->text = new Text($this->rendererHelperMock, $this->stylesRendererMock, $this->wrapperMock);
$this->htmlParser = new HtmlParser();
}
diff --git a/tests/unit/Form/Block/TextareaTest.php b/tests/unit/Form/Block/TextareaTest.php
index d54844fcaa..819024825a 100644
--- a/tests/unit/Form/Block/TextareaTest.php
+++ b/tests/unit/Form/Block/TextareaTest.php
@@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Block;
use MailPoet\Form\Block\BlockRendererHelper;
use MailPoet\Form\Block\Textarea;
+use MailPoet\Form\BlockWrapperRenderer;
use MailPoet\Form\TextInputStylesRenderer;
use MailPoet\Test\Form\HtmlParser;
use PHPUnit\Framework\MockObject\MockObject;
@@ -20,6 +21,9 @@ class TextareaTest extends \MailPoetUnitTest {
/** @var MockObject & TextInputStylesRenderer */
private $stylesRendererMock;
+ /** @var MockObject & BlockWrapperRenderer */
+ private $wrapperMock;
+
/** @var HtmlParser */
private $htmlParser;
@@ -42,7 +46,9 @@ class TextareaTest extends \MailPoetUnitTest {
parent::_before();
$this->rendererHelperMock = $this->createMock(BlockRendererHelper::class);
$this->stylesRendererMock = $this->createMock(TextInputStylesRenderer::class);
- $this->textarea = new Textarea($this->rendererHelperMock, $this->stylesRendererMock);
+ $this->wrapperMock = $this->createMock(BlockWrapperRenderer::class);
+ $this->wrapperMock->method('render')->will($this->returnArgument(1));
+ $this->textarea = new Textarea($this->rendererHelperMock, $this->stylesRendererMock, $this->wrapperMock);
$this->htmlParser = new HtmlParser();
}