incorporate call number suffixes
authorJason Etheridge <jason@esilibrary.com>
Mon, 7 Mar 2011 13:51:38 +0000 (08:51 -0500)
committerJason Etheridge <jason@esilibrary.com>
Mon, 7 Mar 2011 13:51:38 +0000 (08:51 -0500)
Open-ILS/xul/staff_client/server/cat/volume_copy_creator.js
Open-ILS/xul/staff_client/server/locale/en-US/cat.properties

index 0549875..e490349 100644 (file)
@@ -356,7 +356,8 @@ g.render_callnumber_copy_count_entry = function(row,ou_id,count) {
             /**** SUFFIX COLUMN ****/
             var suffix_column_box = document.createElement('vbox');
             r.appendChild(suffix_column_box);
-                var suffix_column_menulist = document.createElement('menulist');
+                var suffix_column_menulist = g.render_suffix_menu(call_number_column_textbox);
+                suffix_column_menulist.addEventListener( 'change', g.gather_copies_soon, false);
                 suffix_column_box.appendChild(suffix_column_menulist);
 
             /**** NUMBER OF COPIES COLUMN ****/
@@ -677,6 +678,7 @@ g.gather_copies = function() {
                 var ou_id = nl[i].getAttribute('ou_id');
                 var acnc_id = nl[i].getAttribute('acnc_id');
                 var acnp_id = nl[i].getAttribute('acnp_id');
+                var acns_id = nl[i].getAttribute('acns_id');
                 var callnumber = nl[i].value;
                 if (typeof volumes_hash[ou_id] == 'undefined') {
                     volumes_hash[ou_id] = {}
@@ -685,7 +687,8 @@ g.gather_copies = function() {
                     volumes_hash[ou_id][callnumber] = {
                         'call_number_data' : {
                             'acnc_id' : acnc_id,
-                            'acnp_id' : acnp_id
+                            'acnp_id' : acnp_id,
+                            'acns_id' : acns_id
                         },
                         'barcode_data' : []
                     }
@@ -965,7 +968,7 @@ g.render_prefix_menu_items = function(menupopup,ou_id) {
                 'label',
                 my_acnp.id() == -1 ? '' :
                 $('catStrings').getFormattedString(
-                    'staff.cat.volume_copy_creator.call_number_prefix.menuentry_label',
+                    'staff.cat.volume_copy_creator.call_number_prefix.menuitem_label',
                     [
                         my_acnp.label(),
                         g.data.hash.aou[ ou_id ].shortname()
@@ -976,6 +979,62 @@ g.render_prefix_menu_items = function(menupopup,ou_id) {
     }
 }
 
+g.render_suffix_menu = function(call_number_tb) {
+    var ou_id = call_number_tb.getAttribute('ou_id');
+    var org = g.data.hash.aou[ ou_id ];
+    var menulist = document.createElement('menulist');
+        var menupopup = document.createElement('menupopup');
+        menulist.appendChild(menupopup);
+        var org_list = []; // order from top of consortium to owning lib
+        while(org) {
+            org_list.unshift(org.id());
+            org = org.parent_ou();
+            if (org && typeof org != 'object') {
+                org = g.data.hash.aou[ org ];
+            }
+        }
+        for (var i = 0; i < org_list.length; i++) {
+            g.render_suffix_menu_items(menupopup,org_list[i]);
+        }
+
+    menulist.addEventListener(
+        'command',
+        function() {
+            call_number_tb.setAttribute('acns_id',menulist.value);
+        },
+        false
+    );
+    return menulist;
+}
+
+g.render_suffix_menu_items = function(menupopup,ou_id) {
+    if (typeof g.data.list['acns_for_lib_'+ou_id] == 'undefined') {
+        g.data.list['acns_for_lib_'+ou_id] = g.network.simple_request(
+            'FM_ACNS_RETRIEVE_VIA_PCRUD',
+            [ ses(), {"owning_lib":{"=":ou_id}}, {"order_by":{"acns":"label_sortkey"}} ]
+        );
+        g.data.stash('list');
+    }
+    for (var i = 0; i < g.data.list['acns_for_lib_'+ou_id].length; i++) {
+        var my_acns = g.data.list['acns_for_lib_'+ou_id][i];
+        var menuitem = document.createElement('menuitem');
+        menupopup.appendChild(menuitem);
+            menuitem.setAttribute(
+                'label',
+                my_acns.id() == -1 ? '' :
+                $('catStrings').getFormattedString(
+                    'staff.cat.volume_copy_creator.call_number_suffix.menuitem_label',
+                    [
+                        my_acns.label(),
+                        g.data.hash.aou[ ou_id ].shortname()
+                    ]
+                )
+            );
+            menuitem.setAttribute('value',my_acns.id());
+    }
+}
+
+
 g.list_callnumbers = function(doc_id, label_class) {
     var cn_blob;
     try {
index 11cc53c..cb67481 100644 (file)
@@ -422,7 +422,9 @@ staff.cat.volume_copy_creator.stash_and_close.tree_err3=volume tree update 3
 staff.cat.volume_copy_creator.load_prefs.err_retrieving_prefs=Error retrieving stored preferences
 staff.cat.volume_copy_creator.save_prefs.err_storing_prefs=Error storing preferences
 # %1$s = Call Number Prefix Label, %2$s = Call Number Prefix Owning Lib Shortname
-staff.cat.volume_copy_creator.call_number_prefix.menuentry_label=%2$s : %1$s
+staff.cat.volume_copy_creator.call_number_prefix.menuitem_label=%2$s : %1$s
+# %1$s = Call Number Suffix Label, %2$s = Call Number Suffix Owning Lib Shortname
+staff.cat.volume_copy_creator.call_number_suffix.menuitem_label=%2$s : %1$s
 staff.cat.z3950.native_catalog=Native Catalog
 staff.cat.z3950.obj_list_init.list_construction_error=Failure during list construction.
 staff.cat.z3950.results_view.label=Results View