0f255728c5
There's no creating, updating, or deleting about printing patron cards, and the only time there's a lot of data (selecting individual patrons in a card creator batch), it doesn't matter if the "Export selected" URL exceeds the maxlength for Apache since the actual link to create the PDF also will. Test plan: 1. Without the patch, Tools - Patron lists - New patron list - Name it and Save 2. Type three characters in the Patron search form (mar works well) to get at least three patrons. Click on each of three, then click Add patrons 3. You can only print cards from the list of lists, so back to Tools - Patron lists 4. In the Actions menu choose Print patron cards, in the popup click Export 5. Watch the throbber spin around for a while (it will never stop), then close the popup, apply the patch, restart_all 6. Tools - Patron lists - Actions menu - Print patron cards - Export 7. Click the PDF link, make sure it has all three of your patrons 8. Tools - Patron card creator - New - Card batch 9. Without putting anything in the textarea, click Add patrons, in the search popup search for your three characters (mar) again, and click the checkboxes to the left of three of the names, then Add selected patrons, then Close, then Add patrons 10. Click the checkboxes for two of the three patrons, then Export selected card(s), then Export in the popup 11. Hover the link to the PDF, verify that it doesn't have stray 'amp;' after the & and before label_id= anymore 12. Click the PDF link, verify it has your two patrons 13. Back at the card batch, click Export card batch, then Export 14. Check the PDF to verify it has all three of your patrons 15. Tools - Patron lists - click your list's name to open it 16. Click the card number for a patron, then the Patron lists tab in Checkout 17. Actions menu - Print patron cards - Export, verify the PDF has all three patrons Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
143 lines
6.4 KiB
Perl
Executable file
143 lines
6.4 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
#
|
|
# 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 Modern::Perl;
|
|
|
|
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 qw( get_all_layouts get_all_templates get_output_formats );
|
|
|
|
my $cgi = CGI->new;
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "patroncards/print.tt",
|
|
query => $cgi,
|
|
type => "intranet",
|
|
flagsrequired => { tools => 'label_creator' },
|
|
}
|
|
);
|
|
|
|
my $op = $cgi->param('op') || 'none';
|
|
my @label_ids = $cgi->multi_param('label_id'); # this will handle individual card printing; we use label_id to maintain consistency with the column names in the creator_batches table
|
|
my @batch_ids = $cgi->multi_param('batch_id');
|
|
my $patronlist_id = $cgi->param('patronlist_id') || undef;
|
|
my $layout_id = $cgi->param('layout_id') || undef;
|
|
my $layout_back_id = $cgi->param('layout_back_id') || undef;
|
|
my $template_id = $cgi->param('template_id') || undef;
|
|
my $start_card = $cgi->param('start_card') || 1;
|
|
my @borrower_numbers = $cgi->multi_param('borrower_number');
|
|
my $output_format = $cgi->param('output_format') || 'pdf';
|
|
my $referer = $cgi->param('referer') || undef;
|
|
|
|
my $layouts = undef;
|
|
my $templates = undef;
|
|
my $output_formats = undef;
|
|
my @batches = ();
|
|
my $multi_batch_count = scalar(@batch_ids);
|
|
my $card_count = scalar(@label_ids);
|
|
my $borrower_count = scalar(@borrower_numbers);
|
|
|
|
if ($op eq 'export') {
|
|
if (@label_ids) {
|
|
my $label_id_param = '&label_id=';
|
|
$label_id_param .= join ('&label_id=',@label_ids);
|
|
push (@batches, {create_script => ($output_format eq 'pdf' ? 'create-pdf.pl' : 'create-csv.pl'), #FIXME csv not supported, no script?
|
|
batch_id => $batch_ids[0],
|
|
template_id => $template_id,
|
|
layout_id => $layout_id,
|
|
layout_back_id => $layout_back_id,
|
|
start_card => $start_card,
|
|
label_ids => $label_id_param,
|
|
card_count => scalar(@label_ids),
|
|
});
|
|
$template->param(
|
|
batches => \@batches,
|
|
referer => $referer,
|
|
);
|
|
}
|
|
elsif (@borrower_numbers) {
|
|
my $borrower_number_param = '&borrower_number=';
|
|
$borrower_number_param .= join ('&borrower_number=',@borrower_numbers);
|
|
push (@batches, {create_script => ($output_format eq 'pdf' ? 'create-pdf.pl' : 'create-csv.pl'), #FIXME csv not supported, no script?
|
|
template_id => $template_id,
|
|
layout_id => $layout_id,
|
|
layout_back_id => $layout_back_id,
|
|
start_card => $start_card,
|
|
borrower_numbers => $borrower_number_param,
|
|
card_count => scalar(@borrower_numbers),
|
|
});
|
|
$template->param(
|
|
batches => \@batches,
|
|
referer => $referer,
|
|
);
|
|
}
|
|
elsif (@batch_ids) {
|
|
foreach my $batch_id (@batch_ids) {
|
|
push (@batches, {create_script => ($output_format eq 'pdf' ? 'create-pdf.pl' : 'create-csv.pl'), #FIXME csv not supported, no script?
|
|
batch_id => $batch_id,
|
|
template_id => $template_id,
|
|
layout_id => $layout_id,
|
|
layout_back_id => $layout_back_id,
|
|
start_card => $start_card,
|
|
});
|
|
}
|
|
$template->param(
|
|
batches => \@batches,
|
|
referer => $referer,
|
|
);
|
|
}
|
|
elsif ($patronlist_id ) {
|
|
$template->param(
|
|
patronlist_id => $patronlist_id,
|
|
template_id => $template_id,
|
|
layout_id => $layout_id,
|
|
layout_back_id => $layout_back_id,
|
|
start_card => $start_card,
|
|
referer => $referer,
|
|
);
|
|
}
|
|
}
|
|
elsif ($op eq 'none') {
|
|
# setup select menus for selecting layout and template for this run...
|
|
$referer = $ENV{'HTTP_REFERER'};
|
|
$referer =~ s/^.*?:\/\/.*?(\/.*)$/$1/m;
|
|
@batch_ids = map { {batch_id => $_} } @batch_ids;
|
|
@label_ids = map { {label_id => $_} } @label_ids;
|
|
@borrower_numbers = map { {borrower_number => $_} } @borrower_numbers;
|
|
$templates = get_all_templates( { fields => [qw( template_id template_code ) ], filters => { creator => "Patroncards" } });
|
|
$layouts = get_all_layouts({ fields => [ qw( layout_id layout_name ) ], filters => { creator => "Patroncards" } });
|
|
$output_formats = get_output_formats();
|
|
$template->param(
|
|
batch_ids => \@batch_ids,
|
|
label_ids => \@label_ids,
|
|
borrower_numbers => \@borrower_numbers,
|
|
patronlist_id => $patronlist_id,
|
|
templates => $templates,
|
|
layouts => $layouts,
|
|
output_formats => $output_formats,
|
|
multi_batch_count => $multi_batch_count,
|
|
card_count => $card_count,
|
|
borrower_count => $borrower_count,
|
|
referer => $referer,
|
|
);
|
|
}
|
|
output_html_with_http_headers $cgi, $cookie, $template->output;
|