3 # Copyright 2007 LibLime
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 #use warnings; FIXME - Bug 2505
29 use C4::ClassSortRoutine;
31 my $script_name = "/cgi-bin/koha/admin/classsources.pl";
34 my $op = $input->param('op') || '';
35 my $source_code = $input->param('class_source');
36 my $rule_code = $input->param('sort_rule');
37 my $sort_routine = $input->param('sort_routine');
38 my ($template, $loggedinuser, $cookie)
39 = get_template_and_user({template_name => "admin/classsources.tt",
43 flagsrequired => {parameters => 'parameters_remaining_permissions'},
47 $template->param(script_name => $script_name);
48 $template->param($op => 1) if $op;
49 my $description = $input->param('description');
50 my $used = $input->param('used');
51 my $display_lists = 0;
52 if ($op eq "add_source") {
53 add_class_source_form($template);
54 } elsif ($op eq "add_source_confirmed") {
55 add_class_source($template,
58 $used eq "used" ? 1 : 0,
61 } elsif ($op eq "delete_source") {
62 delete_class_source_form($template, $source_code);
63 } elsif ($op eq "delete_source_confirmed") {
64 delete_class_source($template, $source_code);
66 } elsif ($op eq "edit_source") {
67 edit_class_source_form($template, $source_code);
68 } elsif ($op eq "edit_source_confirmed") {
69 edit_class_source($template,
72 $used eq "used" ? 1 : 0,
75 } elsif ($op eq "add_sort_rule") {
76 add_class_sort_rule_form($template);
77 } elsif ($op eq "add_sort_rule_confirmed") {
78 add_class_sort_rule($template,
83 } elsif ($op eq "delete_sort_rule") {
84 delete_sort_rule_form($template, $rule_code);
85 } elsif ($op eq "delete_sort_rule_confirmed") {
86 delete_sort_rule($template, $rule_code);
88 } elsif ($op eq "edit_sort_rule") {
89 edit_class_sort_rule_form($template, $rule_code);
90 } elsif ($op eq "edit_sort_rule_confirmed") {
91 edit_class_sort_rule($template,
100 if ($display_lists) {
101 $template->param(display_lists => 1);
102 class_source_list($template);
103 class_sort_rule_list($template);
106 output_html_with_http_headers $input, $cookie, $template->output;
110 sub add_class_source_form {
113 class_source_form => 1,
114 confirm_op => "add_source_confirmed",
117 get_sort_rule_codes($template, '');
120 sub add_class_source {
121 my ($template, $source_code, $description, $used, $sort_rule) = @_;
122 AddClassSource($source_code, $description, $used, $sort_rule);
123 $template->param(added_source => $source_code);
126 sub edit_class_source_form {
127 my ($template, $source_code) = @_;
129 my $source = GetClassSource($source_code);
131 class_source_form => 1,
132 edit_class_source => 1,
133 class_source => $source_code,
134 confirm_op => "edit_source_confirmed",
135 description => $source->{'description'},
136 used => $source->{'used'},
139 get_sort_rule_codes($template, $source->{'class_sort_rule'});
142 sub edit_class_source {
143 my ($template, $source_code, $description, $used, $sort_rule) = @_;
144 ModClassSource($source_code, $description, $used, $sort_rule);
145 $template->param(edited_source => $source_code);
149 sub delete_class_source_form {
150 my ($template, $source_code) = @_;
152 delete_class_source_form => 1,
153 confirm_op => "delete_source_confirmed",
154 class_source => $source_code,
158 sub delete_class_source {
159 my ($template, $source_code) = @_;
160 DelClassSource($source_code);
161 $template->param(deleted_source => $source_code);
164 sub get_sort_rule_codes {
165 my ($template, $current_rule) = @_;
167 my $sort_rules = GetClassSortRules();
170 foreach my $sort_rule (sort keys %$sort_rules) {
171 my $sort_rule = $sort_rules->{$sort_rule};
173 rule => $sort_rule->{'class_sort_rule'},
174 description => $sort_rule->{'description'},
175 selected => $sort_rule->{'class_sort_rule'} eq $current_rule ? 1 : 0
178 $template->param(rules_dropdown => \@sort_rules);
182 sub add_class_sort_rule_form {
186 confirm_op => "add_sort_rule_confirmed"
188 get_class_sort_routines($template, "");
191 sub add_class_sort_rule {
192 my ($template, $rule_code, $description, $sort_routine) = @_;
193 AddClassSortRule($rule_code, $description, $sort_routine);
194 $template->param(added_rule => $rule_code);
197 sub delete_sort_rule_form {
198 my ($template, $rule_code) = @_;
200 my @sources = GetSourcesForSortRule($rule_code);
201 if ($#sources == -1) {
203 delete_sort_rule_form => 1,
204 confirm_op => "delete_sort_rule_confirmed",
205 sort_rule => $rule_code,
209 delete_sort_rule_impossible => 1,
210 sort_rule => $rule_code
215 sub delete_sort_rule {
216 my ($template, $rule_code) = @_;
217 DelClassSortRule($rule_code);
218 $template->param(deleted_rule => $rule_code);
221 sub edit_class_sort_rule_form {
222 my ($template, $rule_code) = @_;
224 my $rule = GetClassSortRule($rule_code);
228 confirm_op => "edit_sort_rule_confirmed",
229 sort_rule => $rule_code,
230 description => $rule->{'description'},
231 sort_routine => $rule->{'sort_routine'}
234 get_class_sort_routines($template, $rule->{'sort_routine'});
238 sub get_class_sort_routines {
239 my ($template, $current_routine) = @_;
241 my @sort_routines = GetSortRoutineNames();
244 foreach my $sort_routine (sort @sort_routines) {
246 routine => $sort_routine,
247 selected => $sort_routine eq $current_routine ? 1 : 0
250 $template->param(routines_dropdown => \@sort_form);
254 sub edit_class_sort_rule {
255 my ($template, $rule_code, $description, $sort_routine) = @_;
256 ModClassSortRule($rule_code, $description, $sort_routine);
257 $template->param(edited_rule => $rule_code);
260 sub class_source_list {
262 my $sources = GetClassSources();
265 foreach my $cn_source (sort keys %$sources) {
266 my $source = $sources->{$cn_source};
268 code => $source->{'cn_source'},
269 description => $source->{'description'},
270 used => $source->{'used'},
271 sortrule => $source->{'class_sort_rule'}
274 $template->param(class_sources => \@sources);
277 sub class_sort_rule_list {
280 my $sort_rules = GetClassSortRules();
283 foreach my $sort_rule (sort keys %$sort_rules) {
284 my $sort_rule = $sort_rules->{$sort_rule};
286 rule => $sort_rule->{'class_sort_rule'},
287 description => $sort_rule->{'description'},
288 sort_routine => $sort_rule->{'sort_routine'}
291 $template->param(class_sort_rules => \@sort_rules);