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\FormsRepository::class);
|
||||
$container->autowire(\MailPoet\Form\Renderer::class);
|
||||
$container->autowire(\MailPoet\Form\BlocksRenderer::class);
|
||||
$container->autowire(\MailPoet\Form\Util\Styles::class);
|
||||
// Helpscout
|
||||
$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 */
|
||||
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->settings = $settings;
|
||||
$this->blocksRenderer = $blocksRenderer;
|
||||
}
|
||||
|
||||
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) {
|
||||
$html .= $this->renderReCaptcha();
|
||||
}
|
||||
$html .= $this->renderBlock($block) . PHP_EOL;
|
||||
$html .= $this->blocksRenderer->renderBlock($block) . PHP_EOL;
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
@ -80,50 +88,4 @@ class Renderer {
|
||||
<input class="mailpoet_recaptcha_field" type="hidden" name="recaptcha">
|
||||
</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\Config\Renderer as ConfigRenderer;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Form\Renderer as FormRenderer;
|
||||
use MailPoet\Form\Util\Styles;
|
||||
use MailPoet\Models\Form;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Util\Security;
|
||||
@ -30,7 +30,7 @@ class Widget extends \WP_Widget {
|
||||
$this->wp = new WPFunctions;
|
||||
$this->renderer = new \MailPoet\Config\Renderer(!WP_DEBUG, !WP_DEBUG);
|
||||
$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()) {
|
||||
$this->setupIframe();
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user