success messages in both context when subscribing to a form

This commit is contained in:
Jonathan Labreuille
2016-04-21 12:39:14 +02:00
parent 42d586610e
commit 375e70d84b
4 changed files with 33 additions and 27 deletions

View File

@@ -22,7 +22,7 @@ function(
form.parsley().on('form:validated', function(parsley) { form.parsley().on('form:validated', function(parsley) {
// clear messages // clear messages
//form.find('.mailpoet_message').hide(); form.find('.mailpoet_message > p').hide();
// resize iframe // resize iframe
if(window.frameElement !== null) { if(window.frameElement !== null) {
@@ -45,15 +45,10 @@ function(
action: 'subscribe', action: 'subscribe',
data: data data: data
}).done(function(response) { }).done(function(response) {
if(response.result !== true) { if(response.result === false) {
// errors form.find('.mailpoet_validate_error').html(
$.each(response.errors, function(index, error) { response.errors.join('<br />')
form ).show();
.find('.mailpoet_message')
.append('<p class="mailpoet_validate_error">'+
error+
'</p>');
});
} else { } else {
// successfully subscribed // successfully subscribed
if(response.page !== undefined) { if(response.page !== undefined) {

View File

@@ -148,11 +148,11 @@ class Widget extends \WP_Widget {
'after_title' => (!empty($after_title) ? $after_title : '') 'after_title' => (!empty($after_title) ? $after_title : '')
); );
// check if the form was submitted // check if the form was successfully submitted via POST (non ajax)
$data['is_submitted'] = ( $data['success'] = (
(isset($_GET['mailpoet_form'])) (isset($_GET['mailpoet_success']))
&& &&
((int)$_GET['mailpoet_form'] === (int)$form['id']) ((int)$_GET['mailpoet_success'] === (int)$form['id'])
); );
// generate security token // generate security token

View File

@@ -102,19 +102,20 @@ class Subscribers {
if($form_settings !== null) { if($form_settings !== null) {
switch($form_settings['on_success']) { switch($form_settings['on_success']) {
case 'page': case 'page':
$success_page_url = get_permalink($form_settings['success_page']);
// response depending on context // response depending on context
if($doing_ajax === true) { if($doing_ajax === true) {
return array( return array(
'result' => $result, 'result' => $result,
'page' => get_permalink($form_settings['success_page']), 'page' => $success_page_url,
'errors' => $errors 'errors' => $errors
); );
} else { } else {
// handle success/error messages
if($result === false) { if($result === false) {
Url::redirectBack(); Url::redirectBack();
} else { } else {
Url::redirectTo(get_permalink($form_settings['success_page'])); Url::redirectTo($success_page_url);
} }
} }
break; break;
@@ -124,11 +125,17 @@ class Subscribers {
// response depending on context // response depending on context
if($doing_ajax === true) { if($doing_ajax === true) {
return array( return array(
'result' => true, 'result' => $result,
'errors' => $errors 'errors' => $errors
); );
} else { } else {
Url::redirectBack(); $params = (
($result === true)
? array('mailpoet_success' => $form->id)
: array()
);
Url::redirectBack($params);
} }
break; break;
} }

View File

@@ -24,14 +24,18 @@
<% endfor %> <% endfor %>
<% endif %> <% endif %>
<%= html | raw %> <%= html | raw %>
<div <div class="mailpoet_message">
class="mailpoet_message" <p
class="mailpoet_validate_success"
<% if not(success) %>
style="display:none;"
<% endif %>
> >
<p class="mailpoet_validate_success" style="display:none;">
<%= form.settings.success_message %> <%= form.settings.success_message %>
</p> </p>
<p class="mailpoet_validate_error" style="display:none;">
<!-- errors will be displayed here -->
</p>
</div> </div>
</form> </form>
</div> </div>