Expose conjoined bibs in TPAC
authorBill Ott <bott@grpl.org>
Thu, 23 May 2013 00:11:07 +0000 (20:11 -0400)
committerBen Shum <bshum@biblio.org>
Tue, 20 Aug 2013 15:30:12 +0000 (11:30 -0400)
This initial work is based on the GRPL need to handle eReader bib/copy display.
The "joined" titles will display a copy record with a call_number link back to
the "master" bib, where the master will display a set of links to individual
titles from each "copy".

TODO: consider peer_type when determining whether or not to display

Signed-off-by: Bill Ott <bott@grpl.org>
Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm
Open-ILS/src/templates/opac/parts/misc_util.tt2
Open-ILS/src/templates/opac/parts/record/copy_table.tt2

index b60031a..75de856 100644 (file)
@@ -67,6 +67,13 @@ sub load_record {
         $self->mk_copy_query($rec_id, $org, $copy_depth, $copy_limit, $copy_offset, $pref_ou)
     );
 
+    # find foreign copy data
+    my $peer_rec = $U->simplereq(
+        'open-ils.search',
+        'open-ils.search.peer_bibs', $rec_id );
+
+    $ctx->{foreign_copies} = $peer_rec;
+
     my (undef, @rec_data) = $self->get_records_and_facets([$rec_id], undef, {
         flesh => '{holdings_xml,bmp,mra,acp,acnp,acns}',
         site => $org_name,
@@ -80,13 +87,30 @@ sub load_record {
 
     $ctx->{copies} = $copy_rec->gather(1);
 
-    # Add public copy notes to each copy
+    # Add public copy notes to each copy - and while we're in there, grab peer bib records
     foreach my $copy (@{$ctx->{copies}}) {
         $copy->{notes} = $U->simplereq(
             'open-ils.circ',
             'open-ils.circ.copy_note.retrieve.all',
             {itemid => $copy->{id}, pub => 1 }
         );
+        $copy->{peer_bibs} = $U->simplereq(
+           'open-ils.search',
+           'open-ils.search.multi_home.bib_ids.by_barcode',
+           $copy->{barcode} );
+       my @peer_marc;
+       foreach my $bib (@{$copy->{peer_bibs}}) {
+               my (undef, @peer_data) = $self->get_records_and_facets(
+                       [$bib], undef, {
+                               flesh => '{holdings_xml,acp,acnp,acns,exclude_invisible_acn}',
+                               site => $org_name,
+                               depth => $depth,
+                               pref_lib => $pref_ou
+               });
+               #$copy->{peer_bib_marc} = $peer_data[0]->{marc_xml};
+               push @peer_marc,$peer_data[0]->{marc_xml};
+       }
+       $copy->{peer_bib_marc} = \@peer_marc;
     }
 
     $self->timelog("past store copy retrieval call");
index 5c18d60..3f31205 100644 (file)
                 LAST;
             END;
         END;
+       
+        args.bibid = [];
+        FOR bibid IN xml.findnodes('//*[@tag="901"]/*[@code="c"]');
+            args.bibid.push(bibid.textContent);
+        END;
+        args.bibid = args.bibid.0; 
 
     END;
 
index 9a71bce..2740202 100644 (file)
@@ -167,6 +167,33 @@ END;
             [% END %]
         [% END %]
 
+[% FOREACH peer IN ctx.foreign_copies %]
+   [% FOREACH bib IN  peer.foreign_copy_maps %]
+    <tr><td>
+       [% ctx.get_aou(bib.target_copy.circ_lib).name %]
+    </td><td>
+        <a href="[% mkurl(ctx.opac_root _ '/record/' _ bib.target_copy.call_number.record) %]">[% bib.target_copy.call_number.label %]</a>
+    </td><td>
+       [% bib.target_copy.barcode %]
+    </td><td>
+       [% copy_info.copy_location %]
+    </td><td>
+       [% copy_info.copy_status %]
+    </td><td>
+        [% copy_info.due_date %]
+    </td></tr>
+   [% END %]
+[% END %]
+<tr><td>
+[% FOREACH bib IN copy_info.peer_bib_marc;
+        attrs = {marc_xml => bib};
+        PROCESS get_marc_attrs args=attrs %]
+[% IF attrs.bibid != ctx.bre_id %]
+<a href="[% mkurl(ctx.opac_root _ '/record/' _ attrs.bibid) %]"> [% attrs.title %] / [% attrs.author %]</a><br/>
+[% END %]
+[% END %]
+</td></tr>
+
         [%- END %]
         <tr>
         [%- IF ctx.copy_offset > 0 AND NOT serial_holdings;