Skip to content

Commit 1fd75a9

Browse files
Merge branch 'JS-323' of https://github.com/ulaharbmg/magento2ce into JS-329
Conflicts: lib/web/magnifier/magnify.js
2 parents 4aee71d + fe035ba commit 1fd75a9

File tree

776 files changed

+25948
-8133
lines changed

Some content is hidden

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

776 files changed

+25948
-8133
lines changed

app/code/Magento/Backend/view/adminhtml/templates/widget/form/renderer/fieldset/element.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<?php
1111
/* @var $block \Magento\Backend\Block\Widget\Form\Renderer\Fieldset\Element */
1212
$element = $block->getElement();
13-
$note = $element->getNote() ? '<div class="note" id="' . $element->getId() . '-note">' . $element->getNote() . '</div>' : '';
13+
$note = $element->getNote() ? '<div class="note admin__field-note" id="' . $element->getId() . '-note">' . $element->getNote() . '</div>' : '';
1414
$elementBeforeLabel = $element->getExtType() == 'checkbox admin__control-checkbox' || $element->getExtType() == 'radio admin__control-radio';
1515
$addOn = ($element->getBeforeElementHtml() || $element->getAfterElementHtml()) && !$element->getNoWrapAsAddon();
1616
$fieldId = ($element->getHtmlContainerId()) ? ' id="' . $element->getHtmlContainerId() . '"' : '';

app/code/Magento/Backend/view/adminhtml/templates/widget/grid/massaction.phtml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@
4444
<div class="mass-select-wrap">
4545
<select
4646
id="<?php echo $block->getHtmlId() ?>-mass-select"
47-
class="action-select-multiselect"
47+
class="action-select-multiselect _disabled"
48+
disabled="disabled"
4849
data-menu="grid-mass-select">
4950
<optgroup label="<?php /* @escapeNotVerified */ echo __('Mass Actions')?>">
5051
<option disabled selected></option>
@@ -68,10 +69,14 @@
6869
</div>
6970

7071
<script>
71-
require(['jquery'], function($){
72+
require(['jquery', 'domReady!'], function($){
7273
'use strict';
73-
$('#<?php echo $block->getHtmlId() ?>-mass-select').change(function () {
74+
$('#<?php echo $block->getHtmlId() ?>-mass-select')
75+
.removeClass('_disabled')
76+
.prop('disabled', false)
77+
.change(function () {
7478
var massAction = $('option:selected', this).val();
79+
this.blur();
7580
switch (massAction) {
7681
<?php if ($block->getUseSelectAll()):?>
7782
case 'selectAll':
@@ -88,7 +93,6 @@
8893
return <?php /* @escapeNotVerified */ echo $block->getJsObjectName() ?>.unselectVisible();
8994
break;
9095
}
91-
this.blur();
9296
});
9397
});
9498
<?php if (!$block->getParentBlock()->canDisplayContainer()): ?>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\BraintreeTwo\Block\Adminhtml\Form\Field;
7+
8+
use Magento\Framework\View\Element\Context;
9+
use Magento\Framework\View\Element\Html\Select;
10+
use Magento\BraintreeTwo\Helper\CcType;
11+
12+
/**
13+
* Class Cctypes
14+
* @package Magento\BraintreeTwo\Block\Adminhtml\Form\Field
15+
*/
16+
class Cctypes extends Select
17+
{
18+
/**
19+
* @var \
20+
*/
21+
private $ccTypeHelper;
22+
23+
/**
24+
* Constructor
25+
*
26+
* @param \Magento\Framework\View\Element\Context $context
27+
* @param \Magento\BraintreeTwo\Helper\CcType $ccTypeHelper
28+
* @param array $data
29+
*/
30+
public function __construct(
31+
Context $context,
32+
CcType $ccTypeHelper,
33+
array $data = []
34+
) {
35+
parent::__construct($context, $data);
36+
$this->ccTypeHelper = $ccTypeHelper;
37+
}
38+
39+
/**
40+
* Render block HTML
41+
*
42+
* @return string
43+
*/
44+
protected function _toHtml()
45+
{
46+
if (!$this->getOptions()) {
47+
$this->setOptions($this->ccTypeHelper->getCcTypes());
48+
}
49+
$this->setClass('cc-type-select');
50+
$this->setExtraParams('multiple="multiple"');
51+
return parent::_toHtml();
52+
}
53+
54+
/**
55+
* Sets name for input element
56+
*
57+
* @param string $value
58+
* @return $this
59+
*/
60+
public function setInputName($value)
61+
{
62+
return $this->setName($value . '[]');
63+
}
64+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\BraintreeTwo\Block\Adminhtml\Form\Field;
7+
8+
use Magento\BraintreeTwo\Helper\Country;
9+
use Magento\Framework\View\Element\Context;
10+
use Magento\Framework\View\Element\Html\Select;
11+
12+
/**
13+
* Class Countries
14+
* @package Magento\BraintreeTwo\Block\Adminhtml\Form\Field
15+
*/
16+
class Countries extends Select
17+
{
18+
/**
19+
* @var \Magento\BraintreeTwo\Helper\Country
20+
*/
21+
private $countryHelper;
22+
23+
/**
24+
* Constructor
25+
*
26+
* @param \Magento\Framework\View\Element\Context $context
27+
* @param \Magento\BraintreeTwo\Helper\Country $countryHelper
28+
* @param array $data
29+
*/
30+
public function __construct(Context $context, Country $countryHelper, array $data = [])
31+
{
32+
parent::__construct($context, $data);
33+
$this->countryHelper = $countryHelper;
34+
}
35+
36+
/**
37+
* Render block HTML
38+
*
39+
* @return string
40+
*/
41+
protected function _toHtml()
42+
{
43+
if (!$this->getOptions()) {
44+
$this->setOptions($this->countryHelper->getCountries());
45+
}
46+
return parent::_toHtml();
47+
}
48+
49+
/**
50+
* Sets name for input element
51+
*
52+
* @param string $value
53+
* @return $this
54+
*/
55+
public function setInputName($value)
56+
{
57+
return $this->setName($value);
58+
}
59+
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\BraintreeTwo\Block\Adminhtml\Form\Field;
7+
8+
use Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray;
9+
use Magento\Framework\DataObject;
10+
11+
/**
12+
* Class CountryCreditCard
13+
* @package Magento\BraintreeTwo\Block\Adminhtml\Form\Field
14+
*/
15+
class CountryCreditCard extends AbstractFieldArray
16+
{
17+
/**
18+
* @var \Magento\BraintreeTwo\Block\Adminhtml\Form\Field\Countries
19+
*/
20+
protected $countryRenderer = null;
21+
22+
/**
23+
* @var \Magento\BraintreeTwo\Block\Adminhtml\Form\Field\CcTypes
24+
*/
25+
protected $ccTypesRenderer = null;
26+
27+
/**
28+
* Returns renderer for country element
29+
*
30+
* @return \Magento\BraintreeTwo\Block\Adminhtml\Form\Field\Countries
31+
*/
32+
protected function getCountryRenderer()
33+
{
34+
if (!$this->countryRenderer) {
35+
$this->countryRenderer = $this->getLayout()->createBlock(
36+
Countries::class,
37+
'',
38+
['data' => ['is_render_to_js_template' => true]]
39+
);
40+
}
41+
return $this->countryRenderer;
42+
}
43+
44+
/**
45+
* Returns renderer for country element
46+
*
47+
* @return \Magento\BraintreeTwo\Block\Adminhtml\Form\Field\Cctypes
48+
*/
49+
protected function getCcTypesRenderer()
50+
{
51+
if (!$this->ccTypesRenderer) {
52+
$this->ccTypesRenderer = $this->getLayout()->createBlock(
53+
Cctypes::class,
54+
'',
55+
['data' => ['is_render_to_js_template' => true]]
56+
);
57+
}
58+
return $this->ccTypesRenderer;
59+
}
60+
61+
/**
62+
* Prepare to render
63+
* @return void
64+
*/
65+
protected function _prepareToRender()
66+
{
67+
$this->addColumn(
68+
'country_id',
69+
[
70+
'label' => __('Country'),
71+
'renderer' => $this->getCountryRenderer(),
72+
]
73+
);
74+
$this->addColumn(
75+
'cc_types',
76+
[
77+
'label' => __('Allowed Credit Card Types'),
78+
'renderer' => $this->getCcTypesRenderer(),
79+
]
80+
);
81+
$this->_addAfter = false;
82+
$this->_addButtonLabel = __('Add Rule');
83+
}
84+
85+
/**
86+
* Prepare existing row data object
87+
*
88+
* @param \Magento\Framework\DataObject $row
89+
* @return void
90+
*/
91+
protected function _prepareArrayRow(DataObject $row)
92+
{
93+
$country = $row->getCountryId();
94+
$options = [];
95+
if ($country) {
96+
$options['option_' . $this->getCountryRenderer()->calcOptionHash($country)]
97+
= 'selected="selected"';
98+
99+
$ccTypes = $row->getCcTypes();
100+
foreach ($ccTypes as $cardType) {
101+
$options['option_' . $this->getCcTypesRenderer()->calcOptionHash($cardType)]
102+
= 'selected="selected"';
103+
}
104+
}
105+
$row->setData('option_extra_attrs', $options);
106+
return;
107+
}
108+
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\BraintreeTwo\Block;
7+
8+
use Magento\Backend\Model\Session\Quote;
9+
use Magento\Framework\View\Element\Template\Context;
10+
use Magento\Payment\Block\Form\Cc;
11+
use Magento\Payment\Model\Config;
12+
use Magento\BraintreeTwo\Gateway\Config\Config as GatewayConfig;
13+
use Magento\BraintreeTwo\Model\Adminhtml\Source\CcType;
14+
15+
/**
16+
* Class Form
17+
* @package Magento\BraintreeTwo\Block
18+
*/
19+
class Form extends Cc
20+
{
21+
22+
/**
23+
* @var \Magento\Backend\Model\Session\Quote
24+
*/
25+
protected $sessionQuote;
26+
27+
/**
28+
* @var \Magento\BraintreeTwo\Gateway\Config\Config
29+
*/
30+
protected $gatewayConfig;
31+
32+
/**
33+
* @var \Magento\BraintreeTwo\Model\Adminhtml\Source\CcType
34+
*/
35+
protected $ccType;
36+
37+
/**
38+
* @param \Magento\Framework\View\Element\Template\Context $context
39+
* @param \Magento\Payment\Model\Config $paymentConfig
40+
* @param \Magento\Backend\Model\Session\Quote $sessionQuote
41+
* @param \Magento\BraintreeTwo\Gateway\Config\Config $gatewayConfig
42+
* @param \Magento\BraintreeTwo\Model\Adminhtml\Source\CcType $ccType
43+
* @param array $data
44+
*/
45+
public function __construct(
46+
Context $context,
47+
Config $paymentConfig,
48+
Quote $sessionQuote,
49+
GatewayConfig $gatewayConfig,
50+
CcType $ccType,
51+
array $data = []
52+
) {
53+
parent::__construct($context, $paymentConfig, $data);
54+
$this->sessionQuote = $sessionQuote;
55+
$this->gatewayConfig = $gatewayConfig;
56+
$this->ccType = $ccType;
57+
}
58+
59+
/**
60+
* Get list of available card types of order billing address country
61+
* @return array
62+
*/
63+
public function getCcAvailableTypes()
64+
{
65+
$configuredCardTypes = $this->getConfiguredCardTypes();
66+
$countryId = $this->sessionQuote->getQuote()->getBillingAddress()->getCountryId();
67+
return $this->filterCardTypesForCountry($configuredCardTypes, $countryId);
68+
}
69+
70+
/**
71+
* Check if cvv validation is available
72+
* @return boolean
73+
*/
74+
public function useCvv()
75+
{
76+
return $this->gatewayConfig->isCvvEnabled();
77+
}
78+
79+
/**
80+
* Get card types available for Braintree
81+
* @return array
82+
*/
83+
private function getConfiguredCardTypes()
84+
{
85+
$types = $this->ccType->getCcTypeLabelMap();
86+
$configCardTypes = array_fill_keys($this->gatewayConfig->getAvailableCardTypes(), '');
87+
88+
return array_intersect_key($types, $configCardTypes);
89+
}
90+
91+
/**
92+
* Filter card types for specific country
93+
* @param array $configCardTypes
94+
* @param string $countryId
95+
* @return array
96+
*/
97+
private function filterCardTypesForCountry(array $configCardTypes, $countryId)
98+
{
99+
$filtered = $configCardTypes;
100+
$countryCardTypes = $this->gatewayConfig->getCountryAvailableCardTypes($countryId);
101+
// filter card types only if specific card types are set for country
102+
if (!empty($countryCardTypes)) {
103+
$availableTypes = array_fill_keys($countryCardTypes, '');
104+
$filtered = array_intersect_key($filtered, $availableTypes);
105+
}
106+
return $filtered;
107+
}
108+
}

0 commit comments

Comments
 (0)