From: Bill Erickson Date: Thu, 3 Jan 2019 19:55:19 +0000 (-0500) Subject: JBAS-2148 Staff TPAC export results as MARC X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1347d25e84a504276e9177f5f3f966107fef9c24;p=working%2FEvergreen.git JBAS-2148 Staff TPAC export results as MARC Signed-off-by: Bill Erickson --- diff --git a/KCLS/openils/var/templates_kcls/opac/results.tt2 b/KCLS/openils/var/templates_kcls/opac/results.tt2 index 19bb1d5239..c0b0db2042 100644 --- a/KCLS/openils/var/templates_kcls/opac/results.tt2 +++ b/KCLS/openils/var/templates_kcls/opac/results.tt2 @@ -67,6 +67,11 @@ [% CGI.param('modifier').grep('available').size ? ' checked="checked"' : '' %] /> +
+
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm index 8491910db8..c18a78b659 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm @@ -146,6 +146,7 @@ sub load { return $self->load_library if $path =~ m|opac/library|; return $self->load_rresults if $path =~ m|opac/results|; + return $self->load_export if $path =~ m|opac/export|; return $self->load_rresults if $path =~ m|opac/browse_items|; return $self->load_print_record if $path =~ m|opac/record/print|; return $self->load_record if $path =~ m|opac/record/\d|; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm index fd6105f7e2..0a28f2f98c 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm @@ -367,6 +367,7 @@ sub load_rresults { my $self = shift; my %args = @_; my $internal = $args{internal}; + my $export = $args{export}; my $cgi = $self->cgi; my $ctx = $self->ctx; my $e = $self->editor; @@ -391,7 +392,7 @@ sub load_rresults { return $bbag_err; } - $ctx->{page} = 'rresult' unless $internal; + $ctx->{page} = 'rresult' unless ($internal || $export); $ctx->{ids} = []; $ctx->{records} = []; $ctx->{search_facets} = {}; @@ -405,7 +406,8 @@ sub load_rresults { (!defined $cgi->param("query") or $cgi->param("query") =~ /^\s*$/)); $self->timelog("Calling item barcode search"); return $self->item_barcode_shortcut if ( - $cgi->param("qtype") and ($cgi->param("qtype") eq "item_barcode") and not $internal + $cgi->param("qtype") and ($cgi->param("qtype") eq "item_barcode") + and not ($internal || $export) ); $self->timelog("Calling call number browse"); return $self->call_number_browse_standalone if ( @@ -431,6 +433,9 @@ sub load_rresults { if ($internal) { $limit = $offset + $limit + 1; $offset = 0; + } elsif ($export) { + $limit = 1000; + $offset = 0; } my ($user_query, $query, $site, $depth) = _prepare_biblio_search($cgi, $ctx); @@ -514,7 +519,7 @@ sub load_rresults { return $self->generic_redirect($url); } - return Apache2::Const::OK if @$rec_ids == 0 or $internal; + return Apache2::Const::OK if @$rec_ids == 0 || $internal || $export; $self->load_rresults_bookbag_item_notes($rec_ids) if $ctx->{bookbag}; @@ -619,6 +624,33 @@ sub load_rresults { return Apache2::Const::OK; } +# KCLS: +# Export a search result set as MARC records +# Does not support metarecord searches +sub load_export { + my $self = shift; + my $ctx = $self->ctx; + $ctx->{page} = 'export'; + + $self->load_rresults(export => 1); + my @bib_ids = @{$ctx->{ids}}; + + $logger->info("Exporting IDs: @bib_ids"); + + return Apache2::Const::OK unless @bib_ids; + + my $url = sprintf( + "%s://%s/exporter?id=%s", + $self->ctx->{proto}, + $self->ctx->{hostname}, + join('&id=', @bib_ids) + ); + + $logger->info("Exporting with URL: $url"); + + return $self->generic_redirect($url); +} + # If the calling search results in 1 record and the client # is configured to do so, redirect the search results to # the record details page.