4163f24014
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>
117 lines
3.9 KiB
Perl
Executable file
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;
|