From a8f07c534c3c25ea48f9d9fa5abc10ea1fa2a52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=BCller?= Date: Fri, 12 Jul 2024 17:51:14 +0200 Subject: [PATCH] MAG2-315 - FIxed javascript problems --- Helper/Script.php | 89 +++++++++++++++++++ .../frontend/web/js/action/installmentplan.js | 1 + .../bnpl_installment-method.js | 17 +++- .../payolution_installment-method.js | 12 +++ .../templates/bnpl/installment_plan.phtml | 4 +- .../payolution/installment_plan.phtml | 4 +- 6 files changed, 122 insertions(+), 5 deletions(-) create mode 100644 Helper/Script.php diff --git a/Helper/Script.php b/Helper/Script.php new file mode 100644 index 00000000..86904077 --- /dev/null +++ b/Helper/Script.php @@ -0,0 +1,89 @@ +. + * + * PHP version 5 + * + * @category Payone + * @package Payone_Magento2_Plugin + * @author FATCHIP GmbH + * @copyright 2003 - 2024 Payone GmbH + * @license GNU Lesser General Public License + * @link http://www.payone.de + */ + +namespace Payone\Core\Helper; + +use Magento\Framework\App\ObjectManager; + +class Script extends \Payone\Core\Helper\Base +{ + /** + * @var \Magento\Framework\App\ProductMetadata + */ + protected $productMetadata; + + /** + * Constructor + * + * @param \Magento\Framework\App\Helper\Context $context + * @param \Magento\Store\Model\StoreManagerInterface $storeManager + * @param \Payone\Core\Helper\Shop $shopHelper + * @param \Magento\Framework\App\State $state + * @param \Magento\Framework\App\ProductMetadata $productMetadata + */ + public function __construct( + \Magento\Framework\App\Helper\Context $context, + \Magento\Store\Model\StoreManagerInterface $storeManager, + \Payone\Core\Helper\Shop $shopHelper, + \Magento\Framework\App\State $state, + \Magento\Framework\App\ProductMetadata $productMetadata + ) { + parent::__construct($context, $storeManager, $shopHelper, $state); + $this->productMetadata = $productMetadata; + } + + /** + * Magento 2.4.7 doesnt allow inline javascript - this method is used to handle this + * + * @param string $script + * @return string + */ + public function insertScript($script) + { + $sReturn = ""; + if (version_compare($this->productMetadata->getVersion(), '2.4.7', '>=')) { + $secureRenderer = ObjectManager::getInstance()->create(\Magento\Framework\View\Helper\SecureHtmlRenderer::class); + $sReturn = $secureRenderer->renderTag('script', [], $script, false); + } + return $sReturn; + } + + /** + * Magento 2.4.7 doesnt allow inline javascript - this method is used to handle this + * + * @return string + */ + public function insertEvent($sEventName, $sScript) + { + $sReturn = $sEventName."='".$sScript."'"; + if (false && version_compare($this->productMetadata->getVersion(), '2.4.7', '>=')) { + $secureRenderer = ObjectManager::getInstance()->create(\Magento\Framework\View\Helper\SecureHtmlRenderer::class); + $sReturn = $secureRenderer->renderEventListener($sEventName, $sScript); + } + return $sReturn; + + } +} diff --git a/view/frontend/web/js/action/installmentplan.js b/view/frontend/web/js/action/installmentplan.js index fb6a1c72..c1eff2eb 100644 --- a/view/frontend/web/js/action/installmentplan.js +++ b/view/frontend/web/js/action/installmentplan.js @@ -59,6 +59,7 @@ define([ function (response) { if (response.success == true) { $('#' + baseView.getCode() + '_installmentplan').html(response.installment_plan_html); + baseView.addEvents("hiddenSwitchInstallmentPlan", "|||", 3); $('#' + baseView.getCode() + '_installmentplan').show(); $('#' + baseView.getCode() + '_check').hide(); $('#' + baseView.getCode() + '_submit').show(); diff --git a/view/frontend/web/js/view/payment/method-renderer/bnpl_installment-method.js b/view/frontend/web/js/view/payment/method-renderer/bnpl_installment-method.js index 3ed5bb40..7ff9bef4 100644 --- a/view/frontend/web/js/view/payment/method-renderer/bnpl_installment-method.js +++ b/view/frontend/web/js/view/payment/method-renderer/bnpl_installment-method.js @@ -99,8 +99,23 @@ define( } return parentReturn; }, - displayInstallmentInfo(installmentplan) { + addEvents: function (selectorClass, delimiter, valueCount) { + var elementsColl = document.getElementsByClassName(selectorClass); + for (var iVar = 0; iVar < elementsColl.length; iVar++) { + console.log(elementsColl[iVar].previousElementSibling); + elementsColl[iVar].previousElementSibling.addEventListener("click", function (e) { + console.log(this.nextElementSibling); + let splitVar = this.nextElementSibling.value.split(delimiter); + if (splitVar.length === valueCount) { + switchBNPLInstallmentPlan(splitVar[0], splitVar[1], splitVar[2], this); + } + e.preventDefault(); + }); + } + }, + displayInstallmentInfo: function (installmentplan) { $('#' + this.getCode() + '_installmentplan').html(installmentplan.installment_plan_html); + this.addEvents("hiddenSwitchInstallmentPlanBnpl", "|||", 3); $('#' + this.getCode() + '_installmentplan').show(); $('#' + this.getCode() + '_check').hide(); $('#' + this.getCode() + '_submit').show(); diff --git a/view/frontend/web/js/view/payment/method-renderer/payolution_installment-method.js b/view/frontend/web/js/view/payment/method-renderer/payolution_installment-method.js index 7889b33e..af062bf0 100644 --- a/view/frontend/web/js/view/payment/method-renderer/payolution_installment-method.js +++ b/view/frontend/web/js/view/payment/method-renderer/payolution_installment-method.js @@ -149,6 +149,18 @@ define( } } }, + addEvents: function (selectorClass, delimiter, valueCount) { + var elementsColl = document.getElementsByClassName(selectorClass); + for (var iVar = 0; iVar < elementsColl.length; iVar++) { + elementsColl[iVar].previousElementSibling.addEventListener("click", function (e) { + let splitVar = this.nextElementSibling.value.split(delimiter); + if (splitVar.length === valueCount) { + switchInstallmentPlan(splitVar[0], splitVar[1], splitVar[2]); + } + e.preventDefault(); + }); + } + }, switchInstallmentPlan: function (sKey, sCode, iInstallments) { $('.payolution_installmentplans').hide(); $('.payolution_installment_overview').hide(); diff --git a/view/webapi_rest/templates/bnpl/installment_plan.phtml b/view/webapi_rest/templates/bnpl/installment_plan.phtml index 6774c28e..577ecb78 100644 --- a/view/webapi_rest/templates/bnpl/installment_plan.phtml +++ b/view/webapi_rest/templates/bnpl/installment_plan.phtml @@ -38,12 +38,12 @@ $aInstallmentData = $aInstallmentResponse['runtimes'];
$aInstallment): ?> - $aInstallment): ?> diff --git a/view/webapi_rest/templates/payolution/installment_plan.phtml b/view/webapi_rest/templates/payolution/installment_plan.phtml index 6f5b419e..23e50d88 100644 --- a/view/webapi_rest/templates/payolution/installment_plan.phtml +++ b/view/webapi_rest/templates/payolution/installment_plan.phtml @@ -33,9 +33,9 @@ $aInstallmentData = array_reverse($this->getInstallmentData());
$aInstallment): ?> - + getSelectLinkText($aInstallment) ?> -
+
$aInstallment): ?>