X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=virtualshelves%2Faddbybiblionumber.pl;h=5fd82b3cd05014e3f67972a16d91517fcc674818;hb=2b8b5ae225af6119e41e2112f9a8573b4170b927;hp=1ad57753d08313ce8df83ec4728f013bece21420;hpb=81c0d9e821bf619a6058d37497023f53555367b8;p=koha_fer diff --git a/virtualshelves/addbybiblionumber.pl b/virtualshelves/addbybiblionumber.pl index 1ad57753d0..5fd82b3cd0 100755 --- a/virtualshelves/addbybiblionumber.pl +++ b/virtualshelves/addbybiblionumber.pl @@ -16,11 +16,10 @@ # 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. -# $Id$ =head1 NAME @@ -51,29 +50,36 @@ if this script has to add a shelf, it add one with this category. +=item newshelf + + if this parameter exists, then we create a new shelf + =back =cut use strict; -use C4::Biblio; +use warnings; + use CGI; +use C4::Biblio; use C4::Output; -use C4::VirtualShelves; -use C4::Circulation; +use C4::VirtualShelves qw/:DEFAULT GetAllShelves/; use C4::Auth; -#use it only to debug ! -use CGI::Carp qw/fatalsToBrowser/; -use warnings; -my $query = new CGI; -my $biblionumber = $query->param('biblionumber'); -my $shelfnumber = $query->param('shelfnumber'); -my $newvirtualshelf = $query->param('newvirtualshelf'); -my $category = $query->param('category'); +our $query = new CGI; +our @biblionumber = HandleBiblioPars(); +our $shelfnumber = $query->param('shelfnumber'); +our $newvirtualshelf = $query->param('newvirtualshelf'); +our $newshelf = $query->param('newshelf'); +our $category = $query->param('category'); +our $sortfield = $query->param('sortfield'); +my $confirmed = $query->param('confirmed') || 0; +our $authorized = 1; +our $errcode = 0; -my ( $template, $loggedinuser, $cookie ) = get_template_and_user( +our ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => "virtualshelves/addbybiblionumber.tmpl", query => $query, @@ -83,98 +89,121 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -$shelfnumber = AddShelf( $newvirtualshelf, $loggedinuser, $category ) - if $newvirtualshelf; -if ( $shelfnumber || ( $shelfnumber == -1 ) ) { # the shelf already exist. - &AddToShelfFromBiblio( $biblionumber, $shelfnumber ); - print -"Content-Type: text/html\n\n"; - exit; +if( $newvirtualshelf) { + HandleNewVirtualShelf(); + exit if $authorized; + ShowTemplate(); #error message +} +elsif($shelfnumber && $confirmed) { + HandleShelfNumber(); + exit if $authorized; + ShowTemplate(); #error message +} +elsif($shelfnumber) { #still needs confirmation + HandleSelectedShelf(); + LoadBib() if $authorized; + ShowTemplate(); +} +else { + HandleSelect(); + LoadBib(); + ShowTemplate(); +} +#end + +sub HandleBiblioPars { + my @bib= $query->param('biblionumber'); + if(@bib==0 && $query->param('biblionumbers')) { + my $str= $query->param('biblionumbers'); + @bib= split '/', $str; + } + elsif(@bib==1 && $bib[0]=~/\//) { + @bib= split '/', $bib[0]; + } + return @bib; +} + +sub AddBibliosToShelf { + my ($shelfnumber, @biblionumber)=@_; + for my $bib (@biblionumber){ + AddToShelf($bib, $shelfnumber, $loggedinuser); + } +} + +sub HandleNewVirtualShelf { + $shelfnumber = AddShelf( { + shelfname => $newvirtualshelf, + sortfield => $sortfield, + category => $category }, $loggedinuser); + if($shelfnumber == -1) { + $authorized=0; + $errcode=1; #add failed + return; + } + AddBibliosToShelf($shelfnumber, @biblionumber); + #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 ""; + } + else { + $errcode=2; #no perm + } } -else { # this shelf doesn't already exist. - my ( $bibliocount, @biblios ) = GetBiblio($biblionumber); - - my ($shelflist) = GetShelves( $loggedinuser, 3 ); - my @shelvesloop; - my %shelvesloop; - foreach my $element ( sort keys %$shelflist ) { - push( @shelvesloop, $element ); - $shelvesloop{$element} = $shelflist->{$element}->{'shelfname'}; + +sub HandleSelectedShelf { + if($authorized= ShelfPossibleAction( $loggedinuser, $shelfnumber, 'add')){ + #confirm adding to specific shelf + my ($singleshelf, $singleshelfname)= GetShelf($shelfnumber); + $template->param( + singleshelf => 1, + shelfnumber => $singleshelf, + shelfname => $singleshelfname, + ); + } + else { + $errcode=2; #no perm } +} - my $CGIvirtualshelves = CGI::scrolling_list( - -name => 'shelfnumber', - -values => \@shelvesloop, - -labels => \%shelvesloop, - -size => 1, - -tabindex => '', - -multiple => 0 +sub HandleSelect { + my $privateshelves = GetAllShelves(1,$loggedinuser,1); + my $publicshelves = GetAllShelves(2,$loggedinuser,1); + $template->param( + privatevirtualshelves => $privateshelves, + publicvirtualshelves => $publicshelves, ); +} +sub LoadBib { + my @biblios; + for my $bib (@biblionumber) { + my $data = GetBiblioData($bib); + push(@biblios, + { biblionumber => $bib, + title => $data->{'title'}, + author => $data->{'author'}, + } ); + } $template->param( - biblionumber => $biblionumber, - title => $biblios[0]->{'title'}, - author => $biblios[0]->{'author'}, - CGIvirtualshelves => $CGIvirtualshelves, - intranetcolorstylesheet => - C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), + multiple => (scalar(@biblios) > 1), + total => scalar @biblios, + biblios => \@biblios, ); +} +sub ShowTemplate { + $template->param ( + newshelf => $newshelf||0, + authorized => $authorized, + errcode => $errcode, + ); output_html_with_http_headers $query, $cookie, $template->output; } - -# $Log$ -# Revision 1.8 2007/04/24 13:54:29 hdl -# functions that were in C4::Interface::CGI::Output are now in C4::Output. -# So this implies quite a change for files. -# Sorry about conflicts which will be caused. -# directory Interface::CGI should now be dropped. -# I noticed that many scripts (reports ones, but also some circ/stats.pl or opac-topissues) still use Date::Manip. -# -# Revision 1.7 2007/04/04 16:46:22 tipaul -# HUGE COMMIT : code cleaning circulation. -# -# some stuff to do, i'll write a mail on koha-devel NOW ! -# -# Revision 1.6 2007/03/09 14:32:26 tipaul -# rel_3_0 moved to HEAD -# -# Revision 1.4.2.6 2006/12/18 16:35:17 toins -# removing use HTML::Template from *.pl. -# -# Revision 1.4.2.5 2006/12/05 11:35:29 toins -# Biblio.pm cleaned. -# additionalauthors, bibliosubject, bibliosubtitle tables are now unused. -# Some functions renamed according to the coding guidelines. -# -# Revision 1.4.2.4 2006/11/30 18:23:51 toins -# theses scripts don't need to use C4::Search. -# -# Revision 1.4.2.3 2006/10/30 09:48:19 tipaul -# samll bugfix to create a virtualshelf correctly -# -# Revision 1.4.2.2 2006/08/30 16:13:54 toins -# correct an error in the "if condition". -# -# Revision 1.4.2.1 2006/08/30 15:59:14 toins -# Code cleaned according to coding guide lines. -# -# Revision 1.4 2006/07/04 14:36:51 toins -# Head & rel_2_2 merged -# -# Revision 1.3.2.4 2006/06/20 16:21:42 oleonard -# Adding "tabindex=''" to CGI:scrolling_lists to prevent incorrect tabbing. See Bug 1098 -# -# Revision 1.3.2.3 2006/02/05 21:59:21 kados -# Adds script support for IntranetNav ... see mail to koha-devel for -# details -# -# Revision 1.3.2.2 2006/02/05 21:45:25 kados -# Adds support for intranetstylesheet system pref in Koha scripts -# - -# Local Variables: -# tab-width: 4 -# End: