1 dump('entering patron/display.js\n');
3 if (typeof patron == 'undefined') patron = {};
4 patron.display = function (params) {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('util.window'); this.window = new util.window();
8 JSAN.use('util.network'); this.network = new util.network();
12 patron.display.prototype = {
16 'init' : function( params ) {
20 obj.barcode = params['barcode'];
21 obj.id = params['id'];
23 JSAN.use('OpenILS.data'); this.OpenILS = {};
24 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
26 JSAN.use('util.deck');
27 obj.right_deck = new util.deck('patron_right_deck');
28 obj.left_deck = new util.deck('patron_left_deck');
30 function spawn_checkout_interface() {
31 obj.right_deck.set_iframe(
33 + '?patron_id=' + window.escape( obj.patron.id() ),
36 'on_list_change' : function(checkout) {
38 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
39 obj.summary_window.g.summary.controller.render('patron_checkouts');
40 obj.summary_window.g.summary.controller.render('patron_standing');
41 if (obj.items_window) {
42 obj.items_window.g.items.list.append(
46 'circ' : checkout.circ,
47 'mvr' : checkout.record,
59 JSAN.use('util.controller'); obj.controller = new util.controller();
65 function() { alert('Not Yet Implemented'); }
67 'cmd_patron_retrieve' : [
70 if (typeof window.xulG == 'object' && typeof window.xulG.new_tab == 'function') {
71 for (var i = 0; i < obj.retrieve_ids.length; i++) {
73 var url = urls.XUL_PATRON_DISPLAY
74 + '?id=' + window.escape( obj.retrieve_ids[i] );
88 obj.controller.view.cmd_search_form.setAttribute('disabled','true');
89 obj.left_deck.node.selectedIndex = 0;
90 obj.controller.view.patron_name.setAttribute('value','No Patron Selected');
93 'cmd_patron_refresh' : [
99 'cmd_patron_checkout' : [
101 spawn_checkout_interface
103 'cmd_patron_items' : [
106 var frame = obj.right_deck.set_iframe(
107 urls.XUL_PATRON_ITEMS
108 + '?patron_id=' + window.escape( obj.patron.id() ),
111 'on_list_change' : function(b) {
112 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
113 obj.summary_window.g.summary.controller.render('patron_checkouts');
114 obj.summary_window.g.summary.controller.render('patron_standing');
118 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
119 obj.items_window = frame.contentWindow;
122 'cmd_patron_edit' : [
125 obj.right_deck.set_iframe(
126 urls.XUL_REMOTE_BROWSER
127 + '?url=' + window.escape(
129 + '?ses=' + window.escape( ses() )
130 + '&usr=' + window.escape( obj.patron.id() )
133 'show_print_button' : true,
134 'passthru_content_params' : {
135 'on_save' : function(p) {
137 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
138 obj.summary_window.g.summary.retrieve();
148 'cmd_patron_info' : [
151 obj.right_deck.set_iframe(
152 urls.XUL_PATRON_INFO + '?patron_id=' + window.escape( obj.patron.id() )
156 'cmd_patron_holds' : [
159 obj.right_deck.set_iframe(
160 urls.XUL_PATRON_HOLDS
161 + '?patron_id=' + window.escape( obj.patron.id() ),
164 'on_list_change' : function(h) {
165 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
166 obj.summary_window.g.summary.controller.render('patron_holds');
167 obj.summary_window.g.summary.controller.render('patron_standing');
173 'cmd_patron_bills' : [
176 var f = obj.right_deck.set_iframe(
177 urls.XUL_PATRON_BILLS
178 + '?patron_id=' + window.escape( obj.patron.id() ),
181 'on_money_change' : function(b) {
183 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
184 obj.summary_window.g.summary.retrieve(true);
194 e.setAttribute('value',
195 obj.patron.family_name() + ', ' + obj.patron.first_given_name() + ' ' +
196 ( obj.patron.second_given_name() ? obj.patron.second_given_name() : '' )
198 JSAN.use('patron.util'); patron.util.set_penalty_css(obj.patron);
212 if (obj.barcode || obj.id) {
213 if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
214 try { window.xulG.set_tab_name('Retrieving Patron...'); } catch(E) { alert(E); }
217 obj.controller.view.PatronNavBar.selectedIndex = 1;
218 JSAN.use('util.widgets');
219 util.widgets.enable_accesskeys_in_node_and_children(
220 obj.controller.view.PatronNavBar.lastChild
222 util.widgets.disable_accesskeys_in_node_and_children(
223 obj.controller.view.PatronNavBar.firstChild
225 obj.controller.view.cmd_patron_refresh.setAttribute('disabled','true');
226 obj.controller.view.cmd_patron_checkout.setAttribute('disabled','true');
227 obj.controller.view.cmd_patron_items.setAttribute('disabled','true');
228 obj.controller.view.cmd_patron_holds.setAttribute('disabled','true');
229 obj.controller.view.cmd_patron_bills.setAttribute('disabled','true');
230 obj.controller.view.cmd_patron_edit.setAttribute('disabled','true');
231 obj.controller.view.cmd_patron_info.setAttribute('disabled','true');
232 obj.controller.view.patron_name.setAttribute('value','Retrieving...');
233 document.documentElement.setAttribute('class','');
234 var frame = obj.left_deck.set_iframe(
235 urls.XUL_PATRON_SUMMARY
236 +'?barcode=' + window.escape(obj.barcode)
237 +'&id=' + window.escape(obj.id),
240 'on_finished' : function(patron) {
242 obj.patron = patron; obj.controller.render();
244 obj.controller.view.cmd_patron_refresh.setAttribute('disabled','false');
245 obj.controller.view.cmd_patron_checkout.setAttribute('disabled','false');
246 obj.controller.view.cmd_patron_items.setAttribute('disabled','false');
247 obj.controller.view.cmd_patron_holds.setAttribute('disabled','false');
248 obj.controller.view.cmd_patron_bills.setAttribute('disabled','false');
249 obj.controller.view.cmd_patron_edit.setAttribute('disabled','false');
250 obj.controller.view.cmd_patron_info.setAttribute('disabled','false');
252 if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
254 window.xulG.set_tab_name(
255 'Patron: ' + patron.family_name() + ', ' + patron.first_given_name() + ' '
256 + (patron.second_given_name() ? patron.second_given_name() : '' )
259 obj.error.sdump('D_ERROR',E);
263 if (!obj._checkout_spawned) {
264 spawn_checkout_interface();
265 obj._checkout_spawned = true;
268 if (patron.alert_message()) {
269 obj.error.yns_alert('"' + patron.alert_message() + '"','Alert Message','OK',null,null,'Check here to confirm this message.');
272 'on_error' : function(E) {
273 var error = js2JSON(E); obj.error.sdump('D_ERROR', error);
274 location.href = urls.XUL_PATRON_BARCODE_ENTRY
275 + '?error=' + window.escape(error.substr(0,100));
279 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
280 obj.summary_window = frame.contentWindow;
282 if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
283 try { window.xulG.set_tab_name('Patron Search'); } catch(E) { alert(E); }
286 obj.controller.view.PatronNavBar.selectedIndex = 0;
287 JSAN.use('util.widgets');
288 util.widgets.enable_accesskeys_in_node_and_children(
289 obj.controller.view.PatronNavBar.firstChild
291 util.widgets.disable_accesskeys_in_node_and_children(
292 obj.controller.view.PatronNavBar.lastChild
294 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','true');
295 obj.controller.view.cmd_search_form.setAttribute('disabled','true');
297 var loc = urls.XUL_PATRON_SEARCH_FORM + '?blah=blah';
298 if (params['query']) {
299 var query = JSON2js(params['query']);
300 for (var i in query) {
301 loc += '&'+window.escape(i)+'='+window.escape(query[i].value);
307 var form_frame = obj.left_deck.set_iframe(
311 'on_submit' : function(query) {
312 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','true');
313 var list_frame = obj.right_deck.reset_iframe(
314 urls.XUL_PATRON_SEARCH_RESULT + '?' + query,
317 'on_select' : function(list) {
318 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','false');
319 obj.controller.view.cmd_search_form.setAttribute('disabled','false');
320 obj.retrieve_ids = list;
321 obj.controller.view.patron_name.setAttribute('value','Retrieving...');
322 document.documentElement.setAttribute('class','');
325 var frame = obj.left_deck.set_iframe(
326 urls.XUL_PATRON_SUMMARY
327 +'?id=' + window.escape(list[0]),
330 'on_finished' : function(patron) {
332 obj.controller.render();
336 netscape.security.PrivilegeManager.enablePrivilege(
339 obj.summary_window = frame.contentWindow;
340 obj.patron = obj.summary_window.g.summary.patron;
341 obj.controller.render('patron_name');
347 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
348 obj.search_result = list_frame.contentWindow;
352 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
353 obj.search_window = form_frame.contentWindow;
354 obj._checkout_spawned = true;
358 '_checkout_spawned' : false,
360 'refresh_deck' : function(url) {
362 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
363 for (var i = 0; i < obj.right_deck.node.childNodes.length; i++) {
365 var f = obj.right_deck.node.childNodes[i];
366 var w = f.contentWindow;
368 if (w.location.href == url) w.refresh(true);
370 if (typeof w.refresh == 'function') {
376 obj.error.sdump('D_ERROR','refresh_deck: ' + E + '\n');
381 'refresh_all' : function() {
383 obj.controller.view.patron_name.setAttribute(
384 'value','Retrieving...'
386 document.documentElement.setAttribute('class','');
387 try { obj.summary_window.refresh(); } catch(E) { obj.error.sdump('D_ERROR', E + '\n'); }
388 try { obj.refresh_deck(); } catch(E) { obj.error.sdump('D_ERROR', E + '\n'); }
392 dump('exiting patron/display.js\n');