Enabling links on header and footer on preview

This commit is contained in:
Amine Ben hammou
2017-10-11 10:28:10 +00:00
parent 0f6619e25d
commit 19e67ea2b0
4 changed files with 30 additions and 34 deletions

View File

@@ -23,28 +23,26 @@ class Link {
case 'subscription_unsubscribe_url': case 'subscription_unsubscribe_url':
return self::processUrl( return self::processUrl(
$action, $action,
SubscriptionUrl::getUnsubscribeUrl($subscriber), SubscriptionUrl::getUnsubscribeUrl($wp_user_preview ? false : $subscriber),
$queue, $queue
$wp_user_preview
); );
case 'subscription_manage_url': case 'subscription_manage_url':
return self::processUrl( return self::processUrl(
$action, $action,
SubscriptionUrl::getManageUrl($subscriber), SubscriptionUrl::getManageUrl($wp_user_preview ? false : $subscriber),
$queue, $queue
$wp_user_preview
); );
case 'newsletter_view_in_browser_url': case 'newsletter_view_in_browser_url':
$url = NewsletterUrl::getViewInBrowserUrl( $url = NewsletterUrl::getViewInBrowserUrl(
$type = null, $type = null,
$newsletter, $newsletter,
$subscriber, $wp_user_preview ? false : $subscriber,
$queue, $queue,
$wp_user_preview $wp_user_preview
); );
return self::processUrl($action, $url, $queue, $wp_user_preview); return self::processUrl($action, $url, $queue);
default: default:
$shortcode = self::getFullShortcode($action); $shortcode = self::getFullShortcode($action);
@@ -62,8 +60,7 @@ class Link {
} }
} }
static function processUrl($action, $url, $queue, $wp_user_preview = false) { static function processUrl($action, $url, $queue) {
if($wp_user_preview) return '#';
return ($queue !== false && (boolean)Setting::getValue('tracking.enabled')) ? return ($queue !== false && (boolean)Setting::getValue('tracking.enabled')) ?
self::getFullShortcode($action) : self::getFullShortcode($action) :
$url; $url;

View File

@@ -17,6 +17,7 @@ use MailPoet\Models\SendingQueue;
use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Newsletter\Scheduler\Scheduler;
use MailPoet\Newsletter\Url; use MailPoet\Newsletter\Url;
use MailPoet\Router\Router; use MailPoet\Router\Router;
use MailPoet\Subscription\Url as SubscriptionUrl;
class NewslettersTest extends \MailPoetTest { class NewslettersTest extends \MailPoetTest {
function _before() { function _before() {
@@ -699,21 +700,26 @@ class NewslettersTest extends \MailPoetTest {
function testItCanSendAPreview() { function testItCanSendAPreview() {
$subscriber = 'test@subscriber.com'; $subscriber = 'test@subscriber.com';
$unsubscribeLink = SubscriptionUrl::getUnsubscribeUrl(false);
$manageLink = SubscriptionUrl::getManageUrl(false);
$viewInBrowserLink = Url::getViewInBrowserUrl(null, $this->newsletter, false, false, true);
$data = array( $data = array(
'subscriber' => $subscriber, 'subscriber' => $subscriber,
'id' => $this->newsletter->id, 'id' => $this->newsletter->id,
'mailer' => Stub::makeEmpty( 'mailer' => Stub::makeEmpty(
'\MailPoet\Mailer\Mailer', '\MailPoet\Mailer\Mailer',
array( array(
'send' => function($newsletter, $subscriber, $extra_params) { 'send' => function($newsletter, $subscriber, $extra_params)
use ($unsubscribeLink, $manageLink, $viewInBrowserLink)
{
expect(is_array($newsletter))->true(); expect(is_array($newsletter))->true();
expect($newsletter['body']['text'])->contains('Hello test'); expect($newsletter['body']['text'])->contains('Hello test');
expect($subscriber)->equals($subscriber); expect($subscriber)->equals($subscriber);
expect($extra_params['unsubscribe_url'])->equals(home_url()); expect($extra_params['unsubscribe_url'])->equals(home_url());
// system links are replaced with hashes // system links are replaced with hashes
expect($newsletter['body']['html'])->contains('href="#">View in browser'); expect($newsletter['body']['html'])->contains('href="'.$viewInBrowserLink.'">View in browser');
expect($newsletter['body']['html'])->contains('href="#">Unsubscribe'); expect($newsletter['body']['html'])->contains('href="'.$unsubscribeLink.'">Unsubscribe');
expect($newsletter['body']['html'])->contains('href="#">Manage subscription'); expect($newsletter['body']['html'])->contains('href="'.$manageLink.'">Manage subscription');
return array('response' => true); return array('response' => true);
} }
) )

View File

@@ -9,6 +9,8 @@ use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberCustomField; use MailPoet\Models\SubscriberCustomField;
use MailPoet\Newsletter\Shortcodes\Categories\Date; use MailPoet\Newsletter\Shortcodes\Categories\Date;
use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Subscription\Url as SubscriptionUrl;
require_once(ABSPATH . 'wp-includes/pluggable.php'); require_once(ABSPATH . 'wp-includes/pluggable.php');
require_once(ABSPATH . 'wp-admin/includes/user.php'); require_once(ABSPATH . 'wp-admin/includes/user.php');
@@ -270,7 +272,7 @@ class ShortcodesTest extends \MailPoetTest {
} }
} }
function testItReturnsHashInsteadofLinksWhenPreviewIsEnabled() { function testItReturnsDefaultLinksWhenPreviewIsEnabled() {
$shortcodes_object = $this->shortcodes_object; $shortcodes_object = $this->shortcodes_object;
$shortcodes_object->wp_user_preview = true; $shortcodes_object->wp_user_preview = true;
$shortcodes = array( $shortcodes = array(
@@ -278,10 +280,15 @@ class ShortcodesTest extends \MailPoetTest {
'[link:subscription_manage_url]', '[link:subscription_manage_url]',
'[link:newsletter_view_in_browser_url]', '[link:newsletter_view_in_browser_url]',
); );
$links = array(
SubscriptionUrl::getUnsubscribeUrl(false),
SubscriptionUrl::getManageUrl(false),
NewsletterUrl::getViewInBrowserUrl(null, $this->newsletter, false, false, true)
);
$result = $shortcodes_object->process($shortcodes); $result = $shortcodes_object->process($shortcodes);
// hash is returned // hash is returned
foreach($result as $index => $transformed_shortcode) { foreach($result as $index => $transformed_shortcode) {
expect($transformed_shortcode)->equals('#'); expect($transformed_shortcode)->equals($links[$index]);
} }
} }

View File

@@ -159,20 +159,6 @@ class ViewInBrowserTest extends \MailPoetTest {
expect($rendered_body)->contains('<a href="http://google.com">'); expect($rendered_body)->contains('<a href="http://google.com">');
} }
function testReplacesLinkShortcodesWithUrlHashWhenPreviewIsEnabledAndNewsletterWasSent() {
$queue = $this->queue;
$queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking;
$rendered_body = $this->view_in_browser->renderNewsletter(
$this->newsletter,
$this->subscriber,
$queue,
$preview = true
);
// link shortcodes should be replaced with a hash (#)
expect($rendered_body)->notContains('[mailpoet_click_data]');
expect($rendered_body)->contains('<a href="#">');
}
function testRemovesOpenTrackingTagWhenPreviewIsEnabledAndNewsletterWasSent() { function testRemovesOpenTrackingTagWhenPreviewIsEnabledAndNewsletterWasSent() {
$queue = $this->queue; $queue = $this->queue;
$queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking; $queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking;