From 8e5a542ae63f22e524c9beecf1a5efec2c175f2c Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Thu, 20 Apr 2017 01:50:38 +0000 Subject: [PATCH] Bug 17214: Add records to lists by biblionumber MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To test: 1) Apply patch and go to Lists 2) Click on an existing list or create a new list 3) Add items by barcode, confirm this functionality still works 4) Trigger error messages (adding duplicate barcodes, barcodes that don't exist) to confirm they still show as appropriate 5) Test adding by biblionumber, confirm this works as expected 6) Trigger error messages (adding duplicate biblionumbers, biblionumbers that don't exist). Confirm wording is appropriate in messages. 7) Add both barcodes and biblionumbers at the same time, confirm this works as expected Sponsored-by: Catalyst IT Signed-off-by: Israelex A Veleña for KohaCon17 Signed-off-by: Israelex A Veleña for KohaCon17 --- .../prog/en/modules/virtualshelves/shelves.tt | 25 +++++++++++++++++++--- virtualshelves/shelves.pl | 24 +++++++++++++++++++++ 2 files changed, 46 insertions(+), 3 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 2044754..560cbfe 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,11 @@ function placeHold () { [% CASE 'error_on_delete' %] An error occurred when deleting this list. [% CASE 'error_on_add_biblio' %] - The item ([% m.item_barcode %]) has not been added to the list. Please verify it is not already in the list. + [% IF m.item_barcode %] + The item ([% m.item_barcode %]) has not been added to the list. Please verify it is not already in the list. + [% ELSE %] + The record ([% m.bibnum %]) has not been added to the list. Please verify it is not already in the list. + [% END %] [% CASE 'success_on_update' %] List updated. [% CASE 'success_on_insert' %] @@ -341,13 +345,21 @@ function placeHold () { [% CASE 'success_on_delete' %] List deleted. [% CASE 'success_on_add_biblio' %] - The item ([% m.item_barcode %]) has been added to the list. + [% IF m.item_barcode %] + The item ([% m.item_barcode %]) has been added to the list. + [% ELSE %] + The record ([% m.bibnum %]) has been added to the list. + [% END %] [% 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' %] - The item ([% m.item_barcode %]) does not exist. + [% IF m.item_barcode %] + The item ([% m.item_barcode %]) does not exist. + [% ELSE %] + The record ([% m.bibnum %]) does not exist. + [% END %] [% CASE 'unauthorized_on_view' %] You do not have permission to view this list. [% CASE 'unauthorized_on_update' %] @@ -668,6 +680,13 @@ function placeHold () { +
  • + + + + + +
  • diff --git a/virtualshelves/shelves.pl b/virtualshelves/shelves.pl index 06d93d2..397c52d 100755 --- a/virtualshelves/shelves.pl +++ b/virtualshelves/shelves.pl @@ -165,6 +165,30 @@ if ( $op eq 'add_form' ) { 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 = GetBiblio($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' }; + } + } else { + push @messages, { bibnum => $biblionumber, type => 'alert', code => 'item_does_not_exist' }; + } + } + } else { + push @messages, { type => 'alert', code => 'unauthorized_on_add_biblio' }; + } + } } else { push @messages, { type => 'alert', code => 'does_not_exist' }; } -- 2.1.4