1 dump('entering cat/util.js\n');
3 if (typeof cat == 'undefined') var cat = {};
7 'spawn_copy_editor', 'add_copies_to_bucket', 'show_in_opac', 'spawn_spine_editor', 'transfer_copies',
9 cat.util.EXPORT_TAGS = { ':all' : cat.util.EXPORT_OK };
11 cat.util.transfer_copies = function(params) {
12 JSAN.use('util.error'); var error = new util.error();
13 JSAN.use('OpenILS.data'); var data = new OpenILS.data();
14 JSAN.use('util.network'); var network = new util.network();
16 data.stash_retrieve();
17 if (!data.marked_volume) {
18 alert('Please mark a volume as the destination from within holdings maintenance and then try this again.');
21 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
22 var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: auto">';
23 if (!params.message) {
24 params.message = 'Transfer items from their original volumes to ';
25 params.message += data.hash.aou[ params.owning_lib ].shortname() + "'s volume labelled ";
26 params.message += '"' + params.volume_label + '" on the following record?';
29 xml += '<description>' + params.message + '</description>';
30 xml += '<hbox><button label="Transfer" name="fancy_submit"/>';
31 xml += '<button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox>';
32 xml += '<iframe style="overflow: scroll" flex="1" src="' + urls.XUL_BIB_BRIEF + '?docid=' + params.docid + '"/>';
34 data.temp_transfer = xml; data.stash('temp_transfer');
37 + '?xml_in_stash=temp_transfer'
38 + '&title=' + window.escape('Item Transfer'),
39 'fancy_prompt', 'chrome,resizable,modal,width=500,height=300'
41 data.stash_retrieve();
42 if (data.fancy_prompt_data == '') { alert('Transfer Aborted'); return; }
44 JSAN.use('util.functional');
46 var copies = network.simple_request('FM_ACP_FLESHED_BATCH_RETRIEVE', [ params.copy_ids ]);
48 for (var i = 0; i < copies.length; i++) {
49 copies[i].call_number( data.marked_volume );
50 copies[i].circ_lib( params.owning_lib );
51 copies[i].ischanged( 1 );
54 var robj = network.simple_request(
55 'FM_ACP_FLESHED_BATCH_UPDATE',
56 [ ses(), copies, true ],
59 'title' : 'Override Transfer Failure?',
60 'overridable_events' : [
61 1208 /* TITLE_LAST_COPY */,
66 if (typeof robj.ilsevent != 'undefined') {
69 alert('Items transferred.');
73 error.standard_unexpected_error_alert('All items not likely transferred.',E);
77 cat.util.spawn_spine_editor = function(selection_list) {
78 JSAN.use('util.error'); var error = new util.error();
80 JSAN.use('util.functional');
82 xulG.url_prefix( urls.XUL_SPINE_LABEL ) + '?barcodes='
83 + js2JSON( util.functional.map_list(selection_list,function(o){return o.barcode;}) ),
84 { 'tab_name' : 'Spine Labels' },
88 error.standard_unexpected_error_alert('Spine Labels',E);
92 cat.util.show_in_opac = function(selection_list) {
93 JSAN.use('util.error'); var error = new util.error();
94 var doc_id; var seen = {};
96 for (var i = 0; i < selection_list.length; i++) {
97 doc_id = selection_list[i].doc_id;
99 alert(selection_list[i].barcode + ' is not cataloged');
102 if (typeof seen[doc_id] != 'undefined') {
106 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
107 var content_params = {
109 'authtime' : ses('authtime'),
110 'opac_url' : opac_url,
113 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
114 {'tab_name':'Retrieving title...'},
119 error.standard_unexpected_error_alert('Error opening catalog for document id = ' + doc_id,E);
123 cat.util.add_copies_to_bucket = function(selection_list) {
124 JSAN.use('util.functional');
125 JSAN.use('util.window'); var win = new util.window();
126 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
127 data.cb_temp_copy_ids = js2JSON(
128 util.functional.map_list(
131 if (typeof o.copy_id != 'undefined' && o.copy_id != null) {
139 data.stash('cb_temp_copy_ids');
141 xulG.url_prefix(urls.XUL_COPY_BUCKETS_QUICK),
142 'sel_bucket_win' + win.window_name_increment(),
143 'chrome,resizable,modal,center'
147 cat.util.spawn_copy_editor = function(list,edit) {
150 JSAN.use('OpenILS.data'); obj.data = new OpenILS.data(); obj.data.init({'via':'stash'});
151 JSAN.use('util.network'); obj.network = new util.network();
152 JSAN.use('util.error'); obj.error = new util.error();
154 var title = list.length == 1 ? '' : 'Batch ';
155 title += edit == 1 ? 'Edit' : 'View';
156 title += ' Copy Attributes';
158 JSAN.use('util.window'); var win = new util.window();
159 obj.data.temp_copies = undefined; obj.data.stash('temp_copies');
160 obj.data.temp_callnumbers = undefined; obj.data.stash('temp_callnumbers');
161 obj.data.temp_copy_ids = js2JSON(list);
162 obj.data.stash('temp_copy_ids');
164 window.xulG.url_prefix(urls.XUL_COPY_EDITOR)
167 'chrome,modal,resizable'
169 /* FIXME -- need to unique the temp space, and not rely on modalness of window */
170 obj.data.stash_retrieve();
171 if (!obj.data.temp_copies) return;
172 var copies = JSON2js( obj.data.temp_copies );
173 obj.data.temp_copies = undefined; obj.data.stash('temp_copies');
174 obj.data.temp_callnumbers = undefined; obj.data.stash('temp_callnumbers');
175 obj.data.temp_copy_ids = undefined; obj.data.stash('temp_copy_ids');
176 obj.error.sdump('D_CAT','in cat/copy_status, copy editor, copies =\n<<' + copies + '>>');
177 if (edit=='1' && copies!='' && typeof copies != 'undefined') {
179 var r = obj.network.request(
180 api.FM_ACP_FLESHED_BATCH_UPDATE.app,
181 api.FM_ACP_FLESHED_BATCH_UPDATE.method,
182 [ ses(), copies, true ]
184 /* FIXME -- revisit the return value here */
186 obj.error.standard_unexpected_error_alert('copy update error',E);
189 //alert('not updating');
196 dump('exiting cat/util.js\n');