From 6efa9f3f5522cde21d362ff245d530d57294b767 Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Fri, 16 May 2025 21:44:50 +0200 Subject: [PATCH] add cart expiry notification --- .../pretixpresale/fragment_modals.html | 17 +++++++++++++++++ src/pretix/static/pretixpresale/js/ui/cart.js | 19 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/pretix/presale/templates/pretixpresale/fragment_modals.html b/src/pretix/presale/templates/pretixpresale/fragment_modals.html index e9068cddd2..68826868fa 100644 --- a/src/pretix/presale/templates/pretixpresale/fragment_modals.html +++ b/src/pretix/presale/templates/pretixpresale/fragment_modals.html @@ -44,6 +44,23 @@ + {% if request.organizer and request.organizer.settings.cookie_consent %} {% if cookie_consent_from_widget %} diff --git a/src/pretix/static/pretixpresale/js/ui/cart.js b/src/pretix/static/pretixpresale/js/ui/cart.js index 98d72ce4f0..7d2682ead1 100644 --- a/src/pretix/static/pretixpresale/js/ui/cart.js +++ b/src/pretix/static/pretixpresale/js/ui/cart.js @@ -20,6 +20,18 @@ var cart = { cart._time_offset = server_time - client_time; }, + show_expiry_notification: function () { + $("#cart-extend-modal").show(); + $("#cart-extend-modal button").focus(); + $("body").addClass("has-modal-dialog"); + cart._expiry_notified = true; + }, + + hide_expiry_notification: function () { + $("#cart-extend-modal").hide(); + $("body").removeClass("has-modal-dialog"); + }, + draw_deadline: function () { function pad(n, width, z) { z = z || '0'; @@ -57,9 +69,9 @@ var cart = { pad(diff_minutes.toString(), 2) + ':' + pad(diff_seconds.toString(), 2) ); } - $("#cart-extend-button").toggle(diff_minutes < 3); var can_extend_cart = diff_minutes < 3 && (diff_total_seconds < 0 || cart._deadline < cart._max_extend); $("#cart-extend-button").toggle(can_extend_cart); + if (can_extend_cart && diff_minutes < 1 && !cart._expiry_notified) cart.show_expiry_notification(); }, init: function () { @@ -93,6 +105,11 @@ $(function () { cart.set_deadline(data.expiry, data.max_expiry_extend); }); + $("#cart-extend-modal button").click(function() { + cart.hide_expiry_notification(); + $("#cart-extend-form").submit(); + }); + $(".toggle-container").each(function() { var summary = $(".toggle-summary", this); var content = $("> :not(.toggle-summary)", this);