Koha/basket/basket.pl
Owen Leonard a9836864dc Bug 16575: Irregular behaviour using window.print() followed by window.location.href
This patch updates the OPAC and staff client carts to use CSS to
control print output, removing a print parameter which was passed to the
script.

Currently, when you click "Print" on the OPAC basket, it navigates to
a new page and initiates window.print() followed by a
window.location.href change again. Unfortunately, due to differences in
IE, Chrome, and FF, it will either show the print options, navigate away
without showing them, or refuse to navigate away after printing. By
changing to using print CSS, we don't navigate away from the basket in
the first place, so we prevent this irregular behavior.

TEST PLAN

1) Apply the patch
2) Create an OPAC basket by clicking "Add to cart" on multiple items
3) Using Chrome, IE, and Firefox (of any version), click the "Print"
   button
4) You should see the relevant print menu without the OPAC basket
   re-loading in any way.
5) After printing is complete, you should still be on the OPAC basket
   pop-up
6) Perform the same tests in the staff client

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
2018-07-19 16:12:56 +00:00

130 lines
4 KiB
Perl
Executable file

#!/usr/bin/perl
# 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 C4::Koha;
use C4::Biblio;
use C4::Items;
use C4::Auth;
use C4::Output;
use Koha::AuthorisedValues;
use Koha::CsvProfiles;
my $query = new CGI;
my ( $template, $borrowernumber, $cookie ) = get_template_and_user (
{
template_name => "basket/basket.tt",
query => $query,
type => "intranet",
flagsrequired => { catalogue => 1 },
}
);
my $bib_list = $query->param('bib_list');
my $verbose = $query->param('verbose');
if ($verbose) { $template->param( verbose => 1 ); }
my @bibs = split( /\//, $bib_list );
my @results;
my $num = 1;
my $marcflavour = C4::Context->preference('marcflavour');
if (C4::Context->preference('TagsEnabled')) {
$template->param(TagsEnabled => 1);
foreach (qw(TagsShowOnList TagsInputOnList)) {
C4::Context->preference($_) and $template->param($_ => 1);
}
}
foreach my $biblionumber ( @bibs ) {
$template->param( biblionumber => $biblionumber );
my $fw = GetFrameworkCode($biblionumber);
my $dat = &GetBiblioData($biblionumber);
next unless $dat;
my $record = &GetMarcBiblio({ biblionumber => $biblionumber });
$dat->{subtitle} = GetRecordValue('subtitle', $record, $fw);
my $marcnotesarray = GetMarcNotes( $record, $marcflavour );
my $marcauthorsarray = GetMarcAuthors( $record, $marcflavour );
my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
my $marcseriesarray = GetMarcSeries ($record,$marcflavour);
my $marcurlsarray = GetMarcUrls ($record,$marcflavour);
my @items = GetItemsInfo( $biblionumber );
my $hasauthors = 0;
if($dat->{'author'} || @$marcauthorsarray) {
$hasauthors = 1;
}
my $shelflocations =
{ map { $_->{authorised_value} => $_->{lib} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => $dat->{frameworkcode}, kohafield => 'items.location' } ) };
for my $itm (@items) {
if ($itm->{'location'}){
$itm->{'location_description'} = $shelflocations->{$itm->{'location'} };
}
}
# COinS format FIXME: for books Only
my $fmt = substr $record->leader(), 6,2;
my $fmts;
$fmts->{'am'} = 'book';
$dat->{ocoins_format} = $fmts->{$fmt};
if ( $num % 2 == 1 ) {
$dat->{'even'} = 1;
}
$num++;
$dat->{biblionumber} = $biblionumber;
$dat->{ITEM_RESULTS} = \@items;
$dat->{MARCNOTES} = $marcnotesarray;
$dat->{MARCSUBJCTS} = $marcsubjctsarray;
$dat->{MARCAUTHORS} = $marcauthorsarray;
$dat->{MARCSERIES} = $marcseriesarray;
$dat->{MARCURLS} = $marcurlsarray;
$dat->{HASAUTHORS} = $hasauthors;
if ( C4::Context->preference("IntranetBiblioDefaultView") eq "normal" ) {
$dat->{dest} = "/cgi-bin/koha/catalogue/detail.pl";
}
elsif ( C4::Context->preference("IntranetBiblioDefaultView") eq "marc" ) {
$dat->{dest} = "/cgi-bin/koha/catalogue/MARCdetail.pl";
}
else {
$dat->{dest} = "/cgi-bin/koha/catalogue/ISBDdetail.pl";
}
push( @results, $dat );
}
my $resultsarray = \@results;
# my $itemsarray=\@items;
$template->param(
BIBLIO_RESULTS => $resultsarray,
csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc', used_for => 'export_records' }) ],
bib_list => $bib_list,
);
output_html_with_http_headers $query, $cookie, $template->output;