fix(warenkorb-neu): Scrollposition ueber den Submit retten, Post-Redirect-Get nach Mengenaenderung

This commit is contained in:
Thomas Bartelt
2026-09-18 19:59:04 +02:00
parent 7430556460
commit 94b924fa46
2 changed files with 13 additions and 0 deletions
+6
View File
@@ -64,6 +64,12 @@ class website_shoppingcart {
exit;
}
}
// Post-Redirect-Get fuer die neue Ansicht: nach Mengen-/Anmerkungsaenderung per GET neu
// laden, sonst fragt ein Reload "Formular erneut senden" und schickt die Mengen doppelt.
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cart_goto']) && isset($_GET['ansicht']) && $_GET['ansicht'] === 'neu') {
header('Location: /Warenkorb/?ansicht=neu');
exit;
}
if (isset($_SESSION['customer_info']) && $_SESSION['customer_info']) {
$this->layout_object->assign('customer_info', $_SESSION['customer_info']);
@@ -212,11 +212,18 @@ $(document).ready(function() {
});
return ok;
}
// Scrollposition ueber den Submit retten: ein POST rendert die Seite neu und der
// Browser faengt oben an. Vor dem Absenden merken, nach dem Laden wiederherstellen.
function absenden(ziel) {
if (!mengenOk()) { return; }
if (ziel === '') { try { sessionStorage.setItem('wk_scroll', String(window.scrollY || window.pageYOffset || 0)); } catch (e) {} }
$('#cart_goto').val(ziel);
$('#cart_form').submit();
}
try {
var y = sessionStorage.getItem('wk_scroll');
if (y !== null) { sessionStorage.removeItem('wk_scroll'); window.scrollTo(0, parseInt(y) || 0); }
} catch (e) {}
$('#update_cart').click(function(e) { e.preventDefault(); absenden(''); });
$('#cashdesk_button').click(function(e) { e.preventDefault(); absenden('kasse'); });
$('.express_start').click(function(e) { e.preventDefault(); absenden('express:' + $(this).data('module')); });