1 dump('entering cat.record_buckets.js\n');
3 function $(id) { return document.getElementById(id); }
5 if (typeof cat == 'undefined') cat = {};
6 cat.record_buckets = function (params) {
8 JSAN.use('util.error'); this.error = new util.error();
9 JSAN.use('util.network'); this.network = new util.network();
10 JSAN.use('util.date');
11 JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
12 var x = document.getElementById("record_buckets_tabbox");
17 if (ev.target.tagName == 'tabpanels') {
18 for (var i = 0; i < ev.target.childNodes.length; i++) {
19 var p = ev.target.childNodes[i].firstChild;
20 p.hidden = x.selectedIndex != i;
27 for (var i = 0; i < x.lastChild.childNodes.length; i++) {
28 var p = x.lastChild.childNodes[i].firstChild;
29 p.hidden = x.selectedIndex != i;
34 cat.record_buckets.pick_file = function (defaultFileName) {
35 var nsIFilePicker = Components.interfaces.nsIFilePicker;
36 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance( nsIFilePicker );
38 fp.init( window, $("catStrings").getString('staff.cat.record_buckets.save_file_as'), nsIFilePicker.modeSave );
40 fp.defaultString = defaultFileName;
42 fp.appendFilters( nsIFilePicker.filterAll );
44 var result = fp.show();
45 if ( (result == nsIFilePicker.returnOK || result == nsIFilePicker.returnReplace) && fp.file ) {
52 cat.record_buckets.export_records = function(obj, output_type) {
54 obj.list2.select_all();
55 obj.data.stash_retrieve();
56 JSAN.use('util.functional');
58 var record_ids = util.functional.map_list(
59 obj.list2.dump_retrieve_ids(),
60 function (o) { return JSON2js(o).docid }
63 var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
64 .createInstance(Components.interfaces.nsIWebBrowserPersist);
66 var proto_uri = 'https://' + window.location.hostname + '/exporter?format=' + output_type + '&ses=' + ses();
68 dump('Record Export URI is ' + proto_uri + '&id=' + record_ids.join('&id=') + '\n');
70 var uri = Components.classes["@mozilla.org/network/io-service;1"]
71 .getService(Components.interfaces.nsIIOService)
72 .newURI( proto_uri + '&id=' + record_ids.join('&id='), null, null );
74 var file = cat.record_buckets.pick_file('bucket.' + output_type);
77 persist.saveURI(uri,null,null,null,null,file);
79 alert( $("catStrings").getString('staff.cat.record_buckets.export_records.alert') );
83 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.export_records.std_unexpected_error'), E);
88 cat.record_buckets.prototype = {
89 'selection_list0' : [],
90 'selection_list1' : [],
91 'selection_list2' : [],
92 'bucket_id_name_map' : {},
94 'render_pending_records' : function() {
97 for (var i = 0; i < obj.record_ids.length; i++) {
98 var item = obj.prep_record_for_list( obj.record_ids[i] );
99 if (item) obj.list1.append( item );
103 'init' : function( params ) {
107 obj.record_ids = params['record_ids'] || [];
109 JSAN.use('circ.util');
110 var columns = circ.util.columns(
112 'title' : { 'hidden' : false },
113 'author' : { 'hidden' : false },
114 'edition' : { 'hidden' : false },
115 'publisher' : { 'hidden' : false },
116 'pubdate' : { 'hidden' : false },
117 'isbn' : { 'hidden' : false },
118 'tcn' : { 'hidden' : false }
122 JSAN.use('util.list');
124 function retrieve_row(params) {
125 var row = params.row;
127 obj.network.simple_request( 'MODS_SLIM_RECORD_RETRIEVE.authoritative', [ row.my.docid ],
130 var record = req.getResultObject();
131 if (typeof req.ilsevent != 'undefined') throw(req);
133 if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
136 obj.error.standard_unexpected_error_alert(
137 $("catStrings").getFormattedString('staff.cat.record_buckets.retrieve_row.std_unexpected_error', [row.my.docid]), E);
142 obj.error.sdump('D_ERROR','retrieve_row: ' + E );
147 obj.list0 = new util.list('record_query_list');
151 'retrieve_row' : retrieve_row,
152 'on_select' : function(ev) {
154 JSAN.use('util.functional');
155 var sel = obj.list0.retrieve_selection();
156 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
157 obj.selection_list0 = util.functional.map_list(
159 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
161 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 0 = ' + js2JSON(obj.selection_list1) );
162 if (obj.selection_list0.length == 0) {
163 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','true');
165 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','false');
168 alert('FIXME: ' + E);
175 obj.list1 = new util.list('pending_records_list');
179 'retrieve_row' : retrieve_row,
180 'on_select' : function(ev) {
182 JSAN.use('util.functional');
183 var sel = obj.list1.retrieve_selection();
184 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
185 obj.selection_list1 = util.functional.map_list(
187 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
189 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
190 if (obj.selection_list1.length == 0) {
191 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','true');
193 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','false');
196 alert('FIXME: ' + E);
203 obj.render_pending_records();
205 obj.list2 = new util.list('records_in_bucket_list');
209 'retrieve_row' : retrieve_row,
210 'on_select' : function(ev) {
212 JSAN.use('util.functional');
213 var sel = obj.list2.retrieve_selection();
214 obj.controller.view.sel_clip2.setAttribute('disabled', sel.length < 1 ? "true" : "false");
215 obj.selection_list2 = util.functional.map_list(
217 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
219 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
220 if (obj.selection_list2.length == 0) {
221 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','true');
222 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','true');
224 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','false');
225 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','false');
228 alert('FIXME: ' + E);
234 JSAN.use('util.controller'); obj.controller = new util.controller();
240 function() { obj.list2.save_columns(); }
244 function() { obj.list1.save_columns(); }
248 function() { obj.list0.save_columns(); }
252 function() { obj.list2.clipboard(); }
256 function() { obj.list1.clipboard(); }
260 function() { obj.list0.clipboard(); }
262 'record_query_input' : [
265 ev.addEventListener('keypress',function(ev){
266 if (ev.target.tagName != 'textbox') return;
267 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
271 'cmd_submit_query' : [
273 function() { obj.submit(); }
275 'record_buckets_menulist_placeholder' : [
279 JSAN.use('util.widgets'); JSAN.use('util.functional');
280 var buckets = obj.network.simple_request(
281 'BUCKET_RETRIEVE_VIA_USER',
282 [ ses(), obj.data.list.au[0].id() ]
284 if (typeof buckets.ilsevent != 'undefined') {
285 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.buckets.std_unexpected_error'), buckets);
289 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item1'),''],
290 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item2'),-1]
292 util.functional.map_list(
293 util.functional.filter_list(
296 return (o.btype() == 'staff_client' || o.btype() == 'vandelay_queue');
300 obj.bucket_id_name_map[ o.id() ] = o.name();
301 return [ o.name(), o.id() ];
305 if (a[0] < b[0]) return -1;
306 if (a[0] > b[0]) return 1;
311 obj.error.sdump('D_TRACE','items = ' + js2JSON(items));
312 util.widgets.remove_children( e );
313 var ml = util.widgets.make_menulist(
317 ml.setAttribute('id','bucket_menulist');
318 ml.setAttribute('accesskey','');
320 function change_bucket(ev) {
321 var bucket_id = ev.target.value;
322 if (bucket_id < 0 ) {
323 bucket_id = window.prompt($("catStrings").getString('staff.cat.record_buckets.change_bucket.bucket_id'));
324 ev.target.value = bucket_id;
325 ev.target.setAttribute('value',bucket_id);
327 if (!bucket_id) return;
328 var x = document.getElementById('info_box');
329 if (x) x.setAttribute('hidden','true');
330 x = document.getElementById('bucket_item_count');
331 if (x) x.setAttribute('label','');
332 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
333 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
334 obj.controller.view.record_buckets_export_records.disabled = true;
335 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
336 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
337 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
338 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','true');
339 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','true');
340 obj.controller.view.record_buckets_list_actions.disabled = true;
341 var bucket = obj.network.simple_request(
343 [ ses(), 'biblio', bucket_id ]
345 if (typeof bucket.ilsevent != 'undefined') {
346 if (bucket.ilsevent == 1506 /* CONTAINER_NOT_FOUND */) {
347 alert(catStrings.getFormattedString('staff.cat.record_buckets.menulist.change_bucket.undefined',[bucket_id]));
349 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.change_bucket.error'),bucket);
354 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','false');
355 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','false');
356 obj.controller.view.record_buckets_export_records.disabled = false;
357 obj.controller.view.cmd_merge_records.setAttribute('disabled','false');
358 obj.controller.view.cmd_delete_records.setAttribute('disabled','false');
359 obj.controller.view.cmd_sel_opac.setAttribute('disabled','false');
360 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','false');
361 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','false');
362 obj.controller.view.record_buckets_list_actions.disabled = false;
364 var x = document.getElementById('info_box');
365 x.setAttribute('hidden','false');
366 x = document.getElementById('bucket_number');
367 x.setAttribute('value',bucket.id());
368 x = document.getElementById('bucket_name');
369 x.setAttribute('value',bucket.name());
370 x = document.getElementById('bucket_owner');
371 var s = bucket.owner(); JSAN.use('patron.util');
372 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
373 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
377 var items = bucket.items() || [];
379 var x = document.getElementById('bucket_item_count');
380 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
381 for (var i = 0; i < items.length; i++) {
382 var item = obj.prep_record_for_list(
383 items[i].target_biblio_record_entry(),
386 if (item) obj.list2.append( item );
390 ml.addEventListener( 'change_bucket', change_bucket , false);
391 ml.addEventListener( 'command', function() {
392 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
394 obj.controller.view.bucket_menulist = ml;
395 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
400 'cmd_record_buckets_refresh' : [
403 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
407 'cmd_add_all_query_to_pending' : [
410 obj.list0.select_all();
411 for (var i = 0; i < obj.selection_list0.length; i++) {
412 var docid = obj.selection_list0[i].docid;
414 var item = obj.prep_record_for_list( docid );
416 obj.list1.append( item );
417 obj.record_ids.push( docid );
425 'cmd_add_sel_query_to_pending' : [
428 for (var i = 0; i < obj.selection_list0.length; i++) {
429 var docid = obj.selection_list0[i].docid;
431 var item = obj.prep_record_for_list( docid );
433 obj.list1.append( item );
434 obj.record_ids.push( docid );
443 'cmd_add_all_pending_to_record_bucket' : [
446 var bucket_id = obj.controller.view.bucket_menulist.value;
447 if (!bucket_id) return;
448 for (var i = 0; i < obj.record_ids.length; i++) {
449 var bucket_item = new cbrebi();
450 bucket_item.isnew('1');
451 bucket_item.bucket(bucket_id);
452 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
454 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
455 [ ses(), 'biblio', bucket_item ]);
457 if (typeof robj == 'object') throw robj;
459 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
462 obj.list2.append( item );
469 'cmd_add_sel_pending_to_record_bucket' : [
472 var bucket_id = obj.controller.view.bucket_menulist.value;
473 if (!bucket_id) return;
474 for (var i = 0; i < obj.selection_list1.length; i++) {
475 var docid = obj.selection_list1[i].docid;
476 var bucket_item = new cbrebi();
477 bucket_item.isnew('1');
478 bucket_item.bucket(bucket_id);
479 bucket_item.target_biblio_record_entry( docid );
481 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
482 [ ses(), 'biblio', bucket_item ]);
484 if (typeof robj == 'object') throw robj;
486 var item = obj.prep_record_for_list( docid, robj );
489 obj.list2.append( item );
497 'cmd_record_buckets_to_pending_buckets' : [
500 for (var i = 0; i < obj.selection_list2.length; i++) {
501 var docid = obj.selection_list2[i].docid;
502 var item = obj.prep_record_for_list( docid );
504 obj.list1.append( item );
505 obj.record_ids.push( docid );
511 'cmd_record_buckets_delete_item' : [
514 for (var i = 0; i < obj.selection_list2.length; i++) {
516 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
517 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
518 [ ses(), 'biblio', bucket_item_id ]);
519 if (typeof robj == 'object') throw robj;
526 JSAN.use('util.widgets');
527 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
532 'cmd_record_buckets_delete_bucket' : [
536 var bucket = obj.controller.view.bucket_menulist.value;
537 var name = obj.bucket_id_name_map[ bucket ];
538 var conf = window.confirm($("catStrings").getFormattedString('staff.cat.record_buckets.delete_bucket_named', [name]));
541 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
542 if (typeof robj == 'object') throw robj;
543 var x = document.getElementById('info_box');
544 x.setAttribute('hidden','true');
545 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
546 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
547 obj.controller.view.record_buckets_export_records.disabled = true;
548 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
549 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
550 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
551 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','true');
552 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','true');
553 obj.controller.view.record_buckets_list_actions.disabled = true;
554 obj.controller.render('record_buckets_menulist_placeholder');
557 JSAN.use('util.widgets');
558 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
563 alert('FIXME: ' + E);
567 'cmd_record_buckets_new_bucket' : [
572 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt'),
574 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt_title')
578 var bucket = new cbreb();
579 bucket.btype('staff_client');
580 bucket.owner( obj.data.list.au[0].id() );
583 var robj = obj.network.simple_request('BUCKET_CREATE',[ses(),'biblio',bucket]);
585 if (typeof robj == 'object') {
586 if (robj.ilsevent == 1710 /* CONTAINER_EXISTS */) {
587 alert($("catStrings").getString('staff.cat.record_buckets.new_bucket.same_name_alert'));
593 obj.controller.render('record_buckets_menulist_placeholder');
594 obj.controller.view.bucket_menulist.value = robj;
597 JSAN.use('util.widgets');
598 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
608 'cmd_record_query_csv_to_clipboard' : [ ['command'], function() { obj.list0.dump_csv_to_clipboard(); } ],
609 'cmd_pending_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list1.dump_csv_to_clipboard(); } ],
610 'cmd_record_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list2.dump_csv_to_clipboard(); } ],
611 'cmd_record_query_csv_to_printer' : [ ['command'], function() { obj.list0.dump_csv_to_printer(); } ],
612 'cmd_pending_buckets_csv_to_printer' : [ ['command'], function() { obj.list1.dump_csv_to_printer(); } ],
613 'cmd_record_buckets_csv_to_printer' : [ ['command'], function() { obj.list2.dump_csv_to_printer(); } ],
614 'cmd_record_query_csv_to_file' : [ ['command'], function() { obj.list0.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
615 'cmd_pending_buckets_csv_to_file' : [ ['command'], function() { obj.list1.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
616 'cmd_record_buckets_csv_to_file' : [ ['command'], function() { obj.list2.dump_csv_to_file( { 'defaultFileName' : 'bucket_records.txt' } ); } ],
618 'cmd_export_records_usmarc' : [
620 function () { return cat.record_buckets.export_records(obj, 'usmarc') }
623 'cmd_export_records_unimarc' : [
625 function () { return cat.record_buckets.export_records(obj, 'unimarc') }
628 'cmd_export_records_xml' : [
630 function () { return cat.record_buckets.export_records(obj, 'xml') }
633 'cmd_export_records_bre' : [
635 function () { return cat.record_buckets.export_records(obj, 'bre') }
638 'cmd_merge_records' : [
642 obj.list2.select_all();
643 obj.data.stash_retrieve();
644 JSAN.use('util.functional');
646 var record_ids = util.functional.map_list(
647 obj.list2.dump_retrieve_ids(),
649 return JSON2js(o).docid; // docid
654 '/xul/server/cat/bibs_abreast.xul',{
655 'tab_name' : $("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt_title')
658 'on_merge' : function() {
659 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
662 JSAN.use('util.widgets');
663 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
667 'record_ids':record_ids
672 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.merge_records.catch.std_unex_error'),E);
678 'cmd_delete_records' : [
682 obj.list2.select_all();
683 obj.data.stash_retrieve();
684 JSAN.use('util.functional');
686 var record_ids = util.functional.map_list(
687 obj.list2.dump_retrieve_ids(),
689 return JSON2js(o).docid; // docid
693 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
694 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.delete_records.xml1') + '</description>';
696 top_xml += '<button id="lead" disabled="false" label="'
697 + $("catStrings").getString('staff.cat.record_buckets.delete_records.button.label')
698 + '" name="fancy_submit"/>';
699 top_xml += '<button label="'
700 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.label') +'" accesskey="'
701 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
703 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
704 xml += '<table><tr valign="top">';
705 for (var i = 0; i < record_ids.length; i++) {
706 xml += '<td>' + $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.xml2', [record_ids[i]]) + '</td>';
708 xml += '</tr><tr valign="top">';
709 for (var i = 0; i < record_ids.length; i++) {
710 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
711 xml += '?docid=' + record_ids[i] + '" oils_force_external="true"/></td>';
713 xml += '</tr><tr valign="top">';
714 for (var i = 0; i < record_ids.length; i++) {
715 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="' + urls.XUL_MARC_VIEW + '?docid=' + record_ids[i] + ' " oils_force_external="true"/></td>';
717 xml += '</tr></table></form>';
718 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
719 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
720 JSAN.use('util.window'); var win = new util.window();
721 var fancy_prompt_data = win.open(
722 urls.XUL_FANCY_PROMPT,
723 //+ '?xml_in_stash=temp_merge_mid'
724 //+ '&top_xml_in_stash=temp_merge_top'
725 //+ '&title=' + window.escape('Record Purging'),
726 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
728 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt_title')
731 //obj.data.stash_retrieve();
732 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') {
733 alert($("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt.alert'));
737 for (var i = 0; i < record_ids.length; i++) {
738 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
739 if (typeof robj.ilsevent != 'undefined') {
740 if (!s) s = $("catStrings").getString('staff.cat.record_buckets.delete_records.s1');
741 s += $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.s2', [record_ids[i], robj.textcode, robj.desc]);
746 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
749 JSAN.use('util.widgets');
750 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
754 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.delete_records.catch.std_unex_err',E));
762 function() { alert($("catStrings").getString('staff.cat.record_buckets.cmd_broken.alert')); }
768 obj.list2.select_all();
769 JSAN.use('util.functional');
770 var docids = util.functional.map_list(
771 obj.list2.dump_retrieve_ids(),
773 return JSON2js(o).docid; // docid
777 for (var i = 0; i < docids.length; i++) {
778 var doc_id = docids[i];
779 if (seen[doc_id]) continue; seen[doc_id] = true;
780 var opac_url = xulG.url_prefix('opac_rdetail') + doc_id;
781 var content_params = {
783 'authtime' : ses('authtime'),
784 'opac_url' : opac_url
787 xulG.url_prefix('XUL_OPAC_WRAPPER'),
788 {'tab_name':$("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.tab_name')},
793 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.catch.std_unex_err'),E);
797 'cmd_marc_batch_edit' : [
801 var bucket_id = obj.controller.view.bucket_menulist.value;
802 if (!bucket_id) return;
803 obj.list2.select_all();
805 urls.MARC_BATCH_EDIT + '?containerid='+bucket_id+'&recordSource=b',
807 'tab_name' : $('offlineStrings').getString('menu.cmd_marc_batch_edit.tab')
812 alert('Error in record_buckets.js, cmd_marc_batch_edit: ' + E);
816 'cmd_transfer_title_holds' : [
820 obj.list2.select_all();
821 JSAN.use('util.functional');
822 var docids = util.functional.map_list(
823 obj.list2.dump_retrieve_ids(),
825 return JSON2js(o).docid; // docid
828 JSAN.use('cat.util');
829 cat.util.transfer_title_holds(docids);
831 alert('Error in record_buckets.js, cmd_transfer_title_holds: ' + E);
836 'record_buckets_export_records' : [ ['render'], function(){} ],
837 'record_buckets_list_actions' : [ ['render'], function(){} ]
841 this.controller.render();
843 if (typeof xulG == 'undefined') {
844 obj.controller.view.cmd_sel_opac.disabled = true;
845 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
849 'submit' : function() {
852 var x = document.getElementById('record_query_input');
854 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
858 var y = document.getElementById('query_status');
860 if (y) y.value = $("catStrings").getString('staff.cat.record_buckets.submit.query_status');
861 obj.network.simple_request(
862 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
863 [ { 'limit' : 100 }, x.value, 1 ],
866 var resp = req.getResultObject();
867 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
869 if (resp.count > 0) {
870 JSAN.use('util.exec'); var exec = new util.exec();
872 for (var i = 0; i < resp.ids.length; i++) {
876 obj.list0.append(obj.prep_record_for_list(b));
883 obj.controller.view.record_query_input.focus();
884 obj.controller.view.record_query_input.select();
889 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
892 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
897 this.error.standard_unexpected_error_alert('submit_query',E);
901 'prep_record_for_list' : function(docid,bucket_item_id) {
905 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
909 'bucket_item_id' : bucket_item_id
915 obj.error.standard_unexpected_error_alert($("catStrings").getFormattedString('staff.cat.record_buckets.prep_record_for_list.std_unex_err', [docid]),E);
922 dump('exiting cat.record_buckets.js\n');