Correct reset function

This commit is contained in:
Remo Zaros
2026-06-25 11:02:11 +02:00
parent 29109c47d1
commit 8d42eee2c1

View File

@@ -36,7 +36,7 @@ function show_modal()
const postcodeModal = document.querySelector("#postcode_modal");
postcodeModal.showModal();
</script>
HTML;
HTML;
}
function send_postcode_data()
@@ -135,7 +135,7 @@ function send_postcode_data()
}
});
</script>
HTML;
HTML;
}
function render_dialog_html()
@@ -259,14 +259,13 @@ function handle_postcode_modal($data)
// 5. Response sturen
if ($hasError) {
echo json_encode([
return new WP_REST_Response([
"status" => "error",
"code" => $errorCode,
"message" => $errorMessage,
"suggestions" => $result["error"]["details"]["suggestions"] ?? [],
"apirequest" => "openpostcode.nl",
]);
exit();
], 400);
}
set_pppr_cookie(
postcode_in_range($params["postcode"]),
@@ -276,11 +275,10 @@ function handle_postcode_modal($data)
$woonplaats
);
echo json_encode([
return new WP_REST_Response([
"status" => "success",
"message" => "all good",
]);
exit();
], 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,55 +396,110 @@ function modify_checkout_with_js()
$data["street"] . " " . strtoupper($data["house_number"]);
echo <<<HTML
<script type="text/javascript" id="fill_address_fields">
jQuery(document).ready(function(\$) {
fillCheckoutFields();
\$(document.body).on('updated_checkout', fillCheckoutFields);
});
<script type="text/javascript" id="set_pppr_fields">
jQuery(document).ready(function($) {
function fillCheckoutFields() {
function lockCheckoutFields() {
if (typeof wp !== 'undefined' && wp.data && wp.data.dispatch) {
const store = 'wc/store/cart';
wp.data.dispatch(store).setShippingAddress({
first_name: '',
last_name: '',
address_1: '{$address}',
address_1: 'Tjeuke Timmermansstraat 43',
address_2: '',
city: '{$city}',
city: 'Tilburg',
state: '',
postcode: '{$postcode}',
postcode: '5041 EK',
country: 'NL',
phone: '',
email: ''
});
//make fields READONLY and ppstcode reset.
setTimeout(() => {
// make prefilled fiields readonly.
\$('#shipping-postcode, #shipping-city, #shipping-address_1')
.prop('readonly', true)
.css('background', '#f9f9f9');
const targets = '#shipping-postcode, #shipping-city, #shipping-address_1';
// create postcode reset button
$(targets).each(function() {
// Voeg readonly attribuut toe (voor toegankelijkheid)
$(this).prop('readonly', true);
$(this).css({
'background-color': '#f9f9f9',
'cursor': 'not-allowed',
'pointer-events': 'none' // Blokkeert alle muisklikken in het veld
});
});
if ($('.postcode-reset').length === 0) {
const div = document.createElement("div");
div.setAttribute("class", "postcode-reset")
div.setAttribute("class", "postcode-reset");
div.innerHTML = `
<a href="#" class="reset-postcode-show-comfirm" >Reset postcode.</a>
<span class="bevestiging"> Deze handeling leegt ook de winkelwagen. Weet je het zeker?
<a href="#" class="accept">&nbsp;&nbsp;JA&nbsp;</a>/<a href="#" class="decline">&nbsp;nee&nbsp;&nbsp;</a>
</span> `;
<a href="#" class="reset-postcode-show-comfirm" style="font-size:12px; text-decoration:underline;">Reset postcode.</a>
<span class="bevestiging" style="display:none; font-size:12px;">
Deze handeling leegt ook de winkelwagen. Weet je het zeker?
<a href="#" class="accept" style="color:red; font-weight:bold;">&nbsp;&nbsp;JA&nbsp;</a>/
<a href="#" class="decline">&nbsp;nee&nbsp;&nbsp;</a>
</span>`;
div.style.width = "100%";
document.querySelector(".wc-block-components-address-form__city").after(div);
}, 500);
document.querySelector(".wc-block-components-address-form__city")?.after(div);
$('.reset-postcode-show-comfirm').on('click', function(e) {
e.preventDefault();
$(this).hide();
$(this).next('.bevestiging').show();
});
$('.decline').on('click', function(e) {
e.preventDefault();
$(this).closest('.bevestiging').hide();
$('.reset-postcode-show-comfirm').show();
});
$('.accept').on('click', function(e) {
e.preventDefault();
$.ajax({
url: ajax_object.ajax_url,
type: 'POST',
data: {
action: 'unset_my_session', // Matches wp_ajax_ hook
nonce: ajax_object.nonce // Matches wp_create_nonce action
},
success: function(response) {
if (response.success) {
location.reload();
} else {
console.error('Server returned error:', response.data);
alert('Failed to reset session: ' + (response.data || 'Unknown error'));
}
},
error: function(xhr, status, error) {
console.error('AJAX request failed:', status, error);
console.log('Response Text:', xhr.responseText); // Check for PHP fatal errors
}
});
});
}
jQuery(document.body).trigger('update_checkout');
}, 800); // Iets langere delay voor React rendering
} else {
console.error('WooCommerce Blocks API is niet beschikbaar');
}
}
lockCheckoutFields();
let updateTimeout;
$(document.body).on('updated_checkout', function() {
clearTimeout(updateTimeout);
updateTimeout = setTimeout(lockCheckoutFields, 500);
});
});
</script>
HTML;
HTML;
}
function load_assets_reset_postcode_on_checkout()