From 902342f415c51ebb13ea3b36cad3583a39afc1a7 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 1 Dec 2016 11:47:31 +0000 Subject: [PATCH] Bug 7663 - batch add barcodes to a list This patch changes the barcode input on add list to a textarea and process multiples barcodes to allow for adding many items to a list at once To test: 1 - Create a list 2 - Add some items 3 - Verify items are added and success reported 4 - Add these items again 5 - Verify you are notified they were not added 6 - Type invalid barcodes into the text area and submit 7 - Verify you are notifed of failure to add 8 - Try going to a list that doesn't exist and adding barcodes i.e. http://localhost:8081/cgi-bin/koha/virtualshelves/shelves.pl?op=add_biblio&shelfnumber=9999&barcodes=4 9 - Verify correct error 10 - Try the above but with a list that exists while signed in as a patron without lists permission: i.e. http://localhost:8080/cgi-bin/koha/opac-shelves.pl?op=view&shelfnumber=3 11 - Verify correct error: "You do not have permission to view this list." Signed-off-by: Chris Kirby Works as advertised. Signed-off-by: Jonathan Druart Signed-off-by: Kyle M Hall --- .../prog/en/modules/virtualshelves/shelves.tt | 12 +++---- virtualshelves/shelves.pl | 32 +++++++++++-------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt index a276236c05..2044754ab0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt @@ -333,7 +333,7 @@ function placeHold () { [% CASE 'error_on_delete' %] An error occurred when deleting this list. [% CASE 'error_on_add_biblio' %] - The item has not been added to the list. Please verify it is not already in the list. + The item ([% m.item_barcode %]) has not been added to the list. Please verify it is not already in the list. [% CASE 'success_on_update' %] List updated. [% CASE 'success_on_insert' %] @@ -341,13 +341,13 @@ function placeHold () { [% CASE 'success_on_delete' %] List deleted. [% CASE 'success_on_add_biblio' %] - The item has been added to the list. + The item ([% m.item_barcode %]) has been added to the list. [% CASE 'success_on_remove_biblios' %] The item has been removed from the list. [% CASE 'does_not_exist' %] This list does not exist. [% CASE 'item_does_not_exist' %] - This item does not exist. + The item ([% m.item_barcode %]) does not exist. [% CASE 'unauthorized_on_view' %] You do not have permission to view this list. [% CASE 'unauthorized_on_update' %] @@ -659,11 +659,11 @@ function placeHold () {
- Add an item + Add items
  1. - - + + diff --git a/virtualshelves/shelves.pl b/virtualshelves/shelves.pl index 3faa0e5c7a..3e03e6d9be 100755 --- a/virtualshelves/shelves.pl +++ b/virtualshelves/shelves.pl @@ -140,24 +140,28 @@ if ( $op eq 'add_form' ) { $shelfnumber = $query->param('shelfnumber'); $shelf = Koha::Virtualshelves->find($shelfnumber); if ($shelf) { - 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 => 'alert', 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 separated list + foreach my $barcode (@barcodes){ + $barcode =~ s/\r$//; # strip any naughty return chars + my $item = GetItem( 0, $barcode); + if (defined $item && $item->{itemnumber}) { + my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} ); + my $added = eval { $shelf->add_biblio( $biblio->{biblionumber}, $loggedinuser ); }; + if ($@) { + push @messages, { item_barcode => $barcode, type => 'error', 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, { type => 'message', code => 'error_on_add_biblio' }; + push @messages, { item_barcode => $barcode, type => 'error', code => 'item_does_not_exist' }; } - } else { - push @messages, { type => 'alert', code => 'unauthorized_on_add_biblio' }; } } else { - push @messages, { type => 'alert', code => 'item_does_not_exist' }; + push @messages, { type => 'error', code => 'unauthorized_on_add_biblio' }; } } } else { -- 2.39.5