Extract rendering of a single block to extra class
[MAILPOET-2665]
This commit is contained in:
committed by
Jack Kitterhing
parent
a759530b9d
commit
d9b9e13a04
@ -171,6 +171,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Form\DisplayFormInWPContent::class);
|
$container->autowire(\MailPoet\Form\DisplayFormInWPContent::class);
|
||||||
$container->autowire(\MailPoet\Form\FormsRepository::class);
|
$container->autowire(\MailPoet\Form\FormsRepository::class);
|
||||||
$container->autowire(\MailPoet\Form\Renderer::class);
|
$container->autowire(\MailPoet\Form\Renderer::class);
|
||||||
|
$container->autowire(\MailPoet\Form\BlocksRenderer::class);
|
||||||
$container->autowire(\MailPoet\Form\Util\Styles::class);
|
$container->autowire(\MailPoet\Form\Util\Styles::class);
|
||||||
// Helpscout
|
// Helpscout
|
||||||
$container->autowire(\MailPoet\Helpscout\Beacon::class);
|
$container->autowire(\MailPoet\Helpscout\Beacon::class);
|
||||||
|
51
lib/Form/BlocksRenderer.php
Normal file
51
lib/Form/BlocksRenderer.php
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Form;
|
||||||
|
|
||||||
|
class BlocksRenderer {
|
||||||
|
public function renderBlock(array $block = []): string {
|
||||||
|
$html = '';
|
||||||
|
switch ($block['type']) {
|
||||||
|
case 'html':
|
||||||
|
$html .= Block\Html::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'divider':
|
||||||
|
$html .= Block\Divider::render();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'checkbox':
|
||||||
|
$html .= Block\Checkbox::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'radio':
|
||||||
|
$html .= Block\Radio::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'segment':
|
||||||
|
$html .= Block\Segment::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'date':
|
||||||
|
$html .= Block\Date::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'select':
|
||||||
|
$html .= Block\Select::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'text':
|
||||||
|
$html .= Block\Text::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'textarea':
|
||||||
|
$html .= Block\Textarea::render($block);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'submit':
|
||||||
|
$html .= Block\Submit::render($block);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
}
|
@ -13,9 +13,17 @@ class Renderer {
|
|||||||
/** @var SettingsController */
|
/** @var SettingsController */
|
||||||
private $settings;
|
private $settings;
|
||||||
|
|
||||||
public function __construct(Styles $styleUtils, SettingsController $settings) {
|
/** @var BlocksRenderer */
|
||||||
|
private $blocksRenderer;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Styles $styleUtils,
|
||||||
|
SettingsController $settings,
|
||||||
|
BlocksRenderer $blocksRenderer
|
||||||
|
) {
|
||||||
$this->styleUtils = $styleUtils;
|
$this->styleUtils = $styleUtils;
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
|
$this->blocksRenderer = $blocksRenderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderStyles(array $form = [], string $prefix = null): string {
|
public function renderStyles(array $form = [], string $prefix = null): string {
|
||||||
@ -50,7 +58,7 @@ class Renderer {
|
|||||||
if ($block['type'] == 'submit' && $this->settings->get('captcha.type') === Captcha::TYPE_RECAPTCHA) {
|
if ($block['type'] == 'submit' && $this->settings->get('captcha.type') === Captcha::TYPE_RECAPTCHA) {
|
||||||
$html .= $this->renderReCaptcha();
|
$html .= $this->renderReCaptcha();
|
||||||
}
|
}
|
||||||
$html .= $this->renderBlock($block) . PHP_EOL;
|
$html .= $this->blocksRenderer->renderBlock($block) . PHP_EOL;
|
||||||
}
|
}
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
@ -80,50 +88,4 @@ class Renderer {
|
|||||||
<input class="mailpoet_recaptcha_field" type="hidden" name="recaptcha">
|
<input class="mailpoet_recaptcha_field" type="hidden" name="recaptcha">
|
||||||
</div>';
|
</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
private function renderBlock(array $block = []): string {
|
|
||||||
$html = '';
|
|
||||||
switch ($block['type']) {
|
|
||||||
case 'html':
|
|
||||||
$html .= Block\Html::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'divider':
|
|
||||||
$html .= Block\Divider::render();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'checkbox':
|
|
||||||
$html .= Block\Checkbox::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'radio':
|
|
||||||
$html .= Block\Radio::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'segment':
|
|
||||||
$html .= Block\Segment::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'date':
|
|
||||||
$html .= Block\Date::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'select':
|
|
||||||
$html .= Block\Select::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'text':
|
|
||||||
$html .= Block\Text::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'textarea':
|
|
||||||
$html .= Block\Textarea::render($block);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'submit':
|
|
||||||
$html .= Block\Submit::render($block);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return $html;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@ namespace MailPoet\Form;
|
|||||||
|
|
||||||
use MailPoet\API\JSON\API;
|
use MailPoet\API\JSON\API;
|
||||||
use MailPoet\Config\Renderer as ConfigRenderer;
|
use MailPoet\Config\Renderer as ConfigRenderer;
|
||||||
|
use MailPoet\DI\ContainerWrapper;
|
||||||
use MailPoet\Form\Renderer as FormRenderer;
|
use MailPoet\Form\Renderer as FormRenderer;
|
||||||
use MailPoet\Form\Util\Styles;
|
|
||||||
use MailPoet\Models\Form;
|
use MailPoet\Models\Form;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Util\Security;
|
use MailPoet\Util\Security;
|
||||||
@ -30,7 +30,7 @@ class Widget extends \WP_Widget {
|
|||||||
$this->wp = new WPFunctions;
|
$this->wp = new WPFunctions;
|
||||||
$this->renderer = new \MailPoet\Config\Renderer(!WP_DEBUG, !WP_DEBUG);
|
$this->renderer = new \MailPoet\Config\Renderer(!WP_DEBUG, !WP_DEBUG);
|
||||||
$this->assetsController = new AssetsController($this->wp, $this->renderer, SettingsController::getInstance());
|
$this->assetsController = new AssetsController($this->wp, $this->renderer, SettingsController::getInstance());
|
||||||
$this->formRenderer = new FormRenderer(new Styles(), SettingsController::getInstance());
|
$this->formRenderer = ContainerWrapper::getInstance()->get(FormRenderer::class);
|
||||||
if (!is_admin()) {
|
if (!is_admin()) {
|
||||||
$this->setupIframe();
|
$this->setupIframe();
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user