3 # Copyright 2011-2013 Biblibre SARL
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
22 subscription-numberpatterns.pl
26 Manage numbering patterns
33 use C4::Auth qw( get_template_and_user );
34 use C4::Output qw( output_html_with_http_headers );
35 use C4::Serials::Numberpattern qw(
36 AddSubscriptionNumberpattern
37 DelSubscriptionNumberpattern
38 GetSubscriptionNumberpattern
39 GetSubscriptionNumberpatternByName
40 GetSubscriptionNumberpatterns
41 GetSubscriptionsWithNumberpattern
42 ModSubscriptionNumberpattern
44 use C4::Serials::Frequency qw( GetSubscriptionFrequencies );
46 my @NUMBERPATTERN_FIELDS = qw/
47 label description numberingmethod displayorder
48 label1 label2 label3 add1 add2 add3 every1 every2 every3
49 setto1 setto2 setto3 whenmorethan1 whenmorethan2 whenmorethan3
50 numbering1 numbering2 numbering3 /;
53 my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user( {
54 template_name => 'serials/subscription-numberpatterns.tt',
57 flagsrequired => { 'serials' => "*" }
60 my $op = $input->param('op');
62 if($op && $op eq 'savenew') {
63 my $label = $input->param('label');
65 foreach(@NUMBERPATTERN_FIELDS) {
66 $numberpattern->{$_} = $input->param($_);
67 if(defined $numberpattern->{$_} and $numberpattern->{$_} eq '') {
68 $numberpattern->{$_} = undef;
71 my $numberpattern2 = GetSubscriptionNumberpatternByName($label);
73 if(!defined $numberpattern2) {
74 AddSubscriptionNumberpattern($numberpattern);
77 $template->param(error_existing_numberpattern => 1);
78 $template->param(%$numberpattern);
80 } elsif ($op && $op eq 'savemod') {
81 my $id = $input->param('id');
82 my $label = $input->param('label');
83 my $numberpattern = GetSubscriptionNumberpattern($id);
85 if($numberpattern->{'label'} ne $label) {
86 my $numberpattern2 = GetSubscriptionNumberpatternByName($label);
87 if(defined $numberpattern2 && $id != $numberpattern2->{'id'}) {
92 foreach(@NUMBERPATTERN_FIELDS) {
93 $numberpattern->{$_} = $input->param($_) || undef;
94 if(defined $numberpattern->{$_} and $numberpattern->{$_} eq '') {
95 $numberpattern->{$_} = undef;
98 ModSubscriptionNumberpattern($numberpattern);
101 $template->param(error_existing_numberpattern => 1);
105 if($op && ($op eq 'new' || $op eq 'modify')) {
106 if($op eq 'modify') {
107 my $id = $input->param('id');
109 my $numberpattern = GetSubscriptionNumberpattern($id);
110 $template->param(%$numberpattern);
115 my @frequencies = GetSubscriptionFrequencies();
116 my $languages = [ map {
118 language => $_->{iso639_2_code},
119 description => $_->{language_description} || $_->{language}
121 } @{ C4::Languages::getAllLanguages() } ];
125 frequencies_loop => \@frequencies,
126 locales => $languages,
128 output_html_with_http_headers $input, $cookie, $template->output;
132 if($op && $op eq 'del') {
133 my $id = $input->param('id');
135 my $confirm = $input->param('confirm');
137 DelSubscriptionNumberpattern($id);
139 my @subs = GetSubscriptionsWithNumberpattern($id);
144 subscriptions => \@subs
147 DelSubscriptionNumberpattern($id);
153 my @numberpatterns_loop = GetSubscriptionNumberpatterns();
156 numberpatterns_loop => \@numberpatterns_loop,
159 output_html_with_http_headers $input, $cookie, $template->output;