8 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
9 if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
10 JSAN.errorLevel = "die"; // none, warn, or die
11 JSAN.addRepository('/xul/server/');
12 JSAN.use('util.error'); error = new util.error();
13 error.sdump('D_TRACE','my_init() for bibs_abreast.xul');
14 JSAN.use('util.functional');
15 JSAN.use('util.widgets');
17 JSAN.use('util.network');
19 network = new util.network();
21 record_ids = xul_param('record_ids') || [];
22 record_ids = util.functional.unique_list_values( record_ids );
25 if (xul_param('merge')) {
26 var x = document.getElementById('merge_bar');
28 var y = document.getElementById('merge_button');
29 y.addEventListener('command', merge_records, false);
30 var z = document.getElementById('cancel_button');
31 z.addEventListener('command', function() {
34 var merge_bars = util.widgets.find_descendants_by_name(document,'merge_bar');
35 for (var i = 0; i < merge_bars.length; i++) { merge_bars[i].hidden = true; }
39 // Display the records
40 for (var i = 0; i < record_ids.length; i++) {
41 render_bib(record_ids[i]);
44 /*if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
45 try { window.xulG.set_tab_name('Test'); } catch(E) { alert(E); }
49 try { error.standard_unexpected_error_alert('main/test.xul',E); } catch(F) { alert(E); }
53 function render_bib(record_id) {
54 var main = document.getElementById('main');
55 var template = main.firstChild;
56 var new_node = template.cloneNode(true);
57 main.appendChild(new_node);
58 new_node.hidden = false;
60 var splitter_template = template.nextSibling;
61 var splitter = splitter_template.cloneNode(true);
62 main.appendChild(splitter);
63 splitter.hidden = false;
65 render_bib_brief(new_node,record_id);
67 var xul_deck = util.widgets.find_descendants_by_name(new_node,'bib_deck')[0];
68 var deck = new util.deck(xul_deck);
71 if (xul_param('merge')) {
72 var merge_bar = util.widgets.find_descendants_by_name(new_node,'merge_bar')[0];
73 merge_bar.hidden = false;
74 var lead_button = util.widgets.find_descendants_by_name(new_node,'lead_button')[0];
75 lead_button.addEventListener('click', function() {
76 lead_record = record_id;
77 dump('record_id = ' + record_id + '\n');
78 document.getElementById('merge_button').disabled = false;
83 var remove_me = util.widgets.find_descendants_by_name(new_node,'remove_me')[0];
84 remove_me.addEventListener('command', function() {
85 if (lead_record == record_id) {
86 lead_record = undefined;
87 document.getElementById('merge_button').disabled = true;
89 record_ids = util.functional.filter_list( record_ids, function(o) { return o != record_id; } );
90 main.removeChild(new_node);
91 main.removeChild(splitter);
92 if (main.childNodes.length == 4) {
93 document.getElementById('merge_bar').hidden = true;
94 document.getElementById('merge_button').disabled = true;
95 var merge_bars = util.widgets.find_descendants_by_name(document,'merge_bar');
96 for (var i = 0; i < merge_bars.length; i++) { merge_bars[i].hidden = true; }
98 if (main.childNodes.length == 2) { xulG.close_tab(); }
102 var view_bib = util.widgets.find_descendants_by_name(new_node,'view_bib')[0];
103 var edit_bib = util.widgets.find_descendants_by_name(new_node,'edit_bib')[0];
104 var holdings = util.widgets.find_descendants_by_name(new_node,'holdings')[0];
106 view_bib.addEventListener('command', function() {
107 set_view_pane(deck,record_id);
110 edit_bib.addEventListener('command', function() {
111 set_edit_pane(deck,record_id);
114 holdings.addEventListener('command', function() {
115 set_item_pane(deck,record_id);
118 set_view_pane(deck,record_id);
122 function render_bib_brief(new_node,record_id) {
124 var bib_brief = util.widgets.find_descendants_by_name(new_node,'bib_brief')[0];
125 bib_brief.setAttribute('src', urls.XUL_BIB_BRIEF_VERTICAL);
126 get_contentWindow(bib_brief).xulG = { 'docid' : record_id };
129 function set_view_pane(deck,record_id) {
130 deck.set_iframe( urls.XUL_MARC_VIEW, {}, { 'docid' : record_id } );
133 function set_item_pane(deck,record_id) {
134 var my_xulG = { 'docid' : record_id }; for (var i in xulG) { my_xulG[i] = xulG[i]; }
135 deck.set_iframe( urls.XUL_COPY_VOLUME_BROWSE, {}, my_xulG );
138 function set_edit_pane(deck,record_id) {
140 'record' : { 'url' : '/opac/extras/supercat/retrieve/marcxml/record/' + record_id, "id": record_id, "rtype": "bre" },
141 'fast_add_item' : function(doc_id,cn_label,cp_barcode) {
143 return cat.util.fast_item_add(doc_id,cn_label,cp_barcode);
145 alert('Error in bibs_abreast.js, set_edit_pane, fast_item_add: ' + E);
149 'label' : document.getElementById('offlineStrings').getString('cat.save_record'),
150 'func' : function (new_marcxml) {
152 var r = network.simple_request('MARC_XML_RECORD_UPDATE', [ ses(), record_id, new_marcxml ]);
153 if (typeof r.ilsevent != 'undefined') {
158 'oncomplete' : function() {}
162 alert('Error in bibs_abreast.js, set_edit_pane, save: ' + E);
166 'lock_tab' : xulG.lock_tab(),
167 'unlock_tab' : xulG.unlock_tab()
169 for (var i in xulG) { my_xulG[i] = xulG[i]; }
170 deck.set_iframe( urls.XUL_MARC_EDIT, {}, my_xulG );
173 function merge_records() {
175 var robj = network.simple_request('MERGE_RECORDS',
179 util.functional.filter_list( record_ids,
181 return o != lead_record;
186 if (typeof robj.ilsevent != 'undefined') {
187 switch(Number(robj.ilsevent)) {
188 case 5000 /* PERM_FAILURE */: break;
189 default: throw(robj);
192 if (typeof xulG.on_merge == 'function') {
195 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + lead_record;
196 var content_params = {
198 'authtime' : ses('authtime'),
199 'opac_url' : opac_url,
202 xulG.url_prefix(urls.XUL_OPAC_WRAPPER),
203 {'tab_name':'Retrieving title...'},
207 alert('Error in bibs_abreast.js, merge_records(): ' + E);