diff --git a/Block/Config/Form/Field/Fieldset.php b/Block/Config/Form/Field/Fieldset.php index d72c2a992..d2c9128d0 100644 --- a/Block/Config/Form/Field/Fieldset.php +++ b/Block/Config/Form/Field/Fieldset.php @@ -20,26 +20,63 @@ namespace Buckaroo\Magento2\Block\Config\Form\Field; +use Buckaroo\Magento2\Service\LogoService; +use Magento\Backend\Block\Context; +use Magento\Backend\Model\Auth\Session; use Magento\Config\Block\System\Config\Form\Fieldset as MagentoFieldset; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\Data\Form\Element\AbstractElement; +use Magento\Framework\View\Helper\Js; +use Magento\Framework\View\Helper\SecureHtmlRenderer; use Magento\Store\Model\ScopeInterface; class Fieldset extends MagentoFieldset { - /** - * @param \Magento\Framework\Data\Form\Element\AbstractElement $element - * @return false + /** + * @var LogoService + */ + protected LogoService $logoService; + + /** + * @param Context $context + * @param Session $authSession + * @param Js $jsHelper + * @param LogoService $logoService + * @param array $data + * @param SecureHtmlRenderer|null $secureRenderer + */ + public function __construct( + Context $context, + Session $authSession, + Js $jsHelper, + LogoService $logoService, + array $data = [], + ?SecureHtmlRenderer $secureRenderer = null + ) { + parent::__construct($context, $authSession, $jsHelper, $data, $secureRenderer); + $this->logoService = $logoService; + } + + /** + * Collapsed or expanded fieldset when page loaded? + * + * @param AbstractElement $element + * @return bool + * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ - protected function _isCollapseState($element) + protected function _isCollapseState($element): bool { return false; } + /** - * @inheritdoc + * Get frontend class + * + * @param AbstractElement $element + * @return string */ - protected function _getFrontendClass($element) + protected function _getFrontendClass($element): string { $value = $this->getElementValue($element); $class = 'payment_method_'; @@ -57,7 +94,7 @@ protected function _getFrontendClass($element) } $classes = parent::_getFrontendClass($element); - $classes .= ' ' . $class; + $classes .= ' bk-payment-method ' . $class; return $classes; } @@ -68,7 +105,7 @@ protected function _getFrontendClass($element) * @param AbstractElement $element * @return string */ - private function getElementValue($element) + private function getElementValue(AbstractElement $element): string { $scopeValues = $this->getScopeValue(); @@ -85,10 +122,10 @@ private function getElementValue($element) * * @return array */ - private function getScopeValue() + private function getScopeValue(): array { $scopeValues = [ - 'scope' => ScopeConfigInterface::SCOPE_TYPE_DEFAULT, + 'scope' => ScopeConfigInterface::SCOPE_TYPE_DEFAULT, 'scopevalue' => null ]; @@ -107,4 +144,43 @@ private function getScopeValue() return $scopeValues; } + + /** + * Get the header title HTML including a logo. + * + * @param AbstractElement $element + * @return string + */ + protected function _getHeaderTitleHtml($element): string + { + if ( + !isset($element->getGroup()['id']) || + !is_string($element->getGroup()['id']) + ) { + return parent::_getHeaderTitleHtml($element); + } + + $method = str_replace("buckaroo_magento2_", "", $element->getGroup()['id']); + $logo = $this->getPaymentLogo($method); + + if ($method === 'paylink') { + return parent::_getHeaderTitleHtml($element); + } + return parent::_getHeaderTitleHtml($element) . ''; + } + + /** + * Get payment method logo + * + * @param string $method + * @return string + */ + private function getPaymentLogo(string $method): string + { + if ($method == "voucher") { + $method = "buckaroovoucher"; + } + + return $this->logoService->getPayment($method); + } } diff --git a/Block/Info.php b/Block/Info.php index cfb82e1cb..740dcf717 100644 --- a/Block/Info.php +++ b/Block/Info.php @@ -20,11 +20,11 @@ namespace Buckaroo\Magento2\Block; -use Buckaroo\Magento2\Helper\PaymentGroupTransaction; -use Buckaroo\Magento2\Model\ResourceModel\Giftcard\Collection as GiftcardCollection; +use Buckaroo\Magento2\Service\LogoService; use Magento\Framework\Exception\LocalizedException; -use Magento\Framework\View\Asset\Repository; use Magento\Framework\View\Element\Template\Context; +use Buckaroo\Magento2\Helper\PaymentGroupTransaction; +use Buckaroo\Magento2\Model\ResourceModel\Giftcard\Collection as GiftcardCollection; class Info extends \Magento\Payment\Block\Info { @@ -44,28 +44,28 @@ class Info extends \Magento\Payment\Block\Info protected $giftcardCollection; /** - * @var Repository + * @var LogoService */ - protected Repository $assetRepo; + protected LogoService $logoService; /** * @param Context $context * @param PaymentGroupTransaction $groupTransaction * @param GiftcardCollection $giftcardCollection - * @param Repository $assetRepo + * @param LogoService $logoService * @param array $data */ public function __construct( Context $context, PaymentGroupTransaction $groupTransaction, GiftcardCollection $giftcardCollection, - Repository $assetRepo, + LogoService $logoService, array $data = [] ) { parent::__construct($context, $data); $this->groupTransaction = $groupTransaction; $this->giftcardCollection = $giftcardCollection; - $this->assetRepo = $assetRepo; + $this->logoService = $logoService; } /** @@ -127,35 +127,7 @@ public function getPayPerEmailMethod() */ public function getPaymentLogo(string $method): string { - $mappings = [ - "afterpay2" => "svg/afterpay.svg", - "afterpay20" => "svg/afterpay.svg", - "capayablein3" => "svg/in3.svg", - "capayablepostpay" => "svg/in3.svg", - "creditcard" => "svg/creditcards.svg", - "creditcards" => "svg/creditcards.svg", - "giftcards" => "svg/giftcards.svg", - "idealprocessing" => "svg/ideal.svg", - "klarnain" => "svg/klarna.svg", - "klarnakp" => "svg/klarna.svg", - "mrcash" => "svg/bancontact.svg", - "p24" => "svg/przelewy24.svg", - "sepadirectdebit" => "svg/sepa-directdebit.svg", - "sofortbanking" => "svg/sofort.svg", - "emandate" => "emandate.png", - "pospayment" => "pos.png", - "transfer" => "svg/sepa-credittransfer.svg", - "paybybank" => "paybybank.gif", - "buckaroovoucher" => "svg/vouchers.svg" - ]; - - $name = "svg/{$method}.svg"; - - if (isset($mappings[$method])) { - $name = $mappings[$method]; - } - - return $this->assetRepo->getUrl("Buckaroo_Magento2::images/{$name}"); + return $this->logoService->getPayment($method); } /** @@ -164,33 +136,9 @@ public function getPaymentLogo(string $method): string * @param string $code * @return string */ - public function getGifcardLogo(string $code): string + public function getGiftcardLogo(string $code): string { - $name = "svg/giftcards.svg"; - - $mappings = [ - "ajaxgiftcard" => "ajaxgiftcard", - "boekenbon" => "boekenbon", - "cjpbetalen" => "cjp", - "digitalebioscoopbon" => "nationaletuinbon", - "fashioncheque" => "fashioncheque", - "fashionucadeaukaart" => "fashiongiftcard", - "nationaletuinbon" => "nationalebioscoopbon", - "nationaleentertainmentcard" => "nationaleentertainmentcard", - "podiumcadeaukaart" => "podiumcadeaukaart", - "sportfitcadeau" => "sport-fitcadeau", - "vvvgiftcard" => "vvvgiftcard", - "buckaroovoucher" => "vouchers" - ]; - - if (isset($mappings[$code])) { - $name = "giftcards/{$mappings[$code]}.svg"; - if ($mappings[$code] == 'vouchers') { - $name = "svg/{$mappings[$code]}.svg"; - } - } - - return $this->assetRepo->getUrl("Buckaroo_Magento2::images/{$name}"); + return $this->logoService->getGiftcard($code); } /** @@ -201,10 +149,6 @@ public function getGifcardLogo(string $code): string */ public function getCreditcardLogo(string $code): string { - if ($code === 'cartebleuevisa') { - $code = 'cartebleue'; - } - - return $this->assetRepo->getUrl("Buckaroo_Magento2::images/creditcards/{$code}.svg"); + return $this->logoService->getCreditcard($code); } } diff --git a/Block/Info/Creditcard.php b/Block/Info/Creditcard.php index 69a7f1a2e..8c75cc024 100644 --- a/Block/Info/Creditcard.php +++ b/Block/Info/Creditcard.php @@ -24,8 +24,8 @@ use Buckaroo\Magento2\Helper\PaymentGroupTransaction; use Buckaroo\Magento2\Model\ConfigProvider\Method\Creditcard as ConfigProviderCreditcard; use Buckaroo\Magento2\Model\ResourceModel\Giftcard\Collection as GiftcardCollection; +use Buckaroo\Magento2\Service\LogoService; use Magento\Framework\Exception\LocalizedException; -use Magento\Framework\View\Asset\Repository; use Magento\Framework\View\Element\Template\Context; class Creditcard extends Info @@ -33,17 +33,17 @@ class Creditcard extends Info /** * @var string */ - protected $cardType; + protected string $cardType; /** * @var array */ - protected $mpiStatus; + protected array $mpiStatus; /** * @var ConfigProviderCreditcard */ - protected $configProvider; + protected ConfigProviderCreditcard $configProvider; /** * @var string @@ -54,7 +54,7 @@ class Creditcard extends Info * @param Context $context * @param PaymentGroupTransaction $groupTransaction * @param GiftcardCollection $giftcardCollection - * @param Repository $assetRepo + * @param LogoService $logoService * @param array $data * @param ConfigProviderCreditcard|null $configProvider */ @@ -62,11 +62,11 @@ public function __construct( Context $context, PaymentGroupTransaction $groupTransaction, GiftcardCollection $giftcardCollection, - Repository $assetRepo, + LogoService $logoService, array $data = [], ConfigProviderCreditcard $configProvider = null ) { - parent::__construct($context, $groupTransaction, $giftcardCollection, $assetRepo, $data); + parent::__construct($context, $groupTransaction, $giftcardCollection, $logoService, $data); $this->configProvider = $configProvider; } diff --git a/Service/LogoService.php b/Service/LogoService.php new file mode 100644 index 000000000..f0b0520b9 --- /dev/null +++ b/Service/LogoService.php @@ -0,0 +1,129 @@ +assetRepo = $assetRepo; + } + + /** + * Get payment method logo + * + * @param string $paymentCode + * @return string + */ + public function getPayment(string $paymentCode): string + { + $mappings = [ + "afterpay2" => "svg/afterpay.svg", + "afterpay20" => "svg/afterpay.svg", + "capayablein3" => "svg/in3.svg", + "capayablepostpay" => "svg/in3.svg", + "creditcard" => "svg/creditcards.svg", + "creditcards" => "svg/creditcards.svg", + "giftcards" => "svg/giftcards.svg", + "idealprocessing" => "svg/ideal.svg", + "klarnain" => "svg/klarna.svg", + "klarnakp" => "svg/klarna.svg", + "mrcash" => "svg/bancontact.svg", + "p24" => "svg/przelewy24.svg", + "sepadirectdebit" => "svg/sepa-directdebit.svg", + "sofortbanking" => "svg/sofort.svg", + "emandate" => "emandate.png", + "pospayment" => "pos.png", + "transfer" => "svg/sepa-credittransfer.svg", + "buckaroovoucher" => "svg/vouchers.svg", + "paybybank" => "paybybank.gif" + ]; + + $name = "svg/{$paymentCode}.svg"; + + if (isset($mappings[$paymentCode])) { + $name = $mappings[$paymentCode]; + } + + return $this->assetRepo->getUrl("Buckaroo_Magento2::images/{$name}"); + } + + /** + * Get gift card logo url by code + * + * @param string $code + * @return string + */ + public function getGiftcard(string $code): string + { + $name = "svg/giftcards.svg"; + + $mappings = [ + "ajaxgiftcard" => "ajaxgiftcard", + "boekenbon" => "boekenbon", + "cjpbetalen" => "cjp", + "digitalebioscoopbon" => "nationaletuinbon", + "fashioncheque" => "fashioncheque", + "fashionucadeaukaart" => "fashiongiftcard", + "nationaletuinbon" => "nationalebioscoopbon", + "nationaleentertainmentcard" => "nationaleentertainmentcard", + "podiumcadeaukaart" => "podiumcadeaukaart", + "sportfitcadeau" => "sport-fitcadeau", + "vvvgiftcard" => "vvvgiftcard", + "buckaroovoucher" => "vouchers" + ]; + + if (isset($mappings[$code])) { + $name = "giftcards/{$mappings[$code]}.svg"; + if ($mappings[$code] == 'vouchers') { + $name = "svg/{$mappings[$code]}.svg"; + } + } + + return $this->assetRepo->getUrl("Buckaroo_Magento2::images/{$name}"); + } + + /** + * Get creditcard logo by code + * + * @param string $code + * @return string + */ + public function getCreditcard(string $code): string + { + if ($code === 'cartebleuevisa') { + $code = 'cartebleue'; + } + + return $this->assetRepo->getUrl("Buckaroo_Magento2::images/creditcards/{$code}.svg"); + } +} diff --git a/view/adminhtml/templates/info/creditcard.phtml b/view/adminhtml/templates/info/creditcard.phtml index 699fde4cb..d6da5789c 100644 --- a/view/adminhtml/templates/info/creditcard.phtml +++ b/view/adminhtml/templates/info/creditcard.phtml @@ -29,7 +29,7 @@ if ($giftCards = $block->getGiftCards()) { foreach ($giftCards as $giftCard) { ?>
- +
escapeHtml($giftCard['label']) ?> diff --git a/view/adminhtml/templates/info/payment_method.phtml b/view/adminhtml/templates/info/payment_method.phtml index dc8333ea9..496893515 100644 --- a/view/adminhtml/templates/info/payment_method.phtml +++ b/view/adminhtml/templates/info/payment_method.phtml @@ -29,7 +29,7 @@ if ($giftCards = $block->getGiftCards()) { foreach ($giftCards as $giftCard) { ?>
- +
escapeHtml($giftCard['label']) ?> diff --git a/view/adminhtml/web/css/adminhtml_system_config_edit.css b/view/adminhtml/web/css/adminhtml_system_config_edit.css index d72709e52..7378e1ad6 100644 --- a/view/adminhtml/web/css/adminhtml_system_config_edit.css +++ b/view/adminhtml/web/css/adminhtml_system_config_edit.css @@ -295,4 +295,30 @@ a.bk-plugin-zone { color: #303030; opacity: .5; cursor: not-allowed; +} + +.bk-payment-method .entry-edit-head { + display: flex; + align-items: center; + justify-content: space-between; +} + +.bk-ad-payment-logo { + max-width: 50px; + padding: 10px 0; + padding-right: 10px; +} + +.bk-ad-payment-wrap a{ + color: #303030; + cursor: pointer; + display: block; + font-size: 1.7rem; + font-weight: 600; + letter-spacing: .025em; + text-decoration: none; +} + +.bk-payment-method .entry-edit-head-link { + display: none; } \ No newline at end of file