From 6a2842bb45848e2d64268894819c6d775c4667c1 Mon Sep 17 00:00:00 2001
From: Alexander Paliarush
Date: Tue, 14 Jul 2015 18:26:00 -0500
Subject: [PATCH 1/5] MAGETWO-38049: Wrong Reset Password link in a Welcome
email when customer was created on backend
- Fixed tests
---
.../Magento/Email/Test/Unit/Model/TemplateTest.php | 12 +++++++++++-
.../Newsletter/Test/Unit/Model/TemplateTest.php | 9 +++++++++
.../Magento/Email/Model/Template/FilterTest.php | 2 ++
3 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
index 72945c314c400..b216d421cc77f 100644
--- a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
+++ b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
@@ -61,6 +61,11 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
*/
private $filterFactory;
+ /**
+ * @var \Magento\Framework\Url|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $urlModel;
+
/**
* @var \Magento\Email\Model\Template\Config|\PHPUnit_Framework_MockObject_MockObject
*/
@@ -103,6 +108,9 @@ public function setUp()
$this->templateFactory = $this->getMockBuilder('Magento\Email\Model\TemplateFactory')
->disableOriginalConstructor()
->getMock();
+ $this->urlModel = $this->getMockBuilder('Magento\Framework\Url')
+ ->disableOriginalConstructor()
+ ->getMock();
$this->filterFactory = $this->getMockBuilder('Magento\Email\Model\Template\FilterFactory')
->setMethods(['create'])
->disableOriginalConstructor()
@@ -131,6 +139,7 @@ protected function getModelMock(array $mockedMethods = [])
$this->scopeConfig,
$this->emailConfig,
$this->templateFactory,
+ $this->urlModel,
$this->filterFactory
]
)
@@ -160,7 +169,7 @@ public function testSetAndGetTemplateFilter()
public function testGetTemplateFilterWithEmptyValue()
{
$filterTemplate = $this->getMockBuilder('Magento\Framework\Filter\Template')
- ->setMethods(['setUseAbsoluteLinks', 'setStoreId'])
+ ->setMethods(['setUseAbsoluteLinks', 'setStoreId', 'setUrlModel'])
->disableOriginalConstructor()
->getMock();
$filterTemplate->expects($this->once())
@@ -737,6 +746,7 @@ public function testGetType($templateType, $expectedResult)
$this->getMock('Magento\Framework\App\Config\ScopeConfigInterface'),
$emailConfig,
$this->getMock('Magento\Email\Model\TemplateFactory', [], [], '', false),
+ $this->getMock('Magento\Framework\Url', [], [], '', false),
$this->getMock('Magento\Email\Model\Template\FilterFactory', [], [], '', false),
['template_id' => 10],
]
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
index 4e27c0b7acdff..a7d71621c9c09 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
@@ -65,6 +65,11 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
*/
private $templateFactory;
+ /**
+ * @var \Magento\Framework\Url|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $urlModel;
+
/**
* @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
*/
@@ -122,6 +127,9 @@ public function setUp()
$this->templateFactory = $this->getMockBuilder('Magento\Email\Model\TemplateFactory')
->disableOriginalConstructor()
->getMock();
+ $this->urlModel = $this->getMockBuilder('Magento\Framework\Url')
+ ->disableOriginalConstructor()
+ ->getMock();
$this->request = $this->getMockBuilder('Magento\Framework\App\RequestInterface')
->disableOriginalConstructor()
->getMock();
@@ -152,6 +160,7 @@ protected function getModelMock(array $mockedMethods = [])
$this->scopeConfig,
$this->emailConfig,
$this->templateFactory,
+ $this->urlModel,
$this->request,
$this->filterFactory,
]
diff --git a/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php b/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php
index eec2737e1aa00..37f1e04885bdd 100644
--- a/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php
+++ b/dev/tests/integration/testsuite/Magento/Email/Model/Template/FilterTest.php
@@ -77,6 +77,8 @@ public function testStoreDirective()
$this->assertStringMatchesFormat('http://example.com/%stranslation/ajax/index/', $url);
$this->_model->setStoreId(0);
+ $backendUrlModel = $this->_objectManager->create('Magento\Backend\Model\Url');
+ $this->_model->setUrlModel($backendUrlModel);
$url = $this->_model->storeDirective(
['{{store url="translation/ajax/index"}}', 'store', ' url="translation/ajax/index"']
);
From e12cf68ec6fa411b8d141ea01d5a77e958fdf08f Mon Sep 17 00:00:00 2001
From: Alexander Paliarush
Date: Tue, 14 Jul 2015 12:32:38 -0500
Subject: [PATCH 2/5] MAGETWO-38049: Wrong Reset Password link in a Welcome
email when customer was created on backend
---
.../view/frontend/email/account_new.html | 6 ++---
.../email/account_new_confirmation.html | 6 ++---
.../frontend/email/account_new_confirmed.html | 6 ++---
.../view/frontend/email/password_new.html | 4 +--
.../email/password_reset_confirmation.html | 4 +--
.../Magento/Email/Model/AbstractTemplate.php | 25 +++++++++++++++++++
.../Magento/Email/Model/BackendTemplate.php | 3 +++
app/code/Magento/Email/Model/Template.php | 7 ++++--
app/code/Magento/Email/etc/di.xml | 10 ++++++++
.../Magento/Newsletter/Model/Template.php | 3 +++
.../view/frontend/email/creditmemo_new.html | 4 +--
.../frontend/email/creditmemo_update.html | 4 +--
.../view/frontend/email/invoice_new.html | 4 +--
.../view/frontend/email/invoice_update.html | 4 +--
.../Sales/view/frontend/email/order_new.html | 2 +-
.../view/frontend/email/order_update.html | 4 +--
.../view/frontend/email/shipment_new.html | 4 +--
.../view/frontend/email/shipment_update.html | 4 +--
18 files changed, 74 insertions(+), 30 deletions(-)
diff --git a/app/code/Magento/Customer/view/frontend/email/account_new.html b/app/code/Magento/Customer/view/frontend/email/account_new.html
index f5c2706ae392e..d64121a198ee3 100644
--- a/app/code/Magento/Customer/view/frontend/email/account_new.html
+++ b/app/code/Magento/Customer/view/frontend/email/account_new.html
@@ -6,7 +6,7 @@
-->
@@ -19,7 +19,7 @@
{{trans
'To sign in to our site, use these credentials during checkout or on the My Account page:'
- customer_url=$store.getUrl('customer/account/')
+ customer_url=$this.getUrl($store, 'customer/account/')
|raw}}
@@ -30,7 +30,7 @@
{{trans
'Forgot your account password? Click here to reset it.'
- reset_url="$store.getUrl('customer/account/createPassword/', [_query:[id:$customer.id, token:$customer.rp_token]])"
+ reset_url="$this.getUrl($store, 'customer/account/createPassword/', [_query:[id:$customer.id, token:$customer.rp_token]])"
|raw}}
{{trans "When you sign in to your account, you will be able to:"}}
diff --git a/app/code/Magento/Customer/view/frontend/email/account_new_confirmation.html b/app/code/Magento/Customer/view/frontend/email/account_new_confirmation.html
index 7c018b1f1f27a..01747e59add75 100644
--- a/app/code/Magento/Customer/view/frontend/email/account_new_confirmation.html
+++ b/app/code/Magento/Customer/view/frontend/email/account_new_confirmation.html
@@ -6,8 +6,8 @@
-->
@@ -23,7 +23,7 @@
diff --git a/app/code/Magento/Customer/view/frontend/email/account_new_confirmed.html b/app/code/Magento/Customer/view/frontend/email/account_new_confirmed.html
index 0d800973e815a..9ba8b14f1a70d 100644
--- a/app/code/Magento/Customer/view/frontend/email/account_new_confirmed.html
+++ b/app/code/Magento/Customer/view/frontend/email/account_new_confirmed.html
@@ -6,7 +6,7 @@
-->
@@ -18,7 +18,7 @@
{{trans
'To sign in to our site, use these credentials during checkout or on the My Account page:'
- customer_url=$store.getUrl('customer/account/')
+ customer_url=$this.getUrl($store, 'customer/account/')
|raw}}
@@ -29,7 +29,7 @@
{{trans
'Forgot your account password? Click here to reset it.'
- reset_url="$store.getUrl('customer/account/createPassword/', [_query:[id:$customer.id, token:$customer.rp_token]])"
+ reset_url="$this.getUrl($store, 'customer/account/createPassword/', [_query:[id:$customer.id, token:$customer.rp_token]])"
|raw}}
{{trans "When you sign in to your account, you will be able to:"}}
diff --git a/app/code/Magento/Customer/view/frontend/email/password_new.html b/app/code/Magento/Customer/view/frontend/email/password_new.html
index fe0b0c9cc5191..ad9e9cfab5049 100644
--- a/app/code/Magento/Customer/view/frontend/email/password_new.html
+++ b/app/code/Magento/Customer/view/frontend/email/password_new.html
@@ -6,7 +6,7 @@
-->
{{template config_path="design/email/header_template"}}
@@ -21,7 +21,7 @@
diff --git a/app/code/Magento/Customer/view/frontend/email/password_reset_confirmation.html b/app/code/Magento/Customer/view/frontend/email/password_reset_confirmation.html
index d6f7a607bdd3e..28c6dacc08ee9 100644
--- a/app/code/Magento/Customer/view/frontend/email/password_reset_confirmation.html
+++ b/app/code/Magento/Customer/view/frontend/email/password_reset_confirmation.html
@@ -7,7 +7,7 @@
{{template config_path="design/email/header_template"}}
@@ -21,7 +21,7 @@
diff --git a/app/code/Magento/Email/Model/AbstractTemplate.php b/app/code/Magento/Email/Model/AbstractTemplate.php
index 1b438eaa9133c..85c545e1c97db 100644
--- a/app/code/Magento/Email/Model/AbstractTemplate.php
+++ b/app/code/Magento/Email/Model/AbstractTemplate.php
@@ -146,6 +146,11 @@ abstract class AbstractTemplate extends AbstractModel implements TemplateTypesIn
*/
protected $emailConfig;
+ /**
+ * @var \Magento\Framework\UrlInterface
+ */
+ private $urlModel;
+
/**
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\View\DesignInterface $design
@@ -157,6 +162,7 @@ abstract class AbstractTemplate extends AbstractModel implements TemplateTypesIn
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param Template\Config $emailConfig
* @param \Magento\Email\Model\TemplateFactory $templateFactory
+ * @param \Magento\Framework\Url $urlModel
* @param array $data
*
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -172,6 +178,7 @@ public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
Template\Config $emailConfig,
TemplateFactory $templateFactory,
+ \Magento\Framework\UrlInterface $urlModel,
array $data = []
) {
$this->design = $design;
@@ -184,6 +191,7 @@ public function __construct(
$this->scopeConfig = $scopeConfig;
$this->emailConfig = $emailConfig;
$this->templateFactory = $templateFactory;
+ $this->urlModel = $urlModel;
parent::__construct($context, $registry, null, null, $data);
}
@@ -716,4 +724,21 @@ abstract protected function getFilterFactory();
* @return int|string
*/
abstract public function getType();
+
+ /**
+ * Generate URL for the specified store.
+ *
+ * @param \Magento\Store\Model\Store $store
+ * @param string $route
+ * @param array $params
+ * @return string
+ */
+ public function getUrl(\Magento\Store\Model\Store $store, $route = '', $params = [])
+ {
+ $url = $this->urlModel->setScope($store);
+ if ($this->storeManager->getStore()->getId() != $store->getId()) {
+ $params['_scope_to_url'] = true;
+ }
+ return $url->getUrl($route, $params);
+ }
}
diff --git a/app/code/Magento/Email/Model/BackendTemplate.php b/app/code/Magento/Email/Model/BackendTemplate.php
index a89fe65fa7597..dd5341f4fdebf 100644
--- a/app/code/Magento/Email/Model/BackendTemplate.php
+++ b/app/code/Magento/Email/Model/BackendTemplate.php
@@ -30,6 +30,7 @@ class BackendTemplate extends Template
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Email\Model\Template\Config $emailConfig
* @param \Magento\Email\Model\TemplateFactory $templateFactory
+ * @param \Magento\Framework\UrlInterface $urlModel
* @param \Magento\Email\Model\Template\FilterFactory $filterFactory
* @param \Magento\Config\Model\Config\Structure $structure
* @param array $data
@@ -47,6 +48,7 @@ public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Email\Model\Template\Config $emailConfig,
\Magento\Email\Model\TemplateFactory $templateFactory,
+ \Magento\Framework\UrlInterface $urlModel,
\Magento\Email\Model\Template\FilterFactory $filterFactory,
\Magento\Config\Model\Config\Structure $structure,
array $data = []
@@ -63,6 +65,7 @@ public function __construct(
$scopeConfig,
$emailConfig,
$templateFactory,
+ $urlModel,
$filterFactory,
$data
);
diff --git a/app/code/Magento/Email/Model/Template.php b/app/code/Magento/Email/Model/Template.php
index cda315f41a56a..883e957ea5581 100644
--- a/app/code/Magento/Email/Model/Template.php
+++ b/app/code/Magento/Email/Model/Template.php
@@ -98,8 +98,6 @@ class Template extends AbstractTemplate implements \Magento\Framework\Mail\Templ
protected $_sendingException = null;
/**
- * Constructor
- *
* Email filter factory
*
* @var \Magento\Email\Model\Template\FilterFactory
@@ -107,6 +105,8 @@ class Template extends AbstractTemplate implements \Magento\Framework\Mail\Templ
private $filterFactory;
/**
+ * Initialize dependencies
+ *
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\View\DesignInterface $design
* @param \Magento\Framework\Registry $registry
@@ -117,6 +117,7 @@ class Template extends AbstractTemplate implements \Magento\Framework\Mail\Templ
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param Template\Config $emailConfig
* @param \Magento\Email\Model\TemplateFactory $templateFactory
+ * @param \Magento\Framework\UrlInterface $urlModel
* @param \Magento\Email\Model\Template\FilterFactory $filterFactory
* @param array $data
*
@@ -133,6 +134,7 @@ public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Email\Model\Template\Config $emailConfig,
\Magento\Email\Model\TemplateFactory $templateFactory,
+ \Magento\Framework\UrlInterface $urlModel,
\Magento\Email\Model\Template\FilterFactory $filterFactory,
array $data = []
) {
@@ -148,6 +150,7 @@ public function __construct(
$scopeConfig,
$emailConfig,
$templateFactory,
+ $urlModel,
$data
);
}
diff --git a/app/code/Magento/Email/etc/di.xml b/app/code/Magento/Email/etc/di.xml
index 6efcf948b596e..4c27f5b4878b5 100644
--- a/app/code/Magento/Email/etc/di.xml
+++ b/app/code/Magento/Email/etc/di.xml
@@ -11,4 +11,14 @@
+
+
+ Magento\Backend\Model\Url
+
+
+
+
+ Magento\Framework\Url
+
+
diff --git a/app/code/Magento/Newsletter/Model/Template.php b/app/code/Magento/Newsletter/Model/Template.php
index d9f686853acbb..1aee8771fd6d6 100644
--- a/app/code/Magento/Newsletter/Model/Template.php
+++ b/app/code/Magento/Newsletter/Model/Template.php
@@ -76,6 +76,7 @@ class Template extends \Magento\Email\Model\AbstractTemplate
* @param \Magento\Email\Model\Template\Config $emailConfig
* @param \Magento\Email\Model\TemplateFactory $templateFactory The template directive requires an email
* template model, not newsletter model, as templates overridden in backend are loaded from email table.
+ * @param \Magento\Framework\Url $urlModel
* @param \Magento\Framework\App\RequestInterface $request
* @param \Magento\Newsletter\Model\Template\FilterFactory $filterFactory,
* @param array $data
@@ -92,6 +93,7 @@ public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Email\Model\Template\Config $emailConfig,
\Magento\Email\Model\TemplateFactory $templateFactory,
+ \Magento\Framework\UrlInterface $urlModel,
\Magento\Framework\App\RequestInterface $request,
\Magento\Newsletter\Model\Template\FilterFactory $filterFactory,
array $data = []
@@ -107,6 +109,7 @@ public function __construct(
$scopeConfig,
$emailConfig,
$templateFactory,
+ $urlModel,
$data
);
$this->_storeManager = $storeManager;
diff --git a/app/code/Magento/Sales/view/frontend/email/creditmemo_new.html b/app/code/Magento/Sales/view/frontend/email/creditmemo_new.html
index 2b513aea62a81..77e16e81b121d 100644
--- a/app/code/Magento/Sales/view/frontend/email/creditmemo_new.html
+++ b/app/code/Magento/Sales/view/frontend/email/creditmemo_new.html
@@ -10,7 +10,7 @@
"var comment":"Credit Memo Comment",
"var creditmemo.increment_id":"Credit Memo Id",
"layout handle=\"sales_email_order_creditmemo_items\" creditmemo=$creditmemo order=$order":"Credit Memo Items Grid",
-"var store.getUrl('customer/account/')":"Customer Account URL",
+"var this.getUrl($store, 'customer/account/')":"Customer Account URL",
"var order.getCustomerName()":"Customer Name",
"var order.increment_id":"Order Id",
"var payment_html|raw":"Payment Details",
@@ -26,7 +26,7 @@
{{trans "%name," name=$order.getCustomerName()}}
{{trans "Thank you for your order from %store_name." store_name=$store.getFrontendName()}}
- {{trans 'You can check the status of your order by logging into your account.' account_url=$store.getUrl('customer/account/') |raw}}
+ {{trans 'You can check the status of your order by logging into your account.' account_url=$this.getUrl($store, 'customer/account/') |raw}}
{{trans 'If you have questions about your order, you can email us at %store_email' store_email=$store_email |raw}}{{depend store_phone}} {{trans 'or call us at %store_phone' store_phone=$store_phone |raw}}{{/depend}}.
{{depend store_hours}}
{{trans 'Our hours are %store_hours.' store_hours=$store_hours |raw}}
diff --git a/app/code/Magento/Sales/view/frontend/email/creditmemo_update.html b/app/code/Magento/Sales/view/frontend/email/creditmemo_update.html
index aa97c9437316a..d0db9942fbfc3 100644
--- a/app/code/Magento/Sales/view/frontend/email/creditmemo_update.html
+++ b/app/code/Magento/Sales/view/frontend/email/creditmemo_update.html
@@ -8,7 +8,7 @@