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 this.first_pause = true;
13 var x = document.getElementById("record_buckets_tabbox");
14 if (x) x.selectedIndex = 2;
17 cat.record_buckets.pick_file = function (defaultFileName) {
18 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
20 var nsIFilePicker = Components.interfaces.nsIFilePicker;
21 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance( nsIFilePicker );
23 fp.init( window, $("catStrings").getString('staff.cat.record_buckets.save_file_as'), nsIFilePicker.modeSave );
25 fp.defaultString = defaultFileName;
27 fp.appendFilters( nsIFilePicker.filterAll );
29 var result = fp.show();
30 if ( (result == nsIFilePicker.returnOK || result == nsIFilePicker.returnReplace) && fp.file ) {
37 cat.record_buckets.export_records = function(obj, output_type) {
39 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
40 obj.list2.select_all();
41 obj.data.stash_retrieve();
42 JSAN.use('util.functional');
44 var record_ids = util.functional.map_list(
45 obj.list2.dump_retrieve_ids(),
46 function (o) { return JSON2js(o).docid }
49 var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
50 .createInstance(Components.interfaces.nsIWebBrowserPersist);
52 var proto_uri = 'http://' + window.location.hostname + '/exporter?format=' + output_type;
54 dump('Record Export URI is ' + proto_uri + '&id=' + record_ids.join('&id=') + '\n');
56 var uri = Components.classes["@mozilla.org/network/io-service;1"]
57 .getService(Components.interfaces.nsIIOService)
58 .newURI( proto_uri + '&id=' + record_ids.join('&id='), null, null );
60 var file = cat.record_buckets.pick_file('bucket.' + output_type);
63 persist.saveURI(uri,null,null,null,null,file);
65 alert( $("catStrings").getString('staff.cat.record_buckets.export_records.alert') );
69 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.export_records.std_unexpected_error'), E);
74 cat.record_buckets.prototype = {
75 'selection_list0' : [],
76 'selection_list1' : [],
77 'selection_list2' : [],
78 'bucket_id_name_map' : {},
80 'render_pending_records' : function() {
81 if (this.first_pause) {
82 this.first_pause = false;
84 alert( $("commonStrings").getString('common.action_complete'));
88 for (var i = 0; i < obj.record_ids.length; i++) {
89 var item = obj.prep_record_for_list( obj.record_ids[i] );
90 if (item) obj.list1.append( item );
94 'init' : function( params ) {
98 obj.record_ids = params['record_ids'] || [];
100 JSAN.use('circ.util');
101 var columns = circ.util.columns(
103 'title' : { 'hidden' : false },
104 'author' : { 'hidden' : false },
105 'edition' : { 'hidden' : false },
106 'publisher' : { 'hidden' : false },
107 'pubdate' : { 'hidden' : false },
108 'isbn' : { 'hidden' : false },
109 'tcn' : { 'hidden' : false }
113 JSAN.use('util.list');
115 function retrieve_row(params) {
116 var row = params.row;
118 obj.network.simple_request( 'MODS_SLIM_RECORD_RETRIEVE.authoritative', [ row.my.docid ],
121 var record = req.getResultObject();
122 if (typeof req.ilsevent != 'undefined') throw(req);
124 if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
127 obj.error.standard_unexpected_error_alert(
128 $("catStrings").getFormattedString('staff.cat.record_buckets.retrieve_row.std_unexpected_error', [row.my.docid]), E);
133 obj.error.sdump('D_ERROR','retrieve_row: ' + E );
138 obj.list0 = new util.list('record_query_list');
142 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
143 'retrieve_row' : retrieve_row,
144 'on_select' : function(ev) {
146 JSAN.use('util.functional');
147 var sel = obj.list0.retrieve_selection();
148 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
149 obj.selection_list0 = util.functional.map_list(
151 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
153 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 0 = ' + js2JSON(obj.selection_list1) );
154 if (obj.selection_list0.length == 0) {
155 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','true');
157 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','false');
160 alert('FIXME: ' + E);
167 obj.list1 = new util.list('pending_records_list');
171 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
172 'retrieve_row' : retrieve_row,
173 'on_select' : function(ev) {
175 JSAN.use('util.functional');
176 var sel = obj.list1.retrieve_selection();
177 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
178 obj.selection_list1 = util.functional.map_list(
180 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
182 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
183 if (obj.selection_list1.length == 0) {
184 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','true');
186 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','false');
189 alert('FIXME: ' + E);
196 obj.render_pending_records();
198 obj.list2 = new util.list('records_in_bucket_list');
202 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
203 'retrieve_row' : retrieve_row,
204 'on_select' : function(ev) {
206 JSAN.use('util.functional');
207 var sel = obj.list2.retrieve_selection();
208 obj.controller.view.sel_clip2.setAttribute('disabled', sel.length < 1 ? "true" : "false");
209 obj.selection_list2 = util.functional.map_list(
211 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
213 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
214 if (obj.selection_list2.length == 0) {
215 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','true');
216 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','true');
218 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','false');
219 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','false');
222 alert('FIXME: ' + E);
228 JSAN.use('util.controller'); obj.controller = new util.controller();
234 function() { obj.list2.save_columns(); }
238 function() { obj.list1.save_columns(); }
242 function() { obj.list0.save_columns(); }
246 function() { obj.list2.clipboard(); }
250 function() { obj.list1.clipboard(); }
254 function() { obj.list0.clipboard(); }
256 'record_query_input' : [
259 ev.addEventListener('keypress',function(ev){
260 if (ev.target.tagName != 'textbox') return;
261 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
265 'cmd_submit_query' : [
267 function() { obj.submit(); }
269 'record_buckets_menulist_placeholder' : [
273 JSAN.use('util.widgets'); JSAN.use('util.functional');
274 var buckets = obj.network.simple_request(
275 'BUCKET_RETRIEVE_VIA_USER',
276 [ ses(), obj.data.list.au[0].id() ]
278 if (typeof buckets.ilsevent != 'undefined') {
279 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.buckets.std_unexpected_error'), buckets);
283 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item1'),''],
284 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item2'),-1]
286 util.functional.map_list(
287 util.functional.filter_list(
290 return o.btype() == 'staff_client';
294 obj.bucket_id_name_map[ o.id() ] = o.name();
295 return [ o.name(), o.id() ];
299 if (a[0] < b[0]) return -1;
300 if (a[0] > b[0]) return 1;
305 obj.error.sdump('D_TRACE','items = ' + js2JSON(items));
306 util.widgets.remove_children( e );
307 var ml = util.widgets.make_menulist(
311 ml.setAttribute('id','bucket_menulist');
312 ml.setAttribute('accesskey','');
314 function change_bucket(ev) {
315 var bucket_id = ev.target.value;
316 if (bucket_id < 0 ) {
317 bucket_id = window.prompt($("catStrings").getString('staff.cat.record_buckets.change_bucket.bucket_id'));
318 ev.target.value = bucket_id;
319 ev.target.setAttribute('value',bucket_id);
321 if (!bucket_id) return;
322 var x = document.getElementById('info_box');
323 if (x) x.setAttribute('hidden','true');
324 x = document.getElementById('bucket_item_count');
325 if (x) x.setAttribute('label','');
326 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
327 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
328 obj.controller.view.record_buckets_export_records.disabled = true;
329 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
330 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
331 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
332 obj.controller.view.record_buckets_list_actions.disabled = true;
333 var bucket = obj.network.simple_request(
335 [ ses(), 'biblio', bucket_id ]
337 if (typeof bucket.ilsevent != 'undefined') {
338 if (bucket.ilsevent == 1506 /* CONTAINER_NOT_FOUND */) {
339 alert('Could not find a bucket with ID = ' + bucket_id);
341 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.change_bucket.error'),bucket);
346 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','false');
347 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','false');
348 obj.controller.view.record_buckets_export_records.disabled = false;
349 obj.controller.view.cmd_merge_records.setAttribute('disabled','false');
350 obj.controller.view.cmd_delete_records.setAttribute('disabled','false');
351 obj.controller.view.cmd_sel_opac.setAttribute('disabled','false');
352 obj.controller.view.record_buckets_list_actions.disabled = false;
354 var x = document.getElementById('info_box');
355 x.setAttribute('hidden','false');
356 x = document.getElementById('bucket_number');
357 x.setAttribute('value',bucket.id());
358 x = document.getElementById('bucket_name');
359 x.setAttribute('value',bucket.name());
360 x = document.getElementById('bucket_owner');
361 var s = bucket.owner(); JSAN.use('patron.util');
362 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
363 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
367 var items = bucket.items() || [];
369 var x = document.getElementById('bucket_item_count');
370 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
371 for (var i = 0; i < items.length; i++) {
372 var item = obj.prep_record_for_list(
373 items[i].target_biblio_record_entry(),
376 if (item) obj.list2.append( item );
380 ml.addEventListener( 'change_bucket', change_bucket , false);
381 ml.addEventListener( 'command', function() {
382 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
384 obj.controller.view.bucket_menulist = ml;
385 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
390 'cmd_record_buckets_refresh' : [
393 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
397 'cmd_add_all_query_to_pending' : [
400 obj.list0.select_all();
401 for (var i = 0; i < obj.selection_list0.length; i++) {
402 var docid = obj.selection_list0[i].docid;
404 var item = obj.prep_record_for_list( docid );
406 obj.list1.append( item );
407 obj.record_ids.push( docid );
415 'cmd_add_sel_query_to_pending' : [
418 for (var i = 0; i < obj.selection_list0.length; i++) {
419 var docid = obj.selection_list0[i].docid;
421 var item = obj.prep_record_for_list( docid );
423 obj.list1.append( item );
424 obj.record_ids.push( docid );
433 'cmd_add_all_pending_to_record_bucket' : [
436 var bucket_id = obj.controller.view.bucket_menulist.value;
437 if (!bucket_id) return;
438 for (var i = 0; i < obj.record_ids.length; i++) {
439 var bucket_item = new cbrebi();
440 bucket_item.isnew('1');
441 bucket_item.bucket(bucket_id);
442 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
444 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
445 [ ses(), 'biblio', bucket_item ]);
447 if (typeof robj == 'object') throw robj;
449 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
452 obj.list2.append( item );
459 'cmd_add_sel_pending_to_record_bucket' : [
462 var bucket_id = obj.controller.view.bucket_menulist.value;
463 if (!bucket_id) return;
464 for (var i = 0; i < obj.selection_list1.length; i++) {
465 var docid = obj.selection_list1[i].docid;
466 var bucket_item = new cbrebi();
467 bucket_item.isnew('1');
468 bucket_item.bucket(bucket_id);
469 bucket_item.target_biblio_record_entry( docid );
471 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
472 [ ses(), 'biblio', bucket_item ]);
474 if (typeof robj == 'object') throw robj;
476 var item = obj.prep_record_for_list( docid, robj );
479 obj.list2.append( item );
487 'cmd_record_buckets_to_pending_buckets' : [
490 for (var i = 0; i < obj.selection_list2.length; i++) {
491 var docid = obj.selection_list2[i].docid;
492 var item = obj.prep_record_for_list( docid );
494 obj.list1.append( item );
495 obj.record_ids.push( docid );
501 'cmd_record_buckets_delete_item' : [
504 for (var i = 0; i < obj.selection_list2.length; i++) {
506 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
507 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
508 [ ses(), 'biblio', bucket_item_id ]);
509 if (typeof robj == 'object') throw robj;
514 alert( $("commonStrings").getString('common.action_complete'));
517 JSAN.use('util.widgets');
518 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
523 'cmd_record_buckets_delete_bucket' : [
527 var bucket = obj.controller.view.bucket_menulist.value;
528 var name = obj.bucket_id_name_map[ bucket ];
529 var conf = window.confirm('Delete the bucket named ' + name + '?');
532 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
533 if (typeof robj == 'object') throw robj;
534 alert( $("commonStrings").getString('common.action_complete'));
535 var x = document.getElementById('info_box');
536 x.setAttribute('hidden','true');
537 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
538 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
539 obj.controller.view.record_buckets_export_records.disabled = true;
540 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
541 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
542 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
543 obj.controller.view.record_buckets_list_actions.disabled = true;
544 obj.controller.render('record_buckets_menulist_placeholder');
547 JSAN.use('util.widgets');
548 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
553 alert('FIXME: ' + E);
557 'cmd_record_buckets_new_bucket' : [
562 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt'),
564 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt_title')
568 var bucket = new cbreb();
569 bucket.btype('staff_client');
570 bucket.owner( obj.data.list.au[0].id() );
573 var robj = obj.network.simple_request('BUCKET_CREATE',[ses(),'biblio',bucket]);
575 if (typeof robj == 'object') {
576 if (robj.ilsevent == 1710 /* CONTAINER_EXISTS */) {
577 alert($("catStrings").getString('staff.cat.record_buckets.new_bucket.same_name_alert'));
583 alert($("catStrings").getFormattedString('staff.cat.record_buckets.new_bucket.bucket_created', [name]));
585 obj.controller.render('record_buckets_menulist_placeholder');
586 obj.controller.view.bucket_menulist.value = robj;
589 JSAN.use('util.widgets');
590 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
600 'cmd_record_query_csv_to_clipboard' : [ ['command'], function() { obj.list0.dump_csv_to_clipboard(); } ],
601 'cmd_pending_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list1.dump_csv_to_clipboard(); } ],
602 'cmd_record_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list2.dump_csv_to_clipboard(); } ],
603 'cmd_record_query_csv_to_printer' : [ ['command'], function() { obj.list0.dump_csv_to_printer(); } ],
604 'cmd_pending_buckets_csv_to_printer' : [ ['command'], function() { obj.list1.dump_csv_to_printer(); } ],
605 'cmd_record_buckets_csv_printer' : [ ['command'], function() { obj.list2.dump_csv_to_printer(); } ],
606 'cmd_record_query_csv_to_file' : [ ['command'], function() { obj.list0.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
607 'cmd_pending_buckets_csv_to_file' : [ ['command'], function() { obj.list1.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
608 'cmd_record_buckets_csv_file' : [ ['command'], function() { obj.list2.dump_csv_to_file( { 'defaultFileName' : 'bucket_records.txt' } ); } ],
610 'cmd_export_records_usmarc' : [
612 function () { return cat.record_buckets.export_records(obj, 'usmarc') }
615 'cmd_export_records_unimarc' : [
617 function () { return cat.record_buckets.export_records(obj, 'unimarc') }
620 'cmd_export_records_xml' : [
622 function () { return cat.record_buckets.export_records(obj, 'xml') }
625 'cmd_export_records_bre' : [
627 function () { return cat.record_buckets.export_records(obj, 'bre') }
630 'cmd_merge_records' : [
634 obj.list2.select_all();
635 obj.data.stash_retrieve();
636 JSAN.use('util.functional');
638 var record_ids = util.functional.map_list(
639 obj.list2.dump_retrieve_ids(),
641 return JSON2js(o).docid; // docid
645 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
646 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
647 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.merge_records.merge_lead') + '</description>';
649 top_xml += '<button id="lead" disabled="true" label="'
650 + $("catStrings").getString('staff.cat.record_buckets.merge_records.button.label') + '" name="fancy_submit"/>';
651 top_xml += '<button label="' + $("catStrings").getString('staff.cat.record_buckets.merge_records.cancel_button.label') +'" accesskey="'
652 + $("catStrings").getString('staff.cat.record_buckets.merge_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
654 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
655 xml += '<table><tr valign="top">';
656 for (var i = 0; i < record_ids.length; i++) {
657 xml += '<td><input value="' + $("catStrings").getString('staff.cat.record_buckets.merge_records.lead')
658 + ' id="record_' + record_ids[i] + '" type="radio" name="lead"';
659 xml += ' onclick="' + "try { var x = $('lead'); x.setAttribute('value',";
660 xml += record_ids[i] + '); x.disabled = false; } catch(E) { alert(E); }">';
661 xml += '</input>' + $("catStrings").getFormattedString('staff.cat.record_buckets.merge_records.lead_record_number',[record_ids[i]]) + '</td>';
663 xml += '</tr><tr valign="top">';
664 for (var i = 0; i < record_ids.length; i++) {
665 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
666 xml += '?docid=' + record_ids[i] + '"/></td>';
668 xml += '</tr><tr valign="top">';
669 for (var i = 0; i < record_ids.length; i++) {
670 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
671 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
673 xml += '</tr></table></form>';
674 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
675 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
676 JSAN.use('util.window'); var win = new util.window();
677 var fancy_prompt_data = win.open(
678 urls.XUL_FANCY_PROMPT,
679 //+ '?xml_in_stash=temp_merge_mid'
680 //+ '&top_xml_in_stash=temp_merge_top'
681 //+ '&title=' + window.escape('Record Merging'),
682 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
684 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt_title')
687 //obj.data.stash_retrieve();
689 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status == 'incomplete') {
690 alert($("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt.alert'));
693 var robj = obj.network.simple_request('MERGE_RECORDS',
696 fancy_prompt_data.lead,
697 util.functional.filter_list( record_ids,
699 return o != fancy_prompt_data.lead;
704 if (typeof robj.ilsevent != 'undefined') {
707 alert($("catStrings").getString('staff.cat.record_buckets.merge_records.success'));
710 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
713 JSAN.use('util.widgets');
714 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
718 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.merge_records.catch.std_unex_error'),E);
724 'cmd_delete_records' : [
728 obj.list2.select_all();
729 obj.data.stash_retrieve();
730 JSAN.use('util.functional');
732 var record_ids = util.functional.map_list(
733 obj.list2.dump_retrieve_ids(),
735 return JSON2js(o).docid; // docid
739 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
740 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
741 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.delete_records.xml1') + '</description>';
743 top_xml += '<button id="lead" disabled="false" label="'
744 + $("catStrings").getString('staff.cat.record_buckets.delete_records.button.label')
745 + '" name="fancy_submit"/>';
746 top_xml += '<button label="'
747 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.label') +'" accesskey="'
748 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
750 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
751 xml += '<table><tr valign="top">';
752 for (var i = 0; i < record_ids.length; i++) {
753 xml += '<td>' + $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.xml2', [record_ids[i]]) + '</td>';
755 xml += '</tr><tr valign="top">';
756 for (var i = 0; i < record_ids.length; i++) {
757 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
758 xml += '?docid=' + record_ids[i] + '"/></td>';
760 xml += '</tr><tr valign="top">';
761 for (var i = 0; i < record_ids.length; i++) {
762 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
763 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
765 xml += '</tr></table></form>';
766 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
767 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
768 JSAN.use('util.window'); var win = new util.window();
769 var fancy_prompt_data = win.open(
770 urls.XUL_FANCY_PROMPT,
771 //+ '?xml_in_stash=temp_merge_mid'
772 //+ '&top_xml_in_stash=temp_merge_top'
773 //+ '&title=' + window.escape('Record Purging'),
774 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
776 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt_title')
779 //obj.data.stash_retrieve();
780 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') {
781 alert($("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt.alert'));
785 for (var i = 0; i < record_ids.length; i++) {
786 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
787 if (typeof robj.ilsevent != 'undefined') {
788 if (!s) s = $("catStrings").getString('staff.cat.record_buckets.delete_records.s1');
789 s += $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.s2', [record_ids[i], robj.textcode, robj.desc]);
792 if (s) { alert(s); } else { alert($("catStrings").getString('staff.cat.record_buckets.delete_records.delete_success.alert')); }
794 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
797 JSAN.use('util.widgets');
798 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
802 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.delete_records.catch.std_unex_err',E));
810 function() { alert($("catStrings").getString('staff.cat.record_buckets.cmd_broken.alert')); }
816 obj.list2.select_all();
817 JSAN.use('util.functional');
818 var docids = util.functional.map_list(
819 obj.list2.dump_retrieve_ids(),
821 return JSON2js(o).docid; // docid
825 for (var i = 0; i < docids.length; i++) {
826 var doc_id = docids[i];
827 if (seen[doc_id]) continue; seen[doc_id] = true;
828 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
829 var content_params = {
831 'authtime' : ses('authtime'),
832 'opac_url' : opac_url
835 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
836 {'tab_name':$("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.tab_name')},
841 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.catch.std_unex_err'),E);
845 'record_buckets_export_records' : [ ['render'], function(){} ],
846 'record_buckets_list_actions' : [ ['render'], function(){} ]
850 this.controller.render();
852 if (typeof xulG == 'undefined') {
853 obj.controller.view.cmd_sel_opac.disabled = true;
854 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
858 'submit' : function() {
861 var x = document.getElementById('record_query_input');
863 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
867 var y = document.getElementById('query_status');
869 if (y) y.value = $("catStrings").getString('staff.cat.record_buckets.submit.query_status');
870 obj.network.simple_request(
871 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
875 var resp = req.getResultObject();
876 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
878 if (resp.count > 0) {
879 JSAN.use('util.exec'); var exec = new util.exec();
881 for (var i = 0; i < resp.ids.length; i++) {
885 obj.list0.append(obj.prep_record_for_list(b));
892 obj.controller.view.record_query_input.focus();
893 obj.controller.view.record_query_input.select();
898 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
901 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
906 this.error.standard_unexpected_error_alert('submit_query',E);
910 'prep_record_for_list' : function(docid,bucket_item_id) {
914 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
918 'bucket_item_id' : bucket_item_id
924 obj.error.standard_unexpected_error_alert($("catStrings").getFormattedString('staff.cat.record_buckets.prep_record_for_list.std_unex_err', [docid]),E);
931 dump('exiting cat.record_buckets.js\n');