Bug 15354: Fix translated itemtype descriptions in circ rules

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>
This commit is contained in:
Jonathan Druart 2015-12-14 10:14:16 +00:00 committed by Jesse Weaver
parent c5aa676294
commit f1b7e8b4d8
2 changed files with 21 additions and 13 deletions

View file

@ -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'};
}
}

View 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 %]