Bug 15354: Fix translated itemtype descriptions in circ rules
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 14 Dec 2015 10:14:16 +0000 (10:14 +0000)
committerJesse Weaver <jweaver@bywatersolutions.com>
Tue, 19 Jan 2016 22:34:32 +0000 (15:34 -0700)
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 <f.demians@tamil.fr>
Signed-off-by: Jesse Weaver <jweaver@bywatersolutions.com>
Passes QA tools.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jesse Weaver <jweaver@bywatersolutions.com>
admin/smart-rules.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt

index e120bd8..8221a0d 100755 (executable)
@@ -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'};
     }
 }
index e7cc158..825e53d 100644 (file)
@@ -185,7 +185,7 @@ for="tobranch"><strong>Clone these rules to:</strong></label> <input type="hidde
                                                                        [% rule.humancategorycode %]
                                                                [% END %]
                                                        </td>
-                                                       <td>[% IF ( rule.default_humanitemtype ) %]
+                                                       <td>[% IF rule.default_translated_description %]
                                                                        <em>All</em>
                                                                [% ELSE %]
                                                                        [% rule.translated_description %]
@@ -545,7 +545,7 @@ for="tobranch"><strong>Clone these rules to:</strong></label> <input type="hidde
                     [% ELSE %]
                     <tr>
                     [% END %]
-                        <td>[% IF ( branch_item_rule_loo.default_humanitemtype ) %]
+                        <td>[% IF ( branch_item_rule_loo.default_translated_description ) %]
                                 <em>Default</em>
                             [% ELSE %]
                                 [% branch_item_rule_loo.translated_description %]