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 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
37 var nsIFilePicker = Components.interfaces.nsIFilePicker;
38 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance( nsIFilePicker );
40 fp.init( window, $("catStrings").getString('staff.cat.record_buckets.save_file_as'), nsIFilePicker.modeSave );
42 fp.defaultString = defaultFileName;
44 fp.appendFilters( nsIFilePicker.filterAll );
46 var result = fp.show();
47 if ( (result == nsIFilePicker.returnOK || result == nsIFilePicker.returnReplace) && fp.file ) {
54 cat.record_buckets.export_records = function(obj, output_type) {
56 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
57 obj.list2.select_all();
58 obj.data.stash_retrieve();
59 JSAN.use('util.functional');
61 var record_ids = util.functional.map_list(
62 obj.list2.dump_retrieve_ids(),
63 function (o) { return JSON2js(o).docid }
66 var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
67 .createInstance(Components.interfaces.nsIWebBrowserPersist);
69 var proto_uri = 'https://' + window.location.hostname + '/exporter?format=' + output_type + '&ses=' + ses();
71 dump('Record Export URI is ' + proto_uri + '&id=' + record_ids.join('&id=') + '\n');
73 var uri = Components.classes["@mozilla.org/network/io-service;1"]
74 .getService(Components.interfaces.nsIIOService)
75 .newURI( proto_uri + '&id=' + record_ids.join('&id='), null, null );
77 var file = cat.record_buckets.pick_file('bucket.' + output_type);
80 persist.saveURI(uri,null,null,null,null,file);
82 alert( $("catStrings").getString('staff.cat.record_buckets.export_records.alert') );
86 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.export_records.std_unexpected_error'), E);
91 cat.record_buckets.prototype = {
92 'selection_list0' : [],
93 'selection_list1' : [],
94 'selection_list2' : [],
95 'bucket_id_name_map' : {},
97 'render_pending_records' : function() {
100 for (var i = 0; i < obj.record_ids.length; i++) {
101 var item = obj.prep_record_for_list( obj.record_ids[i] );
102 if (item) obj.list1.append( item );
106 'init' : function( params ) {
110 obj.record_ids = params['record_ids'] || [];
112 JSAN.use('circ.util');
113 var columns = circ.util.columns(
115 'title' : { 'hidden' : false },
116 'author' : { 'hidden' : false },
117 'edition' : { 'hidden' : false },
118 'publisher' : { 'hidden' : false },
119 'pubdate' : { 'hidden' : false },
120 'isbn' : { 'hidden' : false },
121 'tcn' : { 'hidden' : false }
125 JSAN.use('util.list');
127 function retrieve_row(params) {
128 var row = params.row;
130 obj.network.simple_request( 'MODS_SLIM_RECORD_RETRIEVE.authoritative', [ row.my.docid ],
133 var record = req.getResultObject();
134 if (typeof req.ilsevent != 'undefined') throw(req);
136 if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
139 obj.error.standard_unexpected_error_alert(
140 $("catStrings").getFormattedString('staff.cat.record_buckets.retrieve_row.std_unexpected_error', [row.my.docid]), E);
145 obj.error.sdump('D_ERROR','retrieve_row: ' + E );
150 obj.list0 = new util.list('record_query_list');
154 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
155 'retrieve_row' : retrieve_row,
156 'on_select' : function(ev) {
158 JSAN.use('util.functional');
159 var sel = obj.list0.retrieve_selection();
160 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
161 obj.selection_list0 = util.functional.map_list(
163 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
165 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 0 = ' + js2JSON(obj.selection_list1) );
166 if (obj.selection_list0.length == 0) {
167 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','true');
169 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','false');
172 alert('FIXME: ' + E);
179 obj.list1 = new util.list('pending_records_list');
183 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
184 'retrieve_row' : retrieve_row,
185 'on_select' : function(ev) {
187 JSAN.use('util.functional');
188 var sel = obj.list1.retrieve_selection();
189 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
190 obj.selection_list1 = util.functional.map_list(
192 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
194 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
195 if (obj.selection_list1.length == 0) {
196 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','true');
198 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','false');
201 alert('FIXME: ' + E);
208 obj.render_pending_records();
210 obj.list2 = new util.list('records_in_bucket_list');
214 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
215 'retrieve_row' : retrieve_row,
216 'on_select' : function(ev) {
218 JSAN.use('util.functional');
219 var sel = obj.list2.retrieve_selection();
220 obj.controller.view.sel_clip2.setAttribute('disabled', sel.length < 1 ? "true" : "false");
221 obj.selection_list2 = util.functional.map_list(
223 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
225 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
226 if (obj.selection_list2.length == 0) {
227 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','true');
228 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','true');
230 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','false');
231 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','false');
234 alert('FIXME: ' + E);
240 JSAN.use('util.controller'); obj.controller = new util.controller();
246 function() { obj.list2.save_columns(); }
250 function() { obj.list1.save_columns(); }
254 function() { obj.list0.save_columns(); }
258 function() { obj.list2.clipboard(); }
262 function() { obj.list1.clipboard(); }
266 function() { obj.list0.clipboard(); }
268 'record_query_input' : [
271 ev.addEventListener('keypress',function(ev){
272 if (ev.target.tagName != 'textbox') return;
273 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
277 'cmd_submit_query' : [
279 function() { obj.submit(); }
281 'record_buckets_menulist_placeholder' : [
285 JSAN.use('util.widgets'); JSAN.use('util.functional');
286 var buckets = obj.network.simple_request(
287 'BUCKET_RETRIEVE_VIA_USER',
288 [ ses(), obj.data.list.au[0].id() ]
290 if (typeof buckets.ilsevent != 'undefined') {
291 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.buckets.std_unexpected_error'), buckets);
295 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item1'),''],
296 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item2'),-1]
298 util.functional.map_list(
299 util.functional.filter_list(
302 return o.btype() == 'staff_client';
306 obj.bucket_id_name_map[ o.id() ] = o.name();
307 return [ o.name(), o.id() ];
311 if (a[0] < b[0]) return -1;
312 if (a[0] > b[0]) return 1;
317 obj.error.sdump('D_TRACE','items = ' + js2JSON(items));
318 util.widgets.remove_children( e );
319 var ml = util.widgets.make_menulist(
323 ml.setAttribute('id','bucket_menulist');
324 ml.setAttribute('accesskey','');
326 function change_bucket(ev) {
327 var bucket_id = ev.target.value;
328 if (bucket_id < 0 ) {
329 bucket_id = window.prompt($("catStrings").getString('staff.cat.record_buckets.change_bucket.bucket_id'));
330 ev.target.value = bucket_id;
331 ev.target.setAttribute('value',bucket_id);
333 if (!bucket_id) return;
334 var x = document.getElementById('info_box');
335 if (x) x.setAttribute('hidden','true');
336 x = document.getElementById('bucket_item_count');
337 if (x) x.setAttribute('label','');
338 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
339 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
340 obj.controller.view.record_buckets_export_records.disabled = true;
341 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
342 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
343 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
344 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','true');
345 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','true');
346 obj.controller.view.record_buckets_list_actions.disabled = true;
347 var bucket = obj.network.simple_request(
349 [ ses(), 'biblio', bucket_id ]
351 if (typeof bucket.ilsevent != 'undefined') {
352 if (bucket.ilsevent == 1506 /* CONTAINER_NOT_FOUND */) {
353 alert(catStrings.getFormattedString('staff.cat.record_buckets.menulist.change_bucket.undefined',[bucket_id]));
355 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.change_bucket.error'),bucket);
360 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','false');
361 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','false');
362 obj.controller.view.record_buckets_export_records.disabled = false;
363 obj.controller.view.cmd_merge_records.setAttribute('disabled','false');
364 obj.controller.view.cmd_delete_records.setAttribute('disabled','false');
365 obj.controller.view.cmd_sel_opac.setAttribute('disabled','false');
366 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','false');
367 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','false');
368 obj.controller.view.record_buckets_list_actions.disabled = false;
370 var x = document.getElementById('info_box');
371 x.setAttribute('hidden','false');
372 x = document.getElementById('bucket_number');
373 x.setAttribute('value',bucket.id());
374 x = document.getElementById('bucket_name');
375 x.setAttribute('value',bucket.name());
376 x = document.getElementById('bucket_owner');
377 var s = bucket.owner(); JSAN.use('patron.util');
378 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
379 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
383 var items = bucket.items() || [];
385 var x = document.getElementById('bucket_item_count');
386 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
387 for (var i = 0; i < items.length; i++) {
388 var item = obj.prep_record_for_list(
389 items[i].target_biblio_record_entry(),
392 if (item) obj.list2.append( item );
396 ml.addEventListener( 'change_bucket', change_bucket , false);
397 ml.addEventListener( 'command', function() {
398 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
400 obj.controller.view.bucket_menulist = ml;
401 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
406 'cmd_record_buckets_refresh' : [
409 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
413 'cmd_add_all_query_to_pending' : [
416 obj.list0.select_all();
417 for (var i = 0; i < obj.selection_list0.length; i++) {
418 var docid = obj.selection_list0[i].docid;
420 var item = obj.prep_record_for_list( docid );
422 obj.list1.append( item );
423 obj.record_ids.push( docid );
431 'cmd_add_sel_query_to_pending' : [
434 for (var i = 0; i < obj.selection_list0.length; i++) {
435 var docid = obj.selection_list0[i].docid;
437 var item = obj.prep_record_for_list( docid );
439 obj.list1.append( item );
440 obj.record_ids.push( docid );
449 'cmd_add_all_pending_to_record_bucket' : [
452 var bucket_id = obj.controller.view.bucket_menulist.value;
453 if (!bucket_id) return;
454 for (var i = 0; i < obj.record_ids.length; i++) {
455 var bucket_item = new cbrebi();
456 bucket_item.isnew('1');
457 bucket_item.bucket(bucket_id);
458 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
460 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
461 [ ses(), 'biblio', bucket_item ]);
463 if (typeof robj == 'object') throw robj;
465 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
468 obj.list2.append( item );
475 'cmd_add_sel_pending_to_record_bucket' : [
478 var bucket_id = obj.controller.view.bucket_menulist.value;
479 if (!bucket_id) return;
480 for (var i = 0; i < obj.selection_list1.length; i++) {
481 var docid = obj.selection_list1[i].docid;
482 var bucket_item = new cbrebi();
483 bucket_item.isnew('1');
484 bucket_item.bucket(bucket_id);
485 bucket_item.target_biblio_record_entry( docid );
487 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
488 [ ses(), 'biblio', bucket_item ]);
490 if (typeof robj == 'object') throw robj;
492 var item = obj.prep_record_for_list( docid, robj );
495 obj.list2.append( item );
503 'cmd_record_buckets_to_pending_buckets' : [
506 for (var i = 0; i < obj.selection_list2.length; i++) {
507 var docid = obj.selection_list2[i].docid;
508 var item = obj.prep_record_for_list( docid );
510 obj.list1.append( item );
511 obj.record_ids.push( docid );
517 'cmd_record_buckets_delete_item' : [
520 for (var i = 0; i < obj.selection_list2.length; i++) {
522 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
523 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
524 [ ses(), 'biblio', bucket_item_id ]);
525 if (typeof robj == 'object') throw robj;
532 JSAN.use('util.widgets');
533 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
538 'cmd_record_buckets_delete_bucket' : [
542 var bucket = obj.controller.view.bucket_menulist.value;
543 var name = obj.bucket_id_name_map[ bucket ];
544 var conf = window.confirm($("catStrings").getFormattedString('staff.cat.record_buckets.delete_bucket_named', [name]));
547 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
548 if (typeof robj == 'object') throw robj;
549 var x = document.getElementById('info_box');
550 x.setAttribute('hidden','true');
551 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
552 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
553 obj.controller.view.record_buckets_export_records.disabled = true;
554 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
555 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
556 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
557 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','true');
558 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','true');
559 obj.controller.view.record_buckets_list_actions.disabled = true;
560 obj.controller.render('record_buckets_menulist_placeholder');
563 JSAN.use('util.widgets');
564 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
569 alert('FIXME: ' + E);
573 'cmd_record_buckets_new_bucket' : [
578 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt'),
580 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt_title')
584 var bucket = new cbreb();
585 bucket.btype('staff_client');
586 bucket.owner( obj.data.list.au[0].id() );
589 var robj = obj.network.simple_request('BUCKET_CREATE',[ses(),'biblio',bucket]);
591 if (typeof robj == 'object') {
592 if (robj.ilsevent == 1710 /* CONTAINER_EXISTS */) {
593 alert($("catStrings").getString('staff.cat.record_buckets.new_bucket.same_name_alert'));
599 obj.controller.render('record_buckets_menulist_placeholder');
600 obj.controller.view.bucket_menulist.value = robj;
603 JSAN.use('util.widgets');
604 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
614 'cmd_record_query_csv_to_clipboard' : [ ['command'], function() { obj.list0.dump_csv_to_clipboard(); } ],
615 'cmd_pending_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list1.dump_csv_to_clipboard(); } ],
616 'cmd_record_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list2.dump_csv_to_clipboard(); } ],
617 'cmd_record_query_csv_to_printer' : [ ['command'], function() { obj.list0.dump_csv_to_printer(); } ],
618 'cmd_pending_buckets_csv_to_printer' : [ ['command'], function() { obj.list1.dump_csv_to_printer(); } ],
619 'cmd_record_buckets_csv_to_printer' : [ ['command'], function() { obj.list2.dump_csv_to_printer(); } ],
620 'cmd_record_query_csv_to_file' : [ ['command'], function() { obj.list0.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
621 'cmd_pending_buckets_csv_to_file' : [ ['command'], function() { obj.list1.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
622 'cmd_record_buckets_csv_to_file' : [ ['command'], function() { obj.list2.dump_csv_to_file( { 'defaultFileName' : 'bucket_records.txt' } ); } ],
624 'cmd_export_records_usmarc' : [
626 function () { return cat.record_buckets.export_records(obj, 'usmarc') }
629 'cmd_export_records_unimarc' : [
631 function () { return cat.record_buckets.export_records(obj, 'unimarc') }
634 'cmd_export_records_xml' : [
636 function () { return cat.record_buckets.export_records(obj, 'xml') }
639 'cmd_export_records_bre' : [
641 function () { return cat.record_buckets.export_records(obj, 'bre') }
644 'cmd_merge_records' : [
648 obj.list2.select_all();
649 obj.data.stash_retrieve();
650 JSAN.use('util.functional');
652 var record_ids = util.functional.map_list(
653 obj.list2.dump_retrieve_ids(),
655 return JSON2js(o).docid; // docid
660 '/xul/server/cat/bibs_abreast.xul',{
661 'tab_name' : $("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt_title')
664 'on_merge' : function() {
665 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
668 JSAN.use('util.widgets');
669 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
673 'record_ids':record_ids
678 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.merge_records.catch.std_unex_error'),E);
684 'cmd_delete_records' : [
688 obj.list2.select_all();
689 obj.data.stash_retrieve();
690 JSAN.use('util.functional');
692 var record_ids = util.functional.map_list(
693 obj.list2.dump_retrieve_ids(),
695 return JSON2js(o).docid; // docid
699 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
700 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
701 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.delete_records.xml1') + '</description>';
703 top_xml += '<button id="lead" disabled="false" label="'
704 + $("catStrings").getString('staff.cat.record_buckets.delete_records.button.label')
705 + '" name="fancy_submit"/>';
706 top_xml += '<button label="'
707 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.label') +'" accesskey="'
708 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
710 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
711 xml += '<table><tr valign="top">';
712 for (var i = 0; i < record_ids.length; i++) {
713 xml += '<td>' + $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.xml2', [record_ids[i]]) + '</td>';
715 xml += '</tr><tr valign="top">';
716 for (var i = 0; i < record_ids.length; i++) {
717 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
718 xml += '?docid=' + record_ids[i] + '"/></td>';
720 xml += '</tr><tr valign="top">';
721 for (var i = 0; i < record_ids.length; i++) {
722 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="' + urls.XUL_MARC_VIEW + '?docid=' + record_ids[i] + ' "/></td>';
724 xml += '</tr></table></form>';
725 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
726 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
727 JSAN.use('util.window'); var win = new util.window();
728 var fancy_prompt_data = win.open(
729 urls.XUL_FANCY_PROMPT,
730 //+ '?xml_in_stash=temp_merge_mid'
731 //+ '&top_xml_in_stash=temp_merge_top'
732 //+ '&title=' + window.escape('Record Purging'),
733 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
735 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt_title')
738 //obj.data.stash_retrieve();
739 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') {
740 alert($("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt.alert'));
744 for (var i = 0; i < record_ids.length; i++) {
745 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
746 if (typeof robj.ilsevent != 'undefined') {
747 if (!s) s = $("catStrings").getString('staff.cat.record_buckets.delete_records.s1');
748 s += $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.s2', [record_ids[i], robj.textcode, robj.desc]);
753 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
756 JSAN.use('util.widgets');
757 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
761 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.delete_records.catch.std_unex_err',E));
769 function() { alert($("catStrings").getString('staff.cat.record_buckets.cmd_broken.alert')); }
775 obj.list2.select_all();
776 JSAN.use('util.functional');
777 var docids = util.functional.map_list(
778 obj.list2.dump_retrieve_ids(),
780 return JSON2js(o).docid; // docid
784 for (var i = 0; i < docids.length; i++) {
785 var doc_id = docids[i];
786 if (seen[doc_id]) continue; seen[doc_id] = true;
787 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
788 var content_params = {
790 'authtime' : ses('authtime'),
791 'opac_url' : opac_url
794 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
795 {'tab_name':$("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.tab_name')},
800 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.catch.std_unex_err'),E);
804 'cmd_marc_batch_edit' : [
808 var bucket_id = obj.controller.view.bucket_menulist.value;
809 if (!bucket_id) return;
810 obj.list2.select_all();
812 urls.MARC_BATCH_EDIT + '?containerid='+bucket_id+'&recordSource=b',
814 'tab_name' : $('offlineStrings').getString('menu.cmd_marc_batch_edit.tab')
819 alert('Error in record_buckets.js, cmd_marc_batch_edit: ' + E);
823 'cmd_transfer_title_holds' : [
827 obj.list2.select_all();
828 JSAN.use('util.functional');
829 var docids = util.functional.map_list(
830 obj.list2.dump_retrieve_ids(),
832 return JSON2js(o).docid; // docid
835 JSAN.use('cat.util');
836 cat.util.transfer_title_holds(docids);
838 alert('Error in record_buckets.js, cmd_transfer_title_holds: ' + E);
843 'record_buckets_export_records' : [ ['render'], function(){} ],
844 'record_buckets_list_actions' : [ ['render'], function(){} ]
848 this.controller.render();
850 if (typeof xulG == 'undefined') {
851 obj.controller.view.cmd_sel_opac.disabled = true;
852 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
856 'submit' : function() {
859 var x = document.getElementById('record_query_input');
861 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
865 var y = document.getElementById('query_status');
867 if (y) y.value = $("catStrings").getString('staff.cat.record_buckets.submit.query_status');
868 obj.network.simple_request(
869 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
870 [ { 'limit' : 100 }, x.value, 1 ],
873 var resp = req.getResultObject();
874 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
876 if (resp.count > 0) {
877 JSAN.use('util.exec'); var exec = new util.exec();
879 for (var i = 0; i < resp.ids.length; i++) {
883 obj.list0.append(obj.prep_record_for_list(b));
890 obj.controller.view.record_query_input.focus();
891 obj.controller.view.record_query_input.select();
896 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
899 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
904 this.error.standard_unexpected_error_alert('submit_query',E);
908 'prep_record_for_list' : function(docid,bucket_item_id) {
912 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
916 'bucket_item_id' : bucket_item_id
922 obj.error.standard_unexpected_error_alert($("catStrings").getFormattedString('staff.cat.record_buckets.prep_record_for_list.std_unex_err', [docid]),E);
929 dump('exiting cat.record_buckets.js\n');