31d3748f51a74b6cbe30b19f539f0d04a67a87b8
[srvgit] / Koha / Template / Plugin / AuthorisedValues.pm
1 package Koha::Template::Plugin::AuthorisedValues;
2
3 # Copyright 2012 ByWater Solutions
4 # Copyright 2013-2014 BibLibre
5 #
6 # Koha is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # Koha is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with Koha; if not, see <http://www.gnu.org/licenses>.
18
19 use Modern::Perl;
20
21 use Template::Plugin;
22 use base qw( Template::Plugin );
23
24 use C4::Koha;
25 use Koha::AuthorisedValues;
26
27 sub GetByCode {
28     my ( $self, $category, $code, $opac ) = @_;
29     my $av = Koha::AuthorisedValues->search({ category => $category, authorised_value => $code });
30     return $av->count
31             ? $opac
32                 ? $av->next->opac_description
33                 : $av->next->lib
34             : $code;
35 }
36
37 sub Get {
38     my ( $self, $category, $selected, $opac ) = @_;
39     return GetAuthorisedValues( $category, $selected, $opac );
40 }
41
42 sub GetAuthValueDropbox {
43     my ( $self, $category ) = @_;
44     my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
45     return Koha::AuthorisedValues->search_with_library_limits(
46         {
47             category => $category,
48         },
49         {
50             order_by => [ 'category', 'lib', 'lib_opac' ],
51         },
52         $branch_limit
53     );
54 }
55
56 sub GetCategories {
57     my ( $self, $params ) = @_;
58     my $selected = $params->{selected};
59     my @categories = Koha::AuthorisedValues->new->categories;
60     return [
61         map {
62             {
63                 category => $_,
64                 ( ( $selected and $selected eq $_ ) ? ( selected => 1 ) : () ),
65             }
66         } @categories
67     ];
68 }
69
70 sub GetDescriptionsByKohaField {
71     my ( $self, $params ) = @_;
72     return Koha::AuthorisedValues->get_descriptions_by_koha_field(
73         { kohafield => $params->{kohafield} } );
74 }
75
76 sub GetDescriptionByKohaField {
77     my ( $self, $params ) = @_;
78     my $av = Koha::AuthorisedValues->get_description_by_koha_field(
79         {
80             kohafield        => $params->{kohafield},
81             authorised_value => $params->{authorised_value},
82         }
83     );
84
85     my $description = $av->{lib} || $params->{authorised_value} || '';
86
87     return $params->{opac}
88       ? $av->{opac_description} || $description
89       : $description;
90 }
91
92 1;
93
94 =head1 NAME
95
96 Koha::Template::Plugin::AuthorisedValues - TT Plugin for authorised values
97
98 =head1 SYNOPSIS
99
100 [% USE AuthorisedValues %]
101
102 [% AuthorisedValues.GetByCode( 'CATEGORY', 'AUTHORISED_VALUE_CODE', 'IS_OPAC' ) %]
103
104 [% AuthorisedValues.GetAuthValueDropbox( $category, $default ) %]
105
106 =head1 ROUTINES
107
108 =head2 GetByCode
109
110 In a template, you can get the description for an authorised value with
111 the following TT code: [% AuthorisedValues.GetByCode( 'CATEGORY', 'AUTHORISED_VALUE_CODE', 'IS_OPAC' ) %]
112
113 =head2 GetAuthValueDropbox
114
115 The parameters are identical to those used by the subroutine C4::Koha::GetAuthValueDropbox
116
117 =head2 GetDescriptionsByKohaField
118
119 The parameters are identical to those used by the subroutine Koha::AuthorisedValues->get_descriptions_by_koha_field
120
121 =head2 GetDescriptionByKohaField
122
123 The parameters are identical to those used by the subroutine Koha::AuthorisedValues->get_description_by_koha_field
124
125 =head1 AUTHOR
126
127 Kyle M Hall <kyle@bywatersolutions.com>
128
129 Jonathan Druart <jonathan.druart@biblibre.com>
130
131 =cut