1 dump('entering cat.record_buckets.js\n');
3 if (typeof cat == 'undefined') cat = {};
4 cat.record_buckets = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('util.network'); this.network = new util.network();
9 JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
10 this.first_pause = true;
11 var x = document.getElementById("record_buckets_tabbox");
12 if (x) x.selectedIndex = 2;
15 cat.record_buckets.pick_file = function (defaultFileName) {
16 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
18 var nsIFilePicker = Components.interfaces.nsIFilePicker;
19 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance( nsIFilePicker );
21 fp.init( window, "Save File As", nsIFilePicker.modeSave );
23 fp.defaultString = defaultFileName;
25 fp.appendFilters( nsIFilePicker.filterAll );
27 var result = fp.show();
28 if ( (result == nsIFilePicker.returnOK || result == nsIFilePicker.returnReplace) && fp.file ) {
35 cat.record_buckets.export_records = function(obj, output_type) {
37 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
38 obj.list2.select_all();
39 obj.data.stash_retrieve();
40 JSAN.use('util.functional');
42 var record_ids = util.functional.map_list(
43 obj.list2.dump_retrieve_ids(),
44 function (o) { return JSON2js(o).docid }
47 var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
48 .createInstance(Components.interfaces.nsIWebBrowserPersist);
50 var proto_uri = 'http://' + window.location.hostname + '/exporter?format=' + output_type;
52 dump('Record Export URI is ' + proto_uri + '&id=' + record_ids.join('&id=') + '\n');
54 var uri = Components.classes["@mozilla.org/network/io-service;1"]
55 .getService(Components.interfaces.nsIIOService)
56 .newURI( proto_uri + '&id=' + record_ids.join('&id='), null, null );
58 var file = cat.record_buckets.pick_file('bucket.' + output_type);
61 persist.saveURI(uri,null,null,null,null,file);
63 alert("File not downloaded.");
67 obj.error.standard_unexpected_error_alert('Records could not be exported.',E);
72 cat.record_buckets.prototype = {
73 'selection_list0' : [],
74 'selection_list1' : [],
75 'selection_list2' : [],
76 'bucket_id_name_map' : {},
78 'render_pending_records' : function() {
79 if (this.first_pause) {
80 this.first_pause = false;
82 alert("Action completed.");
86 for (var i = 0; i < obj.record_ids.length; i++) {
87 var item = obj.prep_record_for_list( obj.record_ids[i] );
88 if (item) obj.list1.append( item );
92 'init' : function( params ) {
96 obj.record_ids = params['record_ids'] || [];
98 JSAN.use('circ.util');
99 var columns = circ.util.columns(
101 'title' : { 'hidden' : false },
102 'author' : { 'hidden' : false },
103 'edition' : { 'hidden' : false },
104 'publisher' : { 'hidden' : false },
105 'pubdate' : { 'hidden' : false },
106 'isbn' : { 'hidden' : false },
107 'tcn' : { 'hidden' : false },
111 JSAN.use('util.list');
113 function retrieve_row(params) {
114 var row = params.row;
116 obj.network.simple_request( 'MODS_SLIM_RECORD_RETRIEVE.authoritative', [ row.my.docid ],
119 var record = req.getResultObject();
120 if (typeof req.ilsevent != 'undefined') throw(req);
122 if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
125 obj.error.standard_unexpected_error_alert('Error retrieving mvr for record with id =' + row.my.docid, E);
130 obj.error.sdump('D_ERROR','retrieve_row: ' + E );
135 obj.list0 = new util.list('record_query_list');
139 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
140 'retrieve_row' : retrieve_row,
141 'on_select' : function(ev) {
143 JSAN.use('util.functional');
144 var sel = obj.list0.retrieve_selection();
145 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
146 obj.selection_list0 = util.functional.map_list(
148 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
150 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 0 = ' + js2JSON(obj.selection_list1) );
151 if (obj.selection_list0.length == 0) {
152 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','true');
154 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','false');
157 alert('FIXME: ' + E);
164 obj.list1 = new util.list('pending_records_list');
168 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
169 'retrieve_row' : retrieve_row,
170 'on_select' : function(ev) {
172 JSAN.use('util.functional');
173 var sel = obj.list1.retrieve_selection();
174 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
175 obj.selection_list1 = util.functional.map_list(
177 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
179 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
180 if (obj.selection_list1.length == 0) {
181 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','true');
183 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','false');
186 alert('FIXME: ' + E);
193 obj.render_pending_records();
195 obj.list2 = new util.list('records_in_bucket_list');
199 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
200 'retrieve_row' : retrieve_row,
201 'on_select' : function(ev) {
203 JSAN.use('util.functional');
204 var sel = obj.list2.retrieve_selection();
205 obj.controller.view.sel_clip2.setAttribute('disabled', sel.length < 1 ? "true" : "false");
206 obj.selection_list2 = util.functional.map_list(
208 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
210 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
211 if (obj.selection_list2.length == 0) {
212 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','true');
213 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','true');
215 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','false');
216 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','false');
219 alert('FIXME: ' + E);
225 JSAN.use('util.controller'); obj.controller = new util.controller();
231 function() { obj.list2.save_columns(); }
235 function() { obj.list1.save_columns(); }
239 function() { obj.list0.save_columns(); }
243 function() { obj.list2.clipboard(); }
247 function() { obj.list1.clipboard(); }
251 function() { obj.list0.clipboard(); }
253 'record_query_input' : [
256 ev.addEventListener('keypress',function(ev){
257 if (ev.target.tagName != 'textbox') return;
258 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
262 'cmd_submit_query' : [
264 function() { obj.submit(); }
266 'record_buckets_menulist_placeholder' : [
270 JSAN.use('util.widgets'); JSAN.use('util.functional');
271 var buckets = obj.network.simple_request(
272 'BUCKET_RETRIEVE_VIA_USER',
273 [ ses(), obj.data.list.au[0].id() ]
275 if (typeof buckets.ilsevent != 'undefined') {
276 obj.error.standard_unexpected_error_alert('Could not retrieve your buckets.',buckets);
279 var items = [ ['Choose a bucket...',''], ['Retrieve shared bucket...',-1] ].concat(
280 util.functional.map_list(
281 util.functional.filter_list(
284 return o.btype() == 'staff_client';
288 obj.bucket_id_name_map[ o.id() ] = o.name();
289 return [ o.name(), o.id() ];
293 if (a[0] < b[0]) return -1;
294 if (a[0] > b[0]) return 1;
299 obj.error.sdump('D_TRACE','items = ' + js2JSON(items));
300 util.widgets.remove_children( e );
301 var ml = util.widgets.make_menulist(
305 ml.setAttribute('id','bucket_menulist');
306 ml.setAttribute('accesskey','');
308 function change_bucket(ev) {
309 var bucket_id = ev.target.value;
310 if (bucket_id < 0 ) {
311 bucket_id = window.prompt('Enter bucket number:');
312 ev.target.value = bucket_id;
313 ev.target.setAttribute('value',bucket_id);
315 if (!bucket_id) return;
316 var x = document.getElementById('info_box');
317 if (x) x.setAttribute('hidden','true');
318 x = document.getElementById('bucket_item_count');
319 if (x) x.setAttribute('label','');
320 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
321 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
322 obj.controller.view.record_buckets_export_records.disabled = true;
323 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
324 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
325 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
326 obj.controller.view.record_buckets_list_actions.disabled = true;
327 var bucket = obj.network.simple_request(
329 [ ses(), 'biblio', bucket_id ]
331 if (typeof bucket.ilsevent != 'undefined') {
332 if (bucket.ilsevent == 1506 /* CONTAINER_NOT_FOUND */) {
333 alert('Could not find a bucket with ID = ' + bucket_id);
335 obj.error.standard_unexpected_error_alert('Error retrieving bucket. Did you use a valid bucket id?',bucket);
340 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','false');
341 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','false');
342 obj.controller.view.record_buckets_export_records.disabled = false;
343 obj.controller.view.cmd_merge_records.setAttribute('disabled','false');
344 obj.controller.view.cmd_delete_records.setAttribute('disabled','false');
345 obj.controller.view.cmd_sel_opac.setAttribute('disabled','false');
346 obj.controller.view.record_buckets_list_actions.disabled = false;
348 var x = document.getElementById('info_box');
349 x.setAttribute('hidden','false');
350 x = document.getElementById('bucket_number');
351 x.setAttribute('value',bucket.id());
352 x = document.getElementById('bucket_name');
353 x.setAttribute('value',bucket.name());
354 x = document.getElementById('bucket_owner');
355 var s = bucket.owner(); JSAN.use('patron.util');
356 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
357 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
361 var items = bucket.items() || [];
363 var x = document.getElementById('bucket_item_count');
364 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
365 for (var i = 0; i < items.length; i++) {
366 var item = obj.prep_record_for_list(
367 items[i].target_biblio_record_entry(),
370 if (item) obj.list2.append( item );
374 ml.addEventListener( 'change_bucket', change_bucket , false);
375 ml.addEventListener( 'command', function() {
376 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
378 obj.controller.view.bucket_menulist = ml;
379 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
384 'cmd_record_buckets_refresh' : [
387 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
391 'cmd_add_all_query_to_pending' : [
394 obj.list0.select_all();
395 for (var i = 0; i < obj.selection_list0.length; i++) {
396 var docid = obj.selection_list0[i].docid;
398 var item = obj.prep_record_for_list( docid );
400 obj.list1.append( item );
401 obj.record_ids.push( docid );
409 'cmd_add_sel_query_to_pending' : [
412 for (var i = 0; i < obj.selection_list0.length; i++) {
413 var docid = obj.selection_list0[i].docid;
415 var item = obj.prep_record_for_list( docid );
417 obj.list1.append( item );
418 obj.record_ids.push( docid );
427 'cmd_add_all_pending_to_record_bucket' : [
430 var bucket_id = obj.controller.view.bucket_menulist.value;
431 if (!bucket_id) return;
432 for (var i = 0; i < obj.record_ids.length; i++) {
433 var bucket_item = new cbrebi();
434 bucket_item.isnew('1');
435 bucket_item.bucket(bucket_id);
436 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
438 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
439 [ ses(), 'biblio', bucket_item ]);
441 if (typeof robj == 'object') throw robj;
443 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
446 obj.list2.append( item );
453 'cmd_add_sel_pending_to_record_bucket' : [
456 var bucket_id = obj.controller.view.bucket_menulist.value;
457 if (!bucket_id) return;
458 for (var i = 0; i < obj.selection_list1.length; i++) {
459 var docid = obj.selection_list1[i].docid;
460 var bucket_item = new cbrebi();
461 bucket_item.isnew('1');
462 bucket_item.bucket(bucket_id);
463 bucket_item.target_biblio_record_entry( docid );
465 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
466 [ ses(), 'biblio', bucket_item ]);
468 if (typeof robj == 'object') throw robj;
470 var item = obj.prep_record_for_list( docid, robj );
473 obj.list2.append( item );
481 'cmd_record_buckets_to_pending_buckets' : [
484 for (var i = 0; i < obj.selection_list2.length; i++) {
485 var docid = obj.selection_list2[i].docid;
486 var item = obj.prep_record_for_list( docid );
488 obj.list1.append( item );
489 obj.record_ids.push( docid );
495 'cmd_record_buckets_delete_item' : [
498 for (var i = 0; i < obj.selection_list2.length; i++) {
500 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
501 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
502 [ ses(), 'biblio', bucket_item_id ]);
503 if (typeof robj == 'object') throw robj;
508 alert("Action completed.");
511 JSAN.use('util.widgets');
512 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
517 'cmd_record_buckets_delete_bucket' : [
521 var bucket = obj.controller.view.bucket_menulist.value;
522 var name = obj.bucket_id_name_map[ bucket ];
523 var conf = window.confirm('Delete the bucket named ' + name + '?');
526 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
527 if (typeof robj == 'object') throw robj;
528 alert("Action completed.");
529 var x = document.getElementById('info_box');
530 x.setAttribute('hidden','true');
531 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
532 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
533 obj.controller.view.record_buckets_export_records.disabled = true;
534 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
535 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
536 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
537 obj.controller.view.record_buckets_list_actions.disabled = true;
538 obj.controller.render('record_buckets_menulist_placeholder');
541 JSAN.use('util.widgets');
542 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
547 alert('FIXME -- ' + E);
551 'cmd_record_buckets_new_bucket' : [
555 var name = prompt('What would you like to name the bucket?','','Bucket Creation');
558 var bucket = new cbreb();
559 bucket.btype('staff_client');
560 bucket.owner( obj.data.list.au[0].id() );
563 var robj = obj.network.simple_request('BUCKET_CREATE',[ses(),'biblio',bucket]);
565 if (typeof robj == 'object') {
566 if (robj.ilsevent == 1710 /* CONTAINER_EXISTS */) {
567 alert('You already have a bucket with that name.');
574 alert('Bucket "' + name + '" created.');
576 obj.controller.render('record_buckets_menulist_placeholder');
577 obj.controller.view.bucket_menulist.value = robj;
580 JSAN.use('util.widgets');
581 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
591 'cmd_record_query_csv_to_clipboard' : [ ['command'], function() { obj.list0.dump_csv_to_clipboard(); } ],
592 'cmd_pending_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list1.dump_csv_to_clipboard(); } ],
593 'cmd_record_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list2.dump_csv_to_clipboard(); } ],
594 'cmd_record_query_csv_to_printer' : [ ['command'], function() { obj.list0.dump_csv_to_printer(); } ],
595 'cmd_pending_buckets_csv_to_printer' : [ ['command'], function() { obj.list1.dump_csv_to_printer(); } ],
596 'cmd_record_buckets_csv_printer' : [ ['command'], function() { obj.list2.dump_csv_to_printer(); } ],
597 'cmd_record_query_csv_to_file' : [ ['command'], function() { obj.list0.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
598 'cmd_pending_buckets_csv_to_file' : [ ['command'], function() { obj.list1.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
599 'cmd_record_buckets_csv_file' : [ ['command'], function() { obj.list2.dump_csv_to_file( { 'defaultFileName' : 'bucket_records.txt' } ); } ],
601 'cmd_export_records_usmarc' : [
603 function () { return cat.record_buckets.export_records(obj, 'usmarc') }
606 'cmd_export_records_unimarc' : [
608 function () { return cat.record_buckets.export_records(obj, 'unimarc') }
611 'cmd_export_records_xml' : [
613 function () { return cat.record_buckets.export_records(obj, 'xml') }
616 'cmd_export_records_bre' : [
618 function () { return cat.record_buckets.export_records(obj, 'bre') }
621 'cmd_merge_records' : [
625 obj.list2.select_all();
626 obj.data.stash_retrieve();
627 JSAN.use('util.functional');
629 var record_ids = util.functional.map_list(
630 obj.list2.dump_retrieve_ids(),
632 return JSON2js(o).docid; // docid
636 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
637 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
638 top_xml += '<description>Merge these records? (Select the "lead" record first)</description>';
639 top_xml += '<hbox><button id="lead" disabled="true" label="Merge" name="fancy_submit"/><button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox></vbox>';
641 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
642 xml += '<table><tr valign="top">';
643 for (var i = 0; i < record_ids.length; i++) {
644 xml += '<td><input value="Lead" id="record_' + record_ids[i] + '" type="radio" name="lead"';
645 xml += ' onclick="' + "try { var x = document.getElementById('lead'); x.setAttribute('value',";
646 xml += record_ids[i] + '); x.disabled = false; } catch(E) { alert(E); }">';
647 xml += '</input>Lead Record? #' + record_ids[i] + '</td>';
649 xml += '</tr><tr valign="top">';
650 for (var i = 0; i < record_ids.length; i++) {
651 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
652 xml += '?docid=' + record_ids[i] + '"/></td>';
654 xml += '</tr><tr valign="top">';
655 for (var i = 0; i < record_ids.length; i++) {
656 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
657 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
659 xml += '</tr></table></form>';
660 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
661 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
662 JSAN.use('util.window'); var win = new util.window();
663 var fancy_prompt_data = win.open(
664 urls.XUL_FANCY_PROMPT,
665 //+ '?xml_in_stash=temp_merge_mid'
666 //+ '&top_xml_in_stash=temp_merge_top'
667 //+ '&title=' + window.escape('Record Merging'),
668 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
670 'top_xml' : top_xml, 'xml' : xml, 'title' : 'Record Merging'
673 //obj.data.stash_retrieve();
675 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status == 'incomplete') { alert('Merge Aborted'); return; }
676 var robj = obj.network.simple_request('MERGE_RECORDS',
679 fancy_prompt_data.lead,
680 util.functional.filter_list( record_ids,
682 return o != fancy_prompt_data.lead;
687 if (typeof robj.ilsevent != 'undefined') {
690 alert('Records were successfully merged.');
693 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
696 JSAN.use('util.widgets');
697 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
701 obj.error.standard_unexpected_error_alert('Records were not likely merged.',E);
707 'cmd_delete_records' : [
711 obj.list2.select_all();
712 obj.data.stash_retrieve();
713 JSAN.use('util.functional');
715 var record_ids = util.functional.map_list(
716 obj.list2.dump_retrieve_ids(),
718 return JSON2js(o).docid; // docid
722 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
723 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
724 top_xml += '<description>Delete these records?</description>';
725 top_xml += '<hbox><button id="lead" disabled="false" label="Delete" name="fancy_submit"/><button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox></vbox>';
727 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
728 xml += '<table><tr valign="top">';
729 for (var i = 0; i < record_ids.length; i++) {
730 xml += '<td>Record #' + record_ids[i] + '</td>';
732 xml += '</tr><tr valign="top">';
733 for (var i = 0; i < record_ids.length; i++) {
734 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
735 xml += '?docid=' + record_ids[i] + '"/></td>';
737 xml += '</tr><tr valign="top">';
738 for (var i = 0; i < record_ids.length; i++) {
739 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
740 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
742 xml += '</tr></table></form>';
743 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
744 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
745 JSAN.use('util.window'); var win = new util.window();
746 var fancy_prompt_data = win.open(
747 urls.XUL_FANCY_PROMPT,
748 //+ '?xml_in_stash=temp_merge_mid'
749 //+ '&top_xml_in_stash=temp_merge_top'
750 //+ '&title=' + window.escape('Record Purging'),
751 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
753 'top_xml' : top_xml, 'xml' : xml, 'title' : 'Record Purging'
756 //obj.data.stash_retrieve();
757 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') { alert('Delete Aborted'); return; }
759 for (var i = 0; i < record_ids.length; i++) {
760 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
761 if (typeof robj.ilsevent != 'undefined') {
762 if (!s) s = 'Error deleting these records:\n';
763 s += 'Record #' + record_ids[i] + ' : ' + robj.textcode + ' : ' + robj.desc + '\n';
766 if (s) { alert(s); } else { alert('Records deleted.'); }
768 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
771 JSAN.use('util.widgets');
772 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
776 obj.error.standard_unexpected_error_alert('Records were not likely deleted.',E);
784 function() { alert('Not Yet Implemented'); }
790 obj.list2.select_all();
791 JSAN.use('util.functional');
792 var docids = util.functional.map_list(
793 obj.list2.dump_retrieve_ids(),
795 return JSON2js(o).docid; // docid
799 for (var i = 0; i < docids.length; i++) {
800 var doc_id = docids[i];
801 if (seen[doc_id]) continue; seen[doc_id] = true;
802 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
803 var content_params = {
805 'authtime' : ses('authtime'),
806 'opac_url' : opac_url,
809 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
810 {'tab_name':'Retrieving title...'},
815 obj.error.standard_unexpected_error_alert('Showing in OPAC',E);
819 'record_buckets_export_records' : [ ['render'], function(){} ],
820 'record_buckets_list_actions' : [ ['render'], function(){} ]
824 this.controller.render();
826 if (typeof xulG == 'undefined') {
827 obj.controller.view.cmd_sel_opac.disabled = true;
828 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
832 'submit' : function() {
835 var x = document.getElementById('record_query_input');
837 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
841 var y = document.getElementById('query_status');
843 if (y) y.value = 'Searching...';
844 obj.network.simple_request(
845 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
849 var resp = req.getResultObject();
850 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
852 if (resp.count > 0) {
853 JSAN.use('util.exec'); var exec = new util.exec();
855 for (var i = 0; i < resp.ids.length; i++) {
859 obj.list0.append(obj.prep_record_for_list(b));
866 obj.controller.view.record_query_input.focus();
867 obj.controller.view.record_query_input.select();
872 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
875 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
880 this.error.standard_unexpected_error_alert('submit_query',E);
884 'prep_record_for_list' : function(docid,bucket_item_id) {
888 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
892 'bucket_item_id' : bucket_item_id
898 obj.error.standard_unexpected_error_alert('Could not retrieve this record: ' + docid,E);
905 dump('exiting cat.record_buckets.js\n');