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

View File

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

View File

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

View File

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