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;
28 for (var i = 0; i < x.lastChild.childNodes.length; i++) {
29 var p = x.lastChild.childNodes[i].firstChild;
30 p.hidden = x.selectedIndex != i;
35 cat.record_buckets.pick_file = function (defaultFileName) {
36 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
38 var nsIFilePicker = Components.interfaces.nsIFilePicker;
39 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance( nsIFilePicker );
41 fp.init( window, $("catStrings").getString('staff.cat.record_buckets.save_file_as'), nsIFilePicker.modeSave );
43 fp.defaultString = defaultFileName;
45 fp.appendFilters( nsIFilePicker.filterAll );
47 var result = fp.show();
48 if ( (result == nsIFilePicker.returnOK || result == nsIFilePicker.returnReplace) && fp.file ) {
55 cat.record_buckets.export_records = function(obj, output_type) {
57 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
58 obj.list2.select_all();
59 obj.data.stash_retrieve();
60 JSAN.use('util.functional');
62 var record_ids = util.functional.map_list(
63 obj.list2.dump_retrieve_ids(),
64 function (o) { return JSON2js(o).docid }
67 var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
68 .createInstance(Components.interfaces.nsIWebBrowserPersist);
70 var proto_uri = 'http://' + window.location.hostname + '/exporter?format=' + output_type;
72 dump('Record Export URI is ' + proto_uri + '&id=' + record_ids.join('&id=') + '\n');
74 var uri = Components.classes["@mozilla.org/network/io-service;1"]
75 .getService(Components.interfaces.nsIIOService)
76 .newURI( proto_uri + '&id=' + record_ids.join('&id='), null, null );
78 var file = cat.record_buckets.pick_file('bucket.' + output_type);
81 persist.saveURI(uri,null,null,null,null,file);
83 alert( $("catStrings").getString('staff.cat.record_buckets.export_records.alert') );
87 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.export_records.std_unexpected_error'), E);
92 cat.record_buckets.prototype = {
93 'selection_list0' : [],
94 'selection_list1' : [],
95 'selection_list2' : [],
96 'bucket_id_name_map' : {},
98 'render_pending_records' : function() {
99 if (this.first_pause) {
100 this.first_pause = false;
102 alert( $("commonStrings").getString('common.action_complete'));
106 for (var i = 0; i < obj.record_ids.length; i++) {
107 var item = obj.prep_record_for_list( obj.record_ids[i] );
108 if (item) obj.list1.append( item );
112 'init' : function( params ) {
116 obj.record_ids = params['record_ids'] || [];
118 JSAN.use('circ.util');
119 var columns = circ.util.columns(
121 'title' : { 'hidden' : false },
122 'author' : { 'hidden' : false },
123 'edition' : { 'hidden' : false },
124 'publisher' : { 'hidden' : false },
125 'pubdate' : { 'hidden' : false },
126 'isbn' : { 'hidden' : false },
127 'tcn' : { 'hidden' : false }
131 JSAN.use('util.list');
133 function retrieve_row(params) {
134 var row = params.row;
136 obj.network.simple_request( 'MODS_SLIM_RECORD_RETRIEVE.authoritative', [ row.my.docid ],
139 var record = req.getResultObject();
140 if (typeof req.ilsevent != 'undefined') throw(req);
142 if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
145 obj.error.standard_unexpected_error_alert(
146 $("catStrings").getFormattedString('staff.cat.record_buckets.retrieve_row.std_unexpected_error', [row.my.docid]), E);
151 obj.error.sdump('D_ERROR','retrieve_row: ' + E );
156 obj.list0 = new util.list('record_query_list');
160 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
161 'retrieve_row' : retrieve_row,
162 'on_select' : function(ev) {
164 JSAN.use('util.functional');
165 var sel = obj.list0.retrieve_selection();
166 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
167 obj.selection_list0 = util.functional.map_list(
169 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
171 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 0 = ' + js2JSON(obj.selection_list1) );
172 if (obj.selection_list0.length == 0) {
173 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','true');
175 obj.controller.view.cmd_add_sel_query_to_pending.setAttribute('disabled','false');
178 alert('FIXME: ' + E);
185 obj.list1 = new util.list('pending_records_list');
189 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
190 'retrieve_row' : retrieve_row,
191 'on_select' : function(ev) {
193 JSAN.use('util.functional');
194 var sel = obj.list1.retrieve_selection();
195 obj.controller.view.sel_clip1.setAttribute('disabled', sel.length < 1 ? "true" : "false");
196 obj.selection_list1 = util.functional.map_list(
198 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
200 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 1 = ' + js2JSON(obj.selection_list1) );
201 if (obj.selection_list1.length == 0) {
202 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','true');
204 obj.controller.view.cmd_add_sel_pending_to_record_bucket.setAttribute('disabled','false');
207 alert('FIXME: ' + E);
214 obj.render_pending_records();
216 obj.list2 = new util.list('records_in_bucket_list');
220 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
221 'retrieve_row' : retrieve_row,
222 'on_select' : function(ev) {
224 JSAN.use('util.functional');
225 var sel = obj.list2.retrieve_selection();
226 obj.controller.view.sel_clip2.setAttribute('disabled', sel.length < 1 ? "true" : "false");
227 obj.selection_list2 = util.functional.map_list(
229 function(o) { return JSON2js(o.getAttribute('retrieve_id')); }
231 obj.error.sdump('D_TRACE','circ/record_buckets: selection list 2 = ' + js2JSON(obj.selection_list2) );
232 if (obj.selection_list2.length == 0) {
233 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','true');
234 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','true');
236 obj.controller.view.cmd_record_buckets_delete_item.setAttribute('disabled','false');
237 obj.controller.view.cmd_record_buckets_to_pending_buckets.setAttribute('disabled','false');
240 alert('FIXME: ' + E);
246 JSAN.use('util.controller'); obj.controller = new util.controller();
252 function() { obj.list2.save_columns(); }
256 function() { obj.list1.save_columns(); }
260 function() { obj.list0.save_columns(); }
264 function() { obj.list2.clipboard(); }
268 function() { obj.list1.clipboard(); }
272 function() { obj.list0.clipboard(); }
274 'record_query_input' : [
277 ev.addEventListener('keypress',function(ev){
278 if (ev.target.tagName != 'textbox') return;
279 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.submit(); }, 0);
283 'cmd_submit_query' : [
285 function() { obj.submit(); }
287 'record_buckets_menulist_placeholder' : [
291 JSAN.use('util.widgets'); JSAN.use('util.functional');
292 var buckets = obj.network.simple_request(
293 'BUCKET_RETRIEVE_VIA_USER',
294 [ ses(), obj.data.list.au[0].id() ]
296 if (typeof buckets.ilsevent != 'undefined') {
297 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.buckets.std_unexpected_error'), buckets);
301 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item1'),''],
302 [$("catStrings").getString('staff.cat.record_buckets.menulist_placeholder.item2'),-1]
304 util.functional.map_list(
305 util.functional.filter_list(
308 return o.btype() == 'staff_client';
312 obj.bucket_id_name_map[ o.id() ] = o.name();
313 return [ o.name(), o.id() ];
317 if (a[0] < b[0]) return -1;
318 if (a[0] > b[0]) return 1;
323 obj.error.sdump('D_TRACE','items = ' + js2JSON(items));
324 util.widgets.remove_children( e );
325 var ml = util.widgets.make_menulist(
329 ml.setAttribute('id','bucket_menulist');
330 ml.setAttribute('accesskey','');
332 function change_bucket(ev) {
333 var bucket_id = ev.target.value;
334 if (bucket_id < 0 ) {
335 bucket_id = window.prompt($("catStrings").getString('staff.cat.record_buckets.change_bucket.bucket_id'));
336 ev.target.value = bucket_id;
337 ev.target.setAttribute('value',bucket_id);
339 if (!bucket_id) return;
340 var x = document.getElementById('info_box');
341 if (x) x.setAttribute('hidden','true');
342 x = document.getElementById('bucket_item_count');
343 if (x) x.setAttribute('label','');
344 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
345 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
346 obj.controller.view.record_buckets_export_records.disabled = true;
347 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
348 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
349 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
350 obj.controller.view.record_buckets_list_actions.disabled = true;
351 var bucket = obj.network.simple_request(
353 [ ses(), 'biblio', bucket_id ]
355 if (typeof bucket.ilsevent != 'undefined') {
356 if (bucket.ilsevent == 1506 /* CONTAINER_NOT_FOUND */) {
357 alert('Could not find a bucket with ID = ' + bucket_id);
359 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.change_bucket.error'),bucket);
364 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','false');
365 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','false');
366 obj.controller.view.record_buckets_export_records.disabled = false;
367 obj.controller.view.cmd_merge_records.setAttribute('disabled','false');
368 obj.controller.view.cmd_delete_records.setAttribute('disabled','false');
369 obj.controller.view.cmd_sel_opac.setAttribute('disabled','false');
370 obj.controller.view.record_buckets_list_actions.disabled = false;
372 var x = document.getElementById('info_box');
373 x.setAttribute('hidden','false');
374 x = document.getElementById('bucket_number');
375 x.setAttribute('value',bucket.id());
376 x = document.getElementById('bucket_name');
377 x.setAttribute('value',bucket.name());
378 x = document.getElementById('bucket_owner');
379 var s = bucket.owner(); JSAN.use('patron.util');
380 if (s && typeof s != "object") s = patron.util.retrieve_fleshed_au_via_id(ses(),s);
381 x.setAttribute('value',s.family_name() + ' (' + s.card().barcode() + ") @ " + obj.data.hash.aou[ s.home_ou() ].shortname());
385 var items = bucket.items() || [];
387 var x = document.getElementById('bucket_item_count');
388 if (x && catStrings) x.setAttribute('value',catStrings.getFormattedString('cat.total_bucket_items_in_bucket',[items.length]));
389 for (var i = 0; i < items.length; i++) {
390 var item = obj.prep_record_for_list(
391 items[i].target_biblio_record_entry(),
394 if (item) obj.list2.append( item );
398 ml.addEventListener( 'change_bucket', change_bucket , false);
399 ml.addEventListener( 'command', function() {
400 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
402 obj.controller.view.bucket_menulist = ml;
403 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',ml);
408 'cmd_record_buckets_refresh' : [
411 JSAN.use('util.widgets'); util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
415 'cmd_add_all_query_to_pending' : [
418 obj.list0.select_all();
419 for (var i = 0; i < obj.selection_list0.length; i++) {
420 var docid = obj.selection_list0[i].docid;
422 var item = obj.prep_record_for_list( docid );
424 obj.list1.append( item );
425 obj.record_ids.push( docid );
433 'cmd_add_sel_query_to_pending' : [
436 for (var i = 0; i < obj.selection_list0.length; i++) {
437 var docid = obj.selection_list0[i].docid;
439 var item = obj.prep_record_for_list( docid );
441 obj.list1.append( item );
442 obj.record_ids.push( docid );
451 'cmd_add_all_pending_to_record_bucket' : [
454 var bucket_id = obj.controller.view.bucket_menulist.value;
455 if (!bucket_id) return;
456 for (var i = 0; i < obj.record_ids.length; i++) {
457 var bucket_item = new cbrebi();
458 bucket_item.isnew('1');
459 bucket_item.bucket(bucket_id);
460 bucket_item.target_biblio_record_entry( obj.record_ids[i] );
462 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
463 [ ses(), 'biblio', bucket_item ]);
465 if (typeof robj == 'object') throw robj;
467 var item = obj.prep_record_for_list( obj.record_ids[i], robj );
470 obj.list2.append( item );
477 'cmd_add_sel_pending_to_record_bucket' : [
480 var bucket_id = obj.controller.view.bucket_menulist.value;
481 if (!bucket_id) return;
482 for (var i = 0; i < obj.selection_list1.length; i++) {
483 var docid = obj.selection_list1[i].docid;
484 var bucket_item = new cbrebi();
485 bucket_item.isnew('1');
486 bucket_item.bucket(bucket_id);
487 bucket_item.target_biblio_record_entry( docid );
489 var robj = obj.network.simple_request('BUCKET_ITEM_CREATE',
490 [ ses(), 'biblio', bucket_item ]);
492 if (typeof robj == 'object') throw robj;
494 var item = obj.prep_record_for_list( docid, robj );
497 obj.list2.append( item );
505 'cmd_record_buckets_to_pending_buckets' : [
508 for (var i = 0; i < obj.selection_list2.length; i++) {
509 var docid = obj.selection_list2[i].docid;
510 var item = obj.prep_record_for_list( docid );
512 obj.list1.append( item );
513 obj.record_ids.push( docid );
519 'cmd_record_buckets_delete_item' : [
522 for (var i = 0; i < obj.selection_list2.length; i++) {
524 var bucket_item_id = obj.selection_list2[i].bucket_item_id;
525 var robj = obj.network.simple_request('BUCKET_ITEM_DELETE',
526 [ ses(), 'biblio', bucket_item_id ]);
527 if (typeof robj == 'object') throw robj;
532 alert( $("commonStrings").getString('common.action_complete'));
535 JSAN.use('util.widgets');
536 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
541 'cmd_record_buckets_delete_bucket' : [
545 var bucket = obj.controller.view.bucket_menulist.value;
546 var name = obj.bucket_id_name_map[ bucket ];
547 var conf = window.confirm($("catStrings").getFormattedString('staff.cat.record_buckets.delete_bucket_named', [name]));
550 var robj = obj.network.simple_request('BUCKET_DELETE',[ses(),'biblio',bucket]);
551 if (typeof robj == 'object') throw robj;
552 alert( $("commonStrings").getString('common.action_complete'));
553 var x = document.getElementById('info_box');
554 x.setAttribute('hidden','true');
555 obj.controller.view.cmd_record_buckets_delete_bucket.setAttribute('disabled','true');
556 obj.controller.view.cmd_record_buckets_refresh.setAttribute('disabled','true');
557 obj.controller.view.record_buckets_export_records.disabled = true;
558 obj.controller.view.cmd_merge_records.setAttribute('disabled','true');
559 obj.controller.view.cmd_delete_records.setAttribute('disabled','true');
560 obj.controller.view.cmd_sel_opac.setAttribute('disabled','true');
561 obj.controller.view.record_buckets_list_actions.disabled = true;
562 obj.controller.render('record_buckets_menulist_placeholder');
565 JSAN.use('util.widgets');
566 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
571 alert('FIXME: ' + E);
575 'cmd_record_buckets_new_bucket' : [
580 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt'),
582 $("catStrings").getString('staff.cat.record_buckets.new_bucket.bucket_prompt_title')
586 var bucket = new cbreb();
587 bucket.btype('staff_client');
588 bucket.owner( obj.data.list.au[0].id() );
591 var robj = obj.network.simple_request('BUCKET_CREATE',[ses(),'biblio',bucket]);
593 if (typeof robj == 'object') {
594 if (robj.ilsevent == 1710 /* CONTAINER_EXISTS */) {
595 alert($("catStrings").getString('staff.cat.record_buckets.new_bucket.same_name_alert'));
601 alert($("catStrings").getFormattedString('staff.cat.record_buckets.new_bucket.bucket_created', [name]));
603 obj.controller.render('record_buckets_menulist_placeholder');
604 obj.controller.view.bucket_menulist.value = robj;
607 JSAN.use('util.widgets');
608 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
618 'cmd_record_query_csv_to_clipboard' : [ ['command'], function() { obj.list0.dump_csv_to_clipboard(); } ],
619 'cmd_pending_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list1.dump_csv_to_clipboard(); } ],
620 'cmd_record_buckets_csv_to_clipboard' : [ ['command'], function() { obj.list2.dump_csv_to_clipboard(); } ],
621 'cmd_record_query_csv_to_printer' : [ ['command'], function() { obj.list0.dump_csv_to_printer(); } ],
622 'cmd_pending_buckets_csv_to_printer' : [ ['command'], function() { obj.list1.dump_csv_to_printer(); } ],
623 'cmd_record_buckets_csv_printer' : [ ['command'], function() { obj.list2.dump_csv_to_printer(); } ],
624 'cmd_record_query_csv_to_file' : [ ['command'], function() { obj.list0.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
625 'cmd_pending_buckets_csv_to_file' : [ ['command'], function() { obj.list1.dump_csv_to_file( { 'defaultFileName' : 'pending_records.txt' } ); } ],
626 'cmd_record_buckets_csv_file' : [ ['command'], function() { obj.list2.dump_csv_to_file( { 'defaultFileName' : 'bucket_records.txt' } ); } ],
628 'cmd_export_records_usmarc' : [
630 function () { return cat.record_buckets.export_records(obj, 'usmarc') }
633 'cmd_export_records_unimarc' : [
635 function () { return cat.record_buckets.export_records(obj, 'unimarc') }
638 'cmd_export_records_xml' : [
640 function () { return cat.record_buckets.export_records(obj, 'xml') }
643 'cmd_export_records_bre' : [
645 function () { return cat.record_buckets.export_records(obj, 'bre') }
648 'cmd_merge_records' : [
652 obj.list2.select_all();
653 obj.data.stash_retrieve();
654 JSAN.use('util.functional');
656 var record_ids = util.functional.map_list(
657 obj.list2.dump_retrieve_ids(),
659 return JSON2js(o).docid; // docid
663 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
664 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
665 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.merge_records.merge_lead') + '</description>';
667 top_xml += '<button id="lead" disabled="true" label="'
668 + $("catStrings").getString('staff.cat.record_buckets.merge_records.button.label') + '" name="fancy_submit"/>';
669 top_xml += '<button label="' + $("catStrings").getString('staff.cat.record_buckets.merge_records.cancel_button.label') +'" accesskey="'
670 + $("catStrings").getString('staff.cat.record_buckets.merge_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
672 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
673 xml += '<table><tr valign="top">';
674 for (var i = 0; i < record_ids.length; i++) {
675 xml += '<td><input value="' + $("catStrings").getString('staff.cat.record_buckets.merge_records.lead')
676 xml += '" id="record_' + record_ids[i] + '" type="radio" name="lead"';
677 xml += ' onclick="' + "try { var x = $('lead'); x.setAttribute('value',";
678 xml += record_ids[i] + '); x.disabled = false; } catch(E) { alert(E); }">';
679 xml += '</input>' + $("catStrings").getFormattedString('staff.cat.record_buckets.merge_records.lead_record_number',[record_ids[i]]) + '</td>';
681 xml += '</tr><tr valign="top">';
682 for (var i = 0; i < record_ids.length; i++) {
683 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
684 xml += '?docid=' + record_ids[i] + '"/></td>';
686 xml += '</tr><tr valign="top">';
687 for (var i = 0; i < record_ids.length; i++) {
688 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
689 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
691 xml += '</tr></table></form>';
692 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
693 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
694 JSAN.use('util.window'); var win = new util.window();
695 var fancy_prompt_data = win.open(
696 urls.XUL_FANCY_PROMPT,
697 //+ '?xml_in_stash=temp_merge_mid'
698 //+ '&top_xml_in_stash=temp_merge_top'
699 //+ '&title=' + window.escape('Record Merging'),
700 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
702 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt_title')
705 //obj.data.stash_retrieve();
707 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status == 'incomplete') {
708 alert($("catStrings").getString('staff.cat.record_buckets.merge_records.fancy_prompt.alert'));
711 var robj = obj.network.simple_request('MERGE_RECORDS',
714 fancy_prompt_data.lead,
715 util.functional.filter_list( record_ids,
717 return o != fancy_prompt_data.lead;
722 if (typeof robj.ilsevent != 'undefined') {
725 alert($("catStrings").getString('staff.cat.record_buckets.merge_records.success'));
728 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
731 JSAN.use('util.widgets');
732 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
736 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.merge_records.catch.std_unex_error'),E);
742 'cmd_delete_records' : [
746 obj.list2.select_all();
747 obj.data.stash_retrieve();
748 JSAN.use('util.functional');
750 var record_ids = util.functional.map_list(
751 obj.list2.dump_retrieve_ids(),
753 return JSON2js(o).docid; // docid
757 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
758 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
759 top_xml += '<description>' + $("catStrings").getString('staff.cat.record_buckets.delete_records.xml1') + '</description>';
761 top_xml += '<button id="lead" disabled="false" label="'
762 + $("catStrings").getString('staff.cat.record_buckets.delete_records.button.label')
763 + '" name="fancy_submit"/>';
764 top_xml += '<button label="'
765 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.label') +'" accesskey="'
766 + $("catStrings").getString('staff.cat.record_buckets.delete_records.cancel_button.accesskey') +'" name="fancy_cancel"/></hbox></vbox>';
768 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
769 xml += '<table><tr valign="top">';
770 for (var i = 0; i < record_ids.length; i++) {
771 xml += '<td>' + $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.xml2', [record_ids[i]]) + '</td>';
773 xml += '</tr><tr valign="top">';
774 for (var i = 0; i < record_ids.length; i++) {
775 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
776 xml += '?docid=' + record_ids[i] + '"/></td>';
778 xml += '</tr><tr valign="top">';
779 for (var i = 0; i < record_ids.length; i++) {
780 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
781 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
783 xml += '</tr></table></form>';
784 //obj.data.temp_merge_top = top_xml; obj.data.stash('temp_merge_top');
785 //obj.data.temp_merge_mid = xml; obj.data.stash('temp_merge_mid');
786 JSAN.use('util.window'); var win = new util.window();
787 var fancy_prompt_data = win.open(
788 urls.XUL_FANCY_PROMPT,
789 //+ '?xml_in_stash=temp_merge_mid'
790 //+ '&top_xml_in_stash=temp_merge_top'
791 //+ '&title=' + window.escape('Record Purging'),
792 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
794 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt_title')
797 //obj.data.stash_retrieve();
798 if (typeof fancy_prompt_data.fancy_status == 'undefined' || fancy_prompt_data.fancy_status != 'complete') {
799 alert($("catStrings").getString('staff.cat.record_buckets.delete_records.fancy_prompt.alert'));
803 for (var i = 0; i < record_ids.length; i++) {
804 var robj = obj.network.simple_request('FM_BRE_DELETE',[ses(),record_ids[i]]);
805 if (typeof robj.ilsevent != 'undefined') {
806 if (!s) s = $("catStrings").getString('staff.cat.record_buckets.delete_records.s1');
807 s += $("catStrings").getFormattedString('staff.cat.record_buckets.delete_records.s2', [record_ids[i], robj.textcode, robj.desc]);
810 if (s) { alert(s); } else { alert($("catStrings").getString('staff.cat.record_buckets.delete_records.delete_success.alert')); }
812 obj.render_pending_records(); // FIXME -- need a generic refresh for lists
815 JSAN.use('util.widgets');
816 util.widgets.dispatch('change_bucket',obj.controller.view.bucket_menulist);
820 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.delete_records.catch.std_unex_err',E));
828 function() { alert($("catStrings").getString('staff.cat.record_buckets.cmd_broken.alert')); }
834 obj.list2.select_all();
835 JSAN.use('util.functional');
836 var docids = util.functional.map_list(
837 obj.list2.dump_retrieve_ids(),
839 return JSON2js(o).docid; // docid
843 for (var i = 0; i < docids.length; i++) {
844 var doc_id = docids[i];
845 if (seen[doc_id]) continue; seen[doc_id] = true;
846 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
847 var content_params = {
849 'authtime' : ses('authtime'),
850 'opac_url' : opac_url
853 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
854 {'tab_name':$("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.tab_name')},
859 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.record_buckets.cmd_sel_opac.catch.std_unex_err'),E);
863 'record_buckets_export_records' : [ ['render'], function(){} ],
864 'record_buckets_list_actions' : [ ['render'], function(){} ]
868 this.controller.render();
870 if (typeof xulG == 'undefined') {
871 obj.controller.view.cmd_sel_opac.disabled = true;
872 obj.controller.view.cmd_sel_opac.setAttribute('disabled',true);
876 'submit' : function() {
879 var x = document.getElementById('record_query_input');
881 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
885 var y = document.getElementById('query_status');
887 if (y) y.value = $("catStrings").getString('staff.cat.record_buckets.submit.query_status');
888 obj.network.simple_request(
889 'FM_BRE_ID_SEARCH_VIA_MULTICLASS_QUERY',
893 var resp = req.getResultObject();
894 if (y) y.value = catStrings.getFormattedString('cat.results_returned',[resp.count]);
896 if (resp.count > 0) {
897 JSAN.use('util.exec'); var exec = new util.exec();
899 for (var i = 0; i < resp.ids.length; i++) {
903 obj.list0.append(obj.prep_record_for_list(b));
910 obj.controller.view.record_query_input.focus();
911 obj.controller.view.record_query_input.select();
916 setTimeout( function() { obj.controller.view.record_query_input.focus(); obj.controller.view.record_query_input.select(); }, 0 );
919 obj.error.standard_unexpected_error_alert('submit_query_callback',E);
924 this.error.standard_unexpected_error_alert('submit_query',E);
928 'prep_record_for_list' : function(docid,bucket_item_id) {
932 'retrieve_id' : js2JSON( { 'docid' : docid, 'bucket_item_id' : bucket_item_id } ),
936 'bucket_item_id' : bucket_item_id
942 obj.error.standard_unexpected_error_alert($("catStrings").getFormattedString('staff.cat.record_buckets.prep_record_for_list.std_unex_err', [docid]),E);
949 dump('exiting cat.record_buckets.js\n');