fix "Add Tag" button in MARC framework editor
[koha.git] / admin / classsources.pl
bloba12e29b60e5b52418b96b6eaa70603cead200b8f
1 #! /usr/bin/perl
3 # Copyright 2007 LibLime
5 # This file is part of Koha.
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.
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.
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
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;
30 my $script_name = "/cgi-bin/koha/admin/classsources.pl";
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');
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 });
46 if ($op) {
47 $template->param(script_name => $script_name, $op => 1);
48 } else {
49 $template->param(script_name => $script_name);
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;
101 if ($display_lists) {
102 $template->param(display_lists => 1);
103 class_source_list($template);
104 class_sort_rule_list($template);
107 output_html_with_http_headers $input, $cookie, $template->output;
109 exit 0;
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
118 get_sort_rule_codes($template, '');
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);
127 sub edit_class_source_form {
128 my ($template, $source_code) = @_;
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'},
140 get_sort_rule_codes($template, $source->{'class_sort_rule'});
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);
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,
159 sub delete_class_source {
160 my ($template, $source_code) = @_;
161 DelClassSource($source_code);
162 $template->param(deleted_source => $source_code);
165 sub get_sort_rule_codes {
166 my ($template, $current_rule) = @_;
168 my $sort_rules = GetClassSortRules();
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,
175 rule => $sort_rule->{'class_sort_rule'},
176 description => $sort_rule->{'description'},
177 selected => $sort_rule->{'class_sort_rule'} eq $current_rule ? 1 : 0
180 $template->param(rules_dropdown => \@sort_rules);
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"
190 get_class_sort_routines($template, "");
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);
199 sub delete_sort_rule_form {
200 my ($template, $rule_code) = @_;
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,
209 } else {
210 $template->param(
211 delete_sort_rule_impossible => 1,
212 sort_rule => $rule_code
217 sub delete_sort_rule {
218 my ($template, $rule_code) = @_;
219 DelClassSortRule($rule_code);
220 $template->param(deleted_rule => $rule_code);
223 sub edit_class_sort_rule_form {
224 my ($template, $rule_code) = @_;
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'}
236 get_class_sort_routines($template, $rule->{'sort_routine'});
240 sub get_class_sort_routines {
241 my ($template, $current_routine) = @_;
243 my @sort_routines = GetSortRoutineNames();
244 my @sort_form = ();
246 foreach my $sort_routine (sort @sort_routines) {
247 push @sort_form,
249 routine => $sort_routine,
250 selected => $sort_routine eq $current_routine ? 1 : 0
253 $template->param(routines_dropdown => \@sort_form);
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);
263 sub class_source_list {
264 my ($template) = @_;
265 my $sources = GetClassSources();
267 my @sources = ();
268 foreach my $cn_source (sort keys %$sources) {
269 my $source = $sources->{$cn_source};
270 push @sources,
272 code => $source->{'cn_source'},
273 description => $source->{'description'},
274 used => $source->{'used'},
275 sortrule => $source->{'class_sort_rule'}
278 $template->param(class_sources => \@sources);
281 sub class_sort_rule_list {
283 my ($template) = @_;
284 my $sort_rules = GetClassSortRules();
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,
291 rule => $sort_rule->{'class_sort_rule'},
292 description => $sort_rule->{'description'},
293 sort_routine => $sort_rule->{'sort_routine'}
296 $template->param(class_sort_rules => \@sort_rules);