Move Template Selection to a separate page

[MAILPOET-2987]
This commit is contained in:
Pavel Dohnal
2020-06-23 11:15:18 +02:00
committed by Veljko V
parent dcbb0d9381
commit 565da8b52e
5 changed files with 37 additions and 14 deletions

View File

@ -38,7 +38,7 @@ class FormEditor {
'params' => ['label' => 'Email', 'class_name' => '', 'required' => '1'], 'params' => ['label' => 'Email', 'class_name' => '', 'required' => '1'],
'id' => 'email', 'id' => 'email',
'name' => 'Email', 'name' => 'Email',
'styles' => ['full_width' => '1'] 'styles' => ['full_width' => '1'],
], ],
[ [
'type' => 'text', 'type' => 'text',
@ -47,7 +47,7 @@ class FormEditor {
'name' => 'First name', 'name' => 'First name',
'styles' => ['full_width' => '1'], 'styles' => ['full_width' => '1'],
], ],
] ],
], ],
[ [
'type' => 'column', 'type' => 'column',
@ -191,12 +191,12 @@ class FormEditor {
} }
public function render() { public function render() {
if (!isset($_GET['id']) && !isset($_GET['action'])) { if (!isset($_GET['id']) && !isset($_GET['action'])) {
$this->renderTemplateSelection(); $this->renderTemplateSelection();
return; return;
} }
if (isset($_GET['action']) && $_GET['action'] === 'create') { if (isset($_GET['action']) && $_GET['action'] === 'create') {
$this->createForm($_GET['template-id']); $this->createForm();
} }
$form = Form::findOne((int)$_GET['id']); $form = Form::findOne((int)$_GET['id']);
if ($form instanceof Form) { if ($form instanceof Form) {
@ -233,7 +233,7 @@ class FormEditor {
$this->pageRenderer->displayPage('form/editor.html', $data); $this->pageRenderer->displayPage('form/editor.html', $data);
} }
private function renderTemplateSelection() { public function renderTemplateSelection() {
$templates = array_values(self::TEMPLATES); $templates = array_values(self::TEMPLATES);
if (empty($templates) || !$this->flagsController->isSupported(FeaturesController::TEMPLATES_SELECTION)) { if (empty($templates) || !$this->flagsController->isSupported(FeaturesController::TEMPLATES_SELECTION)) {
$this->createForm(); $this->createForm();
@ -244,13 +244,8 @@ class FormEditor {
$this->pageRenderer->displayPage('form/template_selection.html', $data); $this->pageRenderer->displayPage('form/template_selection.html', $data);
} }
private function createForm($templateId = null) { private function createForm() {
if (!is_null($templateId) && isset(self::TEMPLATES[$templateId])) { $form = $this->formsFactory->createEmptyForm();
$form = $this->formsFactory->createFormFromTemplate(self::TEMPLATES[$templateId]);
}
if (!isset($form)) {
$form = $this->formsFactory->createEmptyForm();
}
$this->wp->wpSafeRedirect( $this->wp->wpSafeRedirect(
$this->wp->getSiteUrl(null, $this->wp->getSiteUrl(null,

View File

@ -188,6 +188,26 @@ class Menu {
}); });
}); });
// form editor templates
$formTemplateSelectionEditorPage = $this->wp->addSubmenuPage(
true,
$this->setPageTitle(__('Form Editor', 'mailpoet')),
$this->wp->__('Form Editor', 'mailpoet'),
AccessControl::PERMISSION_MANAGE_FORMS,
'mailpoet-form-editor-template-selection',
[
$this,
'formEditorTemplateSelection',
]
);
// add body class for form editor page
$this->wp->addAction('load-' . $formTemplateSelectionEditorPage, function() {
$this->wp->addAction('admin_body_class', function ($classes) {
return ltrim($classes . ' block-editor-page');
});
});
// Subscribers page // Subscribers page
$subscribersPage = $this->wp->addSubmenuPage( $subscribersPage = $this->wp->addSubmenuPage(
@ -454,6 +474,10 @@ class Menu {
$this->container->get(FormEditor::class)->render(); $this->container->get(FormEditor::class)->render();
} }
public function formEditorTemplateSelection() {
$this->container->get(FormEditor::class)->renderTemplateSelection();
}
public function setPageTitle($title) { public function setPageTitle($title) {
return sprintf( return sprintf(
'%s - %s', '%s - %s',

View File

@ -5,6 +5,10 @@ namespace MailPoet\Form;
use MailPoet\Models\Form; use MailPoet\Models\Form;
class FormFactory { class FormFactory {
/**
* @param array $template
* @return Form
*/
public function createFormFromTemplate(array $template) { public function createFormFromTemplate(array $template) {
if (isset($template['id'])) { if (isset($template['id'])) {
unset($template['id']); unset($template['id']);

View File

@ -21,7 +21,7 @@
<% autoescape 'js' %> <% autoescape 'js' %>
var mailpoet_templates = <%= json_encode(templates) %>; var mailpoet_templates = <%= json_encode(templates) %>;
var mailpoet_form_edit_url = var mailpoet_form_edit_url =
"<%= admin_url('admin.php?page=mailpoet-form-editor&action=create&template-id=') %>"; "<%= admin_url('admin.php?page=mailpoet-form-editor&id=') %>";
<% endautoescape %> <% endautoescape %>
</script> </script>

View File

@ -16,7 +16,7 @@
var mailpoet_listing_per_page = <%= items_per_page %>; var mailpoet_listing_per_page = <%= items_per_page %>;
var mailpoet_segments = <%= json_encode(segments) %>; var mailpoet_segments = <%= json_encode(segments) %>;
var mailpoet_form_edit_url = var mailpoet_form_edit_url =
"<%= admin_url('admin.php?page=mailpoet-form-editor') %>"; "<%= admin_url('admin.php?page=mailpoet-form-editor-template-selection') %>";
var mailpoet_beacon_articles = [ var mailpoet_beacon_articles = [
'5e43d3ec2c7d3a7e9ae79da9', '5e43d3ec2c7d3a7e9ae79da9',
'5e3a166204286364bc94dda4', '5e3a166204286364bc94dda4',