#! /usr/bin/perl # # Copyright 2007 LibLime # # This file is part of Koha. # # Koha is free software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # # Koha is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA # use strict; use CGI; use C4::Auth; use C4::Context; use C4::Output; use C4::Koha; use C4::ClassSource; use C4::ClassSortRoutine; my $script_name = "/cgi-bin/koha/admin/classsources.pl"; my $input = new CGI; my $op = $input->param('op'); my $source_code = $input->param('class_source'); my $rule_code = $input->param('sort_rule'); my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "admin/classsources.tmpl", query => $input, type => "intranet", authnotrequired => 0, flagsrequired => {parameters => 1}, debug => 1, }); if ($op) { $template->param(script_name => $script_name, $op => 1); } else { $template->param(script_name => $script_name); } my $display_lists = 0; if ($op eq "add_source") { add_class_source_form($template); } elsif ($op eq "add_source_confirmed") { add_class_source($template, $source_code, $input->param('description'), $input->param('used') eq "used" ? 1 : 0, $rule_code); $display_lists = 1; } elsif ($op eq "delete_source") { delete_class_source_form($template); } elsif ($op eq "delete_source_confirmed") { delete_class_source($template, $source_code); $display_lists = 1; } elsif ($op eq "edit_source") { edit_class_source_form($template, $source_code); } elsif ($op eq "edit_source_confirmed") { edit_class_source($template, $source_code, $input->param('description'), $input->param('used') eq "used" ? 1 : 0, $rule_code); $display_lists = 1; } elsif ($op eq "add_sort_rule") { add_class_sort_rule_form($template); } elsif ($op eq "add_sort_rule_confirmed") { add_class_sort_rule($template, $rule_code, $input->param('description'), $input->param('sort_routine')); $display_lists = 1; } elsif ($op eq "delete_sort_rule") { delete_sort_rule_form($template, $rule_code); } elsif ($op eq "delete_sort_rule_confirmed") { delete_sort_rule($template, $rule_code); $display_lists = 1; } elsif ($op eq "edit_sort_rule") { edit_class_sort_rule_form($template, $rule_code); } elsif ($op eq "edit_sort_rule_confirmed") { edit_class_sort_rule($template, $rule_code, $input->param('description'), $input->param('sort_routine')); $display_lists = 1; } else { $display_lists = 1; } if ($display_lists) { $template->param(display_lists => 1); class_source_list($template); class_sort_rule_list($template); } output_html_with_http_headers $input, $cookie, $template->output; exit 0; sub add_class_source_form { my ($template) = @_; $template->param( class_source_form => 1, confirm_op => "add_source_confirmed", used => 0 ); get_sort_rule_codes($template, ''); } sub add_class_source { my ($template, $source_code, $description, $used, $sort_rule) = @_; AddClassSource($source_code, $description, $used, $sort_rule); $template->param(added_source => $source_code); } sub edit_class_source_form { my ($template, $source_code) = @_; my $source = GetClassSource($source_code); $template->param( class_source_form => 1, edit_class_source => 1, class_source => $source_code, confirm_op => "edit_source_confirmed", description => $source->{'description'}, used => $source->{'used'}, ); get_sort_rule_codes($template, $source->{'rule_code'}); } sub edit_class_source { my ($template, $source_code, $description, $used, $sort_rule) = @_; ModClassSource($source_code, $description, $used, $sort_rule); $template->param(edited_source => $source_code); } sub delete_class_source_form { my ($template) = @_; $template->param( delete_class_source_form => 1, confirm_op => "delete_source_confirmed", class_source => $source_code, ); } sub delete_class_source { my ($template, $source_code) = @_; DelClassSource($source_code); $template->param(deleted_source => $source_code); } sub get_sort_rule_codes { my ($template, $current_rule) = @_; my $sort_rules = GetClassSortRules(); my @sort_rules = (); foreach my $sort_rule (sort keys %$sort_rules) { my $sort_rule = $sort_rules->{$sort_rule}; push @sort_rules, { rule => $sort_rule->{'class_sort_rule'}, description => $sort_rule->{'description'}, selected => $sort_rule->{'class_sort_rule'} eq $current_rule ? 1 : 0 } } $template->param(rules_dropdown => \@sort_rules); } sub add_class_sort_rule_form { my ($template) = @_; $template->param( sort_rule_form => 1, confirm_op => "add_sort_rule_confirmed" ); get_class_sort_routines($template, ""); } sub add_class_sort_rule { my ($template, $rule_code, $description, $sort_routine) = @_; AddClassSortRule($rule_code, $description, $sort_routine); $template->param(added_rule => $rule_code); } sub delete_sort_rule_form { my ($template, $rule_code) = @_; my @sources = GetSourcesForSortRule($rule_code); if ($#sources == -1) { $template->param( delete_sort_rule_form => 1, confirm_op => "delete_sort_rule_confirmed", sort_rule => $rule_code, ); } else { $template->param( delete_sort_rule_impossible => 1, sort_rule => $rule_code ); } } sub delete_sort_rule { my ($template, $rule_code) = @_; DelClassSortRule($rule_code); $template->param(deleted_rule => $rule_code); } sub edit_class_sort_rule_form { my ($template, $rule_code) = @_; my $rule = GetClassSortRule($rule_code); $template->param( sort_rule_form => 1, edit_sort_rule => 1, confirm_op => "edit_sort_rule_confirmed", sort_rule => $rule_code, description => $rule->{'description'}, sort_routine => $rule->{'sort_routine'} ); get_class_sort_routines($template, $rule->{'sort_routine'}); } sub get_class_sort_routines { my ($template, $current_routine) = @_; my @sort_routines = GetSortRoutineNames(); my @sort_form = (); foreach my $sort_routine (sort @sort_routines) { push @sort_form, { routine => $sort_routine, selected => $sort_routine eq $current_routine ? 1 : 0 } } $template->param(routines_dropdown => \@sort_form); } sub edit_class_sort_rule { my ($template, $rule_code, $description, $sort_routine) = @_; ModClassSortRule($rule_code, $description, $sort_routine); $template->param(edited_rule => $rule_code); } sub class_source_list { my ($template) = @_; my $sources = GetClassSources(); my @sources = (); foreach my $cn_source (sort keys %$sources) { my $source = $sources->{$cn_source}; push @sources, { code => $source->{'cn_source'}, description => $source->{'description'}, used => $source->{'used'}, sortrule => $source->{'class_sort_rule'} } } $template->param(class_sources => \@sources); } sub class_sort_rule_list { my ($template) = @_; my $sort_rules = GetClassSortRules(); my @sort_rules = (); foreach my $sort_rule (sort keys %$sort_rules) { my $sort_rule = $sort_rules->{$sort_rule}; push @sort_rules, { rule => $sort_rule->{'class_sort_rule'}, description => $sort_rule->{'description'}, sort_routine => $sort_rule->{'sort_routine'} } } $template->param(class_sort_rules => \@sort_rules); }