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 = 'oils://remote/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.cmd_record_buckets_zsearch.setAttribute('disabled','true');
335 obj.controller.view.record_buckets_export_records.disabled = true;
336 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
337 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
338 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
339 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','true');
340 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','true');
341 obj.controller.view.record_buckets_list_actions.disabled = true;
342 var bucket = obj.network.simple_request(
344 [ ses(), 'biblio', bucket_id ]
346 if (typeof bucket.ilsevent != 'undefined') {
347 if (bucket.ilsevent == 1506 /* CONTAINER_NOT_FOUND */) {
348 alert(catStrings.getFormattedString('staff.cat.record_buckets.menulist.change_bucket.undefined',[bucket_id]));
350 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.change_bucket.error'),bucket);
355 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','false');
356 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','false');
357 obj.controller.view.cmd_record_buckets_zsearch.setAttribute('disabled','false');
358 obj.controller.view.record_buckets_export_records.disabled = false;
359 obj.controller.view.cmd_merge_records.setAttribute('disabled','false');
360 obj.controller.view.cmd_delete_records.setAttribute('disabled','false');
361 obj.controller.view.cmd_sel_opac.setAttribute('disabled','false');
362 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','false');
363 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','false');
364 obj.controller.view.record_buckets_list_actions.disabled = false;
366 var x = document.getElementById('info_box');
367 x.setAttribute('hidden','false');
368 x = document.getElementById('bucket_number');
369 x.setAttribute('value',bucket.id());
370 x = document.getElementById('bucket_name');
371 x.setAttribute('value',bucket.name());
372 x = document.getElementById('bucket_owner');
373 var s = bucket.owner(); JSAN.use('patron.util');
374 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
375 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
379 var items = bucket.items() || [];
381 var x = document.getElementById('bucket_item_count');
382 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
383 for (var i = 0; i < items.length; i++) {
384 var item = obj.prep_record_for_list(
385 items[i].target_biblio_record_entry(),
388 if (item) obj.list2.append( item );
392 ml.addEventListener( 'change_bucket', change_bucket , false);
393 ml.addEventListener( 'command', function() {
394 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
396 obj.controller.view.bucket_menulist = ml;
397 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
402 'cmd_record_buckets_refresh' : [
405 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
409 'cmd_add_all_query_to_pending' : [
412 obj.list0.select_all();
413 for (var i = 0; i < obj.selection_list0.length; i++) {
414 var docid = obj.selection_list0[i].docid;
416 var item = obj.prep_record_for_list( docid );
418 obj.list1.append( item );
419 obj.record_ids.push( docid );
427 'cmd_add_sel_query_to_pending' : [
430 for (var i = 0; i < obj.selection_list0.length; i++) {
431 var docid = obj.selection_list0[i].docid;
433 var item = obj.prep_record_for_list( docid );
435 obj.list1.append( item );
436 obj.record_ids.push( docid );
445 'cmd_add_all_pending_to_record_bucket' : [
448 var bucket_id = obj.controller.view.bucket_menulist.value;
449 if (!bucket_id) return;
450 for (var i = 0; i < obj.record_ids.length; i++) {
451 var bucket_item = new cbrebi();
452 bucket_item.isnew('1');
453 bucket_item.bucket(bucket_id);
454 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
456 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
457 [ ses(), 'biblio', bucket_item ]);
459 if (typeof robj == 'object') throw robj;
461 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
464 obj.list2.append( item );
471 'cmd_add_sel_pending_to_record_bucket' : [
474 var bucket_id = obj.controller.view.bucket_menulist.value;
475 if (!bucket_id) return;
476 for (var i = 0; i < obj.selection_list1.length; i++) {
477 var docid = obj.selection_list1[i].docid;
478 var bucket_item = new cbrebi();
479 bucket_item.isnew('1');
480 bucket_item.bucket(bucket_id);
481 bucket_item.target_biblio_record_entry( docid );
483 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
484 [ ses(), 'biblio', bucket_item ]);
486 if (typeof robj == 'object') throw robj;
488 var item = obj.prep_record_for_list( docid, robj );
491 obj.list2.append( item );
499 'cmd_record_buckets_to_pending_buckets' : [
502 for (var i = 0; i < obj.selection_list2.length; i++) {
503 var docid = obj.selection_list2[i].docid;
504 var item = obj.prep_record_for_list( docid );
506 obj.list1.append( item );
507 obj.record_ids.push( docid );
513 'cmd_record_buckets_delete_item' : [
516 for (var i = 0; i < obj.selection_list2.length; i++) {
518 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
519 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
520 [ ses(), 'biblio', bucket_item_id ]);
521 if (typeof robj == 'object') throw robj;
528 JSAN.use('util.widgets');
529 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
534 'cmd_record_buckets_delete_bucket' : [
538 var bucket = obj.controller.view.bucket_menulist.value;
539 var name = obj.bucket_id_name_map[ bucket ];
540 var conf = window.confirm($("catStrings").getFormattedString('staff.cat.record_buckets.delete_bucket_named', [name]));
543 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
544 if (typeof robj == 'object') throw robj;
545 var x = document.getElementById('info_box');
546 x.setAttribute('hidden','true');
547 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
548 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
549 obj.controller.view.cmd_record_buckets_zsearch.setAttribute('disabled','true');
550 obj.controller.view.record_buckets_export_records.disabled = true;
551 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
552 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
553 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
554 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','true');
555 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','true');
556 obj.controller.view.record_buckets_list_actions.disabled = true;
557 obj.controller.render('record_buckets_menulist_placeholder');
560 JSAN.use('util.widgets');
561 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
566 alert('FIXME: ' + E);
570 'cmd_record_buckets_new_bucket' : [
575 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt'),
577 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt_title')
581 var bucket = new cbreb();
582 bucket.btype('staff_client');
583 bucket.owner( obj.data.list.au[0].id() );
586 var robj = obj.network.simple_request('BUCKET_CREATE',[ses(),'biblio',bucket]);
588 if (typeof robj == 'object') {
589 if (robj.ilsevent == 1710 /* CONTAINER_EXISTS */) {
590 alert($("catStrings").getString('staff.cat.record_buckets.new_bucket.same_name_alert'));
596 obj.controller.render('record_buckets_menulist_placeholder');
597 obj.controller.view.bucket_menulist.value = robj;
600 JSAN.use('util.widgets');
601 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
611 'cmd_record_query_csv_to_clipboard' : [ ['command'], function() { obj.list0.dump_csv_to_clipboard(); } ],
612 'cmd_pending_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list1.dump_csv_to_clipboard(); } ],
613 'cmd_record_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list2.dump_csv_to_clipboard(); } ],
614 'cmd_record_query_csv_to_printer' : [ ['command'], function() { obj.list0.dump_csv_to_printer(); } ],
615 'cmd_pending_buckets_csv_to_printer' : [ ['command'], function() { obj.list1.dump_csv_to_printer(); } ],
616 'cmd_record_buckets_csv_to_printer' : [ ['command'], function() { obj.list2.dump_csv_to_printer(); } ],
617 'cmd_record_query_csv_to_file' : [ ['command'], function() { obj.list0.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
618 'cmd_pending_buckets_csv_to_file' : [ ['command'], function() { obj.list1.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
619 'cmd_record_buckets_csv_to_file' : [ ['command'], function() { obj.list2.dump_csv_to_file( { 'defaultFileName' : 'bucket_records.txt' } ); } ],
621 'cmd_export_records_usmarc' : [
623 function () { return cat.record_buckets.export_records(obj, 'usmarc') }
626 'cmd_export_records_unimarc' : [
628 function () { return cat.record_buckets.export_records(obj, 'unimarc') }
631 'cmd_export_records_xml' : [
633 function () { return cat.record_buckets.export_records(obj, 'xml') }
636 'cmd_export_records_bre' : [
638 function () { return cat.record_buckets.export_records(obj, 'bre') }
641 'cmd_merge_records' : [
645 obj.list2.select_all();
646 obj.data.stash_retrieve();
647 JSAN.use('util.functional');
649 var record_ids = util.functional.map_list(
650 obj.list2.dump_retrieve_ids(),
652 return JSON2js(o).docid; // docid
657 'oils://remote/xul/server/cat/bibs_abreast.xul',{
658 'tab_name' : $("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt_title')
661 'on_merge' : function() {
662 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
665 JSAN.use('util.widgets');
666 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
670 'record_ids':record_ids
675 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.merge_records.catch.std_unex_error'),E);
681 'cmd_delete_records' : [
685 obj.list2.select_all();
686 obj.data.stash_retrieve();
687 JSAN.use('util.functional');
689 var record_ids = util.functional.map_list(
690 obj.list2.dump_retrieve_ids(),
692 return JSON2js(o).docid; // docid
696 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
697 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.delete_records.xml1') + '</description>';
699 top_xml += '<button id="lead" disabled="false" label="'
700 + $("catStrings").getString('staff.cat.record_buckets.delete_records.button.label')
701 + '" name="fancy_submit"/>';
702 top_xml += '<button label="'
703 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.label') +'" accesskey="'
704 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
706 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
707 xml += '<table><tr valign="top">';
708 for (var i = 0; i < record_ids.length; i++) {
709 xml += '<td>' + $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.xml2', [record_ids[i]]) + '</td>';
711 xml += '</tr><tr valign="top">';
712 for (var i = 0; i < record_ids.length; i++) {
713 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
714 xml += '?docid=' + record_ids[i] + '" oils_force_external="true"/></td>';
716 xml += '</tr><tr valign="top">';
717 for (var i = 0; i < record_ids.length; i++) {
718 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>';
720 xml += '</tr></table></form>';
721 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
722 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
723 JSAN.use('util.window'); var win = new util.window();
724 var fancy_prompt_data = win.open(
725 urls.XUL_FANCY_PROMPT,
726 //+ '?xml_in_stash=temp_merge_mid'
727 //+ '&top_xml_in_stash=temp_merge_top'
728 //+ '&title=' + window.escape('Record Purging'),
729 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
731 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt_title')
734 //obj.data.stash_retrieve();
735 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') {
736 alert($("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt.alert'));
740 for (var i = 0; i < record_ids.length; i++) {
741 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
742 if (typeof robj.ilsevent != 'undefined') {
743 if (!s) s = $("catStrings").getString('staff.cat.record_buckets.delete_records.s1');
744 s += $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.s2', [record_ids[i], robj.textcode, robj.desc]);
749 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
752 JSAN.use('util.widgets');
753 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
757 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.delete_records.catch.std_unex_err',E));
765 function() { alert($("catStrings").getString('staff.cat.record_buckets.cmd_broken.alert')); }
771 obj.list2.select_all();
772 JSAN.use('util.functional');
773 var docids = util.functional.map_list(
774 obj.list2.dump_retrieve_ids(),
776 return JSON2js(o).docid; // docid
780 for (var i = 0; i < docids.length; i++) {
781 var doc_id = docids[i];
782 if (seen[doc_id]) continue; seen[doc_id] = true;
783 var opac_url = xulG.url_prefix('opac_rdetail') + doc_id;
784 var content_params = {
786 'authtime' : ses('authtime'),
787 'opac_url' : opac_url
790 xulG.url_prefix('XUL_OPAC_WRAPPER'),
791 {'tab_name':$("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.tab_name')},
796 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.catch.std_unex_err'),E);
800 'cmd_marc_batch_edit' : [
804 var bucket_id = obj.controller.view.bucket_menulist.value;
805 if (!bucket_id) return;
806 obj.list2.select_all();
808 urls.MARC_BATCH_EDIT + '?containerid='+bucket_id+'&recordSource=b',
810 'tab_name' : $('offlineStrings').getString('menu.cmd_marc_batch_edit.tab')
815 alert('Error in record_buckets.js, cmd_marc_batch_edit: ' + E);
819 'cmd_transfer_title_holds' : [
823 obj.list2.select_all();
824 JSAN.use('util.functional');
825 var docids = util.functional.map_list(
826 obj.list2.dump_retrieve_ids(),
828 return JSON2js(o).docid; // docid
831 JSAN.use('cat.util');
832 cat.util.transfer_title_holds(docids);
834 alert('Error in record_buckets.js, cmd_transfer_title_holds: ' + E);
838 'cmd_record_buckets_zsearch' : [
842 var bucket_id = obj.controller.view.bucket_menulist.value;
845 // TODO: constants.js
846 xulG.url_prefix("oils://remote/xul/server/cat/bucketz39_dialog.xul"),
848 "width=800,height=500",
849 obj.data.list.au[0].id(),
856 alert('Error in record_buckets.js, cmd_record_buckets_zsearch: ' + E);
861 'record_buckets_export_records' : [ ['render'], function(){} ],
862 'record_buckets_list_actions' : [ ['render'], function(){} ]
866 this.controller.render();
868 if (typeof xulG == 'undefined') {
869 obj.controller.view.cmd_sel_opac.disabled = true;
870 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
874 'submit' : function() {
877 var x = document.getElementById('record_query_input');
879 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
883 var y = document.getElementById('query_status');
885 if (y) y.value = $("catStrings").getString('staff.cat.record_buckets.submit.query_status');
886 obj.network.simple_request(
887 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
888 [ { 'limit' : 100 }, x.value, 1 ],
891 var resp = req.getResultObject();
892 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
894 if (resp.count > 0) {
895 JSAN.use('util.exec'); var exec = new util.exec();
897 for (var i = 0; i < resp.ids.length; i++) {
901 obj.list0.append(obj.prep_record_for_list(b));
908 obj.controller.view.record_query_input.focus();
909 obj.controller.view.record_query_input.select();
914 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
917 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
922 this.error.standard_unexpected_error_alert('submit_query',E);
926 'prep_record_for_list' : function(docid,bucket_item_id) {
930 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
934 'bucket_item_id' : bucket_item_id
940 obj.error.standard_unexpected_error_alert($("catStrings").getFormattedString('staff.cat.record_buckets.prep_record_for_list.std_unex_err', [docid]),E);
947 dump('exiting cat.record_buckets.js\n');