Display dependency notice also for email previews
[MAILPOET-6367]
This commit is contained in:
committed by
Oluwaseun Olorunsola
parent
24355167cc
commit
3f48d088f3
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\EmailEditor\Integrations\MailPoet;
|
namespace MailPoet\EmailEditor\Integrations\MailPoet;
|
||||||
|
|
||||||
|
use MailPoet\Config\AccessControl;
|
||||||
use MailPoet\EmailEditor\Engine\Dependency_Check;
|
use MailPoet\EmailEditor\Engine\Dependency_Check;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
@@ -18,13 +19,20 @@ class DependencyNotice {
|
|||||||
$this->dependencyCheck = $dependencyCheck;
|
$this->dependencyCheck = $dependencyCheck;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkDependenciesAndEventuallyRedirect(): void {
|
public function checkDependenciesAndEventuallyShowNotice(): bool {
|
||||||
if ($this->dependencyCheck->are_dependencies_met()) {
|
if ($this->dependencyCheck->are_dependencies_met()) {
|
||||||
$this->wp->deleteTransient(self::EMAIL_EDITOR_DEPENDENCY_NOTICE);
|
$this->wp->deleteTransient(self::EMAIL_EDITOR_DEPENDENCY_NOTICE);
|
||||||
return;
|
return false;
|
||||||
|
}
|
||||||
|
// For admins, we redirect to newsletters page and show notice there, for other users we display a notice immediately
|
||||||
|
if ($this->wp->currentUserCan(AccessControl::PERMISSION_MANAGE_EMAILS)) {
|
||||||
|
$this->wp->setTransient(self::EMAIL_EDITOR_DEPENDENCY_NOTICE, true);
|
||||||
|
$this->wp->wpSafeRedirect($this->wp->adminUrl('admin.php?page=mailpoet-newsletters'));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
$this->displayMessage();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
$this->wp->setTransient(self::EMAIL_EDITOR_DEPENDENCY_NOTICE, true);
|
|
||||||
$this->wp->wpSafeRedirect($this->wp->adminUrl('admin.php?page=mailpoet-newsletters'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function displayMessageIfNeeded(): void {
|
public function displayMessageIfNeeded(): void {
|
||||||
@@ -37,7 +45,7 @@ class DependencyNotice {
|
|||||||
private function displayMessage(): void {
|
private function displayMessage(): void {
|
||||||
$dependencyErrorMessage = sprintf(
|
$dependencyErrorMessage = sprintf(
|
||||||
// translators: %1$s: WordPress version e.g. 6.7, %2$s: Gutenberg version e.g. 19.3
|
// translators: %1$s: WordPress version e.g. 6.7, %2$s: Gutenberg version e.g. 19.3
|
||||||
__('This email was created using the new editor, but it requires WordPress version %1$s or higher, or the Gutenberg plugin version %2$s or above. Please update your setup to continue editing this email.', 'mailpoet'),
|
__('This email was created using the new editor, but it requires WordPress version %1$s or higher, or the Gutenberg plugin version %2$s or above. Please update your setup to continue editing or preview this email.', 'mailpoet'),
|
||||||
Dependency_Check::MIN_WP_VERSION,
|
Dependency_Check::MIN_WP_VERSION,
|
||||||
Dependency_Check::MIN_GUTENBERG_VERSION
|
Dependency_Check::MIN_GUTENBERG_VERSION
|
||||||
);
|
);
|
||||||
|
@@ -67,7 +67,7 @@ class EditorPageRenderer {
|
|||||||
if (!$post instanceof \WP_Post || $post->post_type !== EditorInitController::MAILPOET_EMAIL_POST_TYPE) { // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
|
if (!$post instanceof \WP_Post || $post->post_type !== EditorInitController::MAILPOET_EMAIL_POST_TYPE) { // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$this->dependencyNotice->checkDependenciesAndEventuallyRedirect();
|
$this->dependencyNotice->checkDependenciesAndEventuallyShowNotice();
|
||||||
|
|
||||||
// load mailpoet email editor JS integrations
|
// load mailpoet email editor JS integrations
|
||||||
$editorIntegrationAssetsParams = require Env::$assetsPath . '/dist/js/email_editor_integration/email_editor_integration.asset.php';
|
$editorIntegrationAssetsParams = require Env::$assetsPath . '/dist/js/email_editor_integration/email_editor_integration.asset.php';
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\Newsletter\ViewInBrowser;
|
namespace MailPoet\Newsletter\ViewInBrowser;
|
||||||
|
|
||||||
|
use MailPoet\EmailEditor\Integrations\MailPoet\DependencyNotice;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||||
@@ -28,12 +29,16 @@ class ViewInBrowserController {
|
|||||||
/** @var NewslettersRepository */
|
/** @var NewslettersRepository */
|
||||||
private $newslettersRepository;
|
private $newslettersRepository;
|
||||||
|
|
||||||
|
/** @var DependencyNotice */
|
||||||
|
private $dependencyNotice;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
LinkTokens $linkTokens,
|
LinkTokens $linkTokens,
|
||||||
NewsletterUrl $newsletterUrl,
|
NewsletterUrl $newsletterUrl,
|
||||||
NewslettersRepository $newslettersRepository,
|
NewslettersRepository $newslettersRepository,
|
||||||
ViewInBrowserRenderer $viewInBrowserRenderer,
|
ViewInBrowserRenderer $viewInBrowserRenderer,
|
||||||
SendingQueuesRepository $sendingQueuesRepository,
|
SendingQueuesRepository $sendingQueuesRepository,
|
||||||
|
DependencyNotice $dependencyNotice,
|
||||||
SubscribersRepository $subscribersRepository
|
SubscribersRepository $subscribersRepository
|
||||||
) {
|
) {
|
||||||
$this->linkTokens = $linkTokens;
|
$this->linkTokens = $linkTokens;
|
||||||
@@ -41,6 +46,7 @@ class ViewInBrowserController {
|
|||||||
$this->subscribersRepository = $subscribersRepository;
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
$this->sendingQueuesRepository = $sendingQueuesRepository;
|
$this->sendingQueuesRepository = $sendingQueuesRepository;
|
||||||
$this->newsletterUrl = $newsletterUrl;
|
$this->newsletterUrl = $newsletterUrl;
|
||||||
|
$this->dependencyNotice = $dependencyNotice;
|
||||||
$this->newslettersRepository = $newslettersRepository;
|
$this->newslettersRepository = $newslettersRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,6 +55,9 @@ class ViewInBrowserController {
|
|||||||
$isPreview = !empty($data['preview']);
|
$isPreview = !empty($data['preview']);
|
||||||
$newsletter = $this->getNewsletter($data);
|
$newsletter = $this->getNewsletter($data);
|
||||||
$subscriber = $this->getSubscriber($data);
|
$subscriber = $this->getSubscriber($data);
|
||||||
|
if ($newsletter->getWpPostId() && $this->dependencyNotice->checkDependenciesAndEventuallyShowNotice()) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
// if queue and subscriber exist, subscriber must have received the newsletter
|
// if queue and subscriber exist, subscriber must have received the newsletter
|
||||||
$queue = isset($data['queue_id']) ? $this->sendingQueuesRepository->findOneById($data['queue_id']) : null;
|
$queue = isset($data['queue_id']) ? $this->sendingQueuesRepository->findOneById($data['queue_id']) : null;
|
||||||
|
@@ -34,9 +34,11 @@ class ViewInBrowser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function displayNewsletter($result) {
|
private function displayNewsletter($result) {
|
||||||
header('Content-Type: text/html; charset=utf-8');
|
if ($result) {
|
||||||
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
header('Content-Type: text/html; charset=utf-8');
|
||||||
echo $result;
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||||
|
echo $result;
|
||||||
|
}
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Newsletter\ViewInBrowser;
|
|||||||
|
|
||||||
use Codeception\Stub\Expected;
|
use Codeception\Stub\Expected;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\SendingQueue;
|
use MailPoet\Cron\Workers\SendingQueue\SendingQueue;
|
||||||
|
use MailPoet\EmailEditor\Integrations\MailPoet\DependencyNotice;
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
use MailPoet\Entities\ScheduledTaskEntity;
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
use MailPoet\Entities\SendingQueueEntity;
|
use MailPoet\Entities\SendingQueueEntity;
|
||||||
@@ -228,6 +229,7 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
|||||||
$this->newslettersRepository,
|
$this->newslettersRepository,
|
||||||
$viewInBrowserRenderer,
|
$viewInBrowserRenderer,
|
||||||
$this->sendingQueuesRepository,
|
$this->sendingQueuesRepository,
|
||||||
|
$this->diContainer->get(DependencyNotice::class),
|
||||||
$this->subscribersRepository
|
$this->subscribersRepository
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user