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;
|
||||
|
||||
use MailPoet\Config\AccessControl;
|
||||
use MailPoet\EmailEditor\Engine\Dependency_Check;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
@@ -18,13 +19,20 @@ class DependencyNotice {
|
||||
$this->dependencyCheck = $dependencyCheck;
|
||||
}
|
||||
|
||||
public function checkDependenciesAndEventuallyRedirect(): void {
|
||||
public function checkDependenciesAndEventuallyShowNotice(): bool {
|
||||
if ($this->dependencyCheck->are_dependencies_met()) {
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
||||
public function displayMessageIfNeeded(): void {
|
||||
@@ -37,7 +45,7 @@ class DependencyNotice {
|
||||
private function displayMessage(): void {
|
||||
$dependencyErrorMessage = sprintf(
|
||||
// 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_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
|
||||
return;
|
||||
}
|
||||
$this->dependencyNotice->checkDependenciesAndEventuallyRedirect();
|
||||
$this->dependencyNotice->checkDependenciesAndEventuallyShowNotice();
|
||||
|
||||
// load mailpoet email editor JS integrations
|
||||
$editorIntegrationAssetsParams = require Env::$assetsPath . '/dist/js/email_editor_integration/email_editor_integration.asset.php';
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Newsletter\ViewInBrowser;
|
||||
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\DependencyNotice;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||
@@ -28,12 +29,16 @@ class ViewInBrowserController {
|
||||
/** @var NewslettersRepository */
|
||||
private $newslettersRepository;
|
||||
|
||||
/** @var DependencyNotice */
|
||||
private $dependencyNotice;
|
||||
|
||||
public function __construct(
|
||||
LinkTokens $linkTokens,
|
||||
NewsletterUrl $newsletterUrl,
|
||||
NewslettersRepository $newslettersRepository,
|
||||
ViewInBrowserRenderer $viewInBrowserRenderer,
|
||||
SendingQueuesRepository $sendingQueuesRepository,
|
||||
DependencyNotice $dependencyNotice,
|
||||
SubscribersRepository $subscribersRepository
|
||||
) {
|
||||
$this->linkTokens = $linkTokens;
|
||||
@@ -41,6 +46,7 @@ class ViewInBrowserController {
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
$this->sendingQueuesRepository = $sendingQueuesRepository;
|
||||
$this->newsletterUrl = $newsletterUrl;
|
||||
$this->dependencyNotice = $dependencyNotice;
|
||||
$this->newslettersRepository = $newslettersRepository;
|
||||
}
|
||||
|
||||
@@ -49,6 +55,9 @@ class ViewInBrowserController {
|
||||
$isPreview = !empty($data['preview']);
|
||||
$newsletter = $this->getNewsletter($data);
|
||||
$subscriber = $this->getSubscriber($data);
|
||||
if ($newsletter->getWpPostId() && $this->dependencyNotice->checkDependenciesAndEventuallyShowNotice()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// if queue and subscriber exist, subscriber must have received the newsletter
|
||||
$queue = isset($data['queue_id']) ? $this->sendingQueuesRepository->findOneById($data['queue_id']) : null;
|
||||
|
@@ -34,9 +34,11 @@ class ViewInBrowser {
|
||||
}
|
||||
|
||||
private function displayNewsletter($result) {
|
||||
if ($result) {
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
echo $result;
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Newsletter\ViewInBrowser;
|
||||
|
||||
use Codeception\Stub\Expected;
|
||||
use MailPoet\Cron\Workers\SendingQueue\SendingQueue;
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\DependencyNotice;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Entities\SendingQueueEntity;
|
||||
@@ -228,6 +229,7 @@ class ViewInBrowserControllerTest extends \MailPoetTest {
|
||||
$this->newslettersRepository,
|
||||
$viewInBrowserRenderer,
|
||||
$this->sendingQueuesRepository,
|
||||
$this->diContainer->get(DependencyNotice::class),
|
||||
$this->subscribersRepository
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user