Append subscribers limit notice with info about WP users segment

[MAILPOET-3143]
This commit is contained in:
Rostislav Wolny
2021-01-07 15:36:16 +01:00
committed by Veljko V
parent 0eb60a4880
commit e576002d70
5 changed files with 33 additions and 1 deletions

View File

@ -21,6 +21,7 @@ var MailPoet = {
libs3rdPartyEnabled: window.mailpoet_3rd_party_libs_enabled,
apiVersion: window.mailpoet_api_version,
emailRegex: window.mailpoet_email_regex,
wpSegmentState: window.mailpoet_wp_segment_state,
getShortcodeLinks: () => (window.mailpoet_shortcode_links ? window.mailpoet_shortcode_links : []),
};

View File

@ -1,4 +1,5 @@
import React from 'react';
import ReactStringReplace from 'react-string-replace';
import MailPoet from 'mailpoet';
import Notice from 'notices/notice.tsx';
@ -21,6 +22,14 @@ const SubscribersLimitNotice = () => {
window.location.reload();
};
const youCanDisableWpSegmentMessage = ReactStringReplace(
MailPoet.I18n.t('youCanDisableWPUsersList'),
/\[link](.*?)\[\/link]/g,
(match) => (
<a key="goToSegments" href="?page=mailpoet-segments">{match}</a>
)
);
return (
<Notice type="error" timeout={false} closable={false} renderInPlace>
<h3>{title}</h3>
@ -28,6 +37,12 @@ const SubscribersLimitNotice = () => {
{youReachedTheLimit}
{' '}
{MailPoet.I18n.t('youNeedToUpgrade')}
{MailPoet.wpSegmentState === 'active' ? (
<>
<br />
{youCanDisableWpSegmentMessage}
</>
) : null}
</p>
<p>
<a

View File

@ -3,8 +3,10 @@
namespace MailPoet\AdminPages;
use MailPoet\Config\Renderer;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Referrals\ReferralDetector;
use MailPoet\Segments\SegmentsRepository;
use MailPoet\Settings\SettingsController;
use MailPoet\Settings\UserFlagsController;
use MailPoet\Tracy\DIPanel\DIPanel;
@ -24,16 +26,21 @@ class PageRenderer {
/** @var UserFlagsController */
private $userFlags;
/** @var SegmentsRepository */
private $segmentRepository;
public function __construct(
Renderer $renderer,
FeaturesController $featuresController,
SettingsController $settings,
UserFlagsController $userFlags
UserFlagsController $userFlags,
SegmentsRepository $segmentRepository
) {
$this->renderer = $renderer;
$this->featuresController = $featuresController;
$this->settings = $settings;
$this->userFlags = $userFlags;
$this->segmentRepository = $segmentRepository;
}
/**
@ -44,12 +51,16 @@ class PageRenderer {
public function displayPage($template, array $data = []) {
$lastAnnouncementDate = $this->settings->get('last_announcement_date');
$lastAnnouncementSeen = $this->userFlags->get('last_announcement_seen');
$wpSegment = $this->segmentRepository->getWPUsersSegment();
$wpSegmentState = ($wpSegment instanceof SegmentEntity) && $wpSegment->getDeletedAt() === null ?
SegmentEntity::SEGMENT_ENABLED : SegmentEntity::SEGMENT_DISABLED;
$defaults = [
'feature_flags' => $this->featuresController->getAllFlags(),
'referral_id' => $this->settings->get(ReferralDetector::REFERRAL_SETTING_NAME),
'mailpoet_api_key_state' => $this->settings->get('mta.mailpoet_api_key_state'),
'last_announcement_seen' => $lastAnnouncementSeen,
'feature_announcement_has_news' => (empty($lastAnnouncementSeen) || $lastAnnouncementSeen < $lastAnnouncementDate),
'wp_segment_state' => $wpSegmentState,
];
try {
if (class_exists(Debugger::class)) {

View File

@ -25,6 +25,9 @@ class SegmentEntity {
const TYPE_DEFAULT = 'default';
const TYPE_DYNAMIC = 'dynamic';
const SEGMENT_ENABLED = 'active';
const SEGMENT_DISABLED = 'disabled';
/**
* @ORM\Column(type="string")
* @Assert\NotBlank()

View File

@ -69,6 +69,7 @@ jQuery('#adminmenu #toplevel_page_mailpoet-newsletters')
var mailpoet_feature_flags = <%= json_encode(feature_flags) %>;
var mailpoet_referral_id = <%= json_encode(referral_id) %>;
var mailpoet_feature_announcement_has_news = <%= json_encode(feature_announcement_has_news) %>;
var mailpoet_wp_segment_state = <%= json_encode(wp_segment_state) %>;
</script>
<!-- javascripts -->
@ -89,6 +90,7 @@ jQuery('#adminmenu #toplevel_page_mailpoet-newsletters')
'freeVersionLimit': __('Our free version is limited to [subscribersLimit] subscribers.'),
'yourPlanLimit': __('Your plan is limited to [subscribersLimit] subscribers.'),
'youNeedToUpgrade': __('You need to upgrade now to be able to continue using MailPoet.'),
'youCanDisableWPUsersList': __('If you do not send emails to your WordPress Users list, you can [link]disable it[/link] to lower your number of subscribers.'),
'upgradeNow': __('Upgrade Now'),
'refreshMySubscribers': __('Ive upgraded my subscription, refresh subscriber limit'),