X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=opac%2Fopac-addbybiblionumber.pl;h=eec38bd832f8428a1e1cf47d9df5f96da405dabd;hb=42e731857d53134f91ecf0099ae6b7c13393166c;hp=43d448919a1d01efd81b86a0b69bc2574986991e;hpb=de69ee9a91925497ae7598f9d406dca88de32a93;p=koha.git diff --git a/opac/opac-addbybiblionumber.pl b/opac/opac-addbybiblionumber.pl index 43d448919a..eec38bd832 100755 --- a/opac/opac-addbybiblionumber.pl +++ b/opac/opac-addbybiblionumber.pl @@ -24,7 +24,6 @@ use warnings; use CGI qw ( -utf8 ); use C4::Biblio; -use C4::VirtualShelves qw/:DEFAULT/; use C4::Output; use C4::Auth; @@ -41,6 +40,16 @@ our $authorized = 1; our $errcode = 0; our @biblios; +# if virtualshelves is disabled, leave immediately +if ( ! C4::Context->preference('virtualshelves') ) { + print $query->redirect("/cgi-bin/koha/errors/404.pl"); + exit; +} + +if (scalar(@biblionumber) == 1) { + @biblionumber = (split /\//,$biblionumber[0]); +} + our ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => "opac-addbybiblionumber.tt", @@ -72,62 +81,64 @@ else { } #end -sub AddBibliosToShelf { - #splits incoming biblionumber(s) to array and adds each to shelf. - my ($shelfnumber,@biblionumber)=@_; +sub HandleNewVirtualShelf { + if ( $loggedinuser > 0 and + ( + $category == 1 + or $category == 2 and $loggedinuser>0 && C4::Context->preference('OpacAllowPublicListCreation') + ) + ) { + my $shelf = eval { + Koha::Virtualshelf->new( + { + shelfname => $newvirtualshelf, + category => $category, + owner => $loggedinuser, + } + )->store; + }; + if ( $@ or not $shelf ) { + $authorized = 0; + $errcode = 1; + return; + } - #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) { - my $shelf = Koha::Virtualshelves->find( $shelfnumber ); - $shelf->add_biblio( $bib, $loggedinuser ); - } -} + for my $bib (@biblionumber) { + $shelf->add_biblio( $bib, $loggedinuser ); + } -sub HandleNewVirtualShelf { - if($authorized= ShelfPossibleAction($loggedinuser, undef, $category==1? 'new_private': 'new_public')) { - my $shelf = eval { - Koha::Virtualshelf->new( - { - shelfname => $newvirtualshelf, - category => $category, - owner => $loggedinuser, - } - ); - }; - if ( $@ or not $shelf ) { - $authorized=0; - $errcode=1; - return; - } - AddBibliosToShelf($shelfnumber, @biblionumber); - #Reload the page where you came from - print $query->header; - print ""; + #Reload the page where you came from + print $query->header; + print ""; } } sub HandleShelfNumber { - if($authorized= ShelfPossibleAction($loggedinuser, $shelfnumber, 'add')) { - AddBibliosToShelf($shelfnumber,@biblionumber); - #Close this page and return - print $query->header; - print ""; + my $shelfnumber = $query->param('shelfnumber'); + my $shelf = Koha::Virtualshelves->find( $shelfnumber ); + if ( $shelf->can_biblios_be_added( $loggedinuser ) ) { + for my $bib (@biblionumber) { + $shelf->add_biblio( $bib, $loggedinuser ); + } + #Close this page and return + print $query->header; + print ""; + } else { + # TODO } } sub HandleSelectedShelf { - if($authorized= ShelfPossibleAction( $loggedinuser, $selectedshelf, 'add')){ - #adding to specific shelf - my $shelfnumber = $query->param('selectedshelf'); - my $shelf = Koha::Virtualshelves->find( $shelfnumber ); + my $shelfnumber = $query->param('selectedshelf'); + my $shelf = Koha::Virtualshelves->find( $shelfnumber ); + if ( $shelf->can_biblios_be_added( $loggedinuser ) ) { $template->param( singleshelf => 1, shelfnumber => $shelf->shelfnumber, shelfname => $shelf->shelfname, ); + } else { + # TODO } } @@ -171,17 +182,13 @@ sub HandleSelect { } sub LoadBib { - #see comment in AddBibliosToShelf - if (scalar(@biblionumber) == 1) { - @biblionumber = (split /\//,$biblionumber[0]); - } for my $bib (@biblionumber) { my $data = GetBiblioData( $bib ); - push(@biblios, - { biblionumber => $bib, - title => $data->{'title'}, - author => $data->{'author'}, - } ); + push(@biblios, + { biblionumber => $bib, + title => $data->{'title'}, + author => $data->{'author'}, + } ); } $template->param( multiple => (scalar(@biblios) > 1),