From: erickson Date: Fri, 2 Feb 2007 22:40:51 +0000 (+0000) Subject: added find-by-barcode to opac adv search X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=8347ab362a0e7f14dbad3609f4815aade16174a7;p=Evergreen.git added find-by-barcode to opac adv search git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_0@6857 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm b/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm index 3a062fe180..1dcf503f60 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm @@ -357,6 +357,31 @@ sub biblio_barcode_to_title { return { count => 0 }; } +__PACKAGE__->register_method( + method => 'title_id_by_item_barcode', + api_name => 'open-ils.search.bib_id.by_barcode' +); + +sub title_id_by_item_barcode { + my( $self, $conn, $barcode ) = @_; + my $e = new_editor(); + my $copies = $e->search_asset_copy( + [ + { deleted => 'f', barcode => $barcode }, + { + flesh => 2, + flesh_fields => { + acp => [ 'call_number' ], + acn => [ 'record' ] + } + } + ] + ); + + return $e->event unless @$copies; + return $$copies[0]->call_number->record->id; +} + __PACKAGE__->register_method( method => "biblio_copy_to_mods", diff --git a/Open-ILS/web/opac/common/js/config.js b/Open-ILS/web/opac/common/js/config.js index 7ef3dba48e..87c6ab639c 100644 --- a/Open-ILS/web/opac/common/js/config.js +++ b/Open-ILS/web/opac/common/js/config.js @@ -338,6 +338,7 @@ var FETCH_MR_DESCRIPTORS = 'open-ils.search:open-ils.search.metabib.record_to_d var FETCH_HIGHEST_PERM_ORG = 'open-ils.actor:open-ils.actor.user.perm.highest_org.batch'; var FETCH_USER_NOTES = 'open-ils.actor:open-ils.actor.note.retrieve.all'; var FETCH_ORG_BY_SHORTNAME = 'open-ils.actor:open-ils.actor.org_unit.retrieve_by_shorname'; +var FETCH_BIB_ID_BY_BARCODE = 'open-ils.search:open-ils.search.bib_id.by_barcode'; /* ---------------------------------------------------------------------------- */ diff --git a/Open-ILS/web/opac/skin/default/js/advanced.js b/Open-ILS/web/opac/skin/default/js/advanced.js index 20f5a55aab..27e9994d9a 100644 --- a/Open-ILS/web/opac/skin/default/js/advanced.js +++ b/Open-ILS/web/opac/skin/default/js/advanced.js @@ -113,6 +113,10 @@ function advGenericSearch() { arg[PARAM_RTYPE] = RTYPE_TCN; break; + case 'barcode': + advFindBarcode(term); + break; + case 'cn': arg.page = CNBROWSE; @@ -142,3 +146,25 @@ function advGenericSearch() { } +function advFindBarcode(barcode) { + var req = new Request(FETCH_BIB_ID_BY_BARCODE, barcode); + req.callback(advDrawBarcode); + req.request.alertEvent = false; + req.send(); +} + +function advDrawBarcode(r) { + titleid = r.getResultObject(); + if(checkILSEvent(titleid)) { + alertId('myopac.copy.not.found'); + return; + } + if(!titleid) return; + var args = {}; + args.page = RDETAIL; + args[PARAM_RID] = titleid; + location.href = buildOPACLink(args); +} + + + diff --git a/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml b/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml index 0b54c218f3..fc9789c5c5 100644 --- a/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml +++ b/Open-ILS/web/opac/skin/default/xml/common/sidebar.xml @@ -114,6 +114,7 @@ + @@ -121,6 +122,7 @@ + No copy with the requested barcode was found
Submit