Add new form editor hello world

[SHOP-2450]
This commit is contained in:
Rostislav Wolny
2019-10-16 15:14:25 +02:00
committed by Jack Kitterhing
parent 7655a3dd55
commit ac0fd14c7c
4 changed files with 52 additions and 4 deletions

View File

@ -0,0 +1,14 @@
import React from 'react';
import ReactDOM from 'react-dom';
const appElement = document.querySelector('#mailpoet_form_edit');
if (appElement) {
ReactDOM.render(
<h1>
Here comes editor for:
{window.mailpoet_form_data.name}
</h1>,
appElement
);
}

View File

@ -3,6 +3,7 @@
namespace MailPoet\AdminPages\Pages; namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer; use MailPoet\AdminPages\PageRenderer;
use MailPoet\Features\FeaturesController;
use MailPoet\Form\Block; use MailPoet\Form\Block;
use MailPoet\Form\Renderer as FormRenderer; use MailPoet\Form\Renderer as FormRenderer;
use MailPoet\Models\Form; use MailPoet\Models\Form;
@ -13,8 +14,12 @@ class FormEditor {
/** @var PageRenderer */ /** @var PageRenderer */
private $page_renderer; private $page_renderer;
function __construct(PageRenderer $page_renderer) { /** @var FeaturesController */
private $features_controller;
function __construct(PageRenderer $page_renderer, FeaturesController $features_controller) {
$this->page_renderer = $page_renderer; $this->page_renderer = $page_renderer;
$this->features_controller = $features_controller;
} }
function render() { function render() {
@ -35,6 +40,11 @@ class FormEditor {
'sub_menu' => 'mailpoet-forms', 'sub_menu' => 'mailpoet-forms',
]; ];
$this->page_renderer->displayPage('form/editor.html', $data); if ($this->features_controller->isSupported(FeaturesController::NEW_FORM_EDITOR)) {
$this->page_renderer->displayPage('form/editor.html', $data);
} else {
$this->page_renderer->displayPage('form/editor_legacy.html', $data);
}
} }
} }

12
views/form/editor.html Normal file
View File

@ -0,0 +1,12 @@
<% extends 'layout.html' %>
<% block content %>
<div id="mailpoet_form_edit">
</div>
<script>
<% autoescape 'js' %>
var mailpoet_form_data = <%= json_encode(form) %>;
<% endautoescape %>
</script>
<%= javascript('form_editor.js')%>
<% endblock %>

View File

@ -360,10 +360,22 @@ const testConfig = {
'jquery': 'jQuery', 'jquery': 'jQuery',
'interact': 'interact', 'interact': 'interact',
'spectrum': 'spectrum', 'spectrum': 'spectrum',
} },
}; };
module.exports = [adminConfig, publicConfig, migratorConfig, testConfig].map((config) => { // FormEditor config
const formEditorConfig = {
name: 'form_editor',
entry: {
form_editor: 'form_editor/index.jsx',
},
externals: {
'jquery': 'jQuery',
'mailpoet': 'MailPoet',
},
};
module.exports = [adminConfig, publicConfig, migratorConfig, formEditorConfig, testConfig].map((config) => {
if (config.name !== 'test') { if (config.name !== 'test') {
config.plugins = config.plugins || []; config.plugins = config.plugins || [];
config.plugins.push( config.plugins.push(