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 'retrieve_row' : retrieve_row,
155 'on_select' : function(ev) {
157 JSAN.use('util.functional');
158 var sel = obj.list0.retrieve_selection();
159 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
160 obj.selection_list0 = util.functional.map_list(
162 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
164 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 0 = ' + js2JSON(obj.selection_list1) );
165 if (obj.selection_list0.length == 0) {
166 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','true');
168 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','false');
171 alert('FIXME: ' + E);
178 obj.list1 = new util.list('pending_records_list');
182 'retrieve_row' : retrieve_row,
183 'on_select' : function(ev) {
185 JSAN.use('util.functional');
186 var sel = obj.list1.retrieve_selection();
187 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
188 obj.selection_list1 = util.functional.map_list(
190 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
192 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
193 if (obj.selection_list1.length == 0) {
194 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','true');
196 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','false');
199 alert('FIXME: ' + E);
206 obj.render_pending_records();
208 obj.list2 = new util.list('records_in_bucket_list');
212 'retrieve_row' : retrieve_row,
213 'on_select' : function(ev) {
215 JSAN.use('util.functional');
216 var sel = obj.list2.retrieve_selection();
217 obj.controller.view.sel_clip2.setAttribute('disabled', sel.length < 1 ? "true" : "false");
218 obj.selection_list2 = util.functional.map_list(
220 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
222 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
223 if (obj.selection_list2.length == 0) {
224 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','true');
225 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','true');
227 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','false');
228 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','false');
231 alert('FIXME: ' + E);
237 JSAN.use('util.controller'); obj.controller = new util.controller();
243 function() { obj.list2.save_columns(); }
247 function() { obj.list1.save_columns(); }
251 function() { obj.list0.save_columns(); }
255 function() { obj.list2.clipboard(); }
259 function() { obj.list1.clipboard(); }
263 function() { obj.list0.clipboard(); }
265 'record_query_input' : [
268 ev.addEventListener('keypress',function(ev){
269 if (ev.target.tagName != 'textbox') return;
270 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
274 'cmd_submit_query' : [
276 function() { obj.submit(); }
278 'record_buckets_menulist_placeholder' : [
282 JSAN.use('util.widgets'); JSAN.use('util.functional');
283 var buckets = obj.network.simple_request(
284 'BUCKET_RETRIEVE_VIA_USER',
285 [ ses(), obj.data.list.au[0].id() ]
287 if (typeof buckets.ilsevent != 'undefined') {
288 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.buckets.std_unexpected_error'), buckets);
292 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item1'),''],
293 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item2'),-1]
295 util.functional.map_list(
296 util.functional.filter_list(
299 return o.btype() == 'staff_client';
303 obj.bucket_id_name_map[ o.id() ] = o.name();
304 return [ o.name(), o.id() ];
308 if (a[0] < b[0]) return -1;
309 if (a[0] > b[0]) return 1;
314 obj.error.sdump('D_TRACE','items = ' + js2JSON(items));
315 util.widgets.remove_children( e );
316 var ml = util.widgets.make_menulist(
320 ml.setAttribute('id','bucket_menulist');
321 ml.setAttribute('accesskey','');
323 function change_bucket(ev) {
324 var bucket_id = ev.target.value;
325 if (bucket_id < 0 ) {
326 bucket_id = window.prompt($("catStrings").getString('staff.cat.record_buckets.change_bucket.bucket_id'));
327 ev.target.value = bucket_id;
328 ev.target.setAttribute('value',bucket_id);
330 if (!bucket_id) return;
331 var x = document.getElementById('info_box');
332 if (x) x.setAttribute('hidden','true');
333 x = document.getElementById('bucket_item_count');
334 if (x) x.setAttribute('label','');
335 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
336 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
337 obj.controller.view.record_buckets_export_records.disabled = true;
338 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
339 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
340 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
341 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','true');
342 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','true');
343 obj.controller.view.record_buckets_list_actions.disabled = true;
344 var bucket = obj.network.simple_request(
346 [ ses(), 'biblio', bucket_id ]
348 if (typeof bucket.ilsevent != 'undefined') {
349 if (bucket.ilsevent == 1506 /* CONTAINER_NOT_FOUND */) {
350 alert(catStrings.getFormattedString('staff.cat.record_buckets.menulist.change_bucket.undefined',[bucket_id]));
352 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.change_bucket.error'),bucket);
357 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','false');
358 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','false');
359 obj.controller.view.record_buckets_export_records.disabled = false;
360 obj.controller.view.cmd_merge_records.setAttribute('disabled','false');
361 obj.controller.view.cmd_delete_records.setAttribute('disabled','false');
362 obj.controller.view.cmd_sel_opac.setAttribute('disabled','false');
363 obj.controller.view.cmd_transfer_title_holds.setAttribute('disabled','false');
364 obj.controller.view.cmd_marc_batch_edit.setAttribute('disabled','false');
365 obj.controller.view.record_buckets_list_actions.disabled = false;
367 var x = document.getElementById('info_box');
368 x.setAttribute('hidden','false');
369 x = document.getElementById('bucket_number');
370 x.setAttribute('value',bucket.id());
371 x = document.getElementById('bucket_name');
372 x.setAttribute('value',bucket.name());
373 x = document.getElementById('bucket_owner');
374 var s = bucket.owner(); JSAN.use('patron.util');
375 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
376 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
380 var items = bucket.items() || [];
382 var x = document.getElementById('bucket_item_count');
383 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
384 for (var i = 0; i < items.length; i++) {
385 var item = obj.prep_record_for_list(
386 items[i].target_biblio_record_entry(),
389 if (item) obj.list2.append( item );
393 ml.addEventListener( 'change_bucket', change_bucket , false);
394 ml.addEventListener( 'command', function() {
395 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
397 obj.controller.view.bucket_menulist = ml;
398 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
403 'cmd_record_buckets_refresh' : [
406 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
410 'cmd_add_all_query_to_pending' : [
413 obj.list0.select_all();
414 for (var i = 0; i < obj.selection_list0.length; i++) {
415 var docid = obj.selection_list0[i].docid;
417 var item = obj.prep_record_for_list( docid );
419 obj.list1.append( item );
420 obj.record_ids.push( docid );
428 'cmd_add_sel_query_to_pending' : [
431 for (var i = 0; i < obj.selection_list0.length; i++) {
432 var docid = obj.selection_list0[i].docid;
434 var item = obj.prep_record_for_list( docid );
436 obj.list1.append( item );
437 obj.record_ids.push( docid );
446 'cmd_add_all_pending_to_record_bucket' : [
449 var bucket_id = obj.controller.view.bucket_menulist.value;
450 if (!bucket_id) return;
451 for (var i = 0; i < obj.record_ids.length; i++) {
452 var bucket_item = new cbrebi();
453 bucket_item.isnew('1');
454 bucket_item.bucket(bucket_id);
455 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
457 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
458 [ ses(), 'biblio', bucket_item ]);
460 if (typeof robj == 'object') throw robj;
462 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
465 obj.list2.append( item );
472 'cmd_add_sel_pending_to_record_bucket' : [
475 var bucket_id = obj.controller.view.bucket_menulist.value;
476 if (!bucket_id) return;
477 for (var i = 0; i < obj.selection_list1.length; i++) {
478 var docid = obj.selection_list1[i].docid;
479 var bucket_item = new cbrebi();
480 bucket_item.isnew('1');
481 bucket_item.bucket(bucket_id);
482 bucket_item.target_biblio_record_entry( docid );
484 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
485 [ ses(), 'biblio', bucket_item ]);
487 if (typeof robj == 'object') throw robj;
489 var item = obj.prep_record_for_list( docid, robj );
492 obj.list2.append( item );
500 'cmd_record_buckets_to_pending_buckets' : [
503 for (var i = 0; i < obj.selection_list2.length; i++) {
504 var docid = obj.selection_list2[i].docid;
505 var item = obj.prep_record_for_list( docid );
507 obj.list1.append( item );
508 obj.record_ids.push( docid );
514 'cmd_record_buckets_delete_item' : [
517 for (var i = 0; i < obj.selection_list2.length; i++) {
519 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
520 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
521 [ ses(), 'biblio', bucket_item_id ]);
522 if (typeof robj == 'object') throw robj;
529 JSAN.use('util.widgets');
530 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
535 'cmd_record_buckets_delete_bucket' : [
539 var bucket = obj.controller.view.bucket_menulist.value;
540 var name = obj.bucket_id_name_map[ bucket ];
541 var conf = window.confirm($("catStrings").getFormattedString('staff.cat.record_buckets.delete_bucket_named', [name]));
544 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
545 if (typeof robj == 'object') throw robj;
546 var x = document.getElementById('info_box');
547 x.setAttribute('hidden','true');
548 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
549 obj.controller.view.cmd_record_buckets_refresh.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 '/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 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
697 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
698 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.delete_records.xml1') + '</description>';
700 top_xml += '<button id="lead" disabled="false" label="'
701 + $("catStrings").getString('staff.cat.record_buckets.delete_records.button.label')
702 + '" name="fancy_submit"/>';
703 top_xml += '<button label="'
704 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.label') +'" accesskey="'
705 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
707 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
708 xml += '<table><tr valign="top">';
709 for (var i = 0; i < record_ids.length; i++) {
710 xml += '<td>' + $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.xml2', [record_ids[i]]) + '</td>';
712 xml += '</tr><tr valign="top">';
713 for (var i = 0; i < record_ids.length; i++) {
714 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
715 xml += '?docid=' + record_ids[i] + '"/></td>';
717 xml += '</tr><tr valign="top">';
718 for (var i = 0; i < record_ids.length; i++) {
719 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="' + urls.XUL_MARC_VIEW + '?docid=' + record_ids[i] + ' "/></td>';
721 xml += '</tr></table></form>';
722 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
723 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
724 JSAN.use('util.window'); var win = new util.window();
725 var fancy_prompt_data = win.open(
726 urls.XUL_FANCY_PROMPT,
727 //+ '?xml_in_stash=temp_merge_mid'
728 //+ '&top_xml_in_stash=temp_merge_top'
729 //+ '&title=' + window.escape('Record Purging'),
730 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
732 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt_title')
735 //obj.data.stash_retrieve();
736 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') {
737 alert($("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt.alert'));
741 for (var i = 0; i < record_ids.length; i++) {
742 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
743 if (typeof robj.ilsevent != 'undefined') {
744 if (!s) s = $("catStrings").getString('staff.cat.record_buckets.delete_records.s1');
745 s += $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.s2', [record_ids[i], robj.textcode, robj.desc]);
750 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
753 JSAN.use('util.widgets');
754 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
758 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.delete_records.catch.std_unex_err',E));
766 function() { alert($("catStrings").getString('staff.cat.record_buckets.cmd_broken.alert')); }
772 obj.list2.select_all();
773 JSAN.use('util.functional');
774 var docids = util.functional.map_list(
775 obj.list2.dump_retrieve_ids(),
777 return JSON2js(o).docid; // docid
781 for (var i = 0; i < docids.length; i++) {
782 var doc_id = docids[i];
783 if (seen[doc_id]) continue; seen[doc_id] = true;
784 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + doc_id;
785 var content_params = {
787 'authtime' : ses('authtime'),
788 'opac_url' : opac_url
791 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
792 {'tab_name':$("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.tab_name')},
797 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.catch.std_unex_err'),E);
801 'cmd_marc_batch_edit' : [
805 var bucket_id = obj.controller.view.bucket_menulist.value;
806 if (!bucket_id) return;
807 obj.list2.select_all();
809 urls.MARC_BATCH_EDIT + '?containerid='+bucket_id+'&recordSource=b',
811 'tab_name' : $('offlineStrings').getString('menu.cmd_marc_batch_edit.tab')
816 alert('Error in record_buckets.js, cmd_marc_batch_edit: ' + E);
820 'cmd_transfer_title_holds' : [
824 obj.list2.select_all();
825 JSAN.use('util.functional');
826 var docids = util.functional.map_list(
827 obj.list2.dump_retrieve_ids(),
829 return JSON2js(o).docid; // docid
832 JSAN.use('cat.util');
833 cat.util.transfer_title_holds(docids);
835 alert('Error in record_buckets.js, cmd_transfer_title_holds: ' + E);
840 'record_buckets_export_records' : [ ['render'], function(){} ],
841 'record_buckets_list_actions' : [ ['render'], function(){} ]
845 this.controller.render();
847 if (typeof xulG == 'undefined') {
848 obj.controller.view.cmd_sel_opac.disabled = true;
849 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
853 'submit' : function() {
856 var x = document.getElementById('record_query_input');
858 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
862 var y = document.getElementById('query_status');
864 if (y) y.value = $("catStrings").getString('staff.cat.record_buckets.submit.query_status');
865 obj.network.simple_request(
866 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
867 [ { 'limit' : 100 }, x.value, 1 ],
870 var resp = req.getResultObject();
871 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
873 if (resp.count > 0) {
874 JSAN.use('util.exec'); var exec = new util.exec();
876 for (var i = 0; i < resp.ids.length; i++) {
880 obj.list0.append(obj.prep_record_for_list(b));
887 obj.controller.view.record_query_input.focus();
888 obj.controller.view.record_query_input.select();
893 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
896 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
901 this.error.standard_unexpected_error_alert('submit_query',E);
905 'prep_record_for_list' : function(docid,bucket_item_id) {
909 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
913 'bucket_item_id' : bucket_item_id
919 obj.error.standard_unexpected_error_alert($("catStrings").getFormattedString('staff.cat.record_buckets.prep_record_for_list.std_unex_err', [docid]),E);
926 dump('exiting cat.record_buckets.js\n');