X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=circ%2Fselectbranchprinter.pl;h=5ec6c11025942eaeceaa588164c1b73eefce48aa;hb=d816d6fc5be11529f712c9dffb2d59d202d28ea4;hp=130734039416c583ed2912ac9a8b52b853a5e678;hpb=efee891bca8109b23fdf608fb22a1f86efcf2120;p=koha.git diff --git a/circ/selectbranchprinter.pl b/circ/selectbranchprinter.pl old mode 100644 new mode 100755 index 1307340394..5ec6c11025 --- a/circ/selectbranchprinter.pl +++ b/circ/selectbranchprinter.pl @@ -1,128 +1,140 @@ #!/usr/bin/perl -use strict; -use CGI qw/:standard/; -use C4::Circulation::Circ2; -use C4::Output; -use C4::Print; -use DBI; - - -# this is a reorganisation of circulationold.pl -# dividing it up into three scripts...... -# this will be the first one that chooses branch and printer settings.... - -#general design stuff... -my $headerbackgroundcolor='#99cc33'; -my $circbackgroundcolor='#ffffcc'; -my $circbackgroundcolor='white'; -my $linecolor1='#ffffcc'; -my $linecolor2='white'; -my $backgroundimage="/images/background-mem.gif"; - -# try to get the branch and printer settings from the http.... -my %env; -my $query=new CGI; -my $branches=getbranches(\%env); -my $printers=getprinters(\%env); -my $branch=$query->param('branch'); -my $printer=$query->param('printer'); - -($branch) || ($branch=$query->cookie('branch')); -($printer) || ($printer=$query->cookie('printer')); - -# is you force a selection.... -my $oldbranch = $branch; -my $oldprinter = $printer; - -$branch=''; -$printer=''; - - -$env{'branchcode'}=$branch; -$env{'printer'}=$printer; -$env{'queue'}=$printer; - -# set up select options.... -my $branchcount=0; -my $printercount=0; -my $branchoptions; -my $printeroptions; -foreach (keys %$branches) { - (next) unless ($_); - $branchcount++; - my $selected=''; - ($selected='selected') if ($_ eq $oldbranch); - $branchoptions.="$branches->{$_}->{'branchname'}\n"; -} -foreach (keys %$printers) { - (next) unless ($_); - $printercount++; - my $selected=''; - ($selected='selected') if ($_ eq $oldprinter); - $printeroptions.="$printers->{$_}->{'printername'}\n"; -} - -# if there is only one.... +# Copyright 2000-2002 Katipo Communications +# +# 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -if ($printercount==1) { - ($printer)=keys %$printers; -} -if ($branchcount==1) { - ($branch)=keys %$branches; -} +use strict; +use warnings; +use CGI; -# set up printer and branch selection forms.... -my ($printerform, $branchform); -if ($printercount>1) { - $printerform=<<"EOF"; - $printeroptions -EOF +use C4::Context; +use C4::Output; +use C4::Auth qw/:DEFAULT get_session/; +use C4::Print; # GetPrinters +use C4::Koha; +use C4::Branch; # GetBranches GetBranchesLoop + +# this will be the script that chooses branch and printer settings.... + +my $query = CGI->new(); +my ( $template, $borrowernumber, $cookie ) = get_template_and_user({ + template_name => "circ/selectbranchprinter.tmpl", + query => $query, + type => "intranet", + debug => 1, + authnotrequired => 0, + flagsrequired => { circulate => "circulate_remaining_permissions" }, +}); + +my $sessionID = $query->cookie("CGISESSID"); +my $session = get_session($sessionID); + +# try to get the branch and printer settings from http, fallback to userenv +my $branches = GetBranches(); +my $printers = GetPrinters(); +my $branch = $query->param('branch' ); +my $printer = $query->param('printer'); +# fallbacks for $branch and $printer after possible session updates + +my $userenv_branch = C4::Context->userenv->{'branch'} || ''; +my $userenv_printer = C4::Context->userenv->{'branchprinter'} || ''; +my @updated; + +# $session lddines here are doing the updating +if ($branch and $branches->{$branch}) { + if (! $userenv_branch or $userenv_branch ne $branch ) { + my $branchname = GetBranchName($branch); + $template->param(LoginBranchname => $branchname); # update template for new branch + $template->param(LoginBranchcode => $branch); # update template for new branch + $session->param('branchname', $branchname); # update sesssion in DB + $session->param('branch', $branch); # update sesssion in DB + push @updated, { + updated_branch => 1, + old_branch => $userenv_branch, + }; + } # else branch the same, no update } else { - my ($printer) = keys %$printers; -} + $branch = $userenv_branch; # fallback value +} -if ($branchcount>1) { - $branchform=<<"EOF"; - $branchoptions -EOF +# FIXME: branchprinter is not retained by session. This feature was not adequately +# ported from Koha 2.2.3 where it had been a separate cookie. +# So this needs to be fixed for Koha 3 or removed outright. +# --atz (w/ info from chris cormack) + +if ($printer) { + if (! $userenv_printer or $userenv_printer ne $printer ) { + $session->param('branchprinter', $printer); # update sesssion in DB + $template->param('new_printer', $printer); # update template + push @updated, { + updated_printer => 1, + old_printer => $userenv_printer, + }; + } # else printer is the same, no update } else { - my ($branch) = keys %$branches; -} - - + $printer = $userenv_printer; # fallback value +} -############################################################################################# -# Start writing page.... -# set header with cookie.... +$template->param(updated => \@updated) if (scalar @updated); -print $query->header(); +unless ($branches->{$branch}) { + $branch = (keys %$branches)[0]; # if branch didn't really exist, then replace it w/ one that does +} -print startpage(); -print startmenu('circulation'); +my @printkeys = sort keys %$printers; +if (scalar(@printkeys) == 1 or not $printers->{$printer}) { + $printer = $printkeys[0]; # if printer didn't really exist, or there is only 1 anyway, then replace it w/ one that does +} -print << "EOF"; -Circulation: Select Printer and Branch Settings +my @printerloop; +foreach ( @printkeys ) { + next unless ($_); # skip printer if blank. + push @printerloop, { + selected => ( $_ eq $printer ), + name => $printers->{$_}->{'printername'}, + value => $_, + }; +} - - - - -Please Set Branch and Printer - -$branchform - - -$printerform - - - - - +my @recycle_loop; +foreach ($query->param()) { + $_ or next; # disclude blanks + $_ eq "branch" and next; # disclude branch + $_ eq "printer" and next; # disclude printer + $_ eq "oldreferer" and next; # disclude oldreferer + push @recycle_loop, { + param => $_, + value => $query->param($_), + }; +} -EOF +my $referer = $query->param('oldreferer') || $ENV{HTTP_REFERER}; +$referer =~ /selectbranchprinter\.pl/ and undef $referer; # avoid sending them back to this same page. +if (scalar @updated and not scalar @recycle_loop) { + # we updated something, and there were no extra params to POST: quick redirect + print $query->redirect($referer || '/cgi-bin/koha/circ/circulation.pl'); +} -print endmenu('circulation'); -print endpage(); +$template->param( + referer => $referer, + printerloop => \@printerloop, + branchloop => GetBranchesLoop($branch), + recycle_loop=> \@recycle_loop, +); +output_html_with_http_headers $query, $cookie, $template->output;