Nomenclature cleanup for subscription adding page
[koha.git] / admin / classsources.pl
1 #! /usr/bin/perl
2 #
3 # Copyright 2007 LibLime
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 with
17 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
18 # Suite 330, Boston, MA  02111-1307 USA
19 #
20
21 use strict;
22 use CGI;
23 use C4::Auth;
24 use C4::Context;
25 use C4::Output;
26 use C4::Koha;
27 use C4::ClassSource;
28 use C4::ClassSortRoutine;
29
30 my $script_name = "/cgi-bin/koha/admin/classsources.pl";
31
32 my $input = new CGI;
33 my $op = $input->param('op');
34 my $source_code = $input->param('class_source');
35 my $rule_code = $input->param('sort_rule');
36
37 my ($template, $loggedinuser, $cookie)
38     = get_template_and_user({template_name => "admin/classsources.tmpl",
39                  query => $input,
40                  type => "intranet",
41                  authnotrequired => 0,
42                  flagsrequired => {parameters => 1},
43                  debug => 1,
44                  });
45
46 if ($op) {
47     $template->param(script_name => $script_name, $op => 1);
48 } else {
49     $template->param(script_name => $script_name);
50 }
51
52 my $display_lists = 0;
53 if ($op eq "add_source") {
54     add_class_source_form($template);
55 } elsif ($op eq "add_source_confirmed") {
56     add_class_source($template,
57                      $source_code,
58                      $input->param('description'),
59                      $input->param('used') eq "used" ? 1 : 0,
60                      $rule_code);
61     $display_lists = 1;
62 } elsif ($op eq "delete_source") {
63     delete_class_source_form($template);
64 } elsif ($op eq "delete_source_confirmed") {
65     delete_class_source($template, $source_code);
66     $display_lists = 1;
67 } elsif ($op eq "edit_source") {
68     edit_class_source_form($template, $source_code);
69 } elsif ($op eq "edit_source_confirmed") {
70     edit_class_source($template,
71                      $source_code,
72                      $input->param('description'),
73                      $input->param('used') eq "used" ? 1 : 0,
74                      $rule_code);
75     $display_lists = 1;
76 } elsif ($op eq "add_sort_rule") {
77     add_class_sort_rule_form($template);
78 } elsif ($op eq "add_sort_rule_confirmed") {
79     add_class_sort_rule($template,
80                         $rule_code,
81                         $input->param('description'),
82                         $input->param('sort_routine'));
83     $display_lists = 1;
84 } elsif ($op eq "delete_sort_rule") {
85     delete_sort_rule_form($template, $rule_code);
86 } elsif ($op eq "delete_sort_rule_confirmed") { 
87     delete_sort_rule($template, $rule_code);
88     $display_lists = 1;
89 } elsif ($op eq "edit_sort_rule") { 
90     edit_class_sort_rule_form($template, $rule_code);
91 } elsif ($op eq "edit_sort_rule_confirmed") {
92     edit_class_sort_rule($template,
93                          $rule_code,
94                          $input->param('description'),
95                          $input->param('sort_routine'));
96     $display_lists = 1;
97 } else {
98     $display_lists = 1;
99 }
100
101 if ($display_lists) {
102     $template->param(display_lists => 1);
103     class_source_list($template);
104     class_sort_rule_list($template);
105 }
106
107 output_html_with_http_headers $input, $cookie, $template->output;
108
109 exit 0;
110
111 sub add_class_source_form {
112     my ($template) = @_;
113     $template->param(
114         class_source_form => 1,
115         confirm_op => "add_source_confirmed",
116         used => 0
117     );
118     get_sort_rule_codes($template, '');
119 }
120
121 sub add_class_source {
122     my ($template, $source_code, $description, $used, $sort_rule) = @_;
123     AddClassSource($source_code, $description, $used, $sort_rule);
124     $template->param(added_source => $source_code);
125 }
126
127 sub edit_class_source_form {
128     my ($template, $source_code) = @_;
129
130     my $source = GetClassSource($source_code);
131     $template->param(
132         class_source_form => 1,
133         edit_class_source => 1,
134         class_source => $source_code,
135         confirm_op => "edit_source_confirmed",
136         description => $source->{'description'},
137         used => $source->{'used'},
138     );
139
140     get_sort_rule_codes($template, $source->{'class_sort_rule'});
141 }
142
143 sub edit_class_source {
144     my ($template, $source_code, $description, $used, $sort_rule) = @_;
145     ModClassSource($source_code, $description, $used, $sort_rule);
146     $template->param(edited_source => $source_code);
147 }
148
149
150 sub delete_class_source_form {
151     my ($template) = @_;
152     $template->param(
153         delete_class_source_form => 1,
154         confirm_op => "delete_source_confirmed",
155         class_source => $source_code,
156     );
157 }
158
159 sub delete_class_source { 
160     my ($template, $source_code) = @_;
161     DelClassSource($source_code);
162     $template->param(deleted_source => $source_code);
163 }
164
165 sub get_sort_rule_codes {
166     my ($template, $current_rule) = @_;
167
168     my $sort_rules = GetClassSortRules();
169
170     my @sort_rules = ();
171     foreach my $sort_rule (sort keys %$sort_rules) {
172         my $sort_rule = $sort_rules->{$sort_rule};
173         push @sort_rules,
174           {
175             rule        => $sort_rule->{'class_sort_rule'},
176             description => $sort_rule->{'description'},
177             selected => $sort_rule->{'class_sort_rule'} eq $current_rule ? 1 : 0
178           }
179     }
180     $template->param(rules_dropdown => \@sort_rules);
181  
182 }
183
184 sub add_class_sort_rule_form {
185     my ($template) = @_;
186     $template->param(
187         sort_rule_form => 1,
188         confirm_op => "add_sort_rule_confirmed"
189     );
190     get_class_sort_routines($template, "");
191 }
192
193 sub add_class_sort_rule {
194     my ($template, $rule_code, $description, $sort_routine) = @_;
195     AddClassSortRule($rule_code, $description, $sort_routine);
196     $template->param(added_rule => $rule_code);
197 }
198
199 sub delete_sort_rule_form {
200     my ($template, $rule_code) = @_;
201
202     my @sources = GetSourcesForSortRule($rule_code);
203     if ($#sources == -1) {
204         $template->param(
205             delete_sort_rule_form => 1,
206             confirm_op => "delete_sort_rule_confirmed",
207             sort_rule => $rule_code,
208         );
209     } else {
210         $template->param(
211             delete_sort_rule_impossible => 1,
212             sort_rule => $rule_code
213         );
214     }
215 }
216
217 sub delete_sort_rule { 
218     my ($template, $rule_code) = @_;
219     DelClassSortRule($rule_code);
220     $template->param(deleted_rule => $rule_code);
221 }
222
223 sub edit_class_sort_rule_form {
224     my ($template, $rule_code) = @_;
225
226     my $rule = GetClassSortRule($rule_code);
227     $template->param(
228         sort_rule_form => 1,
229         edit_sort_rule => 1,
230         confirm_op => "edit_sort_rule_confirmed",
231         sort_rule => $rule_code,
232         description => $rule->{'description'},
233         sort_routine => $rule->{'sort_routine'}
234     );
235
236     get_class_sort_routines($template, $rule->{'sort_routine'});
237
238 }
239
240 sub get_class_sort_routines {
241     my ($template, $current_routine) = @_;
242
243     my @sort_routines = GetSortRoutineNames();
244     my @sort_form = ();
245
246     foreach my $sort_routine (sort @sort_routines) {    
247         push @sort_form,
248           {
249             routine  => $sort_routine,
250             selected => $sort_routine eq $current_routine ? 1 : 0
251           }
252     }
253     $template->param(routines_dropdown => \@sort_form);
254
255 }
256
257 sub edit_class_sort_rule {
258     my ($template, $rule_code, $description, $sort_routine) = @_;
259     ModClassSortRule($rule_code, $description, $sort_routine);
260     $template->param(edited_rule => $rule_code);
261
262
263 sub class_source_list {
264     my ($template) = @_;
265     my $sources = GetClassSources();
266
267     my @sources = ();
268     foreach my $cn_source (sort keys %$sources) {
269         my $source = $sources->{$cn_source};
270         push @sources,
271           { 
272             code        => $source->{'cn_source'},
273             description => $source->{'description'},
274             used => $source->{'used'},
275             sortrule    => $source->{'class_sort_rule'}
276           } 
277     }
278     $template->param(class_sources => \@sources);
279 }
280
281 sub class_sort_rule_list {
282
283     my ($template) = @_;
284     my $sort_rules = GetClassSortRules();
285
286     my @sort_rules = ();
287     foreach my $sort_rule (sort keys %$sort_rules) {
288         my $sort_rule = $sort_rules->{$sort_rule};
289         push @sort_rules, 
290           {  
291             rule        => $sort_rule->{'class_sort_rule'},
292             description => $sort_rule->{'description'},
293             sort_routine    => $sort_rule->{'sort_routine'}
294           } 
295     }
296     $template->param(class_sort_rules => \@sort_rules);
297 }