From 46a9769a3a30989095bc51875f047eb81ba32421 Mon Sep 17 00:00:00 2001 From: Petro Vashchuk Date: Fri, 22 May 2020 18:11:28 +0300 Subject: [PATCH] Bug 25587: fix for "clear" button to reset all selects Button "clear" on cgi-bin/koha/admin/smart-rules.pl did not reset fields with a dropdown selector except the first one. This happens because jQuery selector .find("select option:first") in koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt selects only single first element in the whole group, as from jquery doc: > The :first pseudo-class is equivalent to :eq( 0 ). It could also be written as :lt( 1 ). While this matches only a single element, :first-child can match more than one: One for each parent. (https://api.jquery.com/first-selector/) And it works if replaced by: .find("select option:first-child") To reproduce: 1) Go to /cgi-bin/koha/admin/smart-rules.pl 2) Start editing one of existing rules or filling a new one, change all selects to have non-first option selected. Fill text input fields with sample data. 3) Reset all fields with the "clear" button. 4) Observe that only the first dropdown field was reset to the first option while all others still contain previously given values, meanwhile all text input fields are cleared as expected. 5) Apply the patch. 6) Repeat steps 1, 2 and 3. 7) Check that all dropdown fields were reset to first option, as expected. Mentored-by: Andrew Nugged --- koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt index 5ae3bb94e1..61f36a1788 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt @@ -941,7 +941,7 @@ } }); $(edit_row).find("select").prop('disabled', false); - $(edit_row).find("select option:first").attr("selected", "selected"); + $(edit_row).find("select option:first-child").attr("selected", "selected"); $(edit_row).find("td:last input[name='clear']").remove(); } -- 2.17.1