diff --git a/assets/js/src/form_editor/form_editor.js b/assets/js/src/form_editor/form_editor.js index e60f59d8e0..074145d794 100644 --- a/assets/js/src/form_editor/form_editor.js +++ b/assets/js/src/form_editor/form_editor.js @@ -617,6 +617,17 @@ var WysijaForm = { // this is a url, so do not encode the protocol return encodeURI(str).replace(/[!'()*]/g, escape); } + }, + updateBlock: function(data) { + var hasUpdated = false; + WysijaForm.getBlocks().each(function(b) { + if(b.block.getData().id == data.id) { + hasUpdated = true; + b.block.redraw(data); + } + }); + + return hasUpdated; } }; diff --git a/assets/js/src/public.js b/assets/js/src/public.js index 8cdbea3d91..52a41bcbd2 100644 --- a/assets/js/src/public.js +++ b/assets/js/src/public.js @@ -20,10 +20,7 @@ function( $('form.mailpoet_form').each(function() { var form = $(this); - form.parsley({ - errorsWrapper: '

', - errorTemplate: '' - }).on('form:submit', function(parsley) { + form.parsley().on('form:submit', function(parsley) { var data = form.serializeObject() || {}; diff --git a/lib/Form/Block/Base.php b/lib/Form/Block/Base.php index 27f912b28b..1cc96d2168 100644 --- a/lib/Form/Block/Base.php +++ b/lib/Form/Block/Base.php @@ -13,7 +13,9 @@ abstract class Base { if($block['id'] === 'segments') { $rules['required'] = true; $rules['mincheck'] = 1; - $rules['error-message'] = __('You need to select a list'); + $rules['group'] = $block['id']; + $rules['errors-container'] = '.mailpoet_error_'.$block['id']; + $rules['required-message'] = __('You need to select a list'); } if(!empty($block['params']['required'])) { @@ -29,7 +31,7 @@ abstract class Base { } } - if($block['type'] === 'radio') { + if(in_array($block['type'], array('radio', 'checkbox'))) { $rules['group'] = 'custom_field_'.$block['id']; $rules['errors-container'] = '.mailpoet_error_'.$block['id']; $rules['required-message'] = __('You need to select at least one option.'); diff --git a/lib/Form/Block/Checkbox.php b/lib/Form/Block/Checkbox.php index 5b446b19f9..07a3b527eb 100644 --- a/lib/Form/Block/Checkbox.php +++ b/lib/Form/Block/Checkbox.php @@ -9,10 +9,6 @@ class Checkbox extends Base { $field_name = static::getFieldName($block); $field_validation = static::getInputValidation($block); - // TODO: check if it still makes sense - // create hidden default value - // $html .= ''; - $html .= '

'; $html .= static::renderLabel($block); @@ -35,6 +31,8 @@ class Checkbox extends Base { $html .= ''; } + $html .= ''; + $html .= '

'; return $html; diff --git a/lib/Form/Block/Radio.php b/lib/Form/Block/Radio.php index ba3b7c8d71..c60f886532 100644 --- a/lib/Form/Block/Radio.php +++ b/lib/Form/Block/Radio.php @@ -13,8 +13,6 @@ class Radio extends Base { $html .= static::renderLabel($block); - $html .= ''; - foreach($block['params']['values'] as $option) { $html .= ''; } + $html .= ''; + $html .= '

'; return $html; diff --git a/lib/Form/Block/Segment.php b/lib/Form/Block/Segment.php index e5a1683d3f..91521cc7ae 100644 --- a/lib/Form/Block/Segment.php +++ b/lib/Form/Block/Segment.php @@ -30,6 +30,8 @@ class Segment extends Base { } } + $html .= ''; + $html .= '

'; return $html; diff --git a/lib/Form/Block/Submit.php b/lib/Form/Block/Submit.php index 085dd7c577..12b6ea5367 100644 --- a/lib/Form/Block/Submit.php +++ b/lib/Form/Block/Submit.php @@ -6,11 +6,11 @@ class Submit extends Base { static function render($block) { $html = ''; - $html .= ' $value) { + if(strpos($key, 'cf_') === 0) { + $custom_fields[substr($key, 3)] = $value; + unset($data[$key]); + } + } + if($subscriber === false) { $subscriber = static::create(); $subscriber->hydrate($data); diff --git a/lib/Router/Subscribers.php b/lib/Router/Subscribers.php index 6df0f928c8..25241da9bf 100644 --- a/lib/Router/Subscribers.php +++ b/lib/Router/Subscribers.php @@ -113,13 +113,19 @@ class Subscribers { } if(!empty($errors)) { - wp_send_json(array('errors' => $errors)); + wp_send_json(array( + 'result' => false, + 'errors' => $errors + )); } $subscriber = Subscriber::subscribe($data, $segment_ids); + $result = false; if($subscriber === false || !$subscriber->id()) { $errors = array_merge($errors, $subscriber->getValidationErrors()); + } else { + $result = true; } if(!empty($errors)) { diff --git a/views/form/editor.html b/views/form/editor.html index 1cf52a26f2..f0e9ba2005 100644 --- a/views/form/editor.html +++ b/views/form/editor.html @@ -66,7 +66,7 @@ type="radio" name="on_success" value="message" - <% if(form.data.settings.on_success is empty or form.data.settings.on_success == 'message') %> + <% if(form.settings.on_success is empty or form.settings.on_success == 'message') %> checked="checked" <% endif %> /><%= __('Show message') %> @@ -77,15 +77,15 @@ type="radio" name="on_success" value="page" - <% if(form.data.settings.on_success == 'page') %> + <% if(form.settings.on_success == 'page') %> checked="checked" <% endif %> /><%= __('Go to page') %>

- <% if form.data.settings.success_message %> - <% set success_message = form.data.settings.success_message %> + <% if form.settings.success_message %> + <% set success_message = form.settings.success_message %> <% else %> <% set success_message = __('Check your inbox now to confirm your subscription.') %> <% endif %> @@ -103,7 +103,7 @@ <% if not(form.settings.segments_selected_by == 'user') %> @@ -26,6 +24,8 @@ <% endfor %> <% endif %> <%= html | raw %> + +
<%= after_widget | raw %>