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 JSAN.use('util.error'); this.error = new util.error();
9 JSAN.use('util.network'); this.network = new util.network();
11 dump('cat.z3950: ' + E + '\n');
15 cat.z3950.prototype = {
19 'number_of_result_sets' : 0,
25 'init' : function( params ) {
28 JSAN.use('util.widgets');
32 JSAN.use('OpenILS.data'); obj.data = new OpenILS.data(); obj.data.init({'via':'stash'});
36 JSAN.use('circ.util');
37 var columns = circ.util.columns(
39 'tcn' : { 'hidden' : false },
40 'isbn' : { 'hidden' : false },
41 'title' : { 'hidden' : false, 'flex' : '1' },
42 'author' : { 'hidden' : false },
43 'edition' : { 'hidden' : false },
44 'pubdate' : { 'hidden' : false },
45 'publisher' : { 'hidden' : false },
46 'service' : { 'hidden' : false }
50 JSAN.use('util.list'); obj.list = new util.list('results');
54 'on_select' : function(ev) {
56 JSAN.use('util.functional');
57 var sel = obj.list.retrieve_selection();
58 document.getElementById('sel_clip').setAttribute('disabled', sel.length < 1);
59 var list = util.functional.map_list(
62 if ( $('jacket_image') ) {
63 // A side-effect in this map function, mu hahaha
64 if (o.getAttribute('isbn')) {
65 $('jacket_image').setAttribute('src',urls.ac_jacket_large+o.getAttribute('isbn'));
66 $('jacket_image').setAttribute('tooltiptext',urls.ac_jacket_large+o.getAttribute('isbn'));
68 $('jacket_image').setAttribute('src','');
69 $('jacket_image').setAttribute('tooltiptext','');
72 if (o.getAttribute('service') == 'native-evergreen-catalog') {
73 $('mark_overlay_btn').disabled = false;
74 $('show_in_catalog_btn').disabled = false;
75 obj.controller.view.mark_overlay.setAttribute('doc_id',o.getAttribute('doc_id'));
77 $('mark_overlay_btn').disabled = true;
78 $('show_in_catalog_btn').disabled = true;
80 return o.getAttribute('retrieve_id');
83 obj.error.sdump('D_TRACE','cat/z3950: selection list = ' + js2JSON(list) );
84 obj.controller.view.marc_import.disabled = false;
85 obj.controller.view.marc_import.setAttribute('retrieve_id',list[0]);
86 obj.data.init({'via':'stash'});
87 if (obj.data.marked_record) {
88 obj.controller.view.marc_import_overlay.disabled = false;
90 obj.controller.view.marc_import_overlay.disabled = true;
92 obj.controller.view.marc_import_overlay.setAttribute('retrieve_id',list[0]);
93 obj.controller.view.marc_view_btn.disabled = false;
94 obj.controller.view.marc_view_btn.setAttribute('retrieve_id',list[0]);
96 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_list_init.list_construction_error'),E);
102 JSAN.use('util.controller'); obj.controller = new util.controller();
106 'save_columns' : [ [ 'command' ], function() { obj.list.save_columns(); } ],
107 'sel_clip' : [ ['command'], function() { obj.list.clipboard(); } ],
108 'cmd_z3950_csv_to_clipboard' : [ ['command'], function() { obj.list.dump_csv_to_clipboard(); } ],
109 'cmd_z3950_csv_to_printer' : [ ['command'], function() { obj.list.dump_csv_to_printer(); } ],
110 'cmd_z3950_csv_to_file' : [ ['command'], function() { obj.list.dump_csv_to_file( { 'defaultFileName' : 'z3950_results.txt' } ); } ],
113 function() { alert('Not Yet Implemented'); }
115 'result_message' : [['render'],function(e){return function(){};}],
126 setTimeout( function() { obj.focus(); }, 0 );
132 e.setAttribute('label', $("catStrings").getString('staff.cat.z3950.marc_view.label'));
133 e.setAttribute('accesskey', $("catStrings").getString('staff.cat.z3950.marc_view.accesskey'));
140 var n = obj.controller.view.marc_view_btn;
141 if (n.getAttribute('toggle') == '1') {
142 document.getElementById('deck').selectedIndex = 0;
143 n.setAttribute('toggle','0');
144 n.setAttribute('label', $("catStrings").getString('staff.cat.z3950.marc_view.label'));
145 n.setAttribute('accesskey', $("catStrings").getString('staff.cat.z3950.marc_view.accesskey'));
146 document.getElementById('results').focus();
148 document.getElementById('deck').selectedIndex = 1;
149 n.setAttribute('toggle','1');
150 n.setAttribute('label', $("catStrings").getString('staff.cat.z3950.results_view.label'));
151 n.setAttribute('accesskey', $("catStrings").getString('staff.cat.z3950.results_view.accesskey'));
152 var f = get_contentWindow(document.getElementById('marc_frame'));
153 var retrieve_id = n.getAttribute('retrieve_id');
154 var result_idx = retrieve_id.split('-')[0];
155 var record_idx = retrieve_id.split('-')[1];
156 f.xulG = { 'marcxml' : obj.result_set[result_idx].records[ record_idx ].marcxml };
158 f.document.body.firstChild.focus();
161 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.marc_view_error'),E);
169 var doc_id = obj.controller.view.mark_overlay.getAttribute('doc_id');
171 cat.util.mark_for_overlay(doc_id);
174 alert('Error in z3950.js, mark_overlay: ' + E);
178 'show_in_catalog' : [
182 var doc_id = obj.controller.view.mark_overlay.getAttribute('doc_id');
184 var opac_url = xulG.url_prefix('opac_rdetail') + doc_id;
185 var content_params = {
187 'authtime' : ses('authtime'),
188 'opac_url' : opac_url,
191 xulG.url_prefix('XUL_OPAC_WRAPPER'),
192 {'tab_name': $("catStrings").getString('staff.cat.z3950.replace_tab_with_opac.tab_name')},
197 alert('Error in z3950.js, show_in_catalog: ' + E);
205 var retrieve_id = obj.controller.view.marc_import.getAttribute('retrieve_id');
206 var result_idx = retrieve_id.split('-')[0];
207 var record_idx = retrieve_id.split('-')[1];
208 obj.spawn_marc_editor(
209 obj.result_set[ result_idx ].records[ record_idx ].marcxml,
210 obj.result_set[ result_idx ].records[ record_idx ].service /* FIXME: we want biblio_source here */
213 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.marc_import_error'),E);
217 'marc_import_overlay' : [
221 var retrieve_id = obj.controller.view.marc_import_overlay.getAttribute('retrieve_id');
222 var result_idx = retrieve_id.split('-')[0];
223 var record_idx = retrieve_id.split('-')[1];
224 obj.spawn_marc_editor_for_overlay(
225 obj.result_set[ result_idx ].records[ record_idx ].marcxml,
226 obj.result_set[ result_idx ].records[ record_idx ].service /* FIXME: we want biblio_source here */
229 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.marc_import_overlay_error'),E);
236 obj.initial_search();
242 var raw = window.prompt(
243 $("catStrings").getString('staff.cat.z3950.initial_search.raw_prompt.msg'),
244 $("catStrings").getString('staff.cat.z3950.initial_search.raw_prompt.default_value'),
245 $("catStrings").getString('staff.cat.z3950.initial_search.raw_prompt.title')
247 if (raw) obj.initial_raw_search(raw);
256 'toggle_form_btn' : [
259 e.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
260 e.setAttribute('label',$("catStrings").getString('staff.cat.z3950.hide_top_pane.label'));
261 e.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.hide_top_pane.accesskey'));
267 var x = document.getElementById('top_pane');
268 document.getElementById('splitter_grippy2').doCommand();
269 var n = obj.controller.view.toggle_form_btn;
271 n.setAttribute('image',"/xul/server/skin/media/images/down_arrow.gif");
272 n.setAttribute('label',$("catStrings").getString('staff.cat.z3950.unhide_top_pane.label'));
273 n.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.unhide_top_pane.accesskey'));
275 n.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
276 n.setAttribute('label',$("catStrings").getString('staff.cat.z3950.hide_top_pane.label'));
277 n.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.hide_top_pane.accesskey'));
281 'splitter_grippy2' : [
284 var x = document.getElementById('top_pane');
285 var n = obj.controller.view.toggle_form_btn;
287 n.setAttribute('image',"/xul/server/skin/media/images/down_arrow.gif");
288 n.setAttribute('label',$("catStrings").getString('staff.cat.z3950.unhide_top_pane.label'));
289 n.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.unhide_top_pane.accesskey'));
291 n.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
292 n.setAttribute('label',$("catStrings").getString('staff.cat.z3950.hide_top_pane.label'));
293 n.setAttribute('accesskey',$("catStrings").getString('staff.cat.z3950.hide_top_pane.accesskey'));
303 function handle_switch(node) {
305 $('search').setAttribute('disabled','true'); $('raw_search').setAttribute('disabled','true');
306 obj.active_services = [];
307 var snl = document.getElementsByAttribute('mytype','service_class');
308 for (var i = 0; i < snl.length; i++) {
310 if (n.nodeName == 'checkbox') {
311 if (n.checked) obj.active_services.push( n.getAttribute('service') );
314 if (obj.active_services.length > 0) {
315 $('search').setAttribute('disabled','false');
317 if (obj.active_services.length == 1) {
318 if (obj.active_services[0] != 'native-evergreen-catalog') {
319 $('raw_search').setAttribute('disabled','false');
322 var nl = document.getElementsByAttribute('mytype','search_class');
323 for (var i = 0; i < nl.length; i++) { nl[i].disabled = true; }
325 for (var j = 0; j < obj.active_services.length; j++) {
326 if (obj.services[obj.active_services[j]]) for (var i in obj.services[obj.active_services[j]].attrs) {
327 var attr = obj.services[obj.active_services[j]].attrs[i];
329 attrs[i] = { 'labels' : {} };
332 attrs[i].labels[ attr.label ] = true;
333 } else if (document.getElementById('commonStrings').testString('staff.z39_50.search_class.' + i)) {
334 attrs[i].labels[ document.getElementById('commonStrings').getString('staff.z39_50.search_class.' + i) ] = true;
335 } else if (attr.name) {
336 attrs[i].labels[ attr.name ] = true;
338 attrs[i].labels[ i ] = true;
345 function set_label(x,attr) {
347 for (var j in attrs[attr].labels) {
350 if (labels.length > 0) {
351 x.setAttribute('value',labels[0]);
352 x.setAttribute('tooltiptext',labels.join(','));
353 if (labels.length > 1) x.setAttribute('class','multiple_labels');
357 for (var i in attrs) {
358 var x = document.getElementById(i + '_input');
361 var y = document.getElementById(i + '_label',i);
362 if (y) set_label(y,i);
364 var rows = document.getElementById('query_inputs');
365 var row = document.createElement('row'); rows.appendChild(row);
366 var label = document.createElement('label');
367 label.setAttribute('id',i+'_label');
368 label.setAttribute('control',i+'_input');
369 label.setAttribute('search_class',i);
370 label.setAttribute('style','-moz-user-focus: ignore');
371 row.appendChild(label);
373 label.addEventListener('click',function(ev){
374 var a = ev.target.getAttribute('search_class');
375 if (a) obj.default_attr = a;
378 var tb = document.createElement('textbox');
379 tb.setAttribute('id',i+'_input');
380 tb.setAttribute('mytype','search_class');
381 tb.setAttribute('search_class',i);
383 tb.addEventListener('keypress',function(ev) { return obj.handle_enter(ev); },false);
387 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.search_fields_error'),E);
391 document.getElementById('native-evergreen-catalog_service').addEventListener('command',handle_switch,false);
393 var robj = obj.network.simple_request(
394 'RETRIEVE_Z3950_SERVICES',
397 if (typeof robj.ilsevent != 'undefined') throw(robj);
399 var x = document.getElementById('service_rows');
400 var services = new Array();
401 for (var i in obj.services) {
403 if (obj.services[i].label) {
404 label = obj.services[i].label;
405 } else if (obj.services[i].name) {
406 label = obj.services[i].name;
414 for (var j=0; j < services.length; j++) {
415 var i = services[j][1];
417 if (i == 'native-evergreen-catalog') continue;
418 var r = document.createElement('row'); x.appendChild(r);
419 var cb = document.createElement('checkbox');
420 cb.setAttribute('label',services[j][0]);
421 cb.setAttribute('tooltiptext',i + ' : ' + obj.services[i].db + '@' + obj.services[i].host + ':' + obj.services[i].port);
422 cb.setAttribute('mytype','service_class'); cb.setAttribute('service',i);
423 cb.setAttribute('id',i+'_service'); r.appendChild(cb);
424 cb.addEventListener('command',handle_switch,false);
425 var username = document.createElement('textbox'); username.setAttribute('id',i+'_username');
426 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);
427 r.appendChild(username);
428 if (typeof obj.services[i].auth != 'undefined') username.hidden = ! get_bool( obj.services[i].auth );
429 var password = document.createElement('textbox'); password.setAttribute('id',i+'_password');
430 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);
431 password.setAttribute('type','password'); r.appendChild(password);
432 if (typeof obj.services[i].auth != 'undefined') password.hidden = ! get_bool( obj.services[i].auth );
437 //obj.services[ 'native-evergreen-catalog' ] = { 'attrs' : { 'author' : {}, 'title' : {} } };
440 if (obj.creds.hosts[ obj.data.server_unadorned ]) {
441 for (var i = 0; i < obj.creds.hosts[ obj.data.server_unadorned ].default_services.length; i++) {
442 var x = document.getElementById(obj.creds.hosts[ obj.data.server_unadorned ].default_services[i]+'_service');
443 if (x) x.checked = true;
445 } else if (obj.creds.default_service) {
446 var x = document.getElementById(obj.creds.default_service+'_service');
447 if (x) x.checked = true;
453 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.obj_controller_init.z39_service_error'),E);
462 obj.controller.render();
464 setTimeout( function() { obj.focus(); }, 0 );
468 obj.data.init({'via':'stash'});
469 if (obj.data.marked_record) {
470 var sel = obj.list.retrieve_selection();
471 if (sel.length > 0) { obj.controller.view.marc_import_overlay.disabled = false; }
472 if ($("overlay_tcn_indicator")) {
473 if (obj.data.marked_record_mvr) {
474 $("overlay_tcn_indicator").setAttribute('value',$("catStrings").getFormattedString('staff.cat.z3950.marked_record_for_overlay_indicator.tcn.label',[obj.data.marked_record_mvr.tcn()]));
476 $("overlay_tcn_indicator").setAttribute('value',$("catStrings").getFormattedString('staff.cat.z3950.marked_record_for_overlay_indicator.record_id.label',[obj.data.marked_record]));
480 obj.controller.view.marc_import_overlay.disabled = true;
481 if ($("overlay_tcn_indicator")) {
482 $("overlay_tcn_indicator").setAttribute('value',$("catStrings").getString('staff.cat.z3950.marked_record_for_overlay_indicator.no_record.label'));
489 this.error.sdump('D_ERROR','cat.z3950.init: ' + E + '\n');
493 'focus' : function() {
495 var focus_me; var or_focus_me;
496 for (var i = 0; i < obj.active_services.length; i++) {
497 if (obj.creds.hosts[ obj.data.server_unadorned ] && obj.creds.hosts[ obj.data.server_unadorned ].services[ obj.active_services[i] ]) {
498 var x = obj.creds.hosts[ obj.data.server_unadorned ].services[ obj.active_services[i] ].default_attr;
499 if (x) { focus_me = x; break; }
501 if (obj.services[ obj.active_services[i] ]) for (var i in obj.services[ obj.active_services[i] ].attr) { or_focus_me = i; }
503 if (! focus_me) focus_me = or_focus_me;
504 var xx = document.getElementById(focus_me+'_input'); if (xx) xx.focus();
507 'clear' : function() {
509 var nl = document.getElementsByAttribute('mytype','search_class');
510 for (var i = 0; i < nl.length; i++) { nl[i].value = ''; nl[i].setAttribute('value',''); }
514 'search_params' : {},
516 'initial_search' : function() {
519 obj.result_set = []; obj.number_of_result_sets = 0;
520 JSAN.use('util.widgets');
521 util.widgets.remove_children( obj.controller.view.result_message );
522 var x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
523 if (obj.active_services.length < 1) {
524 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.no_search_selection')));
527 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.searching')));
528 obj.search_params = {}; obj.list.clear();
529 obj.controller.view.page_next.disabled = true;
530 obj.controller.view.cmd_z3950_csv_to_file.setAttribute('disabled','true');
531 obj.controller.view.cmd_z3950_csv_to_clipboard.setAttribute('disabled','true');
532 obj.controller.view.cmd_z3950_csv_to_printer.setAttribute('disabled','true');
534 obj.search_params.service_array = [];
535 obj.search_params.username_array = [];
536 obj.search_params.password_array = [];
537 for (var i = 0; i < obj.active_services.length; i++) {
538 obj.search_params.service_array.push( obj.active_services[i] );
539 obj.search_params.username_array.push( document.getElementById( obj.active_services[i]+'_username' ).value );
540 obj.search_params.password_array.push( document.getElementById( obj.active_services[i]+'_password' ).value );
542 obj.search_params.limit = Math.ceil( obj.limit / obj.active_services.length );
543 obj.search_params.offset = 0;
545 obj.search_params.search = {};
546 var nl = document.getElementsByAttribute('mytype','search_class');
548 for (var i = 0; i < nl.length; i++) {
549 if (nl[i].disabled) continue;
550 if (nl[i].value == '') continue;
552 obj.search_params.search[ nl[i].getAttribute('search_class') ] = nl[i].value;
557 util.widgets.remove_children( obj.controller.view.result_message );
560 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.initial_search.failed_search'),E);
564 'initial_raw_search' : function(raw) {
567 obj.result_set = []; obj.number_of_result_sets = 0;
568 JSAN.use('util.widgets');
569 util.widgets.remove_children( obj.controller.view.result_message );
570 var x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
571 if (obj.active_services.length < 1) {
572 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.no_search_selection')));
575 if (obj.active_services.length > 1) {
576 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.too_many_selections')));
579 if (obj.active_services[0] == 'native-evergreen-catalog') {
580 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.raw_search_unsupported_for_native_catalog')));
583 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.initial_search.searching')));
584 obj.search_params = {}; obj.list.clear();
585 obj.controller.view.page_next.disabled = true;
586 obj.controller.view.cmd_z3950_csv_to_file.setAttribute('disabled','true');
587 obj.controller.view.cmd_z3950_csv_to_clipboard.setAttribute('disabled','true');
588 obj.controller.view.cmd_z3950_csv_to_printer.setAttribute('disabled','true');
590 obj.search_params.service_array = [];
591 obj.search_params.username_array = [];
592 obj.search_params.password_array = [];
593 for (var i = 0; i < obj.active_services.length; i++) {
594 obj.search_params.service_array.push( obj.active_services[i] );
595 obj.search_params.username_array.push( document.getElementById( obj.active_services[i]+'_username' ).value );
596 obj.search_params.password_array.push( document.getElementById( obj.active_services[i]+'_password' ).value );
598 obj.search_params.limit = Math.ceil( obj.limit / obj.active_services.length );
599 obj.search_params.offset = 0;
601 obj.search_params.query = raw;
605 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.initial_search.failed_search'),E);
609 'page_next' : function() {
612 JSAN.use('util.widgets');
613 util.widgets.remove_children( obj.controller.view.result_message );
614 var x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
615 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.page_next.more_results')));
616 obj.search_params.offset += obj.search_params.limit;
619 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.page_next.subsequent_search_error'),E);
623 'search' : function() {
627 if (typeof obj.search_params.query == 'undefined') {
628 method = 'FM_BLOB_RETRIEVE_VIA_Z3950_SEARCH';
629 obj.search_params.service = obj.search_params.service_array;
630 obj.search_params.username = obj.search_params.username_array;
631 obj.search_params.password = obj.search_params.password_array;
633 method = 'FM_BLOB_RETRIEVE_VIA_Z3950_RAW_SEARCH';
634 obj.search_params.service = obj.search_params.service_array[0];
635 obj.search_params.username = obj.search_params.username_array[0];
636 obj.search_params.password = obj.search_params.password_array[0];
638 obj.network.simple_request(
640 [ ses(), obj.search_params ],
642 obj.handle_results(req.getResultObject())
645 document.getElementById('deck').selectedIndex = 0;
647 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.search.search_error'),E);
651 'handle_results' : function(results) {
654 JSAN.use('util.widgets');
655 util.widgets.remove_children( obj.controller.view.result_message ); var x;
656 if (results == null) {
657 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
658 x.appendChild( document.createTextNode($("catStrings").getString('staff.cat.z3950.handle_results.null_server_error')));
661 if (typeof results.ilsevent != 'undefined') {
662 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
663 x.appendChild( document.createTextNode($("catStrings").getFormattedString('staff.cat.z3950.handle_results.server_error', [results.textcode, results.desc])));
666 obj.controller.view.cmd_z3950_csv_to_file.setAttribute('disabled','false');
667 obj.controller.view.cmd_z3950_csv_to_clipboard.setAttribute('disabled','false');
668 obj.controller.view.cmd_z3950_csv_to_printer.setAttribute('disabled','false');
669 if (typeof results.length == 'undefined') results = [ results ];
671 var total_showing = 0;
673 var tooltip_msg = '';
675 for (var i = 0; i < results.length; i++) {
676 if (results[i].query) {
677 tooltip_msg += $("catStrings").getFormattedString('staff.cat.z3950.handle_results.raw_query', [results[i].query]) + '\n';
679 if (results[i].count) {
680 if (results[i].records) {
681 var showing = obj.search_params.offset + results[i].records.length;
682 total_showing += obj.search_params.offset + results[i].records.length;
683 total_count += results[i].count;
684 tooltip_msg += $("catStrings").getFormattedString('staff.cat.z3950.handle_results.showing_results', [(showing > results[i].count ? results[i].count : showing), results[i].count, results[i].service]) + '\n';
686 if (obj.search_params.offset + obj.search_params.limit <= results[i].count) {
687 obj.controller.view.page_next.disabled = false;
690 tooltip_msg += $("catStrings").getFormattedString('staff.cat.z3950.handle_results.num_of_results', [(results[i].count ? results[i].count : 0)]) + '\n';
692 if (results[i].records) {
693 obj.result_set[ ++obj.number_of_result_sets ] = results[i];
694 obj.controller.view.marc_import.disabled = true;
695 obj.controller.view.marc_import_overlay.disabled = true;
696 var x = obj.controller.view.marc_view_btn;
697 if (x.getAttribute('toggle') == '0') x.disabled = true;
698 for (var j = 0; j < obj.result_set[ obj.number_of_result_sets ].records.length; j++) {
700 var n = obj.list.append(
702 'retrieve_id' : String( obj.number_of_result_sets ) + '-' + String( j ),
707 // We have col definitions, etc.
709 a.mvr.doc_id( a.bibid );
712 }(obj.result_set[ obj.number_of_result_sets ].records[j]),
713 'service' : results[i].service
718 n.treeitem_node.setAttribute('isbn', function(a){return a;}(obj.result_set[ obj.number_of_result_sets ].records[j].mvr).isbn());
719 n.treeitem_node.setAttribute(
721 function(a){return a;}(
725 n.treeitem_node.setAttribute(
727 function(a){return a;}(
728 (obj.result_set[ obj.number_of_result_sets ].records[j].mvr)
732 if (!f) { n.treeitem_node.parentNode.focus(); f = n; }
735 x = document.createElement('description'); obj.controller.view.result_message.appendChild(x);
737 document.createTextNode($("catStrings").getString('staff.cat.z3950.handle_results.result_error'))
742 x = document.createElement('description');
743 x.setAttribute('crop','end');
744 x.setAttribute('tooltiptext',tooltip_msg);
745 obj.controller.view.result_message.appendChild(x);
747 document.createTextNode($("catStrings").getFormattedString('staff.cat.z3950.handle_results.showing_total_results',
748 [(total_showing > total_count ? total_count : total_showing), total_count]))
751 x = document.createElement('description');
752 x.setAttribute('crop','end');
753 x.setAttribute('tooltiptext',tooltip_msg);
754 obj.controller.view.result_message.appendChild(x);
756 document.createTextNode($("catStrings").getFormattedString('staff.cat.z3950.handle_results.num_of_results', [(total_count ? total_count : 0)]))
761 this.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.handle_results.search_result_error'),E);
765 'replace_tab_with_opac' : function(doc_id) {
766 var opac_url = xulG.url_prefix('opac_rdetail') + doc_id;
767 var content_params = {
769 'authtime' : ses('authtime'),
770 'opac_url' : opac_url,
773 xulG.url_prefix('XUL_OPAC_WRAPPER'),
774 {'tab_name': $("catStrings").getString('staff.cat.z3950.replace_tab_with_opac.tab_name')},
779 'spawn_marc_editor' : function(my_marcxml,biblio_source) {
782 function save_marc (new_marcxml) {
784 var r = obj.network.simple_request('MARC_XML_RECORD_IMPORT', [ ses(), new_marcxml, biblio_source ]);
785 if (typeof r.ilsevent != 'undefined') {
786 switch(Number(r.ilsevent)) {
787 case 1704 /* TCN_EXISTS */ :
788 var msg = $("catStrings").getFormattedString('staff.cat.z3950.spawn_marc_editor.same_tcn', [r.payload.tcn]);
789 var title = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor.title');
790 var btn1 = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor.btn1_overlay');
791 var btn2 = typeof r.payload.new_tcn == 'undefined' ? null : $("catStrings").getFormattedString('staff.cat.z3950.spawn_marc_editor.btn2_import', [r.payload.new_tcn]);
793 obj.data.init({'via':'stash'});
794 var robj = obj.network.simple_request(
797 obj.data.list.au[0].id(),
798 obj.data.list.au[0].ws_ou(),
802 if (typeof robj.ilsevent != 'undefined') {
803 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.permission_error'),E);
805 if (robj.length != 0) btn2 = null;
807 var btn3 = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor.btn3_cancel_import');
808 var p = obj.error.yns_alert(msg,title,btn1,btn2,btn3,$("catStrings").getString('staff.cat.z3950.spawn_marc_editor.confirm_action'));
809 obj.error.sdump('D_ERROR','option ' + p + 'chosen');
812 var r3 = obj.network.simple_request('MARC_XML_RECORD_UPDATE', [ ses(), r.payload.dup_record, new_marcxml, biblio_source ]);
813 if (typeof r3.ilsevent != 'undefined') {
816 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.successful_overlay'));
819 'on_complete' : function() {
821 obj.replace_tab_with_opac(r3.id());
830 var r2 = obj.network.request(
831 api.MARC_XML_RECORD_IMPORT.app,
832 api.MARC_XML_RECORD_IMPORT.method + '.override',
833 [ ses(), new_marcxml, biblio_source ]
835 if (typeof r2.ilsevent != 'undefined') {
838 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.successful_import_with_new_tcn'));
841 'on_complete' : function() {
843 obj.replace_tab_with_opac(r2.id());
853 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.import_cancelled'));
862 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.successful_import'));
865 'on_complete' : function() {
867 obj.replace_tab_with_opac(r.id());
875 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor.import_error'),E);
879 if ( $('marc_editor').checked ) {
881 xulG.url_prefix('XUL_MARC_EDIT'),
882 { 'tab_name' : 'MARC Editor' },
884 'marc_control_number_identifier': obj.data.hash.aous['cat.marc_control_number_identifier'] || 'Set cat.marc_control_number_identifier in Library Settings',
885 'record' : { 'marc' : my_marcxml, "rtype": "bre" },
886 'fast_add_item' : function(doc_id,cn_label,cp_barcode) {
888 JSAN.use('cat.util'); return cat.util.fast_item_add(doc_id,cn_label,cp_barcode);
894 'label' : $("catStrings").getString('staff.cat.z3950.spawn_marc_editor.save_button_label'),
897 'lock_tab' : xulG.lock_tab,
898 'unlock_tab' : xulG.unlock_tab
902 save_marc(my_marcxml);
906 'confirm_overlay' : function(record_ids) {
907 var obj = this; // JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
908 var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" >';
909 top_xml += '<description>'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.description')+'</description>';
910 top_xml += '<hbox><button id="lead" disabled="false" label="'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.lead.label')+'" name="fancy_submit"';
911 top_xml += ' accesskey="'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.lead.accesskey')+'"/>';
912 top_xml += ' <button label="'+$("catStrings").getString('staff.cat.z3950.confirm_overlay.cancel.label')+'" accesskey="'+
913 $("catStrings").getString('staff.cat.z3950.confirm_overlay.cancel.accesskey')+'" name="fancy_cancel"/></hbox></vbox>';
915 var xml = '<form xmlns="http://www.w3.org/1999/xhtml">';
916 xml += '<table width="100%"><tr valign="top">';
917 for (var i = 0; i < record_ids.length; i++) {
918 xml += '<td nowrap="nowrap"><iframe src="' + urls.XUL_BIB_BRIEF;
919 xml += '?docid=' + record_ids[i] + '" oils_force_external="true"/></td>';
921 xml += '</tr><tr valign="top">';
922 for (var i = 0; i < record_ids.length; i++) {
923 xml += '<td nowrap="nowrap"><iframe style="min-height: 1000px; min-width: 300px;" flex="1" src="' + urls.XUL_MARC_VIEW + '?docid=' + record_ids[i] + ' " oils_force_external="true"/></td>';
925 xml += '</tr></table></form>';
926 // data.temp_merge_top = top_xml; data.stash('temp_merge_top');
927 // data.temp_merge_mid = xml; data.stash('temp_merge_mid');
928 JSAN.use('util.window'); var win = new util.window();
929 var fancy_prompt_data = win.open(
930 urls.XUL_FANCY_PROMPT,
931 // + '?xml_in_stash=temp_merge_mid'
932 // + '&top_xml_in_stash=temp_merge_top'
933 // + '&title=' + window.escape('Record Overlay'),
934 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
935 { 'top_xml' : top_xml, 'xml' : xml, 'title' : $("catStrings").getString('staff.cat.z3950.confirm_overlay.title') }
937 //data.stash_retrieve();
938 if (fancy_prompt_data.fancy_status == 'incomplete') { alert($("catStrings").getString('staff.cat.z3950.confirm_overlay.aborted')); return false; }
942 'spawn_marc_editor_for_overlay' : function(my_marcxml,biblio_source) {
944 obj.data.init({'via':'stash'});
945 if (!obj.data.marked_record) {
946 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.try_again'));
950 function overlay_marc (new_marcxml) {
952 if (! obj.confirm_overlay( [ obj.data.marked_record ] ) ) { return; }
953 var r = obj.network.simple_request('MARC_XML_RECORD_REPLACE', [ ses(), obj.data.marked_record, new_marcxml, biblio_source ]);
954 if (typeof r.ilsevent != 'undefined') {
955 switch(Number(r.ilsevent)) {
956 case 1704 /* TCN_EXISTS */ :
957 var msg = $("catStrings").getFormattedString('staff.cat.z3950.spawn_marc_editor_for_overlay.same_tcn', [r.payload.tcn]);
958 var title = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.import_collision');
959 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]);
961 var robj = obj.network.simple_request(
964 obj.data.list.au[0].id(),
965 obj.data.list.au[0].ws_ou(),
969 if (typeof robj.ilsevent != 'undefined') {
970 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.permission_error'),E);
972 if (robj.length != 0) btn1 = null;
974 var btn2 = $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.btn2_cancel');
975 var p = obj.error.yns_alert(msg,title,btn1,btn2,null, $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.confirm_action'));
976 obj.error.sdump('D_ERROR','option ' + p + 'chosen');
979 var r2 = obj.network.request(
980 api.MARC_XML_RECORD_REPLACE.app,
981 api.MARC_XML_RECORD_REPLACE.method + '.override',
982 [ ses(), obj.data.marked_record, new_marcxml, biblio_source ]
984 if (typeof r2.ilsevent != 'undefined') {
987 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.successful_overlay_with_new_TCN'));
990 'on_complete' : function() {
992 obj.replace_tab_with_opac(r2.id());
1002 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.cancelled_overlay'));
1011 alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.success_overlay'));
1013 obj.data.marked_record_mvr = null;
1014 obj.data.marked_record = null;
1015 obj.data.stash('marked_record');
1016 obj.data.stash('marked_record_mvr');
1017 obj.controller.view.marc_import_overlay.disabled = true;
1018 if ($("overlay_tcn_indicator")) {
1019 $("overlay_tcn_indicator").setAttribute('value',$("catStrings").getString('staff.cat.z3950.marked_record_for_overlay_indicator.no_record.label'));
1021 xulG.set_statusbar(1, $("catStrings").getString('staff.cat.z3950.marked_record_for_overlay_indicator.no_record.label') );
1023 dump('Error in z3950.js, post-overlay: ' + E + '\n');
1027 'on_complete' : function() {
1029 obj.replace_tab_with_opac(r.id());
1037 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.overlay_error'),E);
1041 if ( $('marc_editor').checked ) {
1043 xulG.url_prefix('XUL_MARC_EDIT'),
1044 { 'tab_name' : $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.tab_name') },
1046 'record' : { 'marc' : my_marcxml },
1047 'fast_add_item' : function(doc_id,cn_label,cp_barcode) {
1049 JSAN.use('cat.util'); cat.util.fast_item_add(doc_id,cn_label,cp_barcode);
1055 'label' : $("catStrings").getString('staff.cat.z3950.spawn_marc_editor_for_overlay.overlay_record_label'),
1056 'func' : overlay_marc
1061 overlay_marc(my_marcxml);
1066 'load_creds' : function() {
1069 obj.creds = { 'version' : g.save_version, 'services' : {}, 'hosts' : {} };
1073 'default_service' : xx,
1079 'default_attr' : xx,
1085 'default_attr' : xx,
1091 'default_services' : [ xx, ... ],
1097 'default_attr' : xx,
1103 'default_attr' : xx,
1110 JSAN.use('util.file'); var file = new util.file('z3950_store');
1111 if (file._file.exists()) {
1112 var creds = file.get_object(); file.close();
1113 if (typeof creds.version != 'undefined') {
1114 if (creds.version >= obj.creds_version) { /* so apparently, this guy is assuming that future versions will be backwards compatible */
1115 if (typeof creds.hosts == 'undefined') creds.hosts = {};
1121 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.load_creds.z3950_cred_error'),E);
1125 'save_creds' : function () {
1128 if (typeof obj.creds.hosts == 'undefined') obj.creds.hosts = {};
1129 if (typeof obj.creds.hosts[ obj.data.server_unadorned ] == 'undefined') obj.creds.hosts[ obj.data.server_unadorned ] = { 'services' : {} };
1130 obj.creds.hosts[ obj.data.server_unadorned ].default_services = obj.active_services;
1131 for (var i = 0; i < obj.creds.hosts[ obj.data.server_unadorned ].default_services.length; i++) {
1132 var service = obj.creds.hosts[ obj.data.server_unadorned ].default_services[i];
1133 if (typeof obj.creds.hosts[ obj.data.server_unadorned ].services[ service ] == 'undefined') {
1134 obj.creds.hosts[ obj.data.server_unadorned ].services[ service ] = {}
1136 obj.creds.hosts[ obj.data.server_unadorned ].services[service].username = document.getElementById(service + '_username').value;
1137 obj.creds.hosts[ obj.data.server_unadorned ].services[service].password = document.getElementById(service + '_password').value;
1138 if (obj.default_attr) {
1139 obj.creds.hosts[ obj.data.server_unadorned ].services[service].default_attr = obj.default_attr;
1142 obj.creds.version = obj.creds_version;
1143 JSAN.use('util.file'); var file = new util.file('z3950_store');
1144 file.set_object(obj.creds);
1147 obj.error.standard_unexpected_error_alert($("catStrings").getString('staff.cat.z3950.save_creds.z3950_cred_error'),E);
1151 'handle_enter' : function(ev) {
1153 if (ev.target.tagName != 'textbox') return;
1154 if (ev.keyCode == 13 /* enter */ || ev.keyCode == 77 /* enter on a mac */) setTimeout( function() { obj.initial_search(); }, 0);
1158 dump('exiting cat.z3950.js\n');