diff --git a/modules/website_shoppingcart.php b/modules/website_shoppingcart.php
index a757909..37e9437 100644
--- a/modules/website_shoppingcart.php
+++ b/modules/website_shoppingcart.php
@@ -59,6 +59,12 @@ class website_shoppingcart {
header('Location: /Kasse/');
exit;
}
+ // 27.09.2026: "Weiter einkaufen" geht ueber das Formular (Mengen werden mitgespeichert),
+ // festes Ziel Startseite -- kein offener Redirect.
+ if ($goto === 'weiter') {
+ header('Location: /');
+ exit;
+ }
if (preg_match('/^express:([a-z0-9_]{1,40})$/', $goto, $m)) {
header('Location: /Kasse/?payment_express_start='.$m[1]);
exit;
diff --git a/web/intelectra_shop/themes/theme2/templates/content_cash_desk_neu.tpl b/web/intelectra_shop/themes/theme2/templates/content_cash_desk_neu.tpl
index 4bcb83e..6352594 100644
--- a/web/intelectra_shop/themes/theme2/templates/content_cash_desk_neu.tpl
+++ b/web/intelectra_shop/themes/theme2/templates/content_cash_desk_neu.tpl
@@ -118,7 +118,7 @@
-
+
@@ -197,7 +197,7 @@
-
+
diff --git a/web/intelectra_shop/themes/theme2/templates/content_shoppingcart_neu.tpl b/web/intelectra_shop/themes/theme2/templates/content_shoppingcart_neu.tpl
index 47f0784..8029801 100644
--- a/web/intelectra_shop/themes/theme2/templates/content_shoppingcart_neu.tpl
+++ b/web/intelectra_shop/themes/theme2/templates/content_shoppingcart_neu.tpl
@@ -231,9 +231,15 @@ $(document).ready(function() {
}
// 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.
+ var gesendet = false;
function absenden(ziel) {
- if (!mengenOk()) { return; }
+ if (gesendet) { return; } // Formular ist schon unterwegs, kein zweiter Submit
+ if (!mengenOk()) {
+ if (ziel === 'weiter') { window.location.href = '/'; } // Mengenfehler haelt niemanden im Laden fest
+ return;
+ }
if (ziel === '') { try { sessionStorage.setItem('wk_scroll', String(window.scrollY || window.pageYOffset || 0)); } catch (e) {} }
+ gesendet = true;
$('#cart_goto').val(ziel);
$('#cart_form').submit();
}
@@ -241,11 +247,24 @@ $(document).ready(function() {
var y = sessionStorage.getItem('wk_scroll');
if (y !== null) { sessionStorage.removeItem('wk_scroll'); window.scrollTo(0, parseInt(y) || 0); }
} catch (e) {}
- // Getippte Menge: beim Verlassen des Feldes speichern (kein extra Knopf mehr)
- $('.input_quantity').change(function() { absenden(''); });
- $('#cashdesk_button').click(function(e) { e.preventDefault(); absenden('kasse'); });
- $('.express_start').click(function(e) { e.preventDefault(); absenden('express:' + $(this).data('module')); });
- $('.item_delete').click(function(e) { e.preventDefault(); $('.input_quantity', $(this).closest('.wk-row')).val(0); absenden(''); });
+ // Getippte Menge: beim Verlassen des Feldes speichern -- aber erst nach einer kurzen Wartezeit.
+ // Sonst gewinnt das Auto-Speichern gegen den Klick, der das Feld verlassen hat ("Weiter einkaufen",
+ // "Zur Kasse"): das Formular geht ab, der Klick verpufft, die Seite laedt sich nur neu (Tom, 27.09.).
+ var autoTimer = null;
+ function autoSpeichern() {
+ if (autoTimer) { clearTimeout(autoTimer); }
+ autoTimer = setTimeout(function() { autoTimer = null; absenden(''); }, 300);
+ }
+ // Eine Aktion bricht ein wartendes Auto-Speichern ab; ihr eigener Submit traegt die Mengen mit.
+ function aktion(ziel) {
+ if (autoTimer) { clearTimeout(autoTimer); autoTimer = null; }
+ absenden(ziel);
+ }
+ $('.input_quantity').change(function() { autoSpeichern(); });
+ $('#cashdesk_button').click(function(e) { e.preventDefault(); aktion('kasse'); });
+ $('.express_start').click(function(e) { e.preventDefault(); aktion('express:' + $(this).data('module')); });
+ $('.wk-continue a').click(function(e) { e.preventDefault(); aktion('weiter'); });
+ $('.item_delete').click(function(e) { e.preventDefault(); $('.input_quantity', $(this).closest('.wk-row')).val(0); aktion(''); });
// Stepper: Menge in Staffelschritten aendern und sofort speichern
$('.wk-step').click(function(e) {
@@ -259,10 +278,10 @@ $(document).ready(function() {
q = q + step * buy;
if (q < min) { q = (step < 0) ? 0 : min; } // unter Mindestmenge = entfernen
input.val(q);
- absenden('');
+ aktion('');
});
// Enter im Mengenfeld = aktualisieren, nicht das Formular blind abschicken
- $('.input_quantity').keydown(function(e) { if (e.keyCode == 13) { e.preventDefault(); absenden(''); } });
+ $('.input_quantity').keydown(function(e) { if (e.keyCode == 13) { e.preventDefault(); aktion(''); } });
});
{/literal}