- if( my $barcode = $query->param('barcode') ) {
- my $item = GetItem( 0, $barcode);
- if (defined $item && $item->{itemnumber}) {
- my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} );
- if ( $shelf->can_biblios_be_added( $loggedinuser ) ) {
- my $added = eval { $shelf->add_biblio( $biblio->{biblionumber}, $loggedinuser ); };
- if ($@) {
- push @messages, { type => 'error', code => ref($@), msg => $@ };
- } elsif ( $added ) {
- push @messages, { type => 'message', code => 'success_on_add_biblio' };
+ if( my $barcodes = $query->param('barcodes') ) {
+ if ( $shelf->can_biblios_be_added( $loggedinuser ) ) {
+ my @barcodes = split /\n/, $barcodes; # Entries are effectively passed in as a <cr> separated list
+ foreach my $barcode (@barcodes){
+ $barcode =~ s/\r$//; # strip any naughty return chars
+ next if $barcode eq '';
+ my $item = GetItem( 0, $barcode);
+ if (defined $item && $item->{itemnumber}) {
+ my $added = eval { $shelf->add_biblio( $item->{biblionumber}, $loggedinuser ); };
+ if ($@) {
+ push @messages, { item_barcode => $barcode, type => 'alert', code => ref($@), msg => $@ };
+ } elsif ( $added ) {
+ push @messages, { item_barcode => $barcode, type => 'message', code => 'success_on_add_biblio' };
+ } else {
+ push @messages, { item_barcode => $barcode, type => 'message', code => 'error_on_add_biblio' };
+ }
+ } else {
+ push @messages, { item_barcode => $barcode, type => 'alert', code => 'item_does_not_exist' };
+ }
+ }
+ } else {
+ push @messages, { type => 'alert', code => 'unauthorized_on_add_biblio' };
+ }
+ }
+ if ( my $biblionumbers = $query->param('biblionumbers') ) {
+ if ( $shelf->can_biblios_be_added( $loggedinuser ) ) {
+ my @biblionumbers = split /\n/, $biblionumbers;
+ foreach my $biblionumber (@biblionumbers) {
+ $biblionumber =~ s/\r$//; # strip any naughty return chars
+ next if $biblionumber eq '';
+ my $biblio = Koha::Biblios->find($biblionumber);
+ if (defined $biblio) {
+ my $added = eval { $shelf->add_biblio( $biblionumber, $loggedinuser ); };
+ if ($@) {
+ push @messages, { bibnum => $biblionumber, type => 'alert', code => ref($@), msg => $@ };
+ } elsif ( $added ) {
+ push @messages, { bibnum => $biblionumber, type => 'message', code => 'success_on_add_biblio' };
+ } else {
+ push @messages, { bibnum => $biblionumber, type => 'message', code => 'error_on_add_biblio' };
+ }