X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=virtualshelves%2Faddbybiblionumber.pl;h=d039e429196d74d389b631622758bf99a87b4087;hb=3dfe9903a50b91551c9a49f9c1175531c0b16e15;hp=112ecece84e67e3fee097a750afb94397ab2ccad;hpb=812ba6cd9cb619012c5a3032eb06dadd7ee68b74;p=koha_gimpoz diff --git a/virtualshelves/addbybiblionumber.pl b/virtualshelves/addbybiblionumber.pl index 112ecece84..d039e42919 100755 --- a/virtualshelves/addbybiblionumber.pl +++ b/virtualshelves/addbybiblionumber.pl @@ -16,15 +16,14 @@ # 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 - addvirtualbybiblionumber.pl + addbybiblionumber.pl =head1 DESCRIPTION @@ -51,125 +50,161 @@ 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::BookShelves; -use C4::Circulation; +use C4::VirtualShelves qw/:DEFAULT GetAllShelves/; use C4::Auth; -#use it only to debug ! -use CGI::Carp qw/fatalsToBrowser/; -use warnings; +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; + +our ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "virtualshelves/addbybiblionumber.tmpl", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } +); + +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 -my $query = new CGI; -my $biblionumber = $query->param('biblionumber'); -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 => "virtualshelves/addvirtualbybiblionumber.tmpl", - query => $query, - type => "intranet", - authnotrequired => 0, - flagsrequired => {catalogue => 1}, - }); - -$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; -} 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 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; +} - my $CGIvirtualshelves=CGI::scrolling_list( - -name => 'shelfnumber', - -values => \@shelvesloop, - -labels => \%shelvesloop, - -size => 1, - -tabindex=>'', - -multiple => 0 ); +sub AddBibliosToShelf { + my ($shelfnumber, @biblionumber)=@_; + for my $bib (@biblionumber){ + AddToShelf($bib, $shelfnumber, $loggedinuser); + } +} - $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"), - ); +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 ""; +} - output_html_with_http_headers $query, $cookie, $template->output; +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 + } } -# $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 -# +sub HandleSelectedShelf { + if($authorized= ShelfPossibleAction( $loggedinuser, $shelfnumber, 'add')){ + #confirm adding to specific shelf + my ($singleshelf, $singleshelfname, $singlecategory)= GetShelf($shelfnumber); + $template->param( + singleshelf => 1, + shelfnumber => $singleshelf, + shelfname => $singleshelfname, + "category$singlecategory" => 1 + ); + } + else { + $errcode=2; #no perm + } +} + +sub HandleSelect { + my $privateshelves = GetAllShelves(1,$loggedinuser,1); + my $publicshelves = GetAllShelves(2,$loggedinuser,1); + $template->param( + privatevirtualshelves => $privateshelves, + publicvirtualshelves => $publicshelves, + ); +} -# Local Variables: -# tab-width: 4 -# End: +sub LoadBib { + my @biblios; + for my $bib (@biblionumber) { + my $data = GetBiblioData($bib); + push(@biblios, + { biblionumber => $bib, + title => $data->{'title'}, + author => $data->{'author'}, + } ); + } + $template->param( + 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; +}