Owen Leonard
731b933d51
- adding "more" option to the search results dropdown - offering a scrolling list on the add-to-list popup - lists add popup shows the full list of all the patron's lists, divided into groups of private and public lists. Can be improved by a fix for Bug 5529 Signed-off-by: Julian Maurice <julian.maurice@biblibre.com> Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
137 lines
4.4 KiB
Perl
Executable file
137 lines
4.4 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
#script to provide virtualshelf management
|
|
# WARNING: This file uses 4-character tabs!
|
|
#
|
|
# $Header$
|
|
#
|
|
# 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.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use C4::Biblio;
|
|
use CGI;
|
|
use C4::VirtualShelves qw/:DEFAULT GetAllShelves RefreshShelvesSummary/;
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
use C4::Auth qw/get_session/;
|
|
use C4::Debug;
|
|
|
|
#splits incoming biblionumber(s) to array and adds each to shelf.
|
|
sub AddBibliosToShelf {
|
|
my ($shelfnumber,@biblionumber)=@_;
|
|
|
|
# multiple bibs might come in as '/' delimited string (from where, i don't see), or as array.
|
|
if (scalar(@biblionumber) == 1) {
|
|
@biblionumber = (split /\//,$biblionumber[0]);
|
|
}
|
|
for my $bib (@biblionumber){
|
|
AddToShelf($bib, $shelfnumber);
|
|
}
|
|
}
|
|
|
|
my $query = new CGI;
|
|
my @biblionumber = $query->param('biblionumber');
|
|
my $selectedshelf = $query->param('selectedshelf');
|
|
my $newshelf = $query->param('newshelf');
|
|
my $shelfnumber = $query->param('shelfnumber');
|
|
my $newvirtualshelf = $query->param('newvirtualshelf');
|
|
my $category = $query->param('category');
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "opac-addbybiblionumber.tmpl",
|
|
query => $query,
|
|
type => "opac",
|
|
authnotrequired =>( C4::Context->preference("OpacPublic") ? 1 : 0 ),
|
|
}
|
|
);
|
|
|
|
if ($newvirtualshelf) {
|
|
$shelfnumber = AddShelf( $newvirtualshelf, $loggedinuser, $category );
|
|
AddBibliosToShelf($shelfnumber, @biblionumber);
|
|
RefreshShelvesSummary($query->cookie("CGISESSID"),$loggedinuser,($loggedinuser == -1 ? 20 : 10));
|
|
print $query->header;
|
|
print "<html><meta http-equiv=\"refresh\" content=\"0;url=opac-shelves.pl?display=privateshelves\" /><body onload=\"window.opener.location.reload(true);self.close();\"></body></html>";
|
|
exit;
|
|
}
|
|
|
|
# verify user is authorized to perform the action on the shelf...
|
|
my $authorized = 1;
|
|
if ($selectedshelf) {
|
|
$authorized = 0 unless ShelfPossibleAction( $loggedinuser, $selectedshelf );
|
|
}
|
|
|
|
if ($shelfnumber && ($shelfnumber != -1)) {
|
|
AddBibliosToShelf($shelfnumber,@biblionumber);
|
|
RefreshShelvesSummary($query->cookie("CGISESSID"),$loggedinuser,($loggedinuser == -1 ? 20 : 10));
|
|
print $query->header;
|
|
print "<html><meta http-equiv=\"refresh\" content=\"0;url=opac-shelves.pl?display=privateshelves\" /><body onload=\"self.close();\"></body></html>";
|
|
exit;
|
|
}
|
|
else {
|
|
if($selectedshelf){
|
|
# adding to specific shelf
|
|
my ( $singleshelf, $singleshelfname, $singlecategory ) = GetShelf( $query->param('selectedshelf') );
|
|
$template->param(
|
|
singleshelf => 1,
|
|
shelfnumber => $singleshelf,
|
|
shelfname => $singleshelfname,
|
|
"category$singlecategory" => 1
|
|
);
|
|
} else {
|
|
|
|
my $privateshelves = GetAllShelves(1,$loggedinuser);
|
|
my @privateshelves = @{$privateshelves};
|
|
warn scalar($privateshelves);
|
|
if(@privateshelves){
|
|
$template->param (
|
|
privatevirtualshelves => @privateshelves,
|
|
existingshelves => 1
|
|
);
|
|
}
|
|
my $publicshelves = GetAllShelves(2,$loggedinuser);
|
|
my @publicshelves = @{$publicshelves};
|
|
if(@publicshelves){
|
|
$template->param (
|
|
publicvirtualshelves => @publicshelves,
|
|
existingshelves => 1
|
|
);
|
|
}
|
|
|
|
}
|
|
my @biblios;
|
|
for my $bib (@biblionumber) {
|
|
my $data = GetBiblioData( $bib );
|
|
push(@biblios,
|
|
{ biblionumber => $bib,
|
|
title => $data->{'title'},
|
|
author => $data->{'author'},
|
|
} );
|
|
}
|
|
$template->param (
|
|
newshelf => $newshelf,
|
|
multiple => (scalar(@biblios) > 1),
|
|
total => scalar @biblios,
|
|
biblios => \@biblios,
|
|
authorized => $authorized,
|
|
);
|
|
|
|
output_html_with_http_headers $query, $cookie, $template->output;
|
|
}
|