From 4847bd91c8d13fc8b7e1ec959a364bd36168d6bb Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 2 Aug 2006 15:36:18 +0000 Subject: [PATCH] now fetching copies in details section based on CN label and circ_lib, not owning lib git-svn-id: svn://svn.open-ils.org/ILS/trunk@5223 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Application/Search/Biblio.pm | 44 ++++++++++++++++++++-- Open-ILS/web/opac/common/js/config.js | 2 +- Open-ILS/web/opac/skin/default/js/copy_details.js | 6 ++- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm b/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm index fafb114b0c..b84daa6e0b 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm @@ -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; diff --git a/Open-ILS/web/opac/common/js/config.js b/Open-ILS/web/opac/common/js/config.js index 2f16281bba..d656bbd810 100644 --- a/Open-ILS/web/opac/common/js/config.js +++ b/Open-ILS/web/opac/common/js/config.js @@ -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'; diff --git a/Open-ILS/web/opac/skin/default/js/copy_details.js b/Open-ILS/web/opac/skin/default/js/copy_details.js index 34c1ae06d5..4d53fe571b 100644 --- a/Open-ILS/web/opac/skin/default/js/copy_details.js +++ b/Open-ILS/web/opac/skin/default/js/copy_details.js @@ -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) { -- 2.11.0