diff --git a/woocommerce/Handlers/Script_Handler.php b/woocommerce/Handlers/Script_Handler.php index 1dc1862ba..70ee64ac0 100644 --- a/woocommerce/Handlers/Script_Handler.php +++ b/woocommerce/Handlers/Script_Handler.php @@ -24,6 +24,7 @@ namespace SkyVerge\WooCommerce\PluginFramework\v6_0_1\Handlers; +use SkyVerge\WooCommerce\PluginFramework\v6_0_1\Helpers\ScriptHelper; use SkyVerge\WooCommerce\PluginFramework\v6_0_1\SV_WC_Helper; use SkyVerge\WooCommerce\PluginFramework\v6_0_1\SV_WC_Plugin_Exception; @@ -287,6 +288,20 @@ public function ajax_log_event() { } + /** + * Adds inline JavaScript to the page. + * + * @since 6.0.1 + * + * @param string $data The JavaScript code to add inline + * @return bool True if successfully added + */ + protected function addInlineScript(string $data): bool + { + return ScriptHelper::addInlineScript($this->get_id().'-inline-scripts', $data); + } + + /** * Adds a log entry. * diff --git a/woocommerce/Helpers/ScriptHelper.php b/woocommerce/Helpers/ScriptHelper.php new file mode 100644 index 000000000..a1ed95bd6 --- /dev/null +++ b/woocommerce/Helpers/ScriptHelper.php @@ -0,0 +1,72 @@ +get_safe_handler_js( $args, $handler_name, $object_name ) ); + protected function enqueue_js_handler(array $args, $object_name = '', $handler_name = '') + { + $this->addInlineScript($this->get_safe_handler_js($args, $handler_name, $object_name)); } diff --git a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php index ea73bf5f2..c5b99eac2 100644 --- a/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php +++ b/woocommerce/payment-gateway/class-sv-wc-payment-gateway-hosted.php @@ -25,6 +25,7 @@ namespace SkyVerge\WooCommerce\PluginFramework\v6_0_1; use SkyVerge\WooCommerce\PluginFramework\v6_0_1\Helpers\OrderHelper; +use SkyVerge\WooCommerce\PluginFramework\v6_0_1\Helpers\ScriptHelper; defined( 'ABSPATH' ) or exit; @@ -250,7 +251,7 @@ public function render_auto_post_form( \WC_Order $order, $request_params ) { $args = $this->get_auto_post_form_args( $order ); // attempt to automatically submit the form and redirect - wc_enqueue_js(' + $script = ' ( function( $ ) { $( "body" ).block( { @@ -273,7 +274,9 @@ public function render_auto_post_form( \WC_Order $order, $request_params ) { $( "#submit_' . $this->get_id() . '_payment_form" ).click(); } ) ( jQuery ); - '); + '; + + ScriptHelper::addInlineScript($this->get_gateway_js_handle().'-inline', $script); echo '
' . esc_html( $args['message'] ) . '
'; echo '