From 74b06435a02c3d5e1d2d40f991b0f2dd01547348 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 14 Nov 2025 09:49:40 +0100 Subject: [PATCH] Meta properties: Add helper to sort values (Z#23213668) (#5597) --- .../pretixcontrol/organizers/property_edit.html | 2 ++ src/pretix/static/pretixcontrol/js/ui/main.js | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/pretix/control/templates/pretixcontrol/organizers/property_edit.html b/src/pretix/control/templates/pretixcontrol/organizers/property_edit.html index b697a8e8e..19c77991e 100644 --- a/src/pretix/control/templates/pretixcontrol/organizers/property_edit.html +++ b/src/pretix/control/templates/pretixcontrol/organizers/property_edit.html @@ -91,6 +91,8 @@
+
diff --git a/src/pretix/static/pretixcontrol/js/ui/main.js b/src/pretix/static/pretixcontrol/js/ui/main.js index a1928bbca..1082852ec 100644 --- a/src/pretix/static/pretixcontrol/js/ui/main.js +++ b/src/pretix/static/pretixcontrol/js/ui/main.js @@ -80,6 +80,23 @@ var form_handlers = function (el) { el.find("[data-formset]").on("formAdded", "div", function (event) { form_handlers($(event.target)); }); + el.find("[data-formset] [data-formset-sort]").on("click", function (event) { + // Sort forms alphabetically by their first field + var $formset = $(this).closest("[data-formset]"); + var $forms = $formset.find("[data-formset-form]").not("[data-formset-form-deleted]") + var compareForms = function(form_a, form_b) { + var a = $(form_a).find('input:not([name*=-ORDER]):not([name*=-DELETE]):not([name*=-id])').val(); + var b = $(form_b).find('input:not([name*=-ORDER]):not([name*=-DELETE]):not([name*=-id])').val(); + return a.localeCompare(b); + } + $forms = $forms.sort(compareForms); + $forms.each(function(i, form) { + var $order = $(form).find('[name*=-ORDER]'); + $order.val(i + 1); + }); + // Trigger visual reorder + $formset.find("[name*=-ORDER]").first().trigger("change"); + }); // Vouchers el.find("#voucher-bulk-codes-generate").click(function () {