X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-addbybiblionumber.pl;h=610b22efaebbcaba2506b9a7923479565edc3f30;hb=c11f8cb622dbf464adbc484ea9e174218382cd7c;hp=88930c050690197210bfb115367263f2c48d485e;hpb=812ba6cd9cb619012c5a3032eb06dadd7ee68b74;p=koha.git diff --git a/opac/opac-addbybiblionumber.pl b/opac/opac-addbybiblionumber.pl index 88930c0506..610b22efae 100755 --- a/opac/opac-addbybiblionumber.pl +++ b/opac/opac-addbybiblionumber.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl -#script to provide bookshelf management +#script to provide virtualshelf management # WARNING: This file uses 4-character tabs! # # $Header$ @@ -18,100 +18,117 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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::BookShelves; -use C4::Circulation; +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 $shelfnumber = $query->param('shelfnumber'); -my $newbookshelf = $query->param('newbookshelf'); -my $category = $query->param('category'); +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-addbookbybiblionumber.tmpl", + template_name => "opac-addbybiblionumber.tmpl", query => $query, type => "opac", - authnotrequired => 1, + authnotrequired => 0, } ); -$shelfnumber = AddShelf( '', $newbookshelf, $loggedinuser, $category ) if $newbookshelf; - -# to know if we had to add more than one biblio. -my $multiple = 0; -$multiple = 1 if $biblionumber =~ /^(\d*\/)*$/; - +if ($newvirtualshelf) { + $shelfnumber = AddShelf( $newvirtualshelf, $loggedinuser, $category ); + AddBibliosToShelf($shelfnumber, @biblionumber); + RefreshShelvesSummary($query->cookie("CGISESSID"),$loggedinuser,($loggedinuser == -1 ? 20 : 10)); + print $query->header; + print ""; + exit; +} -if ($shelfnumber) { +# verify user is authorized to perform the action on the shelf... +my $authorized = 1; +if ($selectedshelf) { + $authorized = 0 unless ShelfPossibleAction( $loggedinuser, $selectedshelf ); +} - if ($multiple){ - foreach (split /\//,$biblionumber){ - &AddToShelfFromBiblio($_,$shelfnumber); - } - } - else { - &AddToShelfFromBiblio( $biblionumber, $shelfnumber ); - } - print $query->header; - print ""; - exit; +if ($shelfnumber && ($shelfnumber != -1)) { + AddBibliosToShelf($shelfnumber,@biblionumber); + RefreshShelvesSummary($query->cookie("CGISESSID"),$loggedinuser,($loggedinuser == -1 ? 20 : 10)); + print $query->header; + print ""; + exit; } else { - my ($shelflist) = GetShelves( $loggedinuser, 3 ); - my @shelvesloop; - my %shelvesloop; - foreach my $element ( sort keys %$shelflist ) { - push( @shelvesloop, $element ); - $shelvesloop{$element} = $shelflist->{$element}->{'shelfname'}; - } + 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 $CGIbookshelves; - if ( @shelvesloop > 0 ) { - $CGIbookshelves = CGI::scrolling_list ( - -name => 'shelfnumber', - -values => \@shelvesloop, - -labels => \%shelvesloop, - -size => 1, - -tabindex => '', - -multiple => 0 - ); - } - - if ( $multiple ) { - my @biblios; - foreach (split /\//,$biblionumber){ - my $data = GetBiblioData($_); - push @biblios,$data; + my $privateshelves = GetAllShelves(1,$loggedinuser); + if(@{$privateshelves}){ + $template->param ( + privatevirtualshelves => $privateshelves, + existingshelves => 1 + ); + } + my $publicshelves = GetAllShelves(2,$loggedinuser); + if(@{$publicshelves}){ + $template->param ( + publicvirtualshelves => $publicshelves, + existingshelves => 1 + ); } - $template->param ( - multiple => 1, - biblionumber => $biblionumber, - total => scalar @biblios, - biblios => \@biblios, - ); - } - else { # just one to add. - my $data = GetBiblioData( $biblionumber ); - $template->param ( - biblionumber => $biblionumber, - title => $data->{'title'}, - author => $data->{'author'}, - ); - } - $template->param ( - CGIbookshelves => $CGIbookshelves, - ); +} + 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; + output_html_with_http_headers $query, $cookie, $template->output; }