Attempt at providing a per bib invocation of the unified vol/copy editor from Item...
authorJason Etheridge <jason@esilibrary.com>
Fri, 20 May 2011 20:42:11 +0000 (16:42 -0400)
committerJason Etheridge <jason@esilibrary.com>
Tue, 5 Jul 2011 22:26:59 +0000 (18:26 -0400)
https://bugs.launchpad.net/evergreen/+bug/787561
https://bugs.launchpad.net/evergreen/+bug/787563
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Open-ILS/web/opac/locale/en-US/lang.dtd
Open-ILS/xul/staff_client/server/circ/copy_status.js
Open-ILS/xul/staff_client/server/circ/copy_status.xul
Open-ILS/xul/staff_client/server/circ/copy_status_overlay.xul

index 4043024..8fecd66 100644 (file)
 <!ENTITY staff.circ.copy_status_overlay.cmd_find_acq_po.accesskey "F">
 <!ENTITY staff.circ.copy_status_overlay.sel_edit.label "Edit Item Attributes">
 <!ENTITY staff.circ.copy_status_overlay.sel_edit.accesskey "E">
+<!ENTITY staff.circ.copy_status_overlay.sel_vol_copy_edit.label "Edit Items/Volumes Per Bib">
+<!ENTITY staff.circ.copy_status_overlay.sel_vol_copy_edit.accesskey "V">
 <!ENTITY staff.circ.copy_status_overlay.sel_mark_items_damaged.label "Mark Item Damaged">
 <!ENTITY staff.circ.copy_status_overlay.sel_mark_items_damaged.accesskey "D">
 <!ENTITY staff.circ.copy_status_overlay.sel_mark_items_missing.label "Mark Item Missing">
index bfd7b79..f7ac6dd 100644 (file)
@@ -10,6 +10,8 @@ circ.copy_status = function (params) {
     JSAN.use('util.date');
     JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
     JSAN.use('util.sound'); this.sound = new util.sound();
+    JSAN.use('cat.util');
+
 };
 
 circ.copy_status.prototype = {
@@ -57,6 +59,7 @@ circ.copy_status.prototype = {
                             obj.controller.view.sel_checkin.setAttribute('disabled','true');
                             obj.controller.view.cmd_replace_barcode.setAttribute('disabled','true');
                             obj.controller.view.sel_edit.setAttribute('disabled','true');
+                            obj.controller.view.sel_vol_copy_edit.setAttribute('disabled','true');
                             obj.controller.view.sel_opac.setAttribute('disabled','true');
                             obj.controller.view.sel_bucket.setAttribute('disabled','true');
                             obj.controller.view.sel_record_bucket.setAttribute('disabled','true');
@@ -86,6 +89,7 @@ circ.copy_status.prototype = {
                             obj.controller.view.sel_checkin.setAttribute('disabled','false');
                             obj.controller.view.cmd_replace_barcode.setAttribute('disabled','false');
                             obj.controller.view.sel_edit.setAttribute('disabled','false');
+                            obj.controller.view.sel_vol_copy_edit.setAttribute('disabled','false');
                             obj.controller.view.sel_opac.setAttribute('disabled','false');
                             obj.controller.view.sel_patron.setAttribute('disabled','false');
                             obj.controller.view.cmd_triggered_events.setAttribute('disabled','false');
@@ -741,6 +745,58 @@ circ.copy_status.prototype = {
                         }
 
                     ],
+
+                    'sel_vol_copy_edit' : [
+                        ['command'],
+                        function() {
+                            try {
+                                JSAN.use('util.functional');
+
+                                var list = util.functional.map_list( obj.selection_list, function(o) { return o.copy_id; } );
+
+                                var copies = obj.network.simple_request('FM_ACP_FLESHED_BATCH_RETRIEVE',[list]);
+
+                                if (list.length == 0) { return; }
+
+                                var map_acn = {};
+                                var rec_copy_map = {};
+
+                                for (var i = 0; i < copies.length; i++) {
+                                    var volume_id = copies[i].call_number();
+                                    if (! map_acn[volume_id]) {
+                                        map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE.authoritative',[ volume_id ]);
+                                    }
+                                    copies[i].call_number( map_acn[ volume_id ] );
+                                    var record_id = map_acn[ volume_id ].record();
+                                    if (!rec_copy_map[record_id]) {
+                                        rec_copy_map[record_id] = [];
+                                    }
+                                    rec_copy_map[record_id].push( copies[i] );
+                                }
+
+                                var timeout = 0; // FIXME: stagger invocation of each tab or they'll break for someone unknown reason
+                                var vol_item_creator = function(items) {
+                                    setTimeout(
+                                        function() {
+                                            xulG.volume_item_creator({ 'existing_copies' : items });
+                                        }, timeout
+                                    );
+                                    timeout += 1000;
+                                }
+                                for (var r in rec_copy_map) {
+                                    if (r == -1) { /* no unified interface for pre-cats */ 
+                                        cat.util.spawn_copy_editor( { 'copy_ids' : rec_copy_map[r], 'edit' : 1 } );
+                                    } else {
+                                        vol_item_creator( rec_copy_map[r] );
+                                    }
+                                }
+
+                            } catch(E) {
+                                obj.error.standard_unexpected_error_alert('copy status -> edit items/volumes per bib',E);
+                            }
+                        }
+                    ],
+
                     'cmd_edit_volumes' : [
                         ['command'],
                         function() {
index 6a1411a..351b01b 100644 (file)
         <command id="sel_checkin" disabled="true"/>
         <command id="sel_renew" disabled="true"/>
         <command id="sel_edit" disabled="true"/>
+        <command id="sel_vol_copy_edit" disabled="true"/>
         <command id="sel_opac" disabled="true"/>
         <command id="sel_bucket" disabled="true"/>
         <command id="sel_record_bucket" disabled="true" label="&staff.circ.copy_status_overlay.sel_record_bucket.label;" accesskey="&staff.circ.copy_status_overlay.sel_record_bucket.accesskey;" />
index d8ffd77..909b547 100644 (file)
@@ -25,6 +25,7 @@
         <menuitem command="cmd_find_acq_po" label="&staff.circ.copy_status_overlay.cmd_find_acq_po.label;" accesskey="&staff.circ.copy_status_overlay.cmd_find_acq_po.accesskey;"/>
         <menuseparator/>
         <menuitem command="sel_edit" label="&staff.circ.copy_status_overlay.sel_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_edit.accesskey;" />
+        <menuitem command="sel_vol_copy_edit" label="&staff.circ.copy_status_overlay.sel_vol_copy_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_vol_copy_edit.accesskey;" />
         <menuseparator/>
         <menuitem command="sel_mark_items_damaged" label="&staff.circ.copy_status_overlay.sel_mark_items_damaged.label;" accesskey="&staff.circ.copy_status_overlay.sel_mark_items_damaged.accesskey;"/>
         <menuseparator/>
@@ -52,6 +53,7 @@
         <menuitem command="sel_patron" label="&staff.circ.copy_status_overlay.sel_patron.label;" accesskey="&staff.circ.copy_status_overlay.sel_patron.accesskey;"/>
         <menuseparator/>
         <menuitem command="sel_edit" label="&staff.circ.copy_status_overlay.sel_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_edit.accesskey;" />
+        <menuitem command="sel_vol_copy_edit" label="&staff.circ.copy_status_overlay.sel_vol_copy_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_vol_copy_edit.accesskey;" />
         <menuitem command="cmd_transfer_items" label="&staff.circ.copy_status_overlay.cmd_transfer_items.label;" accesskey="&staff.circ.copy_status_overlay.cmd_transfer_items.accesskey;"/>
         <menuseparator/>
         <menuitem command="cmd_add_volumes" label="&staff.circ.copy_status_overlay.cmd_add_volumes.label;" accesskey="&staff.circ.copy_status_overlay.cmd_add_volumes.accesskey;"/>
             <menuitem command="cmd_triggered_events" label="&staff.circ.copy_status_overlay.cmd_triggered_events.label;" accesskey="&staff.circ.copy_status_overlay.cmd_triggered_events.accesskey;"/>
             <menuseparator/>
             <menuitem command="sel_edit" label="&staff.circ.copy_status_overlay.sel_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_edit.accesskey;" />
+            <menuitem command="sel_vol_copy_edit" label="&staff.circ.copy_status_overlay.sel_vol_copy_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_vol_copy_edit.accesskey;" />
             <menuitem command="cmd_transfer_items" label="&staff.circ.copy_status_overlay.cmd_transfer_items.label;" accesskey="&staff.circ.copy_status_overlay.cmd_transfer_items.accesskey;"/>
             <menuseparator/>
             <menuitem command="cmd_add_volumes" label="&staff.circ.copy_status_overlay.cmd_add_volumes.label;" accesskey="&staff.circ.copy_status_overlay.cmd_add_volumes.accesskey;"/>
             <menuitem command="cmd_find_acq_po" label="&staff.circ.copy_status_overlay.cmd_find_acq_po.label;" accesskey="&staff.circ.copy_status_overlay.cmd_find_acq_po.accesskey;"/>
             <menuseparator/>
             <menuitem command="sel_edit" label="&staff.circ.copy_status_overlay.sel_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_edit.accesskey;" />
+            <menuitem command="sel_vol_copy_edit" label="&staff.circ.copy_status_overlay.sel_vol_copy_edit.label;" accesskey="&staff.circ.copy_status_overlay.sel_vol_copy_edit.accesskey;" />
             <menuseparator />
             <menuitem command="sel_mark_items_damaged" label="&staff.circ.copy_status_overlay.sel_mark_items_damaged.label;" accesskey="&staff.circ.copy_status_overlay.sel_mark_items_damaged.accesskey;"/>
             <menuseparator />