now fetching copies in details section based on CN label and circ_lib, not owning lib
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 2 Aug 2006 15:36:18 +0000 (15:36 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 2 Aug 2006 15:36:18 +0000 (15:36 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@5223 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm
Open-ILS/web/opac/common/js/config.js
Open-ILS/web/opac/skin/default/js/copy_details.js

index fafb114..b84daa6 100644 (file)
@@ -551,18 +551,40 @@ __PACKAGE__->register_method(
        NOTES
 
 sub biblio_mrid_to_modsbatch {
-       my( $self, $client, $mrid ) = @_;
+       my( $self, $client, $mrid, $args) = @_;
 
        warn "Grabbing mvr for $mrid\n";
 
        my ($mr, $evt) = _grab_metarecord($mrid);
        return $evt unless $mr;
 
-       if( my $m = $self->biblio_mrid_check_mvr($client, $mr)) {
-               return $m;
+       my $mvr = $self->biblio_mrid_check_mvr($client, $mr);
+       $mvr = $self->biblio_mrid_make_modsbatch( $client, $mr ) unless $mvr;
+
+       return $mvr unless ref($args);  
+
+       # Here we find the lead record appropriate for the given filters 
+       # and use that for the title and author of the metarecord
+       my $format      = $$args{format};
+       my $org         = $$args{org};
+       my $depth       = $$args{depth};
+
+       return $mvr unless $format or $org or $depth;
+
+       my $method = "open-ils.storage.ordered.metabib.metarecord.records";
+       $method = "$method.staff" if $self->api_name =~ /staff/o; 
+
+       my $rec = $U->storagereq($method, $format, $org, $depth, 1);
+
+       if( my $mods = $U->record_to_mvr($rec) ) {
+
+               $mvr->title($mods->title);
+               $mvr->title($mods->author);
+               $logger->debug("mods_slim updating title and ".
+                       "author in mvr with ".$mods->title." : ".$mods->author);
        }
 
-       return $self->biblio_mrid_make_modsbatch( $client, $mr ); 
+       return $mvr;
 }
 
 # converts a metarecord to an mvr
@@ -1225,6 +1247,20 @@ sub fetch_age_protect {
 }
 
 
+__PACKAGE__->register_method(
+       method => 'copies_by_cn_label',
+       api_name => 'open-ils.search.asset.copy.retrieve_by_cn_label',
+);
+
+sub copies_by_cn_label {
+       my( $self, $conn, $record, $label, $circ_lib ) = @_;
+       my $e = new_editor();
+       my $cns = $e->search_asset_call_number({record => $record, label => $label}, {idlist=>1});
+       return [] unless @$cns;
+       return $e->search_asset_copy({call_number => $cns, circ_lib => $circ_lib}, {idlist=>1});
+}
+
+
 
 1;
 
index 2f16281..d656bbd 100644 (file)
@@ -309,7 +309,7 @@ var FETCH_COPY                                              = 'open-ils.search:open-ils.search.asset.copy.retrieve';
 var FETCH_FLESHED_COPY                 = 'open-ils.search:open-ils.search.asset.copy.fleshed2.retrieve';
 var CHECK_HOLD_POSSIBLE                        = 'open-ils.circ:open-ils.circ.title_hold.is_possible';
 var UPDATE_HOLD                                        = 'open-ils.circ:open-ils.circ.hold.update';
-var FETCH_COPIES_FROM_VOLUME   = 'open-ils.search:open-ils.search.copies_by_call_number.retrieve';
+var FETCH_COPIES_FROM_VOLUME   = 'open-ils.search:open-ils.search.asset.copy.retrieve_by_cn_label';
 var FETCH_VOLUME_BY_INFO               = 'open-ils.search:open-ils.search.call_number.retrieve_by_info'; /* XXX staff method? */
 var FETCH_VOLUME                                       = 'open-ils.search:open-ils.search.asset.call_number.retrieve';
 var FETCH_COPY_LOCATIONS               = 'open-ils.circ:open-ils.circ.copy_location.retrieve.all';
index 34c1ae0..4d53fe5 100644 (file)
@@ -36,8 +36,8 @@ var i = cpdCheckExisting(contextRow);
        var mainTbody = $n(templateRow, 'copies_tbody');
        var extrasRow = mainTbody.removeChild($n(mainTbody, 'copy_extras_row'));
 
-       var req = new Request(FETCH_VOLUME_BY_INFO, callnumber, record.doc_id(), orgid);
-       req.callback(cpdFetchCopies);
+       var req = new Request(FETCH_COPIES_FROM_VOLUME, record.doc_id(), callnumber, orgid);
+       req.callback(cpdDrawCopies);
 
        req.request.args = { 
                contextTbody    : contextTbody, /* tbody that holds the contextrow */
@@ -152,6 +152,7 @@ function cpdCheckExisting( contextRow ) {
        return null;
 }
 
+/*
 function cpdFetchCopies(r) {
        var args = r.args;
        args.cn = r.getResultObject();
@@ -160,6 +161,7 @@ function cpdFetchCopies(r) {
        req.callback(cpdDrawCopies);
        req.send();
 }
+*/
 
 function cpdDrawCopies(r) {