Skip to content

Commit 90200f6

Browse files
Merge pull request #4519 from magento-engcom/2.3-develop-fast-lane-prs
[Magento Community Engineering] Community Contributions - 2.3-develop expedited
2 parents d7b928a + e67e0b3 commit 90200f6

File tree

9 files changed

+313
-22
lines changed

9 files changed

+313
-22
lines changed

app/code/Magento/Catalog/Test/Mftf/Test/AdminSimpleSetEditRelatedProductsTest.xml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
2323
<createData entity="SimpleProduct2" stepKey="simpleProduct0"/>
2424
<createData entity="SimpleProduct2" stepKey="simpleProduct1"/>
25+
<createData entity="SimpleProduct2" stepKey="simpleProduct2"/>
26+
<createData entity="SimpleProduct2" stepKey="simpleProduct3"/>
27+
<createData entity="SimpleProduct2" stepKey="simpleProduct4"/>
28+
<createData entity="SimpleProduct2" stepKey="simpleProduct5"/>
29+
<createData entity="SimpleProduct2" stepKey="simpleProduct6"/>
2530
</before>
2631
<after>
2732
<!-- Delete simple product -->
@@ -31,6 +36,11 @@
3136
<amOnPage url="{{AdminLogoutPage.url}}" stepKey="amOnLogoutPage"/>
3237
<deleteData createDataKey="simpleProduct0" stepKey="deleteSimpleProduct0"/>
3338
<deleteData createDataKey="simpleProduct1" stepKey="deleteSimpleProduct1"/>
39+
<deleteData createDataKey="simpleProduct2" stepKey="deleteSimpleProduct2"/>
40+
<deleteData createDataKey="simpleProduct3" stepKey="deleteSimpleProduct3"/>
41+
<deleteData createDataKey="simpleProduct4" stepKey="deleteSimpleProduct4"/>
42+
<deleteData createDataKey="simpleProduct5" stepKey="deleteSimpleProduct5"/>
43+
<deleteData createDataKey="simpleProduct6" stepKey="deleteSimpleProduct6"/>
3444
</after>
3545

3646
<!--Create product-->
@@ -69,6 +79,28 @@
6979
<conditionalClick selector="{{AdminProductFormRelatedUpSellCrossSellSection.relatedDropdown}}" dependentSelector="{{AdminProductFormRelatedUpSellCrossSellSection.relatedDependent}}" visible="false" stepKey="openDropDownIfClosedRelatedSee"/>
7080
<see selector="{{AdminProductFormRelatedUpSellCrossSellSection.selectedRelatedProduct}}" userInput="$$simpleProduct1.sku$$" stepKey="seeRelatedProduct"/>
7181

82+
<!--See more related products in admin-->
83+
<actionGroup ref="addRelatedProductBySku" stepKey="addRelatedProduct2">
84+
<argument name="sku" value="$$simpleProduct2.sku$$"/>
85+
</actionGroup>
86+
<actionGroup ref="addRelatedProductBySku" stepKey="addRelatedProduct3">
87+
<argument name="sku" value="$$simpleProduct3.sku$$"/>
88+
</actionGroup>
89+
<actionGroup ref="addRelatedProductBySku" stepKey="addRelatedProduct4">
90+
<argument name="sku" value="$$simpleProduct4.sku$$"/>
91+
</actionGroup>
92+
<actionGroup ref="addRelatedProductBySku" stepKey="addRelatedProduct5">
93+
<argument name="sku" value="$$simpleProduct5.sku$$"/>
94+
</actionGroup>
95+
<actionGroup ref="addRelatedProductBySku" stepKey="addRelatedProduct6">
96+
<argument name="sku" value="$$simpleProduct6.sku$$"/>
97+
</actionGroup>
98+
<scrollTo selector="{{AdminProductFormRelatedUpSellCrossSellSection.relatedDropdown}}" stepKey="scrollTo2"/>
99+
<conditionalClick selector="{{AdminProductFormRelatedUpSellCrossSellSection.relatedDropdown}}" dependentSelector="{{AdminProductFormRelatedUpSellCrossSellSection.relatedDependent}}" visible="false" stepKey="openDropDownIfClosedRelatedSee2"/>
100+
<see selector="{{AdminProductFormRelatedUpSellCrossSellSection.selectedRelatedProduct}}" userInput="$$simpleProduct6.sku$$" stepKey="seeSixthRelatedProduct"/>
101+
<selectOption selector=".admin__collapsible-block-wrapper[data-index='related'] .admin__control-select" userInput="5" stepKey="selectFivePerPage"/>
102+
<dontSee selector="{{AdminProductFormRelatedUpSellCrossSellSection.selectedRelatedProduct}}" userInput="$$simpleProduct6.sku$$" stepKey="dontSeeSixthRelatedProduct"/>
103+
72104
<!--See related product in storefront-->
73105
<amOnPage url="{{SimpleProduct3.sku}}.html" stepKey="goToStorefront"/>
74106
<waitForPageLoad stepKey="waitForStorefront"/>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
define([
7+
'jquery',
8+
'Magento_Checkout/js/model/postcode-validator',
9+
'mage/translate',
10+
'uiRegistry'
11+
], function (
12+
$,
13+
postcodeValidator,
14+
$t,
15+
uiRegistry
16+
) {
17+
'use strict';
18+
19+
var postcodeElementName = 'postcode';
20+
21+
return {
22+
validateZipCodeTimeout: 0,
23+
validateDelay: 2000,
24+
25+
/**
26+
* Perform postponed binding for fieldset elements
27+
*
28+
* @param {String} formPath
29+
*/
30+
initFields: function (formPath) {
31+
var self = this;
32+
33+
uiRegistry.async(formPath + '.' + postcodeElementName)(self.bindHandler.bind(self));
34+
},
35+
36+
/**
37+
* @param {Object} element
38+
* @param {Number} delay
39+
*/
40+
bindHandler: function (element, delay) {
41+
var self = this;
42+
43+
delay = typeof delay === 'undefined' ? self.validateDelay : delay;
44+
45+
element.on('value', function () {
46+
clearTimeout(self.validateZipCodeTimeout);
47+
self.validateZipCodeTimeout = setTimeout(function () {
48+
self.postcodeValidation(element);
49+
}, delay);
50+
});
51+
},
52+
53+
/**
54+
* @param {Object} postcodeElement
55+
* @return {*}
56+
*/
57+
postcodeValidation: function (postcodeElement) {
58+
var countryId = $('select[name="country_id"]:visible').val(),
59+
validationResult,
60+
warnMessage;
61+
62+
if (postcodeElement == null || postcodeElement.value() == null) {
63+
return true;
64+
}
65+
66+
postcodeElement.warn(null);
67+
validationResult = postcodeValidator.validate(postcodeElement.value(), countryId);
68+
69+
if (!validationResult) {
70+
warnMessage = $t('Provided Zip/Postal Code seems to be invalid.');
71+
72+
if (postcodeValidator.validatedPostCodeExample.length) {
73+
warnMessage += $t(' Example: ') + postcodeValidator.validatedPostCodeExample.join('; ') + '. ';
74+
}
75+
warnMessage += $t('If you believe it is the right one you can ignore this notice.');
76+
postcodeElement.warn(warnMessage);
77+
}
78+
79+
return validationResult;
80+
}
81+
};
82+
});

app/code/Magento/Checkout/view/frontend/web/js/view/billing-address.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ define([
1818
'Magento_Checkout/js/action/set-billing-address',
1919
'Magento_Ui/js/model/messageList',
2020
'mage/translate',
21-
'Magento_Checkout/js/model/shipping-rates-validator'
21+
'Magento_Checkout/js/model/billing-address-postcode-validator'
2222
],
2323
function (
2424
ko,
@@ -35,7 +35,7 @@ function (
3535
setBillingAddressAction,
3636
globalMessageList,
3737
$t,
38-
shippingRatesValidator
38+
billingAddressPostcodeValidator
3939
) {
4040
'use strict';
4141

@@ -66,7 +66,7 @@ function (
6666
quote.paymentMethod.subscribe(function () {
6767
checkoutDataResolver.resolveBillingAddress();
6868
}, this);
69-
shippingRatesValidator.initFields(this.get('name') + '.form-fields');
69+
billingAddressPostcodeValidator.initFields(this.get('name') + '.form-fields');
7070
},
7171

7272
/**

app/code/Magento/Customer/Model/EmailNotification.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ public function passwordResetConfirmation(CustomerInterface $customer)
362362
* @param CustomerInterface $customer
363363
* @param string $type
364364
* @param string $backUrl
365-
* @param string $storeId
365+
* @param int $storeId
366366
* @param string $sendemailStoreId
367367
* @return void
368368
* @throws LocalizedException

app/code/Magento/Customer/Model/EmailNotificationInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public function passwordResetConfirmation(CustomerInterface $customer);
7373
* @param CustomerInterface $customer
7474
* @param string $type
7575
* @param string $backUrl
76-
* @param string $storeId
76+
* @param int $storeId
7777
* @param string $sendemailStoreId
7878
* @return void
7979
* @throws LocalizedException

app/code/Magento/Sales/Block/Adminhtml/Order/Status/NewStatus/Form.php

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,7 @@ protected function _prepareForm()
5656
['name' => 'label', 'label' => __('Status Label'), 'class' => 'required-entry', 'required' => true]
5757
);
5858

59-
if (!$this->_storeManager->isSingleStoreMode()) {
60-
$this->_addStoresFieldset($model, $form);
61-
}
59+
$this->_addStoresFieldset($model, $form);
6260

6361
if ($model) {
6462
$form->addValues($model->getData());
@@ -80,10 +78,31 @@ protected function _prepareForm()
8078
protected function _addStoresFieldset($model, $form)
8179
{
8280
$labels = $model ? $model->getStoreLabels() : [];
83-
$fieldset = $form->addFieldset(
84-
'store_labels_fieldset',
85-
['legend' => __('Store View Specific Labels'), 'class' => 'store-scope']
86-
);
81+
if (!$this->_storeManager->isSingleStoreMode()) {
82+
$fieldset = $form->addFieldset(
83+
'store_labels_fieldset',
84+
['legend' => __('Store View Specific Labels'), 'class' => 'store-scope']
85+
);
86+
} else {
87+
$fieldset = $form->addFieldset(
88+
'store_labels_fieldset',
89+
['legend' => __('Frontend Label')]
90+
);
91+
$store = $this->_storeManager->getDefaultStoreView();
92+
$fieldset->addField(
93+
"store_label_{$store->getId()}",
94+
'text',
95+
[
96+
'name' => 'store_labels[' . $store->getId() . ']',
97+
'required' => false,
98+
'label' => $store->getName(),
99+
'value' => isset($labels[$store->getId()]) ? $labels[$store->getId()] : '',
100+
'fieldset_html_class' => 'store'
101+
]
102+
);
103+
return ;
104+
}
105+
87106
$renderer = $this->getLayout()->createBlock(
88107
\Magento\Backend\Block\Store\Switcher\Form\Renderer\Fieldset::class
89108
);

app/code/Magento/Sales/Model/Order/Pdf/AbstractPdf.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace Magento\Sales\Model\Order\Pdf;
88

99
use Magento\Framework\App\Filesystem\DirectoryList;
10+
use Magento\MediaStorage\Helper\File\Storage\Database;
1011

1112
/**
1213
* Sales Order PDF abstract model
@@ -15,6 +16,7 @@
1516
* @api
1617
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
1718
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
19+
* @SuppressWarnings(PHPMD.TooManyFields)
1820
* @since 100.0.2
1921
*/
2022
abstract class AbstractPdf extends \Magento\Framework\DataObject
@@ -122,6 +124,11 @@ abstract public function getPdf();
122124
*/
123125
private $pageSettings;
124126

127+
/**
128+
* @var Database
129+
*/
130+
private $fileStorageDatabase;
131+
125132
/**
126133
* @param \Magento\Payment\Helper\Data $paymentData
127134
* @param \Magento\Framework\Stdlib\StringUtils $string
@@ -134,6 +141,7 @@ abstract public function getPdf();
134141
* @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
135142
* @param \Magento\Sales\Model\Order\Address\Renderer $addressRenderer
136143
* @param array $data
144+
* @param Database $fileStorageDatabase
137145
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
138146
*/
139147
public function __construct(
@@ -147,7 +155,8 @@ public function __construct(
147155
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
148156
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
149157
\Magento\Sales\Model\Order\Address\Renderer $addressRenderer,
150-
array $data = []
158+
array $data = [],
159+
Database $fileStorageDatabase = null
151160
) {
152161
$this->addressRenderer = $addressRenderer;
153162
$this->_paymentData = $paymentData;
@@ -160,6 +169,8 @@ public function __construct(
160169
$this->_pdfTotalFactory = $pdfTotalFactory;
161170
$this->_pdfItemsFactory = $pdfItemsFactory;
162171
$this->inlineTranslation = $inlineTranslation;
172+
$this->fileStorageDatabase = $fileStorageDatabase ?:
173+
\Magento\Framework\App\ObjectManager::getInstance()->get(Database::class);
163174
parent::__construct($data);
164175
}
165176

@@ -254,6 +265,11 @@ protected function insertLogo(&$page, $store = null)
254265
);
255266
if ($image) {
256267
$imagePath = '/sales/store/logo/' . $image;
268+
if ($this->fileStorageDatabase->checkDbUsage() &&
269+
!$this->_mediaDirectory->isFile($imagePath)
270+
) {
271+
$this->fileStorageDatabase->saveFileToFilesystem($imagePath);
272+
}
257273
if ($this->_mediaDirectory->isFile($imagePath)) {
258274
$image = \Zend_Pdf_Image::imageWithPath($this->_mediaDirectory->getAbsolutePath($imagePath));
259275
$top = 830;

0 commit comments

Comments
 (0)