Skip to content

Commit a81d416

Browse files
committed
Merge remote-tracking branch 'origin/MC-18366' into 2.3-develop-pr29
2 parents 2aec878 + 03626cb commit a81d416

File tree

5 files changed

+80
-4
lines changed

5 files changed

+80
-4
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Sales\Block\DataProviders\Email\Shipment;
9+
10+
use Magento\Framework\View\Element\Block\ArgumentInterface;
11+
use Magento\Sales\Model\Order\Shipment\Track;
12+
use Magento\Shipping\Helper\Data as ShippingHelper;
13+
14+
/**
15+
* Shipment track info for email
16+
*/
17+
class TrackingUrl implements ArgumentInterface
18+
{
19+
/**
20+
* @var ShippingHelper
21+
*/
22+
private $helper;
23+
24+
/**
25+
* @param ShippingHelper $helper
26+
*/
27+
public function __construct(ShippingHelper $helper)
28+
{
29+
$this->helper = $helper;
30+
}
31+
32+
/**
33+
* Get Shipping tracking URL
34+
*
35+
* @param Track $track
36+
* @return string
37+
*/
38+
public function getUrl(Track $track): string
39+
{
40+
return $this->helper->getTrackingPopupUrlBySalesModel($track);
41+
}
42+
}

app/code/Magento/Sales/view/frontend/layout/sales_email_order_shipment_track.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
99
<update handle="sales_email_order_shipment_renderers"/>
1010
<body>
11-
<block class="Magento\Framework\View\Element\Template" name="sales.order.email.shipment.track" template="Magento_Sales::email/shipment/track.phtml"/>
11+
<block class="Magento\Framework\View\Element\Template" name="sales.order.email.shipment.track" template="Magento_Sales::email/shipment/track.phtml">
12+
<arguments>
13+
<argument name="tracking_url" xsi:type="object">Magento\Sales\Block\DataProviders\Email\Shipment\TrackingUrl</argument>
14+
</arguments>
15+
</block>
1216
</body>
1317
</page>

app/code/Magento/Sales/view/frontend/templates/email/shipment/track.phtml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
76
?>
7+
<?php /* @var \Magento\Framework\View\Element\Template $block */ ?>
88
<?php $_shipment = $block->getShipment() ?>
99
<?php
1010
/* @var \Magento\Sales\Model\Order $_order */
@@ -24,7 +24,11 @@ $_order = $block->getOrder() ?>
2424
<?php foreach ($trackCollection as $_item) : ?>
2525
<tr>
2626
<td><?= $block->escapeHtml($_item->getTitle()) ?>:</td>
27-
<td><?= $block->escapeHtml($_item->getNumber()) ?></td>
27+
<td>
28+
<a href="<?= $block->escapeUrl($block->getTrackingUrl()->getUrl($_item)) ?>" target="_blank">
29+
<?= $block->escapeHtml($_item->getNumber()) ?>
30+
</a>
31+
</td>
2832
</tr>
2933
<?php endforeach ?>
3034
</tbody>

app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,13 @@ $results = $block->getTrackingInfo();
6060
</button>
6161
</div>
6262
</div>
63+
<script>
64+
require([
65+
'jquery'
66+
], function (jQuery) {
67+
/* hide the close button when the content doesn't open in a modal window */
68+
if (window.opener === null || typeof window.opener === "undefined") {
69+
jQuery('.actions button.close').hide();
70+
}
71+
});
72+
</script>

dev/tests/integration/testsuite/Magento/Shipping/Controller/Adminhtml/Order/Shipment/SaveTest.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@ class SaveTest extends AbstractShipmentControllerTest
2828
*/
2929
public function testSendEmailOnShipmentSave(): void
3030
{
31-
$order = $this->prepareRequest(['shipment' => ['send_email' => true]]);
31+
$tracking = [
32+
[
33+
'number' => 'some_racking_number',
34+
'title' => 'some_tracking_title',
35+
'carrier_code' => 'carrier_code'
36+
]
37+
];
38+
$order = $this->prepareRequest(['shipment' => ['send_email' => true], 'tracking' => $tracking]);
3239
$this->dispatch('backend/admin/order_shipment/save');
3340

3441
$this->assertSessionMessages(
@@ -47,6 +54,15 @@ public function testSendEmailOnShipmentSave(): void
4754
),
4855
new StringContains(
4956
"Your Shipment #{$shipment->getIncrementId()} for Order #{$order->getIncrementId()}"
57+
),
58+
new StringContains(
59+
'some_tracking_title'
60+
),
61+
new StringContains(
62+
'some_racking_number'
63+
),
64+
new StringContains(
65+
'shipping/tracking/popup?hash='
5066
)
5167
);
5268

0 commit comments

Comments
 (0)