Add success message to subscription management form

[MAILPOET-1635]
This commit is contained in:
Rostislav Wolny
2020-07-30 10:35:03 +02:00
committed by Veljko V
parent 7c2e9162a1
commit c2c47a1c84
7 changed files with 27 additions and 4 deletions

View File

@ -440,7 +440,7 @@ div.mailpoet_form_slide_in.active {
} }
} }
// Manage Subscrition page // Manage Subscription page
.mailpoet-manage-subscription { .mailpoet-manage-subscription {
.mailpoet_text_label, .mailpoet_text_label,
.mailpoet_textarea_label, .mailpoet_textarea_label,
@ -451,4 +451,8 @@ div.mailpoet_form_slide_in.active {
.mailpoet_date_label { .mailpoet_date_label {
padding-right: 10px; padding-right: 10px;
} }
.mailpoet-submit-success {
color: $color-input-success;
}
} }

View File

@ -3,6 +3,7 @@
@import 'settings/breakpoints'; @import 'settings/breakpoints';
@import 'settings/grid'; @import 'settings/grid';
@import 'settings/colors';
// Tools // Tools
// Default mixins and functions. Not producing any CSS. // Default mixins and functions. Not producing any CSS.

View File

@ -54,6 +54,7 @@ class Manage {
$subscriberData = $_POST['data']; $subscriberData = $_POST['data'];
$subscriberData = $this->fieldNameObfuscator->deobfuscateFormPayload($subscriberData); $subscriberData = $this->fieldNameObfuscator->deobfuscateFormPayload($subscriberData);
$result = [];
if (!empty($subscriberData['email'])) { if (!empty($subscriberData['email'])) {
$subscriber = Subscriber::where('email', $subscriberData['email'])->findOne(); $subscriber = Subscriber::where('email', $subscriberData['email'])->findOne();
@ -76,9 +77,10 @@ class Manage {
$subscriber->getErrors(); $subscriber->getErrors();
} }
} }
$result = ['success' => true];
} }
$this->urlHelper->redirectBack(); $this->urlHelper->redirectBack($result);
} }
private function updateSubscriptions(Subscriber $subscriber, array $subscriberData) { private function updateSubscriptions(Subscriber $subscriber, array $subscriberData) {

View File

@ -15,6 +15,9 @@ use MailPoet\Util\Url as UrlHelper;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class ManageSubscriptionFormRenderer { class ManageSubscriptionFormRenderer {
const FORM_STATE_SUCCESS = 'success';
const FORM_STATE_NOT_SUBMITTED = 'not_submitted';
/** @var SettingsController */ /** @var SettingsController */
private $settings; private $settings;
@ -54,7 +57,7 @@ class ManageSubscriptionFormRenderer {
$this->templateRenderer = $templateRenderer; $this->templateRenderer = $templateRenderer;
} }
public function renderForm(Subscriber $subscriber): string { public function renderForm(Subscriber $subscriber, string $formState = self::FORM_STATE_NOT_SUBMITTED): string {
$basicFields = $this->getBasicFields($subscriber); $basicFields = $this->getBasicFields($subscriber);
$customFields = $this->getCustomFields($subscriber); $customFields = $this->getCustomFields($subscriber);
$segmentField = $this->getSegmentField($subscriber); $segmentField = $this->getSegmentField($subscriber);
@ -83,6 +86,7 @@ class ManageSubscriptionFormRenderer {
'token' => $this->linkTokens->getToken($subscriber), 'token' => $this->linkTokens->getToken($subscriber),
'editEmailInfo' => __('Need to change your email address? Unsubscribe here, then simply sign up again.', 'mailpoet'), 'editEmailInfo' => __('Need to change your email address? Unsubscribe here, then simply sign up again.', 'mailpoet'),
'formHtml' => $this->formRenderer->renderBlocks($form, [], $honeypot = false), 'formHtml' => $this->formRenderer->renderBlocks($form, [], $honeypot = false),
'formState' => $formState,
]; ];
if ($subscriber->isWPUser() || $subscriber->isWooCommerceUser()) { if ($subscriber->isWPUser() || $subscriber->isWooCommerceUser()) {

View File

@ -358,9 +358,13 @@ class Pages {
return $this->wp->__('Subscription management form is only available to mailing lists subscribers.', 'mailpoet'); return $this->wp->__('Subscription management form is only available to mailing lists subscribers.', 'mailpoet');
} }
$formStatus = isset($_GET['success']) && $_GET['success']
? ManageSubscriptionFormRenderer::FORM_STATE_SUCCESS
: ManageSubscriptionFormRenderer::FORM_STATE_NOT_SUBMITTED;
return $this->wp->applyFilters( return $this->wp->applyFilters(
'mailpoet_manage_subscription_page', 'mailpoet_manage_subscription_page',
$this->manageSubscriptionFormRenderer->renderForm($subscriber) $this->manageSubscriptionFormRenderer->renderForm($subscriber, $formStatus)
); );
} }

View File

@ -42,6 +42,8 @@ class ManageSubscriptionLinkCest {
$i->click('Manage your subscription'); $i->click('Manage your subscription');
$i->switchToNextTab(); $i->switchToNextTab();
$i->waitForText('Manage your subscription'); $i->waitForText('Manage your subscription');
$successMessage = 'Your preferences have been saved.';
$i->dontSee($successMessage);
$formStatusElement = '[data-automation-id="form_status"]'; $formStatusElement = '[data-automation-id="form_status"]';
@ -52,6 +54,7 @@ class ManageSubscriptionLinkCest {
$i->click('Save'); $i->click('Save');
$i->waitForElement($formStatusElement); $i->waitForElement($formStatusElement);
$i->seeOptionIsSelected($formStatusElement, 'Unsubscribed'); $i->seeOptionIsSelected($formStatusElement, 'Unsubscribed');
$i->see($successMessage);
// change status back to subscribed // change status back to subscribed
$i->selectOption($formStatusElement, 'Subscribed'); $i->selectOption($formStatusElement, 'Subscribed');

View File

@ -11,5 +11,10 @@
<span style="font-size:85%;"><%= editEmailInfo|raw %></span> <span style="font-size:85%;"><%= editEmailInfo|raw %></span>
</p> </p>
<%= formHtml|raw %> <%= formHtml|raw %>
<% if formState == 'success' %>
<p class="mailpoet-submit-success">
<%= _x('Your preferences have been saved.', 'success message after saving subscription settings') %>
</p>
<% endif %>
</form> </form>
<% endblock %> <% endblock %>