Bug 766: Create a plugin routine to build dropdown list
[koha.git] / Koha / Template / Plugin / AuthorisedValues.pm
1 package Koha::Template::Plugin::AuthorisedValues;
2
3 # Copyright ByWater Solutions 2012
4
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 use Modern::Perl;
21
22 use Template::Plugin;
23 use base qw( Template::Plugin );
24
25 use Encode qw{encode decode};
26
27 use C4::Koha;
28 use C4::Charset;
29
30 =pod
31
32 To use, first, include the line '[% USE AuthorisedValues %]' at the top
33 of the template to enable the plugin.
34
35 Now, in a template, you can get the description for an authorised value with
36 the following TT code: [% AuthorisedValues.GetByCode( 'CATEGORY', 'AUTHORISED_VALUE_CODE', 'IS_OPAC' ) %]
37
38 The parameters are identical to those used by the subroutine C4::Koha::GetAuthorisedValueByCode.
39
40 =cut
41
42 sub GetByCode {
43     my ( $self, $category, $code, $opac ) = @_;
44     return encode( 'UTF-8', GetAuthorisedValueByCode( $category, $code, $opac ) );
45 }
46
47
48 sub Get {
49     my ( $self, $category, $selected, $opac ) = @_;
50     return GetAuthorisedValues( $category, $selected, $opac );
51 }
52
53 sub BuildDropbox {
54     my ( $self, $name, $category, $default, $params ) = @_;
55     my $class = $params->{class};
56     my $avs = C4::Koha::GetAuthvalueDropbox($category, $default);
57     my $size = $params->{size} || 20;
58     my $html;
59     if ( @$avs ) {
60         $html = qq|<select id="$name" name="$name" class="$class" >|;
61         for my $av ( @$avs ) {
62             if ( $av->{default} ) {
63                 $html .= qq|<option value="$av->{value}" selected="selected">$av->{label}</option>|;
64             } else {
65                 $html .= qq|<option value="$av->{value}">$av->{label}</option>|;
66             }
67         }
68         $html .= q|</select>|;
69     } else {
70         $html .= qq|<input type="text" id="$name" name="$name" size="$size" value="$default" class="$class" />|;
71
72     }
73
74     return encode( 'UTF-8', $html );
75 }
76
77 1;