diff --git a/assets/js/src/post_editor_block/edit.jsx b/assets/js/src/post_editor_block/edit.jsx
index 0a63229ed9..1afa2f2933 100644
--- a/assets/js/src/post_editor_block/edit.jsx
+++ b/assets/js/src/post_editor_block/edit.jsx
@@ -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 (
+
+ );
+ }
+
return (
MailPoet Subscription Form
- {displayFormsSelect()}
+ {
+ attributes.selectedForm === null && (
+ displayFormsSelect()
+ )
+ }
+ {
+ attributes.selectedForm !== null && (
+ renderForm()
+ )
+ }
);
}
diff --git a/lib/Config/PostEditorBlock.php b/lib/Config/PostEditorBlock.php
index fdcd3ed3ca..074daf5c9a 100644
--- a/lib/Config/PostEditorBlock.php
+++ b/lib/Config/PostEditorBlock.php
@@ -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',
+ ]);
+ }
+
}