Add form template selection page
[MAILPOET-2987]
This commit is contained in:
@@ -6,6 +6,7 @@ use MailPoet\AdminPages\PageRenderer;
|
||||
use MailPoet\API\JSON\ResponseBuilders\CustomFieldsResponseBuilder;
|
||||
use MailPoet\Config\Localizer;
|
||||
use MailPoet\CustomFields\CustomFieldsRepository;
|
||||
use MailPoet\Features\FeaturesController;
|
||||
use MailPoet\Form\Block;
|
||||
use MailPoet\Form\FormFactory;
|
||||
use MailPoet\Form\Renderer as FormRenderer;
|
||||
@@ -43,6 +44,9 @@ class FormEditor {
|
||||
/** @var Localizer */
|
||||
private $localizer;
|
||||
|
||||
/** @var FeaturesController */
|
||||
private $flagsController;
|
||||
|
||||
public function __construct(
|
||||
PageRenderer $pageRenderer,
|
||||
CustomFieldsRepository $customFieldsRepository,
|
||||
@@ -51,6 +55,7 @@ class FormEditor {
|
||||
Block\Date $dateBlock,
|
||||
WPFunctions $wp,
|
||||
FormFactory $formsFactory,
|
||||
FeaturesController $flagsController,
|
||||
Localizer $localizer
|
||||
) {
|
||||
$this->pageRenderer = $pageRenderer;
|
||||
@@ -61,21 +66,18 @@ class FormEditor {
|
||||
$this->wp = $wp;
|
||||
$this->formsFactory = $formsFactory;
|
||||
$this->localizer = $localizer;
|
||||
$this->flagsController = $flagsController;
|
||||
}
|
||||
|
||||
public function render() {
|
||||
$id = (isset($_GET['id']) ? (int)$_GET['id'] : 0);
|
||||
if (isset($_GET['action']) && $_GET['action'] === 'create') {
|
||||
$form = $this->formsFactory->createEmptyForm();
|
||||
|
||||
$this->wp->wpSafeRedirect(
|
||||
$this->wp->getSiteUrl(null,
|
||||
'/wp-admin/admin.php?page=mailpoet-form-editor&id=' . $form->id()
|
||||
)
|
||||
);
|
||||
exit;
|
||||
if (!isset($_GET['id']) && !isset($_GET['action'])) {
|
||||
$this->renderTemplateSelection();
|
||||
return;
|
||||
}
|
||||
$form = Form::findOne($id);
|
||||
if ($_GET['action'] === 'create') {
|
||||
$this->createEmptyForm();
|
||||
}
|
||||
$form = Form::findOne((int)$_GET['id']);
|
||||
if ($form instanceof Form) {
|
||||
$form = $form->asArray();
|
||||
}
|
||||
@@ -110,6 +112,147 @@ class FormEditor {
|
||||
$this->pageRenderer->displayPage('form/editor.html', $data);
|
||||
}
|
||||
|
||||
private function renderTemplateSelection() {
|
||||
$templates = [
|
||||
[
|
||||
'id' => 'my-fancy-template1',
|
||||
'name' => 'My First Form',
|
||||
'body' => [
|
||||
[
|
||||
'type' => 'columns',
|
||||
'body' =>
|
||||
[
|
||||
[
|
||||
'type' => 'column',
|
||||
'params' => ['class_name' => '', 'vertical_alignment' => '', 'width' => '50'],
|
||||
'body' => [
|
||||
[
|
||||
'type' => 'text',
|
||||
'params' => ['label' => 'Email', 'class_name' => '', 'required' => '1'],
|
||||
'id' => 'email',
|
||||
'name' => 'Email',
|
||||
'styles' => ['full_width' => '1']
|
||||
],
|
||||
[
|
||||
'type' => 'text',
|
||||
'params' => ['label' => 'First name', 'class_name' => ''],
|
||||
'id' => 'first_name',
|
||||
'name' => 'First name',
|
||||
'styles' => ['full_width' => '1'],
|
||||
],
|
||||
]
|
||||
],
|
||||
[
|
||||
'type' => 'column',
|
||||
'params' => ['class_name' => '', 'vertical_alignment' => '', 'width' => '50'],
|
||||
'body' => [
|
||||
[
|
||||
'type' => 'paragraph',
|
||||
'id' => 'paragraph',
|
||||
'params' => [
|
||||
'content' => 'Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.',
|
||||
'drop_cap' => '0',
|
||||
'align' => 'left',
|
||||
'font_size' => '',
|
||||
'text_color' => '',
|
||||
'background_color' => '',
|
||||
'class_name' => '',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'params' => [
|
||||
'vertical_alignment' => '',
|
||||
'class_name' => '',
|
||||
'text_color' => '',
|
||||
'background_color' => '',
|
||||
],
|
||||
],
|
||||
[
|
||||
'type' => 'submit',
|
||||
'params' => ['label' => 'Subscribe!', 'class_name' => ''],
|
||||
'id' => 'submit',
|
||||
'name' => 'Submit',
|
||||
'styles' => [
|
||||
'full_width' => '0',
|
||||
'bold' => '0',
|
||||
'background_color' => '#ff6900',
|
||||
'font_size' => '36',
|
||||
'font_color' => '#313131',
|
||||
'border_size' => '1',
|
||||
'border_radius' => '8',
|
||||
'border_color' => '#f78da7',
|
||||
'padding' => '5',
|
||||
],
|
||||
],
|
||||
],
|
||||
'settings' => [
|
||||
'segments' => ['3'],
|
||||
'on_success' => 'message',
|
||||
'success_message' => 'Check your inbox or spam folder to confirm your subscription.',
|
||||
'success_page' => '5',
|
||||
'segments_selected_by' => 'admin',
|
||||
'alignment' => 'left',
|
||||
'place_form_bellow_all_pages' => '',
|
||||
'place_form_bellow_all_posts' => '',
|
||||
'place_popup_form_on_all_pages' => '1',
|
||||
'place_popup_form_on_all_posts' => '1',
|
||||
'popup_form_delay' => '15',
|
||||
'place_fixed_bar_form_on_all_pages' => '',
|
||||
'place_fixed_bar_form_on_all_posts' => '',
|
||||
'fixed_bar_form_delay' => '15',
|
||||
'fixed_bar_form_position' => 'top',
|
||||
'place_slide_in_form_on_all_pages' => '',
|
||||
'place_slide_in_form_on_all_posts' => '',
|
||||
'slide_in_form_delay' => '15',
|
||||
'slide_in_form_position' => 'right',
|
||||
'border_radius' => '0',
|
||||
'border_size' => '0',
|
||||
'form_padding' => '20',
|
||||
'input_padding' => '5',
|
||||
'below_post_styles' => ['width' => ['unit' => 'percent', 'value' => '100']],
|
||||
'slide_in_styles' => ['width' => ['unit' => 'pixel', 'value' => '560']],
|
||||
'fixed_bar_styles' => ['width' => ['unit' => 'percent', 'value' => '100']],
|
||||
'popup_styles' => ['width' => ['unit' => 'pixel', 'value' => '560']],
|
||||
'other_styles' => ['width' => ['unit' => 'percent', 'value' => '100']],
|
||||
],
|
||||
'styles' => '
|
||||
/* form */.mailpoet_form {}
|
||||
/* columns */.mailpoet_column_with_background { padding: 10px;}/* space between columns */.mailpoet_form_column:not(:first-child) { margin-left: 20px;}
|
||||
/* input wrapper (label + input) */.mailpoet_paragraph { line-height:20px; margin-bottom: 20px;}
|
||||
/* labels */.mailpoet_segment_label,.mailpoet_text_label,.mailpoet_textarea_label,.mailpoet_select_label,.mailpoet_radio_label,.mailpoet_checkbox_label,.mailpoet_list_label,.mailpoet_date_label { display:block; font-weight: normal;}
|
||||
/* inputs */.mailpoet_text,.mailpoet_textarea,.mailpoet_select,.mailpoet_date_month,.mailpoet_date_day,.mailpoet_date_year,.mailpoet_date { display:block;}
|
||||
.mailpoet_text,.mailpoet_textarea { width: 200px;}
|
||||
.mailpoet_checkbox {}
|
||||
.mailpoet_submit {}
|
||||
.mailpoet_divider {}
|
||||
.mailpoet_message {}
|
||||
.mailpoet_form_loading { width: 30px; text-align: center; line-height: normal;}
|
||||
.mailpoet_form_loading > span { width: 5px; height: 5px; background-color: #5b5b5b;}
|
||||
',
|
||||
],
|
||||
];
|
||||
if (empty($templates) || !$this->flagsController->isSupported(FeaturesController::TEMPLATES_SELECTION)) {
|
||||
$this->createEmptyForm();
|
||||
}
|
||||
$data = [
|
||||
'templates' => $templates,
|
||||
];
|
||||
$this->pageRenderer->displayPage('form/template_selection.html', $data);
|
||||
}
|
||||
|
||||
private function createEmptyForm() {
|
||||
$form = $this->formsFactory->createEmptyForm();
|
||||
|
||||
$this->wp->wpSafeRedirect(
|
||||
$this->wp->getSiteUrl(null,
|
||||
'/wp-admin/admin.php?page=mailpoet-form-editor&id=' . $form->id()
|
||||
)
|
||||
);
|
||||
exit;
|
||||
}
|
||||
|
||||
private function getPreviewPageUrl() {
|
||||
$mailpoetPage = Pages::getDefaultMailPoetPage();
|
||||
if (!$mailpoetPage) {
|
||||
|
Reference in New Issue
Block a user