File tree Expand file tree Collapse file tree 5 files changed +80
-4
lines changed
Block/DataProviders/Email/Shipment
Shipping/view/frontend/templates/tracking
dev/tests/integration/testsuite/Magento/Shipping/Controller/Adminhtml/Order/Shipment Expand file tree Collapse file tree 5 files changed +80
-4
lines changed Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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 >
Original file line number Diff line number Diff line change 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>
Original file line number Diff line number Diff 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>
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments