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");
18 if (ev.target.tagName == 'tabpanels') {
19 for (var i = 0; i < ev.target.childNodes.length; i++) {
20 var p = ev.target.childNodes[i].firstChild;
21 p.hidden = x.selectedIndex != i;
31 cat.record_buckets.pick_file = function (defaultFileName) {
32 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
34 var nsIFilePicker = Components.interfaces.nsIFilePicker;
35 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance( nsIFilePicker );
37 fp.init( window, $("catStrings").getString('staff.cat.record_buckets.save_file_as'), nsIFilePicker.modeSave );
39 fp.defaultString = defaultFileName;
41 fp.appendFilters( nsIFilePicker.filterAll );
43 var result = fp.show();
44 if ( (result == nsIFilePicker.returnOK || result == nsIFilePicker.returnReplace) && fp.file ) {
51 cat.record_buckets.export_records = function(obj, output_type) {
53 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
54 obj.list2.select_all();
55 obj.data.stash_retrieve();
56 JSAN.use('util.functional');
58 var record_ids = util.functional.map_list(
59 obj.list2.dump_retrieve_ids(),
60 function (o) { return JSON2js(o).docid }
63 var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
64 .createInstance(Components.interfaces.nsIWebBrowserPersist);
66 var proto_uri = 'http://' + window.location.hostname + '/exporter?format=' + output_type;
68 dump('Record Export URI is ' + proto_uri + '&id=' + record_ids.join('&id=') + '\n');
70 var uri = Components.classes["@mozilla.org/network/io-service;1"]
71 .getService(Components.interfaces.nsIIOService)
72 .newURI( proto_uri + '&id=' + record_ids.join('&id='), null, null );
74 var file = cat.record_buckets.pick_file('bucket.' + output_type);
77 persist.saveURI(uri,null,null,null,null,file);
79 alert( $("catStrings").getString('staff.cat.record_buckets.export_records.alert') );
83 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.export_records.std_unexpected_error'), E);
88 cat.record_buckets.prototype = {
89 'selection_list0' : [],
90 'selection_list1' : [],
91 'selection_list2' : [],
92 'bucket_id_name_map' : {},
94 'render_pending_records' : function() {
95 if (this.first_pause) {
96 this.first_pause = false;
98 alert( $("commonStrings").getString('common.action_complete'));
102 for (var i = 0; i < obj.record_ids.length; i++) {
103 var item = obj.prep_record_for_list( obj.record_ids[i] );
104 if (item) obj.list1.append( item );
108 'init' : function( params ) {
112 obj.record_ids = params['record_ids'] || [];
114 JSAN.use('circ.util');
115 var columns = circ.util.columns(
117 'title' : { 'hidden' : false },
118 'author' : { 'hidden' : false },
119 'edition' : { 'hidden' : false },
120 'publisher' : { 'hidden' : false },
121 'pubdate' : { 'hidden' : false },
122 'isbn' : { 'hidden' : false },
123 'tcn' : { 'hidden' : false }
127 JSAN.use('util.list');
129 function retrieve_row(params) {
130 var row = params.row;
132 obj.network.simple_request( 'MODS_SLIM_RECORD_RETRIEVE.authoritative', [ row.my.docid ],
135 var record = req.getResultObject();
136 if (typeof req.ilsevent != 'undefined') throw(req);
138 if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
141 obj.error.standard_unexpected_error_alert(
142 $("catStrings").getFormattedString('staff.cat.record_buckets.retrieve_row.std_unexpected_error', [row.my.docid]), E);
147 obj.error.sdump('D_ERROR','retrieve_row: ' + E );
152 obj.list0 = new util.list('record_query_list');
156 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
157 'retrieve_row' : retrieve_row,
158 'on_select' : function(ev) {
160 JSAN.use('util.functional');
161 var sel = obj.list0.retrieve_selection();
162 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
163 obj.selection_list0 = util.functional.map_list(
165 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
167 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 0 = ' + js2JSON(obj.selection_list1) );
168 if (obj.selection_list0.length == 0) {
169 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','true');
171 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','false');
174 alert('FIXME: ' + E);
181 obj.list1 = new util.list('pending_records_list');
185 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
186 'retrieve_row' : retrieve_row,
187 'on_select' : function(ev) {
189 JSAN.use('util.functional');
190 var sel = obj.list1.retrieve_selection();
191 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
192 obj.selection_list1 = util.functional.map_list(
194 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
196 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
197 if (obj.selection_list1.length == 0) {
198 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','true');
200 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','false');
203 alert('FIXME: ' + E);
210 obj.render_pending_records();
212 obj.list2 = new util.list('records_in_bucket_list');
216 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
217 'retrieve_row' : retrieve_row,
218 'on_select' : function(ev) {
220 JSAN.use('util.functional');
221 var sel = obj.list2.retrieve_selection();
222 obj.controller.view.sel_clip2.setAttribute('disabled', sel.length < 1 ? "true" : "false");
223 obj.selection_list2 = util.functional.map_list(
225 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
227 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
228 if (obj.selection_list2.length == 0) {
229 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','true');
230 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','true');
232 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','false');
233 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','false');
236 alert('FIXME: ' + E);
242 JSAN.use('util.controller'); obj.controller = new util.controller();
248 function() { obj.list2.save_columns(); }
252 function() { obj.list1.save_columns(); }
256 function() { obj.list0.save_columns(); }
260 function() { obj.list2.clipboard(); }
264 function() { obj.list1.clipboard(); }
268 function() { obj.list0.clipboard(); }
270 'record_query_input' : [
273 ev.addEventListener('keypress',function(ev){
274 if (ev.target.tagName != 'textbox') return;
275 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
279 'cmd_submit_query' : [
281 function() { obj.submit(); }
283 'record_buckets_menulist_placeholder' : [
287 JSAN.use('util.widgets'); JSAN.use('util.functional');
288 var buckets = obj.network.simple_request(
289 'BUCKET_RETRIEVE_VIA_USER',
290 [ ses(), obj.data.list.au[0].id() ]
292 if (typeof buckets.ilsevent != 'undefined') {
293 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.buckets.std_unexpected_error'), buckets);
297 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item1'),''],
298 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item2'),-1]
300 util.functional.map_list(
301 util.functional.filter_list(
304 return o.btype() == 'staff_client';
308 obj.bucket_id_name_map[ o.id() ] = o.name();
309 return [ o.name(), o.id() ];
313 if (a[0] < b[0]) return -1;
314 if (a[0] > b[0]) return 1;
319 obj.error.sdump('D_TRACE','items = ' + js2JSON(items));
320 util.widgets.remove_children( e );
321 var ml = util.widgets.make_menulist(
325 ml.setAttribute('id','bucket_menulist');
326 ml.setAttribute('accesskey','');
328 function change_bucket(ev) {
329 var bucket_id = ev.target.value;
330 if (bucket_id < 0 ) {
331 bucket_id = window.prompt($("catStrings").getString('staff.cat.record_buckets.change_bucket.bucket_id'));
332 ev.target.value = bucket_id;
333 ev.target.setAttribute('value',bucket_id);
335 if (!bucket_id) return;
336 var x = document.getElementById('info_box');
337 if (x) x.setAttribute('hidden','true');
338 x = document.getElementById('bucket_item_count');
339 if (x) x.setAttribute('label','');
340 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
341 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
342 obj.controller.view.record_buckets_export_records.disabled = true;
343 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
344 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
345 obj.controller.view.cmd_sel_opac.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('Could not find a bucket with ID = ' + 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.record_buckets_list_actions.disabled = false;
368 var x = document.getElementById('info_box');
369 x.setAttribute('hidden','false');
370 x = document.getElementById('bucket_number');
371 x.setAttribute('value',bucket.id());
372 x = document.getElementById('bucket_name');
373 x.setAttribute('value',bucket.name());
374 x = document.getElementById('bucket_owner');
375 var s = bucket.owner(); JSAN.use('patron.util');
376 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
377 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
381 var items = bucket.items() || [];
383 var x = document.getElementById('bucket_item_count');
384 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
385 for (var i = 0; i < items.length; i++) {
386 var item = obj.prep_record_for_list(
387 items[i].target_biblio_record_entry(),
390 if (item) obj.list2.append( item );
394 ml.addEventListener( 'change_bucket', change_bucket , false);
395 ml.addEventListener( 'command', function() {
396 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
398 obj.controller.view.bucket_menulist = ml;
399 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
404 'cmd_record_buckets_refresh' : [
407 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
411 'cmd_add_all_query_to_pending' : [
414 obj.list0.select_all();
415 for (var i = 0; i < obj.selection_list0.length; i++) {
416 var docid = obj.selection_list0[i].docid;
418 var item = obj.prep_record_for_list( docid );
420 obj.list1.append( item );
421 obj.record_ids.push( docid );
429 'cmd_add_sel_query_to_pending' : [
432 for (var i = 0; i < obj.selection_list0.length; i++) {
433 var docid = obj.selection_list0[i].docid;
435 var item = obj.prep_record_for_list( docid );
437 obj.list1.append( item );
438 obj.record_ids.push( docid );
447 'cmd_add_all_pending_to_record_bucket' : [
450 var bucket_id = obj.controller.view.bucket_menulist.value;
451 if (!bucket_id) return;
452 for (var i = 0; i < obj.record_ids.length; i++) {
453 var bucket_item = new cbrebi();
454 bucket_item.isnew('1');
455 bucket_item.bucket(bucket_id);
456 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
458 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
459 [ ses(), 'biblio', bucket_item ]);
461 if (typeof robj == 'object') throw robj;
463 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
466 obj.list2.append( item );
473 'cmd_add_sel_pending_to_record_bucket' : [
476 var bucket_id = obj.controller.view.bucket_menulist.value;
477 if (!bucket_id) return;
478 for (var i = 0; i < obj.selection_list1.length; i++) {
479 var docid = obj.selection_list1[i].docid;
480 var bucket_item = new cbrebi();
481 bucket_item.isnew('1');
482 bucket_item.bucket(bucket_id);
483 bucket_item.target_biblio_record_entry( docid );
485 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
486 [ ses(), 'biblio', bucket_item ]);
488 if (typeof robj == 'object') throw robj;
490 var item = obj.prep_record_for_list( docid, robj );
493 obj.list2.append( item );
501 'cmd_record_buckets_to_pending_buckets' : [
504 for (var i = 0; i < obj.selection_list2.length; i++) {
505 var docid = obj.selection_list2[i].docid;
506 var item = obj.prep_record_for_list( docid );
508 obj.list1.append( item );
509 obj.record_ids.push( docid );
515 'cmd_record_buckets_delete_item' : [
518 for (var i = 0; i < obj.selection_list2.length; i++) {
520 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
521 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
522 [ ses(), 'biblio', bucket_item_id ]);
523 if (typeof robj == 'object') throw robj;
528 alert( $("commonStrings").getString('common.action_complete'));
531 JSAN.use('util.widgets');
532 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
537 'cmd_record_buckets_delete_bucket' : [
541 var bucket = obj.controller.view.bucket_menulist.value;
542 var name = obj.bucket_id_name_map[ bucket ];
543 var conf = window.confirm($("catStrings").getFormattedString('staff.cat.record_buckets.delete_bucket_named', [name]));
546 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
547 if (typeof robj == 'object') throw robj;
548 alert( $("commonStrings").getString('common.action_complete'));
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.record_buckets_list_actions.disabled = true;
558 obj.controller.render('record_buckets_menulist_placeholder');
561 JSAN.use('util.widgets');
562 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
567 alert('FIXME: ' + E);
571 'cmd_record_buckets_new_bucket' : [
576 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt'),
578 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt_title')
582 var bucket = new cbreb();
583 bucket.btype('staff_client');
584 bucket.owner( obj.data.list.au[0].id() );
587 var robj = obj.network.simple_request('BUCKET_CREATE',[ses(),'biblio',bucket]);
589 if (typeof robj == 'object') {
590 if (robj.ilsevent == 1710 /* CONTAINER_EXISTS */) {
591 alert($("catStrings").getString('staff.cat.record_buckets.new_bucket.same_name_alert'));
597 alert($("catStrings").getFormattedString('staff.cat.record_buckets.new_bucket.bucket_created', [name]));
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_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_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
659 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
660 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
661 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.merge_records.merge_lead') + '</description>';
663 top_xml += '<button id="lead" disabled="true" label="'
664 + $("catStrings").getString('staff.cat.record_buckets.merge_records.button.label') + '" name="fancy_submit"/>';
665 top_xml += '<button label="' + $("catStrings").getString('staff.cat.record_buckets.merge_records.cancel_button.label') +'" accesskey="'
666 + $("catStrings").getString('staff.cat.record_buckets.merge_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
668 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
669 xml += '<table><tr valign="top">';
670 for (var i = 0; i < record_ids.length; i++) {
671 xml += '<td><input value="' + $("catStrings").getString('staff.cat.record_buckets.merge_records.lead')
672 xml += '" id="record_' + record_ids[i] + '" type="radio" name="lead"';
673 xml += ' onclick="' + "try { var x = $('lead'); x.setAttribute('value',";
674 xml += record_ids[i] + '); x.disabled = false; } catch(E) { alert(E); }">';
675 xml += '</input>' + $("catStrings").getFormattedString('staff.cat.record_buckets.merge_records.lead_record_number',[record_ids[i]]) + '</td>';
677 xml += '</tr><tr valign="top">';
678 for (var i = 0; i < record_ids.length; i++) {
679 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
680 xml += '?docid=' + record_ids[i] + '"/></td>';
682 xml += '</tr><tr valign="top">';
683 for (var i = 0; i < record_ids.length; i++) {
684 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
685 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
687 xml += '</tr></table></form>';
688 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
689 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
690 JSAN.use('util.window'); var win = new util.window();
691 var fancy_prompt_data = win.open(
692 urls.XUL_FANCY_PROMPT,
693 //+ '?xml_in_stash=temp_merge_mid'
694 //+ '&top_xml_in_stash=temp_merge_top'
695 //+ '&title=' + window.escape('Record Merging'),
696 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
698 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt_title')
701 //obj.data.stash_retrieve();
703 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status == 'incomplete') {
704 alert($("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt.alert'));
707 var robj = obj.network.simple_request('MERGE_RECORDS',
710 fancy_prompt_data.lead,
711 util.functional.filter_list( record_ids,
713 return o != fancy_prompt_data.lead;
718 if (typeof robj.ilsevent != 'undefined') {
721 alert($("catStrings").getString('staff.cat.record_buckets.merge_records.success'));
724 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
727 JSAN.use('util.widgets');
728 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
732 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.merge_records.catch.std_unex_error'),E);
738 'cmd_delete_records' : [
742 obj.list2.select_all();
743 obj.data.stash_retrieve();
744 JSAN.use('util.functional');
746 var record_ids = util.functional.map_list(
747 obj.list2.dump_retrieve_ids(),
749 return JSON2js(o).docid; // docid
753 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
754 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
755 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.delete_records.xml1') + '</description>';
757 top_xml += '<button id="lead" disabled="false" label="'
758 + $("catStrings").getString('staff.cat.record_buckets.delete_records.button.label')
759 + '" name="fancy_submit"/>';
760 top_xml += '<button label="'
761 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.label') +'" accesskey="'
762 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
764 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
765 xml += '<table><tr valign="top">';
766 for (var i = 0; i < record_ids.length; i++) {
767 xml += '<td>' + $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.xml2', [record_ids[i]]) + '</td>';
769 xml += '</tr><tr valign="top">';
770 for (var i = 0; i < record_ids.length; i++) {
771 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
772 xml += '?docid=' + record_ids[i] + '"/></td>';
774 xml += '</tr><tr valign="top">';
775 for (var i = 0; i < record_ids.length; i++) {
776 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
777 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
779 xml += '</tr></table></form>';
780 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
781 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
782 JSAN.use('util.window'); var win = new util.window();
783 var fancy_prompt_data = win.open(
784 urls.XUL_FANCY_PROMPT,
785 //+ '?xml_in_stash=temp_merge_mid'
786 //+ '&top_xml_in_stash=temp_merge_top'
787 //+ '&title=' + window.escape('Record Purging'),
788 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
790 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt_title')
793 //obj.data.stash_retrieve();
794 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') {
795 alert($("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt.alert'));
799 for (var i = 0; i < record_ids.length; i++) {
800 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
801 if (typeof robj.ilsevent != 'undefined') {
802 if (!s) s = $("catStrings").getString('staff.cat.record_buckets.delete_records.s1');
803 s += $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.s2', [record_ids[i], robj.textcode, robj.desc]);
806 if (s) { alert(s); } else { alert($("catStrings").getString('staff.cat.record_buckets.delete_records.delete_success.alert')); }
808 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
811 JSAN.use('util.widgets');
812 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
816 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.delete_records.catch.std_unex_err',E));
824 function() { alert($("catStrings").getString('staff.cat.record_buckets.cmd_broken.alert')); }
830 obj.list2.select_all();
831 JSAN.use('util.functional');
832 var docids = util.functional.map_list(
833 obj.list2.dump_retrieve_ids(),
835 return JSON2js(o).docid; // docid
839 for (var i = 0; i < docids.length; i++) {
840 var doc_id = docids[i];
841 if (seen[doc_id]) continue; seen[doc_id] = true;
842 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
843 var content_params = {
845 'authtime' : ses('authtime'),
846 'opac_url' : opac_url
849 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
850 {'tab_name':$("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.tab_name')},
855 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.catch.std_unex_err'),E);
859 'record_buckets_export_records' : [ ['render'], function(){} ],
860 'record_buckets_list_actions' : [ ['render'], function(){} ]
864 this.controller.render();
866 if (typeof xulG == 'undefined') {
867 obj.controller.view.cmd_sel_opac.disabled = true;
868 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
872 'submit' : function() {
875 var x = document.getElementById('record_query_input');
877 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
881 var y = document.getElementById('query_status');
883 if (y) y.value = $("catStrings").getString('staff.cat.record_buckets.submit.query_status');
884 obj.network.simple_request(
885 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
889 var resp = req.getResultObject();
890 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
892 if (resp.count > 0) {
893 JSAN.use('util.exec'); var exec = new util.exec();
895 for (var i = 0; i < resp.ids.length; i++) {
899 obj.list0.append(obj.prep_record_for_list(b));
906 obj.controller.view.record_query_input.focus();
907 obj.controller.view.record_query_input.select();
912 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
915 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
920 this.error.standard_unexpected_error_alert('submit_query',E);
924 'prep_record_for_list' : function(docid,bucket_item_id) {
928 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
932 'bucket_item_id' : bucket_item_id
938 obj.error.standard_unexpected_error_alert($("catStrings").getFormattedString('staff.cat.record_buckets.prep_record_for_list.std_unex_err', [docid]),E);
945 dump('exiting cat.record_buckets.js\n');