From 4ed7742d9acb02407ef8d8d0ad0ac8163e5a4b1a Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Tue, 18 Jul 2023 17:17:22 +0200 Subject: [PATCH] Disable variable subscription fields (WIP) --- .../resources/js/paypal-subscription.js | 41 ++++++++++++------- .../src/SubscriptionModule.php | 4 +- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/modules/ppcp-subscription/resources/js/paypal-subscription.js b/modules/ppcp-subscription/resources/js/paypal-subscription.js index a00bf57a0..427fdda96 100644 --- a/modules/ppcp-subscription/resources/js/paypal-subscription.js +++ b/modules/ppcp-subscription/resources/js/paypal-subscription.js @@ -1,23 +1,36 @@ document.addEventListener( 'DOMContentLoaded', () => { + const variations = document.querySelector('.woocommerce_variations'); + const disableFields = (productId) => { + if(variations) { + const children = variations.children; + for(let i=0; i < children.length; i++) { + const variableId = children[i].querySelector('h3').getElementsByClassName('variable_post_id')[0].value + if( parseInt(variableId) === productId ) { + children[i].querySelector('.woocommerce_variable_attributes').getElementsByClassName('wc_input_subscription_period_interval')[0].setAttribute('disabled', 'disabled'); + } + + const periodInterval = document.querySelector('#_subscription_period_interval'); + periodInterval.setAttribute('disabled', 'disabled'); + + const subscriptionPeriod = document.querySelector('#_subscription_period'); + subscriptionPeriod.setAttribute('disabled', 'disabled'); + + const subscriptionLength = document.querySelector('._subscription_length_field'); + subscriptionLength.style.display = 'none'; + + const subscriptionTrial = document.querySelector('._subscription_trial_length_field'); + subscriptionTrial.style.display = 'none'; + } + const setupProducts = () => { PayPalCommerceGatewayPayPalSubscriptionProducts?.forEach((product) => { if(product.product_connected === 'yes') { - const periodInterval = document.querySelector('#_subscription_period_interval'); - periodInterval.setAttribute('disabled', 'disabled'); - - const subscriptionPeriod = document.querySelector('#_subscription_period'); - subscriptionPeriod.setAttribute('disabled', 'disabled'); - - const subscriptionLength = document.querySelector('._subscription_length_field'); - subscriptionLength.style.display = 'none'; - - const subscriptionTrial = document.querySelector('._subscription_trial_length_field'); - subscriptionTrial.style.display = 'none'; + disableFields(product.product_id); } - const unlinkBtn = document.getElementById(`ppcp-unlink-sub-plan-${product.ajax.deactivate_plan.product_id}`); + const unlinkBtn = document.getElementById(`ppcp-unlink-sub-plan-${product.product_id}`); unlinkBtn?.addEventListener('click', (event)=>{ event.preventDefault(); unlinkBtn.disabled = true; @@ -32,8 +45,8 @@ document.addEventListener( credentials: 'same-origin', body: JSON.stringify({ nonce: product.ajax.deactivate_plan.nonce, - plan_id: product.ajax.deactivate_plan.plan_id, - product_id: product.ajax.deactivate_plan.product_id + plan_id: product.plan_id, + product_id: product.product_id }) }).then(function (res) { return res.json(); diff --git a/modules/ppcp-subscription/src/SubscriptionModule.php b/modules/ppcp-subscription/src/SubscriptionModule.php index 5b2978e35..1ed3d75e5 100644 --- a/modules/ppcp-subscription/src/SubscriptionModule.php +++ b/modules/ppcp-subscription/src/SubscriptionModule.php @@ -954,12 +954,12 @@ class SubscriptionModule implements ModuleInterface { return array( 'product_connected' => $product->get_meta( '_ppcp_enable_subscription_product' ) ?? '', + 'plan_id' => $plan_id, + 'product_id' => $product->get_id(), 'ajax' => array( 'deactivate_plan' => array( 'endpoint' => \WC_AJAX::get_endpoint( DeactivatePlanEndpoint::ENDPOINT ), 'nonce' => wp_create_nonce( DeactivatePlanEndpoint::ENDPOINT ), - 'plan_id' => $plan_id, - 'product_id' => $product->get_id(), ), ), );