JBAS-2148 Staff TPAC export results as MARC
authorBill Erickson <berickxx@gmail.com>
Thu, 3 Jan 2019 19:55:19 +0000 (14:55 -0500)
committerBill Erickson <berickxx@gmail.com>
Wed, 19 Jun 2019 16:15:20 +0000 (12:15 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
KCLS/openils/var/templates_kcls/opac/results.tt2
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm

index 19bb1d5..c0b0db2 100644 (file)
                         [% CGI.param('modifier').grep('available').size ? ' checked="checked"' : '' %] />
                     <label class="results_header_lbl">[% l('Limit to available items') %]</label>
 
+                    <div class="results_header_div"></div>
+                    <div class='results_header_sel'>
+                      <a href="[% mkurl(ctx.opac_root _ '/export') %]">
+                        [% l('Export All as MARC') %]</a>
+                    </div>
                 <div class="clear-both"></div>
             </div>
         </div>
index 8491910..c18a78b 100644 (file)
@@ -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|;
index fd6105f..0a28f2f 100644 (file)
@@ -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.