diff --git a/modules/website_shoppingcart.php b/modules/website_shoppingcart.php index e247df7..49f613f 100644 --- a/modules/website_shoppingcart.php +++ b/modules/website_shoppingcart.php @@ -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']); 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 51b9d44..7ca550c 100644 --- a/web/intelectra_shop/themes/theme2/templates/content_shoppingcart_neu.tpl +++ b/web/intelectra_shop/themes/theme2/templates/content_shoppingcart_neu.tpl @@ -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')); });