Render form after it is added to the page

[MAILPOET-1798]
This commit is contained in:
Pavel Dohnal
2020-02-03 13:50:08 +01:00
committed by Jack Kitterhing
parent 9fcb189295
commit 6befd09423
2 changed files with 44 additions and 2 deletions

View File

@ -1,6 +1,8 @@
/* eslint-disable react/react-in-jsx-scope */
import PropTypes from 'prop-types';
const wp = window.wp;
const ServerSideRender = wp.serverSideRender;
const allForms = window.mailpoet_forms;
function Edit({ attributes, setAttributes }) {
@ -26,10 +28,28 @@ function Edit({ attributes, setAttributes }) {
);
}
function renderForm() {
return (
<ServerSideRender
block="mailpoet/form-block-render"
attributes={{ form: attributes.selectedForm }}
/>
);
}
return (
<div className="mailpoet-block-div">
<h2>MailPoet Subscription Form</h2>
{displayFormsSelect()}
{
attributes.selectedForm === null && (
displayFormsSelect()
)
}
{
attributes.selectedForm !== null && (
renderForm()
)
}
</div>
);
}

View File

@ -3,6 +3,7 @@
namespace MailPoet\Config;
use MailPoet\Form\FormsRepository;
use MailPoet\Form\Widget;
use MailPoet\WP\Functions as WPFunctions;
class PostEditorBlock {
@ -32,7 +33,7 @@ class PostEditorBlock {
$this->wp->wpEnqueueScript(
'mailpoet-block-form-block-js',
Env::$assetsUrl . '/dist/js/' . $this->renderer->getJsAsset('post_editor_block.js'),
['wp-blocks', 'wp-components'],
['wp-blocks', 'wp-components', 'wp-server-side-render'],
Env::$version,
true
);
@ -49,6 +50,16 @@ class PostEditorBlock {
'editor_script' => 'mailpoet/form-block',
]);
register_block_type( 'mailpoet/form-block-render', [
'attributes' => [
'form' => [
'type' => 'number',
'default' => null,
],
],
'render_callback' => [$this, 'renderForm'],
]);
if (is_admin()) {
add_action('admin_head', function() {
$forms = $this->formsRepository->findAllNotDeleted();
@ -62,4 +73,15 @@ class PostEditorBlock {
}
public function renderForm($attributes) {
if (!$attributes) {
return '';
}
$basicForm = new Widget();
return $basicForm->widget([
'form' => (int)$attributes['form'],
'form_type' => 'html',
]);
}
}