1 dump('entering cat.z3950.js\n');
3 function $(id) { return document.getElementById(id); }
5 if (typeof cat == 'undefined') cat = {};
6 cat.z3950 = function (params) {
8 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
9 JSAN.use('util.error'); this.error = new util.error();
10 JSAN.use('util.network'); this.network = new util.network();
12 dump('cat.z3950: ' + E + '\n');
16 cat.z3950.prototype = {
20 'number_of_result_sets' : 0,
26 'init' : function( params ) {
29 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
30 JSAN.use('util.widgets');
34 JSAN.use('OpenILS.data'); obj.data = new OpenILS.data(); obj.data.init({'via':'stash'});
38 JSAN.use('circ.util');
39 var columns = circ.util.columns(
41 'tcn' : { 'hidden' : false },
42 'isbn' : { 'hidden' : false },
43 'title' : { 'hidden' : false, 'flex' : '1' },
44 'author' : { 'hidden' : false },
45 'edition' : { 'hidden' : false },
46 'pubdate' : { 'hidden' : false },
47 'publisher' : { 'hidden' : false },
48 'service' : { 'hidden' : false }
52 JSAN.use('util.list'); obj.list = new util.list('results');
56 'map_row_to_columns' : circ.util.std_map_row_to_columns(),
57 'on_select' : function(ev) {
59 JSAN.use('util.functional');
60 var sel = obj.list.retrieve_selection();
61 document.getElementById('clip_button').disabled = sel.length < 1;
62 var list = util.functional.map_list(
64 function(o) { return o.getAttribute('retrieve_id'); }
66 obj.error.sdump('D_TRACE','cat/z3950: selection list = ' + js2JSON(list) );
67 obj.controller.view.marc_import.disabled = false;
68 obj.controller.view.marc_import.setAttribute('retrieve_id',list[0]);
69 obj.controller.view.marc_import_overlay.disabled = false;
70 obj.controller.view.marc_import_overlay.setAttribute('retrieve_id',list[0]);
71 obj.controller.view.marc_view_btn.disabled = false;
72 obj.controller.view.marc_view_btn.setAttribute('retrieve_id',list[0]);
74 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_list_init.list_construction_error'),E);
80 JSAN.use('util.controller'); obj.controller = new util.controller();
84 'save_columns' : [ [ 'command' ], function() { obj.list.save_columns(); } ],
87 function() { obj.list.clipboard(); }
92 obj.list.dump_csv_to_clipboard();
97 function() { alert('Not Yet Implemented'); }
99 'result_message' : [['render'],function(e){return function(){};}],
110 setTimeout( function() { obj.focus(); }, 0 );
116 e.setAttribute('label', $("catStrings").getString('staff.cat.z3950.marc_view.label'));
117 e.setAttribute('accesskey', $("catStrings").getString('staff.cat.z3950.marc_view.accesskey'));
124 var n = obj.controller.view.marc_view_btn;
125 if (n.getAttribute('toggle') == '1') {
126 document.getElementById('deck').selectedIndex = 0;
127 n.setAttribute('toggle','0');
128 n.setAttribute('label', $("catStrings").getString('staff.cat.z3950.marc_view.label'));
129 n.setAttribute('accesskey', $("catStrings").getString('staff.cat.z3950.marc_view.accesskey'));
130 document.getElementById('results').focus();
132 document.getElementById('deck').selectedIndex = 1;
133 n.setAttribute('toggle','1');
134 n.setAttribute('label', $("catStrings").getString('staff.cat.z3950.results_view.label'));
135 n.setAttribute('accesskey', $("catStrings").getString('staff.cat.z3950.results_view.accesskey'));
136 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
137 var f = get_contentWindow(document.getElementById('marc_frame'));
138 var retrieve_id = n.getAttribute('retrieve_id');
139 var result_idx = retrieve_id.split('-')[0];
140 var record_idx = retrieve_id.split('-')[1];
141 f.xulG = { 'marcxml' : obj.result_set[result_idx].records[ record_idx ].marcxml };
143 f.document.body.firstChild.focus();
146 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.marc_view_error'),E);
154 var retrieve_id = obj.controller.view.marc_import.getAttribute('retrieve_id');
155 var result_idx = retrieve_id.split('-')[0];
156 var record_idx = retrieve_id.split('-')[1];
157 obj.spawn_marc_editor(
158 obj.result_set[ result_idx ].records[ record_idx ].marcxml,
159 obj.result_set[ result_idx ].records[ record_idx ].service /* FIXME: we want biblio_source here */
162 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.marc_import_error'),E);
166 'marc_import_overlay' : [
170 var retrieve_id = obj.controller.view.marc_import_overlay.getAttribute('retrieve_id');
171 var result_idx = retrieve_id.split('-')[0];
172 var record_idx = retrieve_id.split('-')[1];
173 obj.spawn_marc_editor_for_overlay(
174 obj.result_set[ result_idx ].records[ record_idx ].marcxml,
175 obj.result_set[ result_idx ].records[ record_idx ].service /* FIXME: we want biblio_source here */
178 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.marc_import_overlay_error'),E);
185 obj.initial_search();
194 'toggle_form_btn' : [
197 e.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
198 e.setAttribute('label',$("catStrings").getString('staff.cat.z3950.hide_top_pane.label'));
199 e.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.hide_top_pane.accesskey'));
205 var x = document.getElementById('top_pane');
206 x.hidden = ! x.hidden;
207 var n = obj.controller.view.toggle_form_btn;
209 n.setAttribute('image',"/xul/server/skin/media/images/down_arrow.gif");
210 n.setAttribute('label',$("catStrings").getString('staff.cat.z3950.unhide_top_pane.label'));
211 n.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.unhide_top_pane.accesskey'));
213 n.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
214 n.setAttribute('label',$("catStrings").getString('staff.cat.z3950.hide_top_pane.label'));
215 n.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.hide_top_pane.accesskey'));
225 function handle_switch(node) {
227 obj.active_services = [];
228 var snl = document.getElementsByAttribute('mytype','service_class');
229 for (var i = 0; i < snl.length; i++) {
231 if (n.nodeName == 'checkbox') {
232 if (n.checked) obj.active_services.push( n.getAttribute('service') );
235 var nl = document.getElementsByAttribute('mytype','search_class');
236 for (var i = 0; i < nl.length; i++) { nl[i].disabled = true; }
238 for (var j = 0; j < obj.active_services.length; j++) {
239 if (obj.services[obj.active_services[j]]) for (var i in obj.services[obj.active_services[j]].attrs) {
240 var attr = obj.services[obj.active_services[j]].attrs[i];
242 attrs[i] = { 'labels' : {} };
245 attrs[i].labels[ attr.label ] = true;
246 } else if (document.getElementById('commonStrings').testString('staff.z39_50.search_class.' + i)) {
247 attrs[i].labels[ document.getElementById('commonStrings').getString('staff.z39_50.search_class.' + i) ] = true;
248 } else if (attr.name) {
249 attrs[i].labels[ attr.name ] = true;
251 attrs[i].labels[ i ] = true;
258 function set_label(x,attr) {
260 for (var j in attrs[attr].labels) {
263 if (labels.length > 0) {
264 x.setAttribute('value',labels[0]);
265 x.setAttribute('tooltiptext',labels.join(','));
266 if (labels.length > 1) x.setAttribute('class','multiple_labels');
270 for (var i in attrs) {
271 var x = document.getElementById(i + '_input');
274 var y = document.getElementById(i + '_label',i);
275 if (y) set_label(y,i);
277 var rows = document.getElementById('query_inputs');
278 var row = document.createElement('row'); rows.appendChild(row);
279 var label = document.createElement('label');
280 label.setAttribute('id',i+'_label');
281 label.setAttribute('control',i+'_input');
282 label.setAttribute('search_class',i);
283 label.setAttribute('style','-moz-user-focus: ignore');
284 row.appendChild(label);
286 label.addEventListener('click',function(ev){
287 var a = ev.target.getAttribute('search_class');
288 if (a) obj.default_attr = a;
291 var tb = document.createElement('textbox');
292 tb.setAttribute('id',i+'_input');
293 tb.setAttribute('mytype','search_class');
294 tb.setAttribute('search_class',i);
296 tb.addEventListener('keypress',function(ev) { return obj.handle_enter(ev); },false);
300 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.search_fields_error'),E);
304 document.getElementById('native-evergreen-catalog_service').addEventListener('command',handle_switch,false);
306 var robj = obj.network.simple_request(
307 'RETRIEVE_Z3950_SERVICES',
310 if (typeof robj.ilsevent != 'undefined') throw(robj);
312 var x = document.getElementById('service_rows');
313 for (var i in obj.services) {
315 if (i == 'native-evergreen-catalog') continue;
316 var r = document.createElement('row'); x.appendChild(r);
317 var cb = document.createElement('checkbox');
318 if (obj.services[i].label) {
319 cb.setAttribute('label',obj.services[i].label);
320 } else if (obj.services[i].name) {
321 cb.setAttribute('label',obj.services[i].name);
323 cb.setAttribute('label',i);
325 cb.setAttribute('tooltiptext',i + ' : ' + obj.services[i].db + '@' + obj.services[i].host + ':' + obj.services[i].port);
326 cb.setAttribute('mytype','service_class'); cb.setAttribute('service',i);
327 cb.setAttribute('id',i+'_service'); r.appendChild(cb);
328 cb.addEventListener('command',handle_switch,false);
329 var username = document.createElement('textbox'); username.setAttribute('id',i+'_username');
330 if (obj.creds.hosts[ obj.data.server_unadorned ] && obj.creds.hosts[ obj.data.server_unadorned ].services[i]) username.setAttribute('value',obj.creds.hosts[ obj.data.server_unadorned ].services[i].username);
331 r.appendChild(username);
332 if (typeof obj.services[i].auth != 'undefined') username.hidden = ! get_bool( obj.services[i].auth );
333 var password = document.createElement('textbox'); password.setAttribute('id',i+'_password');
334 if (obj.creds.hosts[ obj.data.server_unadorned ] && obj.creds.hosts[ obj.data.server_unadorned ].services[i]) password.setAttribute('value',obj.creds.hosts[ obj.data.server_unadorned ].services[i].password);
335 password.setAttribute('type','password'); r.appendChild(password);
336 if (typeof obj.services[i].auth != 'undefined') password.hidden = ! get_bool( obj.services[i].auth );
341 //obj.services[ 'native-evergreen-catalog' ] = { 'attrs' : { 'author' : {}, 'title' : {} } };
344 if (obj.creds.hosts[ obj.data.server_unadorned ]) {
345 for (var i = 0; i < obj.creds.hosts[ obj.data.server_unadorned ].default_services.length; i++) {
346 var x = document.getElementById(obj.creds.hosts[ obj.data.server_unadorned ].default_services[i]+'_service');
347 if (x) x.checked = true;
349 } else if (obj.creds.default_service) {
350 var x = document.getElementById(obj.creds.default_service+'_service');
351 if (x) x.checked = true;
357 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.z39_service_error'),E);
366 obj.controller.render();
368 setTimeout( function() { obj.focus(); }, 0 );
371 this.error.sdump('D_ERROR','cat.z3950.init: ' + E + '\n');
375 'focus' : function() {
377 var focus_me; var or_focus_me;
378 for (var i = 0; i < obj.active_services.length; i++) {
379 if (obj.creds.hosts[ obj.data.server_unadorned ] && obj.creds.hosts[ obj.data.server_unadorned ].services[ obj.active_services[i] ]) {
380 var x = obj.creds.hosts[ obj.data.server_unadorned ].services[ obj.active_services[i] ].default_attr;
381 if (x) { focus_me = x; break; }
383 if (ob.services[ obj.active_services[i] ]) for (var i in obj.services[ obj.active_services[i] ].attr) { or_focus_me = i; }
385 if (! focus_me) focus_me = or_focus_me;
386 var xx = document.getElementById(focus_me+'_input'); if (xx) xx.focus();
389 'clear' : function() {
391 var nl = document.getElementsByAttribute('mytype','search_class');
392 for (var i = 0; i < nl.length; i++) { nl[i].value = ''; nl[i].setAttribute('value',''); }
393 //obj.focus(obj.controller.view.service_menu.value);
396 'search_params' : {},
398 'initial_search' : function() {
401 obj.result_set = []; obj.number_of_result_sets = 0;
402 JSAN.use('util.widgets');
403 util.widgets.remove_children( obj.controller.view.result_message );
404 var x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
405 if (obj.active_services.length < 1) {
406 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.no_search_selection')));
409 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.searching')));
410 obj.search_params = {}; obj.list.clear();
411 obj.controller.view.page_next.disabled = true;
413 obj.search_params.service = [];
414 obj.search_params.username = [];
415 obj.search_params.password = [];
416 for (var i = 0; i < obj.active_services.length; i++) {
417 obj.search_params.service.push( obj.active_services[i] );
418 obj.search_params.username.push( document.getElementById( obj.active_services[i]+'_username' ).value );
419 obj.search_params.password.push( document.getElementById( obj.active_services[i]+'_password' ).value );
421 obj.search_params.limit = Math.ceil( obj.limit / obj.active_services.length );
422 obj.search_params.offset = 0;
424 obj.search_params.search = {};
425 var nl = document.getElementsByAttribute('mytype','search_class');
427 for (var i = 0; i < nl.length; i++) {
428 if (nl[i].disabled) continue;
429 if (nl[i].value == '') continue;
431 obj.search_params.search[ nl[i].getAttribute('search_class') ] = nl[i].value;
436 util.widgets.remove_children( obj.controller.view.result_message );
439 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.initial_search.failed_search'),E);
443 'page_next' : function() {
446 JSAN.use('util.widgets');
447 util.widgets.remove_children( obj.controller.view.result_message );
448 var x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
449 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.page_next.more_results')));
450 obj.search_params.offset += obj.search_params.limit;
453 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.page_next.subsequent_search_error'),E);
457 'search' : function() {
461 if (typeof obj.search_params.query == 'undefined') {
462 method = 'FM_BLOB_RETRIEVE_VIA_Z3950_SEARCH';
464 method = 'FM_BLOB_RETRIEVE_VIA_Z3950_RAW_SEARCH';
466 obj.network.simple_request(
468 [ ses(), obj.search_params ],
470 obj.handle_results(req.getResultObject())
473 document.getElementById('deck').selectedIndex = 0;
475 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.search.search_error'),E);
479 'handle_results' : function(results) {
482 JSAN.use('util.widgets');
483 util.widgets.remove_children( obj.controller.view.result_message ); var x;
484 if (results == null) {
485 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
486 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.handle_results.null_server_error')));
489 if (typeof results.ilsevent != 'undefined') {
490 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
491 x.appendChild( document.createTextNode($("catStrings").getFormattedString('staff.cat.z3950.handle_results.server_error', [results.textcode, results.desc])));
494 if (typeof results.length == 'undefined') results = [ results ];
495 for (var i = 0; i < results.length; i++) {
496 if (results[i].query) {
497 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
498 x.appendChild( document.createTextNode($("catStrings").getFormattedString('staff.cat.z3950.handle_results.raw_query', [results[i].query])));
500 if (results[i].count) {
501 if (results[i].records) {
502 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
503 var showing = obj.search_params.offset + results[i].records.length;
505 document.createTextNode($("catStrings").getFormattedString('staff.cat.z3950.handle_results.showing_results',
506 [(showing > results[i].count ? results[i].count : showing), results[i].count, results[i].service]))
509 if (obj.search_params.offset + obj.search_params.limit <= results[i].count) {
510 obj.controller.view.page_next.disabled = false;
513 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
515 document.createTextNode($("catStrings").getFormattedString('staff.cat.z3950.handle_results.num_of_results', [(results[i].count ? results[i].count : 0)])));
517 if (results[i].records) {
518 obj.result_set[ ++obj.number_of_result_sets ] = results[i];
519 obj.controller.view.marc_import.disabled = true;
520 obj.controller.view.marc_import_overlay.disabled = true;
521 var x = obj.controller.view.marc_view_btn;
522 if (x.getAttribute('toggle') == '0') x.disabled = true;
523 for (var j = 0; j < obj.result_set[ obj.number_of_result_sets ].records.length; j++) {
525 var n = obj.list.append(
527 'retrieve_id' : String( obj.number_of_result_sets ) + '-' + String( j ),
530 'mvr' : function(a){return a;}(obj.result_set[ obj.number_of_result_sets ].records[j].mvr),
531 'service' : results[i].service
536 if (!f) { n.my_node.parentNode.focus(); f = n; }
539 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
541 document.createTextNode($("catStrings").getString('staff.cat.z3950.handle_results.result_error'))
546 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.handle_results.search_result_error'),E);
550 'replace_tab_with_opac' : function(doc_id) {
551 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
552 var content_params = {
554 'authtime' : ses('authtime'),
555 'opac_url' : opac_url,
558 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
559 {'tab_name': $("catStrings").getString('staff.cat.z3950.replace_tab_with_opac.tab_name')},
564 'spawn_marc_editor' : function(my_marcxml,biblio_source) {
567 xulG.url_prefix(urls.XUL_MARC_EDIT),
568 { 'tab_name' : 'MARC Editor' },
570 'record' : { 'marc' : my_marcxml },
572 'label' : 'Import Record',
573 'func' : function (new_marcxml) {
575 var r = obj.network.simple_request('MARC_XML_RECORD_IMPORT', [ ses(), new_marcxml, biblio_source ]);
576 if (typeof r.ilsevent != 'undefined') {
577 switch(Number(r.ilsevent)) {
578 case 1704 /* TCN_EXISTS */ :
579 var msg = $("catStrings").getFormattedString('staff.cat.z3950.spawn_marc_editor.same_tcn', [r.payload.tcn]);
580 var title = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor.title');
581 var btn1 = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor.btn1_overlay');
582 var btn2 = typeof r.payload.new_tcn == 'undefined' ? null : $("catStrings").getFormattedString('staff.cat.z3950.spawn_marc_editor.btn2_import', [r.payload.new_tcn]);
584 obj.data.init({'via':'stash'});
585 var robj = obj.network.simple_request(
588 obj.data.list.au[0].id(),
589 obj.data.list.au[0].ws_ou(),
593 if (typeof robj.ilsevent != 'undefined') {
594 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.permission_error'),E);
596 if (robj.length != 0) btn2 = null;
598 var btn3 = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor.btn3_cancel_import');
599 var p = obj.error.yns_alert(msg,title,btn1,btn2,btn3,$("catStrings").getString('staff.cat.z3950.spawn_marc_editor.confirm_action'));
600 obj.error.sdump('D_ERROR','option ' + p + 'chosen');
603 var r3 = obj.network.simple_request('MARC_XML_RECORD_UPDATE', [ ses(), r.payload.dup_record, new_marcxml, biblio_source ]);
604 if (typeof r3.ilsevent != 'undefined') {
607 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.successful_overlay'));
608 obj.replace_tab_with_opac(r3.id());
612 var r2 = obj.network.request(
613 api.MARC_XML_RECORD_IMPORT.app,
614 api.MARC_XML_RECORD_IMPORT.method + '.override',
615 [ ses(), new_marcxml, biblio_source ]
617 if (typeof r2.ilsevent != 'undefined') {
620 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.successful_import_with_new_tcn'));
621 obj.replace_tab_with_opac(r2.id());
626 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.import_cancelled'));
635 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.successful_import'));
636 obj.replace_tab_with_opac(r.id());
639 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.import_error'),E);
647 'confirm_overlay' : function(record_ids) {
648 var obj = this; // JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
649 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
650 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
651 top_xml += '<description>'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.description')+'</description>';
652 top_xml += '<hbox><button id="lead" disabled="false" label="'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.lead.label')+'" name="fancy_submit"';
653 top_xml += ' accesskey="'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.lead.accesskey')+'"/>';
654 top_xml += ' <button label="'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.cancel.label')+'" accesskey="'+
655 $("catStrings").getString('staff.cat.z3950.confirm_overlay.cancel.accesskey')+'" name="fancy_cancel"/></hbox></vbox>';
657 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
658 xml += '<table width="100%"><tr valign="top">';
659 for (var i = 0; i < record_ids.length; i++) {
660 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
661 xml += '?docid=' + record_ids[i] + '"/></td>';
663 xml += '</tr><tr valign="top">';
664 for (var i = 0; i < record_ids.length; i++) {
665 html = obj.network.simple_request('MARC_HTML_RETRIEVE',[ record_ids[i] ]);
666 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="data:text/html,' + window.escape(html) + '"/></td>';
668 xml += '</tr></table></form>';
669 // data.temp_merge_top = top_xml; data.stash('temp_merge_top');
670 // data.temp_merge_mid = xml; data.stash('temp_merge_mid');
671 JSAN.use('util.window'); var win = new util.window();
672 var fancy_prompt_data = win.open(
673 urls.XUL_FANCY_PROMPT,
674 // + '?xml_in_stash=temp_merge_mid'
675 // + '&top_xml_in_stash=temp_merge_top'
676 // + '&title=' + window.escape('Record Overlay'),
677 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
678 { 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.z3950.confirm_overlay.title') }
680 //data.stash_retrieve();
681 if (fancy_prompt_data.fancy_status == 'incomplete') { alert($("catStrings").getString('staff.cat.z3950.confirm_overlay.aborted')); return false; }
685 'spawn_marc_editor_for_overlay' : function(my_marcxml,biblio_source) {
687 obj.data.init({'via':'stash'});
688 if (!obj.data.marked_record) {
689 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.try_again'));
694 xulG.url_prefix(urls.XUL_MARC_EDIT),
695 { 'tab_name' : $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.tab_name') },
697 'record' : { 'marc' : my_marcxml },
699 'label' : $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.overlay_record_label'),
700 'func' : function (new_marcxml) {
702 if (! obj.confirm_overlay( [ obj.data.marked_record ] ) ) { return; }
703 var r = obj.network.simple_request('MARC_XML_RECORD_REPLACE', [ ses(), obj.data.marked_record, new_marcxml, biblio_source ]);
704 if (typeof r.ilsevent != 'undefined') {
705 switch(Number(r.ilsevent)) {
706 case 1704 /* TCN_EXISTS */ :
707 var msg = $("catStrings").getFormattedString('staff.cat.z3950.spawn_marc_editor_for_overlay.same_tcn', [r.payload.tcn]);
708 var title = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.import_collision');
709 var btn1 = typeof r.payload.new_tcn == 'undefined' ? null : $("catStrings").getFormattedString('staff.cat.z3950.spawn_marc_editor_for_overlay.btn1_overlay', [r.payload.new_tcn]);
711 var robj = obj.network.simple_request(
714 obj.data.list.au[0].id(),
715 obj.data.list.au[0].ws_ou(),
719 if (typeof robj.ilsevent != 'undefined') {
720 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.permission_error'),E);
722 if (robj.length != 0) btn1 = null;
724 var btn2 = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.btn2_cancel');
725 var p = obj.error.yns_alert(msg,title,btn1,btn2,null, $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.confirm_action'));
726 obj.error.sdump('D_ERROR','option ' + p + 'chosen');
729 var r2 = obj.network.request(
730 api.MARC_XML_RECORD_REPLACE.app,
731 api.MARC_XML_RECORD_REPLACE.method + '.override',
732 [ ses(), obj.data.marked_record, new_marcxml, biblio_source ]
734 if (typeof r2.ilsevent != 'undefined') {
737 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.successful_overlay_with_new_TCN'));
738 obj.replace_tab_with_opac(r2.id());
743 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.cancelled_overlay'));
752 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.success_overlay'));
753 obj.replace_tab_with_opac(r.id());
756 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.overlay_error'),E);
765 'load_creds' : function() {
768 obj.creds = { 'version' : g.save_version, 'services' : {}, 'hosts' : {} };
772 'default_service' : xx,
790 'default_services' : [ xx, ... ],
809 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
810 JSAN.use('util.file'); var file = new util.file('z3950_store');
811 if (file._file.exists()) {
812 var creds = file.get_object(); file.close();
813 if (typeof creds.version != 'undefined') {
814 if (creds.version >= obj.creds_version) { /* so apparently, this guy is assuming that future versions will be backwards compatible */
815 if (typeof creds.hosts == 'undefined') creds.hosts = {};
821 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.load_creds.z3950_cred_error'),E);
825 'save_creds' : function () {
828 if (typeof obj.creds.hosts == 'undefined') obj.creds.hosts = {};
829 if (typeof obj.creds.hosts[ obj.data.server_unadorned ] == 'undefined') obj.creds.hosts[ obj.data.server_unadorned ] = { 'services' : {} };
830 obj.creds.hosts[ obj.data.server_unadorned ].default_services = obj.active_services;
831 for (var i = 0; i < obj.creds.hosts[ obj.data.server_unadorned ].default_services.length; i++) {
832 var service = obj.creds.hosts[ obj.data.server_unadorned ].default_services[i];
833 if (typeof obj.creds.hosts[ obj.data.server_unadorned ].services[ service ] == 'undefined') {
834 obj.creds.hosts[ obj.data.server_unadorned ].services[ service ] = {}
836 obj.creds.hosts[ obj.data.server_unadorned ].services[service].username = document.getElementById(service + '_username').value;
837 obj.creds.hosts[ obj.data.server_unadorned ].services[service].password = document.getElementById(service + '_password').value;
838 if (obj.default_attr) {
839 obj.creds.hosts[ obj.data.server_unadorned ].services[service].default_attr = obj.default_attr;
842 obj.creds.version = obj.creds_version;
843 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
844 JSAN.use('util.file'); var file = new util.file('z3950_store');
845 file.set_object(obj.creds);
848 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.save_creds.z3950_cred_error'),E);
852 'handle_enter' : function(ev) {
854 if (ev.target.tagName != 'textbox') return;
855 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.initial_search(); }, 0);
859 dump('exiting cat.z3950.js\n');