Koha/patroncards/manage.pl
Joonas Kylmälä 808ec53c14 Bug 14805: Allow the user to delete multiple batches
Allows the user to delete multiple patron card batches.

Test plan:

1. Add first some 20 batches
2. Go to the edit page of some X batch by first selecting from the
   batch list the batch you want to edit and then after that by clicking
   edit.
3. Delete one batch by selecting one batch and then clicking delete.
4. Select 0 batches and click delete, notice you cannot delete.
5. Select 0 batches and click edit, notice you cannot edit.
6. Select 2 batches and click edit, notice you cannot edit.
7. Apply patch
8. Check that steps from 2-6 work like they worked before.
   (and add more batches so that you have ~20 of them)
9. Select 2 batches and click delete. Make sure they are deleted.
10. Try to figure out some anomalies this patch might have caused.

Sponsored-by: Vaara-kirjastot

Followed test plan, works as expected.
Signed-off-by: Marc Véron <veron@veron.ch>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2015-11-04 11:13:31 -03:00

126 lines
7 KiB
Perl
Executable file

#!/usr/bin/perl
#
# Copyright 2006 Katipo Communications.
# Parts Copyright 2009 Foundations Bible College.
#
# 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 3 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, see <http://www.gnu.org/licenses>.
use strict;
use warnings;
use vars qw($debug);
use CGI qw ( -utf8 );
use autouse 'Data::Dumper' => qw(Dumper);
use C4::Auth qw(get_template_and_user);
use C4::Output qw(output_html_with_http_headers);
use C4::Creators;
use C4::Patroncards;
use C4::Labels;
my $cgi = new CGI;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "patroncards/manage.tt",
query => $cgi,
type => "intranet",
authnotrequired => 0,
flagsrequired => { catalogue => 1 },
debug => 1,
}
);
my $op = $cgi->param('op') || 'none';
my $card_element = $cgi->param('card_element') || 'template'; # default to template managment
my $element_id = $cgi->param('element_id') || 0; # there should never be an element with a id of 0 so this is a safe default
my $db_rows = {};
my $display_columns = { layout => [ # db column => {col label is link?
{layout_id => {label => 'Layout ID', link_field => 0}},
{layout_name => {label => 'Layout', link_field => 0}},
{_action => {label => 'Action', link_field => 0}},
#{layout_xml => {label => 'Layout XML', link_field => 0}},
{select => {label => 'Select', value => 'layout_id'}},
],
template => [ {template_id => {label => 'Template ID', link_field => 0}},
{template_code => {label => 'Template Name', link_field => 0}},
{template_desc => {label => 'Description', link_field => 0}},
{_action => {label => 'Action', link_field => 0}},
{select => {label => 'Select', value => 'template_id'}},
],
profile => [ {profile_id => {label => 'Profile ID', link_field => 0}},
{printer_name => {label => 'Printer Name', link_field => 0}},
{paper_bin => {label => 'Paper Bin', link_field => 0}},
{_template_code => {label => 'Template Name', link_field => 0}}, # this display column does not have a corrisponding db column in the profile table, hence the underscore
{_action => {label => 'Action', link_field => 0}},
{select => {label => 'Select', value => 'profile_id'}},
],
batch => [ {batch_id => {label => 'Batch ID', link_field => 0}},
{_item_count => {label => 'Item Count', link_field => 0}},
{_action => {label => 'Actions', link_field => 0}},
{select => {label => 'Select', value => 'batch_id'}},
],
};
my $errstr = ($cgi->param('error') ? $cgi->param('error') : '');
my $branch_code = ($card_element eq 'batch' ? C4::Context->userenv->{'branch'} : '');
if ($op eq 'delete') {
my $err = 0;
my @element_ids = split(/,/, $element_id);
foreach my $element_id (@element_ids) {
if ($card_element eq 'layout') {$err = C4::Patroncards::Layout::delete(layout_id => $element_id);}
elsif ($card_element eq 'template') {$err = C4::Patroncards::Template::delete(template_id => $element_id);}
elsif ($card_element eq 'profile') {$err = C4::Patroncards::Profile::delete(profile_id => $element_id);}
elsif ($card_element eq 'batch') {$err = C4::Labels::Batch::delete(batch_id => $element_id, branch_code => $branch_code);}
else {warn sprintf("Unknown card element passed in for delete operation: %s.",$card_element); $errstr = 202;}
}
print $cgi->redirect("manage.pl?card_element=$card_element" . ($err ? "&error=102" : ''));
exit;
}
elsif ($op eq 'none') {
if ($card_element eq 'layout') {$db_rows = get_all_layouts(table_name => 'creator_layouts', filter => 'creator=\'Patroncards\'');}
elsif ($card_element eq 'template') {$db_rows = get_all_templates(table_name => 'creator_templates', filter => 'creator=\'Patroncards\'');}
elsif ($card_element eq 'profile') {$db_rows = get_all_profiles(table_name => 'printers_profile', filter => 'creator=\'Patroncards\'');}
elsif ($card_element eq 'batch') {$db_rows = get_batch_summary(filter => "branch_code=\'$branch_code\' OR branch_code=\'NB\'", creator => 'Patroncards');}
else {warn sprintf("Unknown card element passed in: %s.",$card_element); $errstr = 202;}
}
else { # trap unsupported operations here
warn sprintf('Manage interface called an unsupported operation: %s',$op);
print $cgi->redirect("manage.pl?card_element=$card_element&error=201");
exit;
}
my $table = html_table($display_columns->{$card_element}, $db_rows);
$template->param(print => 1) if ($card_element eq 'batch');
$template->param(
error => $errstr,
);
$template->param(
op => $op,
element_id => $element_id,
table_loop => $table,
card_element => $card_element,
card_element_title => ($card_element eq 'layout' ? 'Layouts' :
$card_element eq 'template' ? 'Templates' :
$card_element eq 'profile' ? 'Profiles' :
$card_element eq 'batch' ? 'Batches' :
''
),
);
output_html_with_http_headers $cgi, $cookie, $template->output;