View | Details | Raw Unified | Return to bug 13881
Collapse All | Expand All

(-)a/C4/Auth.pm (-7 / +43 lines)
Lines 29-34 use C4::Context; Link Here
29
use C4::Templates;    # to get the template
29
use C4::Templates;    # to get the template
30
use C4::Languages;
30
use C4::Languages;
31
use C4::Branch;       # GetBranches
31
use C4::Branch;       # GetBranches
32
use C4::Desks;
32
use C4::Search::History;
33
use C4::Search::History;
33
use Koha;
34
use Koha;
34
use Koha::AuthUtils qw(hash_password);
35
use Koha::AuthUtils qw(hash_password);
Lines 390-395 sub get_template_and_user { Link Here
390
        marcflavour        => C4::Context->preference("marcflavour"),
391
        marcflavour        => C4::Context->preference("marcflavour"),
391
        persona            => C4::Context->preference("persona"),
392
        persona            => C4::Context->preference("persona"),
392
    );
393
    );
394
    if (C4::Context->userenv->{"branch"}) {
395
        my $desksaref = GetDesks(C4::Context->userenv->{"branch"});
396
        if ($#$desksaref > -1) {
397
            $template->param(
398
                LoginDeskcode => ( C4::Context->userenv ? C4::Context->userenv->{"deskcode"}    : undef ),
399
                LoginDeskname => ( C4::Context->userenv ? C4::Context->userenv->{"deskname"}    : undef ),
400
                HasDesk       => (1),
401
                );
402
        }
403
        else {
404
            $template->param(
405
                HasDesk       => (undef),
406
                );
407
        }
408
    }
393
    if ( $in->{'type'} eq "intranet" ) {
409
    if ( $in->{'type'} eq "intranet" ) {
394
        $template->param(
410
        $template->param(
395
            AmazonCoverImages                                                          => C4::Context->preference("AmazonCoverImages"),
411
            AmazonCoverImages                                                          => C4::Context->preference("AmazonCoverImages"),
Lines 403-408 sub get_template_and_user { Link Here
403
            IntranetmainUserblock                                                      => C4::Context->preference("IntranetmainUserblock"),
419
            IntranetmainUserblock                                                      => C4::Context->preference("IntranetmainUserblock"),
404
            LibraryName                                                                => C4::Context->preference("LibraryName"),
420
            LibraryName                                                                => C4::Context->preference("LibraryName"),
405
            LoginBranchname                                                            => ( C4::Context->userenv ? C4::Context->userenv->{"branchname"} : undef ),
421
            LoginBranchname                                                            => ( C4::Context->userenv ? C4::Context->userenv->{"branchname"} : undef ),
422
            LoginDeskname                                                              => ( C4::Context->userenv ? C4::Context->userenv->{"deskname"} : undef ),
406
            advancedMARCEditor                                                         => C4::Context->preference("advancedMARCEditor"),
423
            advancedMARCEditor                                                         => C4::Context->preference("advancedMARCEditor"),
407
            canreservefromotherbranches                                                => C4::Context->preference('canreservefromotherbranches'),
424
            canreservefromotherbranches                                                => C4::Context->preference('canreservefromotherbranches'),
408
            intranetcolorstylesheet                                                    => C4::Context->preference("intranetcolorstylesheet"),
425
            intranetcolorstylesheet                                                    => C4::Context->preference("intranetcolorstylesheet"),
Lines 475-480 sub get_template_and_user { Link Here
475
            LibraryName                           => "" . C4::Context->preference("LibraryName"),
492
            LibraryName                           => "" . C4::Context->preference("LibraryName"),
476
            LibraryNameTitle                      => "" . $LibraryNameTitle,
493
            LibraryNameTitle                      => "" . $LibraryNameTitle,
477
            LoginBranchname                       => C4::Context->userenv ? C4::Context->userenv->{"branchname"} : "",
494
            LoginBranchname                       => C4::Context->userenv ? C4::Context->userenv->{"branchname"} : "",
495
            Logindeskname                         => C4::Context->userenv ? C4::Context->userenv->{"deskname"} : "",
478
            OPACAmazonCoverImages                 => C4::Context->preference("OPACAmazonCoverImages"),
496
            OPACAmazonCoverImages                 => C4::Context->preference("OPACAmazonCoverImages"),
479
            OPACFRBRizeEditions                   => C4::Context->preference("OPACFRBRizeEditions"),
497
            OPACFRBRizeEditions                   => C4::Context->preference("OPACFRBRizeEditions"),
480
            OpacHighlightedWords                  => C4::Context->preference("OpacHighlightedWords"),
498
            OpacHighlightedWords                  => C4::Context->preference("OpacHighlightedWords"),
Lines 765-771 sub checkauth { Link Here
765
                $session->param('surname'),      $session->param('branch'),
783
                $session->param('surname'),      $session->param('branch'),
766
                $session->param('branchname'),   $session->param('flags'),
784
                $session->param('branchname'),   $session->param('flags'),
767
                $session->param('emailaddress'), $session->param('branchprinter'),
785
                $session->param('emailaddress'), $session->param('branchprinter'),
768
                $session->param('persona'),      $session->param('shibboleth')
786
                $session->param('persona'),      $session->param('shibboleth'),
787
                $session->param('deskcode'),     $session->param('deskname')
769
            );
788
            );
770
            C4::Context::set_shelves_userenv( 'bar', $session->param('barshelves') );
789
            C4::Context::set_shelves_userenv( 'bar', $session->param('barshelves') );
771
            C4::Context::set_shelves_userenv( 'pub', $session->param('pubshelves') );
790
            C4::Context::set_shelves_userenv( 'pub', $session->param('pubshelves') );
Lines 989-995 sub checkauth { Link Here
989
                    C4::Context->_unset_userenv($sessionID);
1008
                    C4::Context->_unset_userenv($sessionID);
990
                }
1009
                }
991
                my ( $borrowernumber, $firstname, $surname, $userflags,
1010
                my ( $borrowernumber, $firstname, $surname, $userflags,
992
                    $branchcode, $branchname, $branchprinter, $emailaddress );
1011
                     $branchcode, $branchname, $branchprinter, $emailaddress,
1012
                     $deskcode, $deskname);
993
1013
994
                if ( $return == 1 ) {
1014
                if ( $return == 1 ) {
995
                    my $select = "
1015
                    my $select = "
Lines 1065-1070 sub checkauth { Link Here
1065
                    $session->param( 'surname',      $surname );
1085
                    $session->param( 'surname',      $surname );
1066
                    $session->param( 'branch',       $branchcode );
1086
                    $session->param( 'branch',       $branchcode );
1067
                    $session->param( 'branchname',   $branchname );
1087
                    $session->param( 'branchname',   $branchname );
1088
                    $session->param( 'deskcode',     $deskcode );
1089
                    $session->param( 'deskname',     $deskname );
1068
                    $session->param( 'flags',        $userflags );
1090
                    $session->param( 'flags',        $userflags );
1069
                    $session->param( 'emailaddress', $emailaddress );
1091
                    $session->param( 'emailaddress', $emailaddress );
1070
                    $session->param( 'ip',           $session->remote_addr() );
1092
                    $session->param( 'ip',           $session->remote_addr() );
Lines 1083-1088 sub checkauth { Link Here
1083
                    $session->param( 'surname',      C4::Context->config('user') );
1105
                    $session->param( 'surname',      C4::Context->config('user') );
1084
                    $session->param( 'branch',       'NO_LIBRARY_SET' );
1106
                    $session->param( 'branch',       'NO_LIBRARY_SET' );
1085
                    $session->param( 'branchname',   'NO_LIBRARY_SET' );
1107
                    $session->param( 'branchname',   'NO_LIBRARY_SET' );
1108
                    $session->param( 'deskcode',     'NO_DESK_SET' );
1109
                    $session->param( 'deskname',     'NO_DESK_SET' );
1086
                    $session->param( 'flags',        1 );
1110
                    $session->param( 'flags',        1 );
1087
                    $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1111
                    $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1088
                    $session->param( 'ip',           $session->remote_addr() );
1112
                    $session->param( 'ip',           $session->remote_addr() );
Lines 1097-1103 sub checkauth { Link Here
1097
                    $session->param('surname'),      $session->param('branch'),
1121
                    $session->param('surname'),      $session->param('branch'),
1098
                    $session->param('branchname'),   $session->param('flags'),
1122
                    $session->param('branchname'),   $session->param('flags'),
1099
                    $session->param('emailaddress'), $session->param('branchprinter'),
1123
                    $session->param('emailaddress'), $session->param('branchprinter'),
1100
                    $session->param('persona'),      $session->param('shibboleth')
1124
                    $session->param('persona'),      $session->param('shibboleth'),
1125
                    $session->param('deskcode'),     $session->param('deskname')
1101
                );
1126
                );
1102
1127
1103
            }
1128
            }
Lines 1346-1352 sub check_api_auth { Link Here
1346
                $session->param('cardnumber'),   $session->param('firstname'),
1371
                $session->param('cardnumber'),   $session->param('firstname'),
1347
                $session->param('surname'),      $session->param('branch'),
1372
                $session->param('surname'),      $session->param('branch'),
1348
                $session->param('branchname'),   $session->param('flags'),
1373
                $session->param('branchname'),   $session->param('flags'),
1349
                $session->param('emailaddress'), $session->param('branchprinter')
1374
                $session->param('emailaddress'), $session->param('branchprinter'),
1375
                $session->param('persona'),      $session->param('shibboleth'),
1376
                $session->param('deskcode'),     $session->param('deskname')
1350
            );
1377
            );
1351
1378
1352
            my $ip       = $session->param('ip');
1379
            my $ip       = $session->param('ip');
Lines 1433-1439 sub check_api_auth { Link Here
1433
                my (
1460
                my (
1434
                    $borrowernumber, $firstname,  $surname,
1461
                    $borrowernumber, $firstname,  $surname,
1435
                    $userflags,      $branchcode, $branchname,
1462
                    $userflags,      $branchcode, $branchname,
1436
                    $branchprinter,  $emailaddress
1463
                    $branchprinter,  $emailaddress, $deskcode,
1464
                    $deskname
1437
                );
1465
                );
1438
                my $sth =
1466
                my $sth =
1439
                  $dbh->prepare(
1467
                  $dbh->prepare(
Lines 1494-1499 sub check_api_auth { Link Here
1494
                $session->param( 'surname',      $surname );
1522
                $session->param( 'surname',      $surname );
1495
                $session->param( 'branch',       $branchcode );
1523
                $session->param( 'branch',       $branchcode );
1496
                $session->param( 'branchname',   $branchname );
1524
                $session->param( 'branchname',   $branchname );
1525
                $session->param( 'deskcode',     $deskcode );
1526
                $session->param( 'deskname',     $deskname );
1497
                $session->param( 'flags',        $userflags );
1527
                $session->param( 'flags',        $userflags );
1498
                $session->param( 'emailaddress', $emailaddress );
1528
                $session->param( 'emailaddress', $emailaddress );
1499
                $session->param( 'ip',           $session->remote_addr() );
1529
                $session->param( 'ip',           $session->remote_addr() );
Lines 1508-1513 sub check_api_auth { Link Here
1508
                $session->param( 'surname',      C4::Context->config('user') );
1538
                $session->param( 'surname',      C4::Context->config('user') );
1509
                $session->param( 'branch',       'NO_LIBRARY_SET' );
1539
                $session->param( 'branch',       'NO_LIBRARY_SET' );
1510
                $session->param( 'branchname',   'NO_LIBRARY_SET' );
1540
                $session->param( 'branchname',   'NO_LIBRARY_SET' );
1541
                $session->param( 'deskcode',     'NO_DESK_SET' );
1542
                $session->param( 'deskname',     'NO_DESK_SET' );
1511
                $session->param( 'flags',        1 );
1543
                $session->param( 'flags',        1 );
1512
                $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1544
                $session->param( 'emailaddress', C4::Context->preference('KohaAdminEmailAddress') );
1513
                $session->param( 'ip',           $session->remote_addr() );
1545
                $session->param( 'ip',           $session->remote_addr() );
Lines 1518-1524 sub check_api_auth { Link Here
1518
                $session->param('cardnumber'),   $session->param('firstname'),
1550
                $session->param('cardnumber'),   $session->param('firstname'),
1519
                $session->param('surname'),      $session->param('branch'),
1551
                $session->param('surname'),      $session->param('branch'),
1520
                $session->param('branchname'),   $session->param('flags'),
1552
                $session->param('branchname'),   $session->param('flags'),
1521
                $session->param('emailaddress'), $session->param('branchprinter')
1553
                $session->param('emailaddress'), $session->param('branchprinter'),
1554
                $session->param('persona'),      $session->param('shibboleth'),
1555
                $session->param('deskcode'),     $session->param('deskname'),
1522
            );
1556
            );
1523
            return ( "ok", $cookie, $sessionID );
1557
            return ( "ok", $cookie, $sessionID );
1524
        } else {
1558
        } else {
Lines 1599-1605 sub check_cookie_auth { Link Here
1599
            $session->param('cardnumber'),   $session->param('firstname'),
1633
            $session->param('cardnumber'),   $session->param('firstname'),
1600
            $session->param('surname'),      $session->param('branch'),
1634
            $session->param('surname'),      $session->param('branch'),
1601
            $session->param('branchname'),   $session->param('flags'),
1635
            $session->param('branchname'),   $session->param('flags'),
1602
            $session->param('emailaddress'), $session->param('branchprinter')
1636
            $session->param('emailaddress'), $session->param('branchprinter'),
1637
            $session->param('persona'),      $session->param('shibboleth'),
1638
            $session->param('deskcode'),     $session->param('deskname'),
1603
        );
1639
        );
1604
1640
1605
        my $ip       = $session->param('ip');
1641
        my $ip       = $session->param('ip');
(-)a/C4/Context.pm (-2 / +5 lines)
Lines 1065-1071 sub userenv { Link Here
1065
  C4::Context->set_userenv($usernum, $userid, $usercnum,
1065
  C4::Context->set_userenv($usernum, $userid, $usercnum,
1066
                           $userfirstname, $usersurname,
1066
                           $userfirstname, $usersurname,
1067
                           $userbranch, $branchname, $userflags,
1067
                           $userbranch, $branchname, $userflags,
1068
                           $emailaddress, $branchprinter, $persona);
1068
                           $emailaddress, $branchprinter, $persona,
1069
                           $desk, $deskcode);
1069
1070
1070
Establish a hash of user environment variables.
1071
Establish a hash of user environment variables.
1071
1072
Lines 1076-1082 set_userenv is called in Auth.pm Link Here
1076
#'
1077
#'
1077
sub set_userenv {
1078
sub set_userenv {
1078
    shift @_;
1079
    shift @_;
1079
    my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $persona, $shibboleth)=
1080
    my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $persona, $shibboleth, $deskcode, $deskname)=
1080
    map { Encode::is_utf8( $_ ) ? $_ : Encode::decode('UTF-8', $_) } # CGI::Session doesn't handle utf-8, so we decode it here
1081
    map { Encode::is_utf8( $_ ) ? $_ : Encode::decode('UTF-8', $_) } # CGI::Session doesn't handle utf-8, so we decode it here
1081
    @_;
1082
    @_;
1082
    my $var=$context->{"activeuser"} || '';
1083
    my $var=$context->{"activeuser"} || '';
Lines 1093-1098 sub set_userenv { Link Here
1093
        "emailaddress"     => $emailaddress,
1094
        "emailaddress"     => $emailaddress,
1094
        "branchprinter"    => $branchprinter,
1095
        "branchprinter"    => $branchprinter,
1095
        "persona"    => $persona,
1096
        "persona"    => $persona,
1097
	"deskcode"   => $deskcode,
1098
	"deskname"   => $deskname,
1096
        "shibboleth" => $shibboleth,
1099
        "shibboleth" => $shibboleth,
1097
    };
1100
    };
1098
    $context->{userenv}->{$var} = $cell;
1101
    $context->{userenv}->{$var} = $cell;
(-)a/circ/selectdesk.pl (+92 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it under the
6
# terms of the GNU General Public License as published by the Free Software
7
# Foundation; either version 2 of the License, or (at your option) any later
8
# version.
9
#
10
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License along
15
# with Koha; if not, write to the Free Software Foundation, Inc.,
16
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18
use Modern::Perl;
19
use CGI qw ( -utf8 );
20
21
use C4::Context;
22
use C4::Output;
23
use C4::Auth qw/:DEFAULT get_session/;
24
use C4::Koha;
25
use C4::Branch;
26
use C4::Desks;
27
28
my $query = CGI->new();
29
30
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
31
    {
32
        template_name   => "circ/selectdesk.tt",
33
        query           => $query,
34
        type            => "intranet",
35
        debug           => 1,
36
        authnotrequired => 0,
37
        flagsrequired   => { catalogue => 1, },
38
    }
39
);
40
41
my $sessionID = $query->cookie("CGISESSID");
42
my $session   = get_session($sessionID);
43
44
my $branch = $query->param('branch');
45
my $desks;
46
if ($branch) {
47
    $desks = GetDesks($branch);
48
}
49
else {
50
    $desks = GetDesks();
51
}
52
my $deskloop = [];
53
for my $desk (@$desks) {
54
    push @$deskloop, GetDesk($desk);
55
}
56
57
my $deskcode = $query->param('deskcode');
58
59
my $userenv_desk = C4::Context->userenv->{'desk'} || '';
60
my $updated = '';
61
62
if ($deskcode) {
63
    if ( !$userenv_desk or $userenv_desk ne $deskcode ) {
64
        my $desk = GetDesk($deskcode);
65
        $template->param( LoginDeskname => $desk->{'deskname'} );
66
        $template->param( LoginDeskcode => $desk->{'deskcode'} );
67
        $session->param( deskname => $desk->{'deskname'} );
68
        $session->param( deskcode => $desk->{'deskcode'} );
69
        $updated = 1;
70
    }
71
}
72
else {
73
    $deskcode = $userenv_desk;
74
}
75
76
$template->param( updated => \$updated );
77
78
unless ( $deskcode ~~ $desks ) {
79
    $deskcode = @$desks[0];
80
}
81
82
my $referer = $query->param('oldreferer') || $ENV{HTTP_REFERER};
83
if ($updated) {
84
    print $query->redirect( $referer || '/cgi-bin/koha/mainpage.pl' );
85
}
86
87
$template->param(
88
    referer  => $referer,
89
    deskloop => $deskloop,
90
);
91
92
output_html_with_http_headers $query, $cookie, $template->output;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc (+14 lines)
Lines 44-49 Link Here
44
                <a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">
44
                <a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">
45
                    [% IF ( loggedinusername ) %]
45
                    [% IF ( loggedinusername ) %]
46
                    <span class="loggedinusername">[% loggedinusername %]</span>
46
                    <span class="loggedinusername">[% loggedinusername %]</span>
47
                    [% IF ( LoginDeskcode ) %]
48
                    <span class="separator">|</span>
49
                    <strong>
50
                      <span id="logged-in-desk-name">[% LoginDeskcode %]</span>
51
                    </strong>
52
                    [% ELSIF (HasDesk) %]
53
                    <span class="separator">|</span>
54
                    <strong>
55
                      <span id="logged-in-desk-name">NO DESK SET</span>
56
                    </strong>
57
                    [% END %]
47
                    <span class="separator">|</span>
58
                    <span class="separator">|</span>
48
                    [% IF ( AutoLocation ) %]
59
                    [% IF ( AutoLocation ) %]
49
                    <brand>
60
                    <brand>
Lines 73-78 Link Here
73
                        <a class="toplinks" href="/cgi-bin/koha/circ/selectbranchprinter.pl">Set library</a>
84
                        <a class="toplinks" href="/cgi-bin/koha/circ/selectbranchprinter.pl">Set library</a>
74
                    </li>
85
                    </li>
75
                    [% END %]
86
                    [% END %]
87
                    <li>
88
                        <a class="toplinks" href="/cgi-bin/koha/circ/selectdesk.pl">Set desk</a>
89
                    </li>
76
                    [% IF EnableSearchHistory %]
90
                    [% IF EnableSearchHistory %]
77
                    <li>
91
                    <li>
78
                        <a class="toplinks" href="/cgi-bin/koha/catalogue/search-history.pl">Search history</a>
92
                        <a class="toplinks" href="/cgi-bin/koha/catalogue/search-history.pl">Search history</a>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/selectdesk.tt (-1 / +50 lines)
Line 0 Link Here
0
- 
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>Koha &rsaquo; Circulation &rsaquo; Set library</title>
3
[% INCLUDE 'doc-head-close.inc' %]
4
<style type="text/css">
5
    .noshow {display: none;}
6
</style>
7
</head>
8
<body id="circ_selectdesk" class="circ">
9
[% INCLUDE 'header.inc' %]
10
[% INCLUDE 'circ-search.inc' %]
11
12
<div id="breadcrumbs">
13
         <a href="/cgi-bin/koha/mainpage.pl">Home</a>
14
&rsaquo; <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a>
15
&rsaquo; <a href="/cgi-bin/koha/circ/selectdesk.pl">Set library</a>
16
</div>
17
18
<div id="doc" class="yui-t7">
19
  <div id="bd">
20
    <div id="yui-main">
21
      <div class="yui-b">
22
        <form method="post" action="selectdesk.pl">
23
          <fieldset class="rows">
24
            <legend>Set desk</legend>
25
              <ol>
26
                <li><label for="desk">Choose desk:</label>
27
                  <select name="deskcode" id="deskcode">
28
                    [% FOREACH deskloo IN deskloop %]
29
                      [% IF ( deskloo.selected ) %]
30
                        <option value="[% deskloo.deskcode %]" selected="selected">[% deskloo %]</option>
31
                      [% ELSE %]
32
                        <option value="[% deskloo.deskcode %]">[% deskloo.deskname %]</option>
33
                      [% END %]
34
                    [% END %]
35
                  </select>
36
	        </li>
37
              </ol>
38
            </fieldset>
39
            <fieldset class="action">
40
              <input type="submit" value="Submit" />
41
              <a class="cancel" id="cancel_set_desk" href="[% referer or '/cgi-bin/koha/circ/circulation.pl' %]">Cancel</a>
42
            </fieldset>
43
            <div class="noshow">
44
              <input type="hidden" name="oldreferer" value="[% referer or "/cgi-bin/koha/mainpage.pl" |html %]" />
45
            </div>
46
          </form>
47
        </div>
48
      </div>
49
    </div>
50
[% INCLUDE 'intranet-bottom.inc' %]

Return to bug 13881