_backendConfig = $backendConfig;
parent::__construct($context, $authSession, $jsHelper, $data);
}
/**
* Add custom css class
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
*/
protected function _getFrontendClass($element)
{
$enabledString = $this->_isPaymentEnabled($element) ? ' enabled' : '';
return parent::_getFrontendClass($element) . ' with-button' . $enabledString;
}
/**
* Check whether current payment method is enabled
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return bool
*/
protected function _isPaymentEnabled($element)
{
$groupConfig = $element->getGroup();
$activityPaths = isset($groupConfig['activity_path']) ? $groupConfig['activity_path'] : [];
if (!is_array($activityPaths)) {
$activityPaths = [$activityPaths];
}
$isPaymentEnabled = false;
foreach ($activityPaths as $activityPath) {
$isPaymentEnabled = $isPaymentEnabled
|| (bool)(string)$this->_backendConfig->getConfigDataValue($activityPath);
}
return $isPaymentEnabled;
}
/**
* Return header title part of html for payment solution
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
* @SuppressWarnings(PHPMD.NPathComplexity)
*/
protected function _getHeaderTitleHtml($element)
{
$html = '
';
$groupConfig = $element->getGroup();
$disabledAttributeString = $this->_isPaymentEnabled($element) ? '' : ' disabled="disabled"';
$disabledClassString = $this->_isPaymentEnabled($element) ? '' : ' disabled';
$htmlId = $element->getHtmlId();
$html .= '
';
$html .= '
' . $element->getLegend() . '';
if ($element->getComment()) {
$html .= '
' . $element->getComment() . '';
}
$html .= '
';
$html .= '
';
return $html;
}
/**
* Return header comment part of html for payment solution
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _getHeaderCommentHtml($element)
{
return '';
}
/**
* Get collapsed state on-load
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return false
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _isCollapseState($element)
{
return false;
}
/**
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _getExtraJs($element)
{
$script = "require(['jquery', 'prototype'], function(jQuery){
window.paypalToggleSolution = function (id, url) {
var doScroll = false;
Fieldset.toggleCollapse(id, url);
if ($(this).hasClassName(\"open\")) {
$$(\".with-button button.button\").each(function(anotherButton) {
if (anotherButton != this && $(anotherButton).hasClassName(\"open\")) {
$(anotherButton).click();
doScroll = true;
}
}.bind(this));
}
if (doScroll) {
var pos = Element.cumulativeOffset($(this));
window.scrollTo(pos[0], pos[1] - 45);
}
}
});";
return $this->_jsHelper->getScript($script);
}
}