Payment.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Block\Adminhtml\System\Config\Fieldset;
  7. /**
  8. * Fieldset renderer for PayPal solution
  9. */
  10. class Payment extends \Magento\Config\Block\System\Config\Form\Fieldset
  11. {
  12. /**
  13. * @var \Magento\Config\Model\Config
  14. */
  15. protected $_backendConfig;
  16. /**
  17. * @param \Magento\Backend\Block\Context $context
  18. * @param \Magento\Backend\Model\Auth\Session $authSession
  19. * @param \Magento\Framework\View\Helper\Js $jsHelper
  20. * @param \Magento\Config\Model\Config $backendConfig
  21. * @param array $data
  22. */
  23. public function __construct(
  24. \Magento\Backend\Block\Context $context,
  25. \Magento\Backend\Model\Auth\Session $authSession,
  26. \Magento\Framework\View\Helper\Js $jsHelper,
  27. \Magento\Config\Model\Config $backendConfig,
  28. array $data = []
  29. ) {
  30. $this->_backendConfig = $backendConfig;
  31. parent::__construct($context, $authSession, $jsHelper, $data);
  32. }
  33. /**
  34. * Add custom css class
  35. *
  36. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  37. * @return string
  38. */
  39. protected function _getFrontendClass($element)
  40. {
  41. $enabledString = $this->_isPaymentEnabled($element) ? ' enabled' : '';
  42. return parent::_getFrontendClass($element) . ' with-button' . $enabledString;
  43. }
  44. /**
  45. * Check whether current payment method is enabled
  46. *
  47. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  48. * @return bool
  49. */
  50. protected function _isPaymentEnabled($element)
  51. {
  52. $groupConfig = $element->getGroup();
  53. $activityPaths = isset($groupConfig['activity_path']) ? $groupConfig['activity_path'] : [];
  54. if (!is_array($activityPaths)) {
  55. $activityPaths = [$activityPaths];
  56. }
  57. $isPaymentEnabled = false;
  58. foreach ($activityPaths as $activityPath) {
  59. $isPaymentEnabled = $isPaymentEnabled
  60. || (bool)(string)$this->_backendConfig->getConfigDataValue($activityPath);
  61. }
  62. return $isPaymentEnabled;
  63. }
  64. /**
  65. * Return header title part of html for payment solution
  66. *
  67. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  68. * @return string
  69. * @SuppressWarnings(PHPMD.NPathComplexity)
  70. */
  71. protected function _getHeaderTitleHtml($element)
  72. {
  73. $html = '<div class="config-heading" >';
  74. $groupConfig = $element->getGroup();
  75. $disabledAttributeString = $this->_isPaymentEnabled($element) ? '' : ' disabled="disabled"';
  76. $disabledClassString = $this->_isPaymentEnabled($element) ? '' : ' disabled';
  77. $htmlId = $element->getHtmlId();
  78. $html .= '<div class="button-container"><button type="button"' .
  79. $disabledAttributeString .
  80. ' class="button action-configure' .
  81. (empty($groupConfig['paypal_ec_separate']) ? '' : ' paypal-ec-separate') .
  82. $disabledClassString .
  83. '" id="' .
  84. $htmlId .
  85. '-head" onclick="paypalToggleSolution.call(this, \'' .
  86. $htmlId .
  87. "', '" .
  88. $this->getUrl(
  89. 'adminhtml/*/state'
  90. ) . '\'); return false;"><span class="state-closed">' . __(
  91. 'Configure'
  92. ) . '</span><span class="state-opened">' . __(
  93. 'Close'
  94. ) . '</span></button>';
  95. if (!empty($groupConfig['more_url'])) {
  96. $html .= '<a class="link-more" href="' . $groupConfig['more_url'] . '" target="_blank">' . __(
  97. 'Learn More'
  98. ) . '</a>';
  99. }
  100. if (!empty($groupConfig['demo_url'])) {
  101. $html .= '<a class="link-demo" href="' . $groupConfig['demo_url'] . '" target="_blank">' . __(
  102. 'View Demo'
  103. ) . '</a>';
  104. }
  105. $html .= '</div>';
  106. $html .= '<div class="heading"><strong>' . $element->getLegend() . '</strong>';
  107. if ($element->getComment()) {
  108. $html .= '<span class="heading-intro">' . $element->getComment() . '</span>';
  109. }
  110. $html .= '<div class="config-alt"></div>';
  111. $html .= '</div></div>';
  112. return $html;
  113. }
  114. /**
  115. * Return header comment part of html for payment solution
  116. *
  117. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  118. * @return string
  119. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  120. */
  121. protected function _getHeaderCommentHtml($element)
  122. {
  123. return '';
  124. }
  125. /**
  126. * Get collapsed state on-load
  127. *
  128. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  129. * @return false
  130. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  131. */
  132. protected function _isCollapseState($element)
  133. {
  134. return false;
  135. }
  136. /**
  137. * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  138. * @return string
  139. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  140. */
  141. protected function _getExtraJs($element)
  142. {
  143. $script = "require(['jquery', 'prototype'], function(jQuery){
  144. window.paypalToggleSolution = function (id, url) {
  145. var doScroll = false;
  146. Fieldset.toggleCollapse(id, url);
  147. if ($(this).hasClassName(\"open\")) {
  148. $$(\".with-button button.button\").each(function(anotherButton) {
  149. if (anotherButton != this && $(anotherButton).hasClassName(\"open\")) {
  150. $(anotherButton).click();
  151. doScroll = true;
  152. }
  153. }.bind(this));
  154. }
  155. if (doScroll) {
  156. var pos = Element.cumulativeOffset($(this));
  157. window.scrollTo(pos[0], pos[1] - 45);
  158. }
  159. }
  160. });";
  161. return $this->_jsHelper->getScript($script);
  162. }
  163. }