From 6a4b4065689df6475efc58ae213d6e3a58b4e1cc Mon Sep 17 00:00:00 2001 From: David Remer Date: Tue, 28 Jul 2020 05:41:09 +0300 Subject: [PATCH] add a toggle to enable user adding credentials manually --- .../ppcp-onboarding/assets/css/onboarding.css | 21 ++++++ .../ppcp-onboarding/assets/js/settings.js | 11 ++++ .../src/Assets/OnboardingAssets.php | 19 +++++- modules.local/ppcp-wc-gateway/services.php | 66 +++++++++++-------- .../src/Settings/SettingsRenderer.php | 3 +- 5 files changed, 88 insertions(+), 32 deletions(-) create mode 100644 modules.local/ppcp-onboarding/assets/css/onboarding.css create mode 100644 modules.local/ppcp-onboarding/assets/js/settings.js diff --git a/modules.local/ppcp-onboarding/assets/css/onboarding.css b/modules.local/ppcp-onboarding/assets/css/onboarding.css new file mode 100644 index 000000000..55c798fff --- /dev/null +++ b/modules.local/ppcp-onboarding/assets/css/onboarding.css @@ -0,0 +1,21 @@ +.optional { + display: none; +} + +#field-client_secret, +#field-client_id { + display: none; +} + +#field-toggle_manual_input button { + color: #0073aa; + transition-property: border, background, color; + transition-duration: .05s; + transition-timing-function: ease-in-out; + background: none; + border: none; + text-decoration: underline; + cursor: pointer; + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/modules.local/ppcp-onboarding/assets/js/settings.js b/modules.local/ppcp-onboarding/assets/js/settings.js new file mode 100644 index 000000000..d045f82b9 --- /dev/null +++ b/modules.local/ppcp-onboarding/assets/js/settings.js @@ -0,0 +1,11 @@ +(() => { + document.querySelector('#field-toggle_manual_input').addEventListener( + 'click', + (event) => { + event.preventDefault(); + document.querySelector('#field-toggle_manual_input').style.display = 'none'; + document.querySelector('#field-client_id').style.display = 'table-row'; + document.querySelector('#field-client_secret').style.display = 'table-row'; + } + ) +})() \ No newline at end of file diff --git a/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php b/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php index db46e39af..0bae216f3 100644 --- a/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php +++ b/modules.local/ppcp-onboarding/src/Assets/OnboardingAssets.php @@ -28,7 +28,17 @@ class OnboardingAssets public function register(): bool { - if (!$this->shouldRender()) { + $url = $this->moduleUrl . '/assets/css/onboarding.css'; + wp_register_style( + 'ppcp-onboarding', + $url + ); + $url = $this->moduleUrl . '/assets/js/settings.js'; + wp_register_script( + 'ppcp-settings', + $url + ); + if (!$this->shouldRenderOnboardingScript()) { return false; } @@ -53,12 +63,15 @@ class OnboardingAssets ] ); + return true; } public function enqueue(): bool { - if (! $this->shouldRender()) { + wp_enqueue_style('ppcp-onboarding'); + wp_enqueue_script('ppcp-settings'); + if (! $this->shouldRenderOnboardingScript()) { return false; } @@ -66,7 +79,7 @@ class OnboardingAssets return true; } - private function shouldRender(): bool + private function shouldRenderOnboardingScript(): bool { // phpcs:disable Inpsyde.CodeQuality.VariablesName.SnakeCaseVar global $current_section; diff --git a/modules.local/ppcp-wc-gateway/services.php b/modules.local/ppcp-wc-gateway/services.php index 4521f4371..9143cd4a2 100644 --- a/modules.local/ppcp-wc-gateway/services.php +++ b/modules.local/ppcp-wc-gateway/services.php @@ -160,6 +160,7 @@ return [ 'merchant_email' => [ 'title' => __('Email address', 'woocommerce-paypal-commerce-gateway'), 'type' => 'text', + 'required' => true, 'desc_tip' => true, 'description' => __('The email address of your PayPal account.', 'woocommerce-paypal-commerce-gateway'), 'default' => '', @@ -179,6 +180,43 @@ return [ 'hidden' => 'merchant_email', 'requirements' => [], ], + 'toggle_manual_input' => [ + 'type' => 'ppcp-text', + 'title' => __('Manual mode', 'woocommerce-paypla-commerce-gateway'), + 'text' => '', + 'screens' => [ + State::STATE_START, + State::STATE_PROGRESSIVE, + State::STATE_ONBOARDED, + ], + 'requirements' => [], + ], + 'client_id' => [ + 'title' => __('Client Id', 'woocommerce-paypal-commerce-gateway'), + 'type' => 'text', + 'desc_tip' => true, + 'description' => __('The client id of your api ', 'woocommerce-paypal-commerce-gateway'), + 'default' => false, + 'screens' => [ + State::STATE_START, + State::STATE_PROGRESSIVE, + State::STATE_ONBOARDED, + ], + 'requirements' => [], + ], + 'client_secret' => [ + 'title' => __('Secret Key', 'woocommerce-paypal-commerce-gateway'), + 'type' => 'password', + 'desc_tip' => true, + 'description' => __('The secret key of your api', 'woocommerce-paypal-commerce-gateway'), + 'default' => false, + 'screens' => [ + State::STATE_START, + State::STATE_PROGRESSIVE, + State::STATE_ONBOARDED, + ], + 'requirements' => [], + ], 'title' => [ 'title' => __('Title', 'woocommerce-paypal-commerce-gateway'), 'type' => 'text', @@ -491,34 +529,6 @@ return [ ], 'requirements' => [], ], - 'client_id' => [ - 'title' => __('Client Id', 'woocommerce-paypal-commerce-gateway'), - 'type' => 'text', - 'desc_tip' => true, - 'label' => __('Enable logging', 'woocommerce-paypal-commerce-gateway'), - 'description' => __('Enable logging of unexpected behavior. This can also log private data and should only be enabled in a development or stage environment.', 'woocommerce-paypal-commerce-gateway'), - 'default' => false, - 'screens' => [ - State::STATE_START, - State::STATE_PROGRESSIVE, - State::STATE_ONBOARDED, - ], - 'requirements' => [], - ], - 'client_secret' => [ - 'title' => __('Secret Id', 'woocommerce-paypal-commerce-gateway'), - 'type' => 'text', - 'desc_tip' => true, - 'label' => __('Enable logging', 'woocommerce-paypal-commerce-gateway'), - 'description' => __('Enable logging of unexpected behavior. This can also log private data and should only be enabled in a development or stage environment.', 'woocommerce-paypal-commerce-gateway'), - 'default' => false, - 'screens' => [ - State::STATE_START, - State::STATE_PROGRESSIVE, - State::STATE_ONBOARDED, - ], - 'requirements' => [], - ], ]; }, ]; diff --git a/modules.local/ppcp-wc-gateway/src/Settings/SettingsRenderer.php b/modules.local/ppcp-wc-gateway/src/Settings/SettingsRenderer.php index 2de0d61fc..624273e8d 100644 --- a/modules.local/ppcp-wc-gateway/src/Settings/SettingsRenderer.php +++ b/modules.local/ppcp-wc-gateway/src/Settings/SettingsRenderer.php @@ -76,8 +76,9 @@ class SettingsRenderer } $value = $this->settings->has($field) ? $this->settings->get($field) : null; $id = 'ppcp[' . $field . ']'; + ?> - +