Skip to content

Commit d16baf2

Browse files
author
Ji Lu
committed
Merge remote-tracking branch 'upstream/develop' into MAGETWO-51882-update-custom-variable
2 parents e7a2420 + 7a04197 commit d16baf2

File tree

422 files changed

+7461
-3194
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

422 files changed

+7461
-3194
lines changed

app/code/Magento/Backend/Block/System/Store/Edit/Form/Group.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,12 @@ protected function _prepareStoreFieldset(\Magento\Framework\Data\Form $form)
135135
'disabled' => $groupModel->isReadOnly()
136136
]
137137
);
138-
139138
if ($this->_coreRegistry->registry('store_action') == 'edit') {
140-
$stores = $this->_storeFactory->create()->getCollection()->addGroupFilter(
141-
$groupModel->getId()
142-
)->toOptionArray();
139+
$storeActive = 1;
140+
$stores = $this->_storeFactory->create()->getCollection()
141+
->addGroupFilter($groupModel->getId())
142+
->addStatusFilter($storeActive)
143+
->toOptionArray();
143144
$fieldset->addField(
144145
'group_default_store_id',
145146
'select',

app/code/Magento/Backend/Block/System/Store/Edit/Form/Store.php

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ public function __construct(
5050
*
5151
* @param \Magento\Framework\Data\Form $form
5252
* @return void
53-
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
5453
*/
5554
protected function _prepareStoreFieldset(\Magento\Framework\Data\Form $form)
5655
{
@@ -75,27 +74,7 @@ protected function _prepareStoreFieldset(\Magento\Framework\Data\Form $form)
7574
'disabled' => $storeModel->isReadOnly()
7675
]
7776
);
78-
if ($storeModel->getId() && $storeModel->getGroup()->getDefaultStoreId() == $storeModel->getId()) {
79-
if ($storeModel->getGroup() && $storeModel->getGroup()->getStoresCount() > 1) {
80-
$form->getElement('store_group_id')->setDisabled(true);
81-
82-
$fieldset->addField(
83-
'store_hidden_group_id',
84-
'hidden',
85-
['name' => 'store[group_id]', 'no_span' => true, 'value' => $storeModel->getGroupId()]
86-
);
87-
} else {
88-
$fieldset->addField(
89-
'store_original_group_id',
90-
'hidden',
91-
[
92-
'name' => 'store[original_group_id]',
93-
'no_span' => true,
94-
'value' => $storeModel->getGroupId()
95-
]
96-
);
97-
}
98-
}
77+
$fieldset = $this->prepareGroupIdField($form, $storeModel, $fieldset);
9978
}
10079

10180
$fieldset->addField(
@@ -131,6 +110,7 @@ protected function _prepareStoreFieldset(\Magento\Framework\Data\Form $form)
131110
'options' => [0 => __('Disabled'), 1 => __('Enabled')],
132111
'required' => true,
133112
'disabled' => $storeModel->isReadOnly()
113+
|| ($storeModel->getId() && $storeModel->isDefault() && $storeModel->isActive())
134114
]
135115
);
136116

@@ -185,4 +165,41 @@ protected function _getStoreGroups()
185165
}
186166
return $groups;
187167
}
168+
169+
/**
170+
* Prepare group id field in the fieldset
171+
*
172+
* @param \Magento\Framework\Data\Form $form
173+
* @param \Magento\Store\Model\Store $storeModel
174+
* @param \Magento\Framework\Data\Form\Element\Fieldset $fieldset
175+
* @return \Magento\Framework\Data\Form\Element\Fieldset
176+
*/
177+
private function prepareGroupIdField(
178+
\Magento\Framework\Data\Form $form,
179+
\Magento\Store\Model\Store $storeModel,
180+
\Magento\Framework\Data\Form\Element\Fieldset $fieldset
181+
) {
182+
if ($storeModel->getId() && $storeModel->getGroup()->getDefaultStoreId() == $storeModel->getId()) {
183+
if ($storeModel->getGroup() && $storeModel->getGroup()->getStoresCount() > 1) {
184+
$form->getElement('store_group_id')->setDisabled(true);
185+
186+
$fieldset->addField(
187+
'store_hidden_group_id',
188+
'hidden',
189+
['name' => 'store[group_id]', 'no_span' => true, 'value' => $storeModel->getGroupId()]
190+
);
191+
} else {
192+
$fieldset->addField(
193+
'store_original_group_id',
194+
'hidden',
195+
[
196+
'name' => 'store[original_group_id]',
197+
'no_span' => true,
198+
'value' => $storeModel->getGroupId()
199+
]
200+
);
201+
}
202+
}
203+
return $fieldset;
204+
}
188205
}

app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Action.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ protected function _toOptionHtml($action, \Magento\Framework\DataObject $row)
8282
$actionCaption = '';
8383
$this->_transformActionData($action, $actionCaption, $row);
8484

85-
$htmlAttibutes = ['value' => $this->escapeHtml($this->_jsonEncoder->encode($action))];
86-
$actionAttributes->setData($htmlAttibutes);
85+
$htmlAttributes = ['value' => $this->escapeHtml($this->_jsonEncoder->encode($action))];
86+
$actionAttributes->setData($htmlAttributes);
8787
return '<option ' . $actionAttributes->serialize() . '>' . $actionCaption . '</option>';
8888
}
8989

app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public function execute()
4242

4343
case 'group':
4444
$postData['group']['name'] = $this->filterManager->removeTags($postData['group']['name']);
45+
/** @var \Magento\Store\Model\Group $groupModel */
4546
$groupModel = $this->_objectManager->create('Magento\Store\Model\Group');
4647
if ($postData['group']['group_id']) {
4748
$groupModel->load($postData['group']['group_id']);
@@ -50,16 +51,19 @@ public function execute()
5051
if ($postData['group']['group_id'] == '') {
5152
$groupModel->setId(null);
5253
}
53-
54+
if (!$this->isSelectedDefaultStoreActive($postData, $groupModel)) {
55+
throw new \Magento\Framework\Exception\LocalizedException(
56+
__('An inactive store view cannot be saved as default store view')
57+
);
58+
}
5459
$groupModel->save();
55-
5660
$this->_eventManager->dispatch('store_group_save', ['group' => $groupModel]);
57-
5861
$this->messageManager->addSuccess(__('You saved the store.'));
5962
break;
6063

6164
case 'store':
6265
$eventName = 'store_edit';
66+
/** @var \Magento\Store\Model\Store $storeModel */
6367
$storeModel = $this->_objectManager->create('Magento\Store\Model\Store');
6468
$postData['store']['name'] = $this->filterManager->removeTags($postData['store']['name']);
6569
if ($postData['store']['store_id']) {
@@ -76,12 +80,14 @@ public function execute()
7680
$storeModel->getGroupId()
7781
);
7882
$storeModel->setWebsiteId($groupModel->getWebsiteId());
83+
if (!$storeModel->isActive() && $storeModel->isDefault()) {
84+
throw new \Magento\Framework\Exception\LocalizedException(
85+
__('The default store cannot be disabled')
86+
);
87+
}
7988
$storeModel->save();
80-
8189
$this->_objectManager->get('Magento\Store\Model\StoreManager')->reinitStores();
82-
8390
$this->_eventManager->dispatch($eventName, ['store' => $storeModel]);
84-
8591
$this->messageManager->addSuccess(__('You saved the store view.'));
8692
break;
8793
default:
@@ -106,4 +112,24 @@ public function execute()
106112
$redirectResult->setPath('adminhtml/*/');
107113
return $redirectResult;
108114
}
115+
116+
/**
117+
* Verify if selected default store is active
118+
*
119+
* @param array $postData
120+
* @param \Magento\Store\Model\Group $groupModel
121+
* @return bool
122+
*/
123+
private function isSelectedDefaultStoreActive(array $postData, \Magento\Store\Model\Group $groupModel)
124+
{
125+
if (!empty($postData['group']['default_store_id'])) {
126+
$defaultStoreId = $postData['group']['default_store_id'];
127+
if (!empty($groupModel->getStores()[$defaultStoreId]) &&
128+
!$groupModel->getStores()[$defaultStoreId]->isActive()
129+
) {
130+
return false;
131+
}
132+
}
133+
return true;
134+
}
109135
}

app/code/Magento/Backend/view/adminhtml/templates/store/switcher/form/renderer/fieldset.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<?php else: ?>
2626
<?php echo $block->getHintHtml() ?>
2727
<?php endif; ?>
28-
<div class="tree-store-scope">
28+
<div class="admin__fieldset tree-store-scope">
2929
<?php if ($_element->getComment()): ?>
3030
<p class="comment"><?php echo $block->escapeHtml($_element->getComment()) ?></p>
3131
<?php endif; ?>

app/code/Magento/Backend/view/adminhtml/web/template/dynamic-rows/grid.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<button attr="{disabled: disabled}"
1616
class="action-secondary"
1717
type="button"
18-
click="addChild.bind($data, false, false)">
18+
click="processingAddChild.bind($data, false, false, false)">
1919
<span text="addButtonLabel"/>
2020
</button>
2121
</div>
@@ -59,7 +59,7 @@
5959
</tr>
6060
</thead>
6161

62-
<tbody data-bind="foreach: elems">
62+
<tbody>
6363
<tr repeat="foreach: elems, item: '$record'"
6464
class="data-row"
6565
css="'_odd-row': $index % 2">

app/code/Magento/Braintree/view/frontend/web/template/payment/form.html

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,26 +105,24 @@
105105
</div>
106106
<!-- /ko -->
107107
<!-- ko if: (isVaultEnabled())-->
108-
<div class="field">
108+
<div class="field choice">
109109
<input type="checkbox"
110110
name="vault[is_enabled]"
111-
class="checkbox-inline"
111+
class="checkbox"
112112
data-bind="attr: {'id': getCode() + '_vault_enabler'}, checked: vaultEnabler.isActivePaymentTokenEnabler"/>
113113
<label class="label" data-bind="attr: {'for': getCode() + '_vault_enabler'}">
114114
<span><!-- ko i18n: 'Save for later use.'--><!-- /ko --></span>
115115
</label>
116-
<div class="control _with-tooltip">
117-
<div class="field-tooltip toggle">
116+
<div class="field-tooltip toggle">
118117
<span class="field-tooltip-action action-vault"
119118
tabindex="0"
120119
data-toggle="dropdown"
121120
data-bind="attr: {title: $t('What is this?')}, mageInit: {'dropdown':{'activeClass': '_active'}}">
122121
<span translate="'What is this?'"></span>
123122
</span>
124-
<div class="field-tooltip-content"
125-
data-target="dropdown"
126-
translate="'We store you payment information securely on Braintree servers via SSL.'"></div>
127-
</div>
123+
<div class="field-tooltip-content"
124+
data-target="dropdown"
125+
translate="'We store you payment information securely on Braintree servers via SSL.'"></div>
128126
</div>
129127
</div>
130128
<!-- /ko -->

app/code/Magento/Bundle/Ui/DataProvider/Product/Form/Modifier/BundlePanel.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ protected function getBundleSelections()
578578
'parentSelections' => 'bundle_selections',
579579
'changer' => 'option_info.type',
580580
'dataType' => Form\Element\DataType\Boolean::NAME,
581-
'label' => __('Default'),
581+
'label' => __('Is Default'),
582582
'dataScope' => 'is_default',
583583
'prefer' => 'radio',
584584
'value' => '0',

app/code/Magento/Bundle/Ui/DataProvider/Product/Form/Modifier/StockData.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ public function __construct(LocatorInterface $locator)
2727
$this->locator = $locator;
2828
}
2929

30-
3130
/**
3231
* {@inheritdoc}
3332
*/
@@ -60,7 +59,6 @@ public function modifyMeta(array $meta)
6059
'is_qty_decimal' => $config,
6160
'is_decimal_divided' => $config,
6261
'container_backorders' => $config,
63-
'container_deferred_stock_update' => $config,
6462
'container_notify_stock_qty' => $config,
6563
],
6664
],

app/code/Magento/Captcha/Observer/CheckContactUsFormObserver.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
namespace Magento\Captcha\Observer;
77

88
use Magento\Framework\Event\ObserverInterface;
9+
use Magento\Framework\App\Request\DataPersistorInterface;
10+
use Magento\Framework\App\ObjectManager;
911

1012
class CheckContactUsFormObserver implements ObserverInterface
1113
{
@@ -34,6 +36,11 @@ class CheckContactUsFormObserver implements ObserverInterface
3436
*/
3537
protected $captchaStringResolver;
3638

39+
/**
40+
* @var DataPersistorInterface
41+
*/
42+
private $dataPersistor;
43+
3744
/**
3845
* @param \Magento\Captcha\Helper\Data $helper
3946
* @param \Magento\Framework\App\ActionFlag $actionFlag
@@ -70,9 +77,25 @@ public function execute(\Magento\Framework\Event\Observer $observer)
7077
$controller = $observer->getControllerAction();
7178
if (!$captcha->isCorrect($this->captchaStringResolver->resolve($controller->getRequest(), $formId))) {
7279
$this->messageManager->addError(__('Incorrect CAPTCHA.'));
80+
$this->getDataPersistor()->set($formId, $controller->getRequest()->getPostValue());
7381
$this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true);
7482
$this->redirect->redirect($controller->getResponse(), 'contact/index/index');
7583
}
7684
}
7785
}
86+
87+
/**
88+
* Get Data Persistor
89+
*
90+
* @return DataPersistorInterface
91+
*/
92+
private function getDataPersistor()
93+
{
94+
if ($this->dataPersistor === null) {
95+
$this->dataPersistor = ObjectManager::getInstance()
96+
->get(DataPersistorInterface::class);
97+
}
98+
99+
return $this->dataPersistor;
100+
}
78101
}

0 commit comments

Comments
 (0)