From e0fdb2db51072e10a3f53b1efb9571728560bd64 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 13 Jul 2023 17:01:07 +0100 Subject: [PATCH] Bug 34269: Convert to using codes in select compares This patch updates the logic in smart rules to compare option values to codes as apposed to option texts to value descriptions. 0. Apply patch 1. Install another language in the staff interface 1. ./translate install xx-XX 2. Check the box of the language in the 'language' system preference 3. Refresh 2. Create an item type with a parent 1. Go to Administration > Item types 2. Create a new item type or modify an existing one, assigning a parent type Example: Create a 'Children's books' itemtypetype and assig 'Books' as its parent 3. Create a third item type with the same description but something added in (): Example: 'Children's books (3-5)' 3. Create a circulation rule for the parent type Example: All/Books, with 2 checkouts allowed 4. Create a circulation rule for: All/All with 3 checkouts allowed 5. In English, click on "Edit" next to the parent type rule (All/Books) --> Note that the item type in the bottom row (the modifiable row) is changed to 'Books (All)' 6. Modify the number of checkouts allowed (e.g. 99) --> The All/Books rule is modified 7. Switch the interface to the other language 8. Click on "Edit" next to the parent type rule (All/Books) --> The All/Books rule is modified 9. Add rules for Children's books and Children's books (3-5) 10. Click on "Edit" next to each rule and change a value --> Verify that the changed values are always saved for the correct rule Signed-off-by: Katrin Fischer Signed-off-by: Marcel de Rooy Signed-off-by: Tomas Cohen Arazi --- .../prog/en/modules/admin/smart-rules.tt | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) 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 3ffde1caa3..bfb073ae3c 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 @@ -209,7 +209,7 @@ [% ELSE %] 0 [% END %] - + [% IF c == undef %] All [% ELSE %] @@ -221,7 +221,7 @@ [% ELSE %] 0 [% END %] - + [% IF i == undef %] All [% ELSE %] @@ -252,7 +252,7 @@ [% END %] [% issuelength | html %] - + [% SWITCH daysmode %] [% CASE 'Calendar' %]Skip closed days [% CASE 'Datedue' %]Next open day @@ -261,7 +261,7 @@ [% CASE %]Default [% END %] - + [% IF ( lengthunit == 'days' ) %] Days [% ELSIF ( lengthunit == 'hours') %] @@ -270,7 +270,7 @@ Undefined [% END %] - + [% IF ( hardduedate ) %] [% IF ( hardduedatecompare == '-1' ) %] before [% hardduedate | $KohaDates %] @@ -314,7 +314,7 @@ [% END %] [% renewalperiod | html %] [% norenewalbefore | html %] - + [% IF auto_renew %] Yes [% ELSE %] @@ -344,7 +344,7 @@ Unlimited [% END %] - + [% IF onshelfholds == 1 %] Yes [% ELSIF onshelfholds == 2 %] @@ -353,7 +353,7 @@ If any unavailable [% END %] - + [% IF opacitemholds == 'F'%] Force [% ELSIF opacitemholds == 'Y'%] @@ -363,7 +363,7 @@ [% END %] [% IF Koha.Preference('ArticleRequests') %] - + [% IF article_requests == 'no' %] No [% ELSIF article_requests == 'yes' %] @@ -379,7 +379,7 @@ [% IF Koha.Preference('UseRecalls') %] [% recalls_allowed | html %] [% recalls_per_record | html %] - + [% IF on_shelf_recalls == 'all' %] If all unavailable [% ELSE %] @@ -1462,8 +1462,9 @@ $('#default-circulation-rules td').removeClass('highlighted-row'); $(this).parent().parent().find("td").each(function (i) { $(this).addClass('highlighted-row'); - itm = $(this).text(); - itm = itm.replace(/^\s*|\s*$/g,''); + itm_code = $(this).data('code'); + itm_text = $(this).text(); + itm_text = itm_text.replace(/^\s*|\s*$/g,''); var current_column = $("#edit_row td:eq("+i+")"); if ( i == 3 ) { // specific processing for the Note column @@ -1476,7 +1477,7 @@ if (typeof select_value === 'undefined'){ select_value = '-1'; }else { - input_value = itm.split(' ')[1]; + input_value = itm_text.split(' ')[1]; } $(current_column).find("input[type='text']").val(input_value); $(current_column).find("select").val(select_value); @@ -1486,18 +1487,15 @@ $('#cap_fine_to_replacement_price').prop('checked', cap_fine_to_replacement_price.is(':checked') ); $('#overduefinescap').prop('disabled', cap_fine_to_replacement_price.is(':checked') ); } else { - $(current_column).find("input[type='text']").val(itm); + $(current_column).find("input[type='text']").val(itm_text); // unformat prices $(current_column).find("input[inputmode='decimal']").each(function() { - $(this).val(itm.unformat_price()); + $(this).val(itm_text.unformat_price()); }); // select the corresponding option $(current_column).find("select option").each(function(){ - opt = $(this).text().toLowerCase(); - opt = opt.replace(/ \(\w*?\)$/,""); //If option is a parent, compare without (All) or the equivalent in other languages - itm = itm.replace(/.*->(.*)/,"$1"); //If item type is part of a group we need to clear the parent description - opt = opt.replace(/^\s*|\s*$/g,''); - if ( opt == itm.toLowerCase() ) { + opt = $(this).attr('value'); + if ( opt == itm_code ) { $(this).attr('selected', 'selected'); } }); @@ -1520,7 +1518,7 @@ // - "Holds per record (count)" // The value is "Unlimited" (or an equivalent translated string) // an it should be set to an empty string - if( !((parseFloat(itm) == parseInt(itm)) && !isNaN(itm)) ) { + if( !((parseFloat(itm_text) == parseInt(itm_text)) && !isNaN(itm_text)) ) { $(current_column).find("input[type='text']").val(""); } }