Create a new form from template
[MAILPOET-2987]
This commit is contained in:
@ -20,6 +20,127 @@ use MailPoet\Settings\Pages;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class FormEditor {
|
||||
const TEMPLATES = [
|
||||
'my-fancy-template1' => [
|
||||
'id' => 'my-fancy-template1',
|
||||
'name' => 'My Fancy 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' => [],
|
||||
'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;}
|
||||
',
|
||||
],
|
||||
];
|
||||
|
||||
/** @var PageRenderer */
|
||||
private $pageRenderer;
|
||||
|
||||
@ -70,12 +191,12 @@ class FormEditor {
|
||||
}
|
||||
|
||||
public function render() {
|
||||
if (!isset($_GET['id']) && !isset($_GET['action'])) {
|
||||
if (!isset($_GET['id']) && !isset($_GET['action'])) {
|
||||
$this->renderTemplateSelection();
|
||||
return;
|
||||
}
|
||||
if ($_GET['action'] === 'create') {
|
||||
$this->createEmptyForm();
|
||||
if (isset($_GET['action']) && $_GET['action'] === 'create') {
|
||||
$this->createForm($_GET['template-id']);
|
||||
}
|
||||
$form = Form::findOne((int)$_GET['id']);
|
||||
if ($form instanceof Form) {
|
||||
@ -113,128 +234,9 @@ class FormEditor {
|
||||
}
|
||||
|
||||
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;}
|
||||
',
|
||||
],
|
||||
];
|
||||
$templates = array_values(self::TEMPLATES);
|
||||
if (empty($templates) || !$this->flagsController->isSupported(FeaturesController::TEMPLATES_SELECTION)) {
|
||||
$this->createEmptyForm();
|
||||
$this->createForm();
|
||||
}
|
||||
$data = [
|
||||
'templates' => $templates,
|
||||
@ -242,8 +244,13 @@ class FormEditor {
|
||||
$this->pageRenderer->displayPage('form/template_selection.html', $data);
|
||||
}
|
||||
|
||||
private function createEmptyForm() {
|
||||
$form = $this->formsFactory->createEmptyForm();
|
||||
private function createForm($templateId = null) {
|
||||
if (!is_null($templateId) && isset(self::TEMPLATES[$templateId])) {
|
||||
$form = $this->formsFactory->createFormFromTemplate(self::TEMPLATES[$templateId]);
|
||||
}
|
||||
if (!isset($form)) {
|
||||
$form = $this->formsFactory->createEmptyForm();
|
||||
}
|
||||
|
||||
$this->wp->wpSafeRedirect(
|
||||
$this->wp->getSiteUrl(null,
|
||||
|
Reference in New Issue
Block a user