added find-by-barcode to opac adv search
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 2 Feb 2007 22:40:51 +0000 (22:40 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 2 Feb 2007 22:40:51 +0000 (22:40 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6857 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/advanced.js
Open-ILS/web/opac/skin/default/xml/common/sidebar.xml

index 3a062fe..1dcf503 100644 (file)
@@ -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",
index 7ef3dba..87c6ab6 100644 (file)
@@ -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';
 
 /* ---------------------------------------------------------------------------- */
 
index 20f5a55..27e9994 100644 (file)
@@ -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);
+}
+
+
+
index 0b54c21..fc9789c 100644 (file)
                                                        <option value='cn'>Call Number</option>
                                                        <option value='lccn'>LCCN</option>
                                                        <option value='tcn'>TCN</option>
+                            <option value='barcode'>Item Barcode</option>
                                                </select>
                                        </td><td>
                                                <input type='text' id='adv_quick_text' size='16'> </input>
                                </tr></tbody></table>
                        </div>
 
+            <span class='hide_me' id='myopac.copy.not.found'>No copy with the requested barcode was found</span>
                        <div style='margin-top: 8px;' class='adv_quick_search_submit'>
                                <a id='adv_quick_submit' href='javascript:advGenericSearch();' class='classic_link'>Submit</a>
                        </div>