From: phasefx Date: Tue, 10 Mar 2009 16:46:11 +0000 (+0000) Subject: Fast single item add from within marc editor. Good for home users, but all cataloger... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=25da5d385b43382ec0e9d4cdf9a9d5f79cf09072;p=Evergreen.git Fast single item add from within marc editor. Good for home users, but all catalogers might like this too. Only working in z39.50 and New MARC interfaces, though I want to enable it when editing existing bib records (code placement issues with JSAN and remote vs chrome, bleh :) git-svn-id: svn://svn.open-ils.org/ILS/trunk@12485 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index 473f52fc58..2db2a681d2 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -2044,6 +2044,12 @@ + + + + + + diff --git a/Open-ILS/xul/staff_client/chrome/content/cat/opac.js b/Open-ILS/xul/staff_client/chrome/content/cat/opac.js index 7240f681c1..12018b0439 100644 --- a/Open-ILS/xul/staff_client/chrome/content/cat/opac.js +++ b/Open-ILS/xul/staff_client/chrome/content/cat/opac.js @@ -19,6 +19,9 @@ function my_init() { JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'}); XML_HTTP_SERVER = g.data.server_unadorned; + //JSAN.addRepository('http://' + g.data.server_unadorned + '/xul/server/'); + //JSAN._loadJSFromUrl('http://' + g.data.server_unadorned + '/xul/server/cat/util.js'); + JSAN.use('util.network'); g.network = new util.network(); g.cgi = new CGI(); @@ -73,6 +76,15 @@ function set_marc_edit() { var b = {}; var c = { 'record' : { 'url' : '/opac/extras/supercat/retrieve/marcxml/record/' + docid }, + /* // FIXME - disable this until we find a good way of pulling remote JSAN libraries into chrome + 'fast_add_item' : function(doc_id,cn_label,cp_barcode) { + try { + JSAN.use('cat.util'); return cat.util.fast_item_add(doc_id,cn_label,cp_barcode); + } catch(E) { + alert(E); + } + }, + */ 'save' : { 'label' : document.getElementById('offlineStrings').getString('cat.save_record'), 'func' : function (new_marcxml) { @@ -85,6 +97,10 @@ function set_marc_edit() { throw(r); } else { alert(document.getElementById('offlineStrings').getString("cat.save.success")); + return { + 'id' : r.id(), + 'oncomplete' : function() {} + }; } } catch(E) { g.error.standard_unexpected_error_alert(document.getElementById('offlineStrings').getString("cat.save.failure"), E); diff --git a/Open-ILS/xul/staff_client/server/cat/marc_new.xul b/Open-ILS/xul/staff_client/server/cat/marc_new.xul index 7f197ef8a7..6dea6fd938 100644 --- a/Open-ILS/xul/staff_client/server/cat/marc_new.xul +++ b/Open-ILS/xul/staff_client/server/cat/marc_new.xul @@ -91,6 +91,13 @@ var url = urls.XUL_MARC_EDIT; var params = { 'record' : { 'marc' : marc }, + 'fast_add_item' : function(doc_id,cn_label,cp_barcode) { + try { + JSAN.use('cat.util'); return cat.util.fast_item_add(doc_id,cn_label,cp_barcode); + } catch(E) { + alert(E); + } + }, 'save' : { 'label' : catStrings.getString('staff.cat.marc_new.create_record.label'), 'func' : function(new_marcxml) { @@ -110,11 +117,20 @@ 'authtime' : ses('authtime'), 'opac_url' : opac_url }; - xulG.set_tab( - xulG.url_prefix(urls.XUL_OPAC_WRAPPER), - {'tab_name': catStrings.getString('staff.cat.marc_new.retrieving.label')}, - content_params - ); + return { + 'id' : robj.id(), + 'on_complete' : function() { + try { + xulG.set_tab( + xulG.url_prefix(urls.XUL_OPAC_WRAPPER), + {'tab_name': catStrings.getString('staff.cat.marc_new.retrieving.label')}, + content_params + ); + } catch(E) { + alert(E); + } + } + }; } catch(E) { g.error.standard_unexpected_error_alert( diff --git a/Open-ILS/xul/staff_client/server/cat/marcedit.js b/Open-ILS/xul/staff_client/server/cat/marcedit.js index 36d2a5eca1..a6e35d2010 100644 --- a/Open-ILS/xul/staff_client/server/cat/marcedit.js +++ b/Open-ILS/xul/staff_client/server/cat/marcedit.js @@ -109,7 +109,7 @@ function my_init() { document.getElementById('save-button').setAttribute('oncommand', 'mangle_005(); ' + 'var xml_string = xml_escape_unicode( xml_record.toXMLString() ); ' + - 'window.xulG.save.func( xml_string ); ' + + 'save_attempt( xml_string ); ' + 'loadRecord(xml_record);' ); @@ -242,6 +242,11 @@ function my_init() { loadRecord(xml_record); + if (! xulG.fast_add_item) { + document.getElementById('fastItemAdd_checkbox').hidden = true; + } + document.getElementById('fastItemAdd_textboxes').hidden = document.getElementById('fastItemAdd_checkbox').hidden || !document.getElementById('fastItemAdd_checkbox').checked; + } catch(E) { alert('FIXME, MARC Editor, my_init: ' + E); } @@ -1229,13 +1234,48 @@ function stackSubfields(checkbox) { var list = document.getElementsByAttribute('name','sf_box'); var o = 'vertical'; - if (!checkbox.checked /* this property gets changed after the oncommand handler, so we're testing for the opposite value */) o = 'horizontal'; + if (!checkbox.checked) o = 'horizontal'; for (var i = 0; i < list.length; i++) { if (list[i]) list[i].setAttribute('orient',o); } } +function fastItemAdd_toggle(checkbox) { + var x = document.getElementById('fastItemAdd_textboxes'); + if (checkbox.checked) { + x.hidden = false; + document.getElementById('fastItemAdd_callnumber').focus(); + document.getElementById('fastItemAdd_callnumber').select(); + } else { + x.hidden = true; + } +} + +function fastItemAdd_attempt(doc_id) { + try { + if (typeof window.xulG.fast_add_item != 'function') { return; } + if (!document.getElementById('fastItemAdd_checkbox').checked) { return; } + if (!document.getElementById('fastItemAdd_callnumber').value) { return; } + if (!document.getElementById('fastItemAdd_barcode').value) { return; } + window.xulG.fast_add_item( doc_id, document.getElementById('fastItemAdd_callnumber').value, document.getElementById('fastItemAdd_barcode').value ); + } catch(E) { + alert('fastItemAdd_attempt: ' + E); + } +} + +function save_attempt(xml_string) { + try { + var result = window.xulG.save.func( xml_string ); + if (result) { + if (result.id) fastItemAdd_attempt(result.id); + if (typeof result.on_complete == 'function') result.on_complete(); + } + } catch(E) { + alert('save_attempt: ' + E); + } +} + function marcDatafield (field) { var row = createRow( { class : 'marcDatafieldRow' }, diff --git a/Open-ILS/xul/staff_client/server/cat/marcedit.xul b/Open-ILS/xul/staff_client/server/cat/marcedit.xul index 671b036c6c..7ea00206de 100644 --- a/Open-ILS/xul/staff_client/server/cat/marcedit.xul +++ b/Open-ILS/xul/staff_client/server/cat/marcedit.xul @@ -24,7 +24,14 @@ - + + + +