From c2c47a1c8437c1d4eb7ce59524d249290df980d0 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Thu, 30 Jul 2020 10:35:03 +0200 Subject: [PATCH] Add success message to subscription management form [MAILPOET-1635] --- assets/css/src/components-public/_public.scss | 6 +++++- assets/css/src/mailpoet-public.scss | 1 + lib/Subscription/Manage.php | 4 +++- lib/Subscription/ManageSubscriptionFormRenderer.php | 6 +++++- lib/Subscription/Pages.php | 6 +++++- tests/acceptance/ManageSubscriptionLinkCest.php | 3 +++ views/subscription/manage_subscription.html | 5 +++++ 7 files changed, 27 insertions(+), 4 deletions(-) diff --git a/assets/css/src/components-public/_public.scss b/assets/css/src/components-public/_public.scss index e7dd243017..98a2b1b8e2 100644 --- a/assets/css/src/components-public/_public.scss +++ b/assets/css/src/components-public/_public.scss @@ -440,7 +440,7 @@ div.mailpoet_form_slide_in.active { } } -// Manage Subscrition page +// Manage Subscription page .mailpoet-manage-subscription { .mailpoet_text_label, .mailpoet_textarea_label, @@ -451,4 +451,8 @@ div.mailpoet_form_slide_in.active { .mailpoet_date_label { padding-right: 10px; } + + .mailpoet-submit-success { + color: $color-input-success; + } } diff --git a/assets/css/src/mailpoet-public.scss b/assets/css/src/mailpoet-public.scss index ae9becd843..758f4d3a3f 100644 --- a/assets/css/src/mailpoet-public.scss +++ b/assets/css/src/mailpoet-public.scss @@ -3,6 +3,7 @@ @import 'settings/breakpoints'; @import 'settings/grid'; +@import 'settings/colors'; // Tools // Default mixins and functions. Not producing any CSS. diff --git a/lib/Subscription/Manage.php b/lib/Subscription/Manage.php index f4afd4f4d3..168651d7fc 100644 --- a/lib/Subscription/Manage.php +++ b/lib/Subscription/Manage.php @@ -54,6 +54,7 @@ class Manage { $subscriberData = $_POST['data']; $subscriberData = $this->fieldNameObfuscator->deobfuscateFormPayload($subscriberData); + $result = []; if (!empty($subscriberData['email'])) { $subscriber = Subscriber::where('email', $subscriberData['email'])->findOne(); @@ -76,9 +77,10 @@ class Manage { $subscriber->getErrors(); } } + $result = ['success' => true]; } - $this->urlHelper->redirectBack(); + $this->urlHelper->redirectBack($result); } private function updateSubscriptions(Subscriber $subscriber, array $subscriberData) { diff --git a/lib/Subscription/ManageSubscriptionFormRenderer.php b/lib/Subscription/ManageSubscriptionFormRenderer.php index 22c0d9be9a..0f04024594 100644 --- a/lib/Subscription/ManageSubscriptionFormRenderer.php +++ b/lib/Subscription/ManageSubscriptionFormRenderer.php @@ -15,6 +15,9 @@ use MailPoet\Util\Url as UrlHelper; use MailPoet\WP\Functions as WPFunctions; class ManageSubscriptionFormRenderer { + const FORM_STATE_SUCCESS = 'success'; + const FORM_STATE_NOT_SUBMITTED = 'not_submitted'; + /** @var SettingsController */ private $settings; @@ -54,7 +57,7 @@ class ManageSubscriptionFormRenderer { $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); $customFields = $this->getCustomFields($subscriber); $segmentField = $this->getSegmentField($subscriber); @@ -83,6 +86,7 @@ class ManageSubscriptionFormRenderer { 'token' => $this->linkTokens->getToken($subscriber), 'editEmailInfo' => __('Need to change your email address? Unsubscribe here, then simply sign up again.', 'mailpoet'), 'formHtml' => $this->formRenderer->renderBlocks($form, [], $honeypot = false), + 'formState' => $formState, ]; if ($subscriber->isWPUser() || $subscriber->isWooCommerceUser()) { diff --git a/lib/Subscription/Pages.php b/lib/Subscription/Pages.php index b1b85e9588..20ff2073cc 100644 --- a/lib/Subscription/Pages.php +++ b/lib/Subscription/Pages.php @@ -358,9 +358,13 @@ class Pages { 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( 'mailpoet_manage_subscription_page', - $this->manageSubscriptionFormRenderer->renderForm($subscriber) + $this->manageSubscriptionFormRenderer->renderForm($subscriber, $formStatus) ); } diff --git a/tests/acceptance/ManageSubscriptionLinkCest.php b/tests/acceptance/ManageSubscriptionLinkCest.php index c23310d0d6..e6ba2667a7 100644 --- a/tests/acceptance/ManageSubscriptionLinkCest.php +++ b/tests/acceptance/ManageSubscriptionLinkCest.php @@ -42,6 +42,8 @@ class ManageSubscriptionLinkCest { $i->click('Manage your subscription'); $i->switchToNextTab(); $i->waitForText('Manage your subscription'); + $successMessage = 'Your preferences have been saved.'; + $i->dontSee($successMessage); $formStatusElement = '[data-automation-id="form_status"]'; @@ -52,6 +54,7 @@ class ManageSubscriptionLinkCest { $i->click('Save'); $i->waitForElement($formStatusElement); $i->seeOptionIsSelected($formStatusElement, 'Unsubscribed'); + $i->see($successMessage); // change status back to subscribed $i->selectOption($formStatusElement, 'Subscribed'); diff --git a/views/subscription/manage_subscription.html b/views/subscription/manage_subscription.html index 62d8d38afd..237fff9568 100644 --- a/views/subscription/manage_subscription.html +++ b/views/subscription/manage_subscription.html @@ -11,5 +11,10 @@ <%= editEmailInfo|raw %>

<%= formHtml|raw %> + <% if formState == 'success' %> +

+ <%= _x('Your preferences have been saved.', 'success message after saving subscription settings') %> +

+ <% endif %> <% endblock %>