From f1b7e8b4d8f3c3dfcde5f4f3e0406430bdf3b519 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 14 Dec 2015 10:14:16 +0000 Subject: [PATCH] Bug 15354: Fix translated itemtype descriptions in circ rules MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In bug 14100, the admin/smart-rules.pl needed much more love. Indeed, the translated_description string should be used everywhere and replaced the previous 'humanitemtype'. Test plan: 1/ Translate some item types. 2/ Define some holds policy using these item types. 3/ Update the template strings 4/ Confirm that the "holds policy by item type" are displayed (for the default and specific library) and sorted by translated item type descriptions. Signed-off-by: Frédéric Demians Signed-off-by: Jesse Weaver Passes QA tools. Signed-off-by: Katrin Fischer Signed-off-by: Jesse Weaver --- admin/smart-rules.pl | 30 ++++++++++++------- .../prog/en/modules/admin/smart-rules.tt | 4 +-- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/admin/smart-rules.pl b/admin/smart-rules.pl index e120bd8c16..8221a0de25 100755 --- a/admin/smart-rules.pl +++ b/admin/smart-rules.pl @@ -460,8 +460,8 @@ $sth2->execute($language, $branch); while (my $row = $sth2->fetchrow_hashref) { $row->{'current_branch'} ||= $row->{'branchcode'}; - $row->{'humanitemtype'} ||= $row->{'itemtype'}; - $row->{'default_humanitemtype'} = 1 if $row->{'humanitemtype'} eq '*'; + $row->{translated_description} ||= $row->{translated_description}; + $row->{default_translated_description} = 1 if $row->{humanitemtype} eq '*'; $row->{'humancategorycode'} ||= $row->{'categorycode'}; $row->{'default_humancategorycode'} = 1 if $row->{'humancategorycode'} eq '*'; $row->{'fine'} = sprintf('%.2f', $row->{'fine'}); @@ -516,26 +516,34 @@ foreach my $entry (@sorted_branch_cat_rules, @sorted_row_loop) { my $sth_branch_item; if ($branch eq "*") { $sth_branch_item = $dbh->prepare(" - SELECT default_branch_item_rules.*, itemtypes.description AS humanitemtype + SELECT default_branch_item_rules.*, + COALESCE( localization.translation, itemtypes.description ) AS translated_description FROM default_branch_item_rules JOIN itemtypes USING (itemtype) + LEFT JOIN localization ON itemtypes.itemtype = localization.code + AND localization.entity = 'itemtypes' + AND localization.lang = ? "); - $sth_branch_item->execute(); + $sth_branch_item->execute($language); } else { $sth_branch_item = $dbh->prepare(" - SELECT branch_item_rules.*, itemtypes.description AS humanitemtype + SELECT branch_item_rules.*, + COALESCE( localization.translation, itemtypes.description ) AS translated_description FROM branch_item_rules JOIN itemtypes USING (itemtype) + LEFT JOIN localization ON itemtypes.itemtype = localization.code + AND localization.entity = 'itemtypes' + AND localization.lang = ? WHERE branch_item_rules.branchcode = ? "); - $sth_branch_item->execute($branch); + $sth_branch_item->execute($language, $branch); } my @branch_item_rules = (); while (my $row = $sth_branch_item->fetchrow_hashref) { push @branch_item_rules, $row; } -my @sorted_branch_item_rules = sort { $a->{'humanitemtype'} cmp $b->{'humanitemtype'} } @branch_item_rules; +my @sorted_branch_item_rules = sort { $a->{translated_description} cmp $b->{translated_description} } @branch_item_rules; # note undef holdallowed so that template can deal with them foreach my $entry (@sorted_branch_item_rules) { @@ -609,11 +617,11 @@ sub by_category { sub by_itemtype { my ($a, $b) = @_; - if ($a->{'default_humanitemtype'}) { - return ($b->{'default_humanitemtype'} ? 0 : 1); - } elsif ($b->{'default_humanitemtype'}) { + if ($a->{default_translated_description}) { + return ($b->{'default_translated_description'} ? 0 : 1); + } elsif ($b->{'default_translated_description'}) { return -1; } else { - return $a->{'humanitemtype'} cmp $b->{'humanitemtype'}; + return $a->{'translated_description'} cmp $b->{'translated_description'}; } } 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 e7cc15848a..825e53d116 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 @@ -185,7 +185,7 @@ for="tobranch">Clone these rules to: Clone these rules to: