Bug 30477: Add new UNIMARC installer translation files
[koha.git] / tools / quotes.pl
1 #!/usr/bin/perl
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18 use Modern::Perl;
19
20 use CGI qw ( -utf8 );
21 use Try::Tiny qw( catch try );
22
23 use C4::Auth qw( get_template_and_user );
24 use C4::Context;
25 use C4::Output qw( output_html_with_http_headers );
26 use Koha::Quotes;
27
28 my $input = CGI->new;
29
30 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
31     {
32         template_name => "tools/quotes.tt",
33         query         => $input,
34         type          => "intranet",
35         flagsrequired => { tools => 'edit_quotes' },
36     }
37 );
38
39 my $id = $input->param('id');
40 my $op = $input->param('op') || 'list';
41 my @messages;
42
43 if ( $op eq 'add_form' ) {
44     $template->param( quote => Koha::Quotes->find($id), );
45 }
46 elsif ( $op eq 'add_validate' ) {
47     my @fields = qw(
48       source
49       text
50     );
51
52     if ($id) {
53         my $quote = Koha::Quotes->find($id);
54         for my $field (@fields) {
55             $quote->$field( scalar $input->param($field) );
56         }
57
58         try {
59             $quote->store;
60             push @messages, { type => 'message', code => 'success_on_update' };
61         }
62         catch {
63             push @messages, { type => 'alert', code => 'error_on_update' };
64         }
65     }
66     else {
67         my $quote = Koha::Quote->new(
68             {
69                 id => $id,
70                 ( map { $_ => scalar $input->param($_) || undef } @fields )
71             }
72         );
73
74         try {
75             $quote->store;
76             push @messages, { type => 'message', code => 'success_on_insert' };
77         }
78         catch {
79             push @messages, { type => 'alert', code => 'error_on_insert' };
80         };
81     }
82     $op = 'list';
83 }
84 else {
85     $op = 'list';
86 }
87
88 $template->param( quotes_count => Koha::Quotes->search->count )
89   if $op eq 'list';
90
91 $template->param(
92     messages => \@messages,
93     op       => $op,
94 );
95
96 output_html_with_http_headers $input, $cookie, $template->output;