@@ -, +, @@ DBIx::Class --- Koha/ItemTypes.pm | 12 ++++++++---- Koha/Schema/Result/Itemtype.pm | 17 +++++++++++++---- .../prog/en/modules/reports/reserves_stats.tt | 4 ++-- suggestion/suggestion.pl | 1 + t/db_dependent/Koha/ItemTypes.t | 14 +++++++++++++- 5 files changed, 37 insertions(+), 11 deletions(-) --- a/Koha/ItemTypes.pm +++ a/Koha/ItemTypes.pm @@ -46,11 +46,15 @@ sub search_with_localization { my ( $self, $params, $attributes ) = @_; my $language = C4::Languages::getlanguage(); - $params->{'-or'} = { 'localization.lang' => [ $language, undef ] }; - $attributes->{order_by} = 'localization.translation' unless exists $attributes->{order_by}; + $Koha::Schema::Result::Itemtype::LANGUAGE = $language; + $attributes->{order_by} = 'translated_description' unless exists $attributes->{order_by}; $attributes->{join} = 'localization'; - $attributes->{'+select'} = [ { coalesce => [qw( localization.translation me.description )] } ]; - $attributes->{'+as'} = ['translated_description']; + $attributes->{'+select'} = [ + { + coalesce => [qw( localization.translation me.description )], + -as => 'translated_description' + } + ]; $self->SUPER::search( $params, $attributes ); } --- a/Koha/Schema/Result/Itemtype.pm +++ a/Koha/Schema/Result/Itemtype.pm @@ -199,11 +199,20 @@ __PACKAGE__->has_many( # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:1GiikODklVISOurHX37qjA # Use the ItemtypeLocalization view to create the join on localization +our $LANGUAGE; __PACKAGE__->has_many( - "localization", - "Koha::Schema::Result::ItemtypeLocalization", - { "foreign.code" => "self.itemtype" }, - { cascade_copy => 0, cascade_delete => 0 }, + "localization" => "Koha::Schema::Result::ItemtypeLocalization", + sub { + my $args = shift; + + die "no lang specified!" unless $LANGUAGE; + + return ({ + "$args->{self_alias}.itemtype" => { -ident => "$args->{foreign_alias}.code" }, + "$args->{foreign_alias}.lang" => $LANGUAGE, + }); + + } ); 1; --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/reserves_stats.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/reserves_stats.tt @@ -223,8 +223,8 @@ --- a/suggestion/suggestion.pl +++ a/suggestion/suggestion.pl @@ -24,6 +24,7 @@ use CGI qw ( -utf8 ); use C4::Auth; # get_template_and_user use C4::Output; use C4::Suggestions; +use C4::Koha; use C4::Budgets; use C4::Search; use C4::Members; --- a/t/db_dependent/Koha/ItemTypes.t +++ a/t/db_dependent/Koha/ItemTypes.t @@ -57,6 +57,18 @@ Koha::ItemType->new( } )->store; +Koha::ItemType->new( + { + itemtype => 'type3', + description => 'description', + rentalcharge => '0.00', + imageurl => 'imageurl', + summary => 'summary', + checkinmsg => 'checkinmsg', + checkinmsgtype => 'checkinmsgtype', + } +)->store; + Koha::Localization->new( { entity => 'itemtypes', @@ -103,7 +115,7 @@ is( $type->checkinmsg, 'checkinmsg', 'checkinmsg' ); is( $type->checkinmsgtype, 'checkinmsgtype', 'checkinmsgtype' ); my $itemtypes = Koha::ItemTypes->search_with_localization; -is( $itemtypes->count, 2, 'There are 2 item types' ); +is( $itemtypes->count, 3, 'There are 3 item types' ); my $first_itemtype = $itemtypes->next; is( $first_itemtype->translated_description, --