Koha/circ/set-library.pl
Nicolas Legrand 4163f24014 Bug 24201: (follow-up) add desk choice with library choice
You should be able to add desk choice when you are logging in or
changing library.

Test plan:

1. apply patch
2. have at least three libraries, one without desk, one with one and
one with a few.
3. At login, when choosing a library, it should enable all desks it
has. Pick one.
4. the desk id and name should be set in your session and appear in
the top right, next to the library name.
5. change library and desks from intranet (at the set-library.pl page)
6. you should have the same behaviours
7. if you have a library without a desk, it should prompt you a '---'
option and no desks will be attached to the session.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2020-08-07 16:54:40 +02:00

117 lines
3.9 KiB
Perl
Executable file

#!/usr/bin/perl
# 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 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::Context;
use C4::Output;
use C4::Auth qw/:DEFAULT get_session/;
use C4::Koha;
use Koha::BiblioFrameworks;
use Koha::Libraries;
use Koha::Desks;
my $query = CGI->new();
my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user({
template_name => "circ/set-library.tt",
query => $query,
type => "intranet",
debug => 1,
authnotrequired => 0,
flagsrequired => { catalogue => 1, },
});
my $sessionID = $query->cookie("CGISESSID");
my $session = get_session($sessionID);
my $branch = $query->param('branch' );
my $desk_id = $query->param('desk_id');
my $userenv_branch = C4::Context->userenv->{'branch'} || '';
my $userenv_desk = C4::Context->userenv->{'desk_id'} || '';
my @updated;
# $session lddines here are doing the updating
if ( $branch and my $library = Koha::Libraries->find($branch) ) {
if (! $userenv_branch or $userenv_branch ne $branch ) {
my $branchname = $library->branchname;
$session->param('branchname', $branchname); # update sesssion in DB
$session->param('branch', $branch); # update sesssion in DB
$session->flush();
push @updated, {
updated_branch => 1,
old_branch => $userenv_branch,
new_branch => $branch,
};
} # else branch the same, no update
if ( $desk_id && (!$userenv_desk or $userenv_desk ne $desk_id) ) {
my $desk = Koha::Desks->find( { desk_id => $desk_id } );
my $old_desk_name = '';
if ($userenv_desk) {
$old_desk_name = Koha::Desks->find( { desk_id => $userenv_desk })->desk_name;
}
$template->param( LoginDeskname => $desk->desk_name );
$template->param( LoginDeskid => $desk->desk_id );
$session->param( desk_name => $desk->desk_name );
$session->param( desk_id => $desk->desk_id );
$session->flush();
push @updated, {
updated_desk => 1,
old_desk => $old_desk_name,
};
}
} else {
$branch = $userenv_branch; # fallback value
$desk_id = $userenv_desk;
}
$template->param(updated => \@updated) if (scalar @updated);
my @recycle_loop;
foreach ($query->param()) {
$_ or next; # disclude blanks
$_ eq "branch" and next; # disclude branch
$_ eq "desk_id" and next; # disclude desk_id
$_ eq "oldreferer" and next; # disclude oldreferer
push @recycle_loop, {
param => $_,
value => scalar $query->param($_),
};
}
my $referer = $query->param('oldreferer') || $ENV{HTTP_REFERER};
$referer =~ /set-library\.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');
}
$template->param(
referer => $referer,
branch => $branch,
desk_id => $desk_id,
recycle_loop=> \@recycle_loop,
);
# Checking if there is a Fast Cataloging Framework
$template->param( fast_cataloging => 1 ) if Koha::BiblioFrameworks->find( 'FA' );
output_html_with_http_headers $query, $cookie, $template->output;