diff --git a/session_dialog.php b/session_dialog.php index 28037c3..f6194e5 100644 --- a/session_dialog.php +++ b/session_dialog.php @@ -2,12 +2,12 @@ function init_postcode_handlers($uri) { - if (strpos($uri, "/winkel/") !== false) { - add_action("wp_enqueue_scripts", "modal_styles"); - add_action("wp_footer", "send_postcode_data"); - if (!verify_pppr_cookie_string()) { - if (!is_admin()) { - WC()->cart->empty_cart(); + if (strpos($uri, "/winkel/") !== false) { + add_action("wp_enqueue_scripts", "modal_styles"); + add_action("wp_footer", "send_postcode_data"); + if (!verify_pppr_cookie_string()) { + if (!is_admin()) { + WC()->cart->empty_cart(); } add_action("wp_footer", "show_modal"); render_dialog_html(); @@ -21,30 +21,30 @@ function init_postcode_handlers($uri) function modal_styles() { - wp_enqueue_style( - "prijs-per-postcode", - plugins_url("/assets/postcode_modal.css", __FILE__), - [], // Voeg een lege dependencies array toe (verplicht) - filemtime(plugin_dir_path(__FILE__) . "assets/postcode_modal.css"), // Voeg versie toe + wp_enqueue_style( + "prijs-per-postcode", + plugins_url("/assets/postcode_modal.css", __FILE__), + [], // Voeg een lege dependencies array toe (verplicht) + filemtime(plugin_dir_path(__FILE__) . "assets/postcode_modal.css"), // Voeg versie toe ); } function show_modal() { - echo <<<'HTML' + echo <<<'HTML' - HTML; +HTML; } function send_postcode_data() { - $URL = get_rest_url(null, "postcode-modal/v1/submit"); - $nonce = wp_create_nonce("wp_rest"); + $URL = get_rest_url(null, "postcode-modal/v1/submit"); + $nonce = wp_create_nonce("wp_rest"); - echo << const postcodeModal = document.querySelector("#postcode_modal"); const modalForm = document.querySelector("#postcode_modal_form"); @@ -135,12 +135,12 @@ function send_postcode_data() } }); - HTML; +HTML; } function render_dialog_html() { - echo <<<'HTML' + echo <<<'HTML' Vul je postcode en huisnummer in. Onze prijzen zijn afhankelijk van de regio. Vul daarom de postcode en het huisnummer in om de exacte prijzen te bekijken. @@ -259,14 +259,13 @@ function handle_postcode_modal($data) // 5. Response sturen if ($hasError) { - echo json_encode([ - "status" => "error", - "code" => $errorCode, - "message" => $errorMessage, - "suggestions" => $result["error"]["details"]["suggestions"] ?? [], - "apirequest" => "openpostcode.nl", - ]); - exit(); + return new WP_REST_Response([ + "status" => "error", + "code" => $errorCode, + "message" => $errorMessage, + "suggestions" => $result["error"]["details"]["suggestions"] ?? [], + "apirequest" => "openpostcode.nl", + ], 400); } set_pppr_cookie( postcode_in_range($params["postcode"]), @@ -276,11 +275,10 @@ function handle_postcode_modal($data) $woonplaats ); - echo json_encode([ - "status" => "success", - "message" => "all good", - ]); - exit(); + return new WP_REST_Response([ + "status" => "success", + "message" => "all good", + ], 200); } function register_modal_api() @@ -288,6 +286,7 @@ function register_modal_api() register_rest_route("postcode-modal/v1", "submit", [ "methods" => "POST", "callback" => "handle_postcode_modal", + "permission_callback" => "__return_true", ]); } @@ -397,88 +396,143 @@ function modify_checkout_with_js() $data["street"] . " " . strtoupper($data["house_number"]); echo << - jQuery(document).ready(function(\$) { - fillCheckoutFields(); - \$(document.body).on('updated_checkout', fillCheckoutFields); - }); + - HTML; + + lockCheckoutFields(); + + let updateTimeout; + $(document.body).on('updated_checkout', function() { + clearTimeout(updateTimeout); + updateTimeout = setTimeout(lockCheckoutFields, 500); + }); + }); + +HTML; } function load_assets_reset_postcode_on_checkout() { - if (is_checkout() && !is_wc_endpoint_url()) { - wp_enqueue_style( - "reset-postcode-style", - plugin_dir_url(__FILE__) . "assets/reset-postcode.css", - [], - "1.0.0", + if (is_checkout() && !is_wc_endpoint_url()) { + wp_enqueue_style( + "reset-postcode-style", + plugin_dir_url(__FILE__) . "assets/reset-postcode.css", + [], + "1.0.0", ); - wp_enqueue_script( - "reset-postcode-script", - plugin_dir_url(__FILE__) . "assets/reset-postcode.js", - [], - "1.0.0", - true, + wp_enqueue_script( + "reset-postcode-script", + plugin_dir_url(__FILE__) . "assets/reset-postcode.js", + [], + "1.0.0", + true, ); - // Pass PHP variables to JavaScript - wp_localize_script("reset-postcode-script", "ajax_object", [ - "ajax_url" => admin_url("admin-ajax.php"), - "nonce" => wp_create_nonce("reset_postcode_nonce"), // Creates a secure token + // Pass PHP variables to JavaScript + wp_localize_script("reset-postcode-script", "ajax_object", [ + "ajax_url" => admin_url("admin-ajax.php"), + "nonce" => wp_create_nonce("reset_postcode_nonce"), // Creates a secure token ]); } } function handle_unset_session_fetch() { - // Verify the nonce for security - if (!wp_verify_nonce($_POST["nonce"], "reset_postcode_nonce")) { - wp_die("Security check failed."); + // Verify the nonce for security + if (!wp_verify_nonce($_POST["nonce"], "reset_postcode_nonce")) { + wp_die("Security check failed."); } unset_pppr_cookie();
Onze prijzen zijn afhankelijk van de regio. Vul daarom de postcode en het huisnummer in om de exacte prijzen te bekijken.