1 dump('entering patron/display.js\n');
3 function $(id) { return document.getElementById(id); }
5 if (typeof patron == 'undefined') patron = {};
6 patron.display = function (params) {
8 JSAN.use('util.error'); this.error = new util.error();
9 JSAN.use('util.window'); this.window = new util.window();
10 JSAN.use('util.network'); this.network = new util.network();
11 JSAN.use('util.widgets');
15 patron.display.prototype = {
18 'stop_checkouts' : false,
19 'check_stop_checkouts' : function() { return this.stop_checkouts; },
21 'init' : function( params ) {
25 obj.barcode = params['barcode'];
26 obj.id = params['id'];
28 JSAN.use('OpenILS.data'); this.OpenILS = {};
29 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
31 //var horizontal_interface = String( obj.OpenILS.data.hash.aous['ui.circ.patron_summary.horizontal'] ) == 'true';
32 //document.getElementById('ui.circ.patron_summary.horizontal').setAttribute('orient', horizontal_interface ? 'vertical' : 'horizontal');
33 //document.getElementById('pdms1').setAttribute('orient', horizontal_interface ? 'vertical' : 'horizontal');
35 JSAN.use('util.deck');
36 obj.right_deck = new util.deck('patron_right_deck');
37 obj.left_deck = new util.deck('patron_left_deck');
39 JSAN.use('util.controller'); obj.controller = new util.controller();
45 function() { alert($("commonStrings").getString('common.unimplemented')); }
47 'cmd_patron_retrieve' : [
50 if (typeof window.xulG == 'object' && typeof window.xulG.new_tab == 'function') {
51 for (var i = 0; i < obj.retrieve_ids.length; i++) {
53 window.xulG.new_patron_tab(
54 {}, { 'id' : obj.retrieve_ids[i] }
63 'cmd_patron_merge' : [
66 JSAN.use('patron.util');
67 if (patron.util.merge( obj.retrieve_ids )) {
68 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','true');
69 obj.controller.view.cmd_patron_merge.setAttribute('disabled','true');
70 var sobj = obj.search_result.g.search_result;
71 if ( sobj.query ) { sobj.search( sobj.query ); }
75 'cmd_patron_toggle_summary' : [
78 document.getElementById('splitter_grippy').doCommand();
81 'cmd_patron_delete' : [
85 if (get_bool( obj.patron.super_user() )) {
86 alert($("patronStrings").getString('staff.patron.display.cmd_patron_delete.deny_deletion_of_super_user'));
89 if (obj.patron.id() == obj.OpenILS.data.list.au[0].id()) {
90 alert($("patronStrings").getString('staff.patron.display.cmd_patron_delete.deny_deletion_of_self'));
93 var rv = obj.error.yns_alert_original(
94 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dialog.message'),
95 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dialog.title'),
96 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dialog.okay'),
97 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dialog.cancel'),
99 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dialog.confirmation')
101 //alert('rv = ' + rv + ' (' + typeof rv + ')');
103 var params = [ ses(), obj.patron.id() ];
104 var staff_check = obj.network.simple_request('PERM_RETRIEVE_WORK_OU',[ ses(), 'STAFF_LOGIN', obj.patron.id() ]);
105 if (staff_check.length > 0) {
106 var dest_barcode = window.prompt(
107 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dest_user.prompt'),
108 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dest_user.default_value'),
109 $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dest_user.title')
111 if (!dest_barcode) return;
112 JSAN.use('patron.util');
113 var dest_usr = patron.util.retrieve_fleshed_au_via_barcode( ses(), dest_barcode );
114 if (typeof dest_usr.ilsevent != 'undefined') {
115 alert( $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dest_user.failure') );
118 if (dest_usr.id() == obj.patron.id()) {
119 alert( $("patronStrings").getString('staff.patron.display.cmd_patron_delete.dest_user.self_reference_failure') );
122 params.push( dest_usr.id() );
124 obj.network.simple_request( 'FM_AU_DELETE', params );
128 obj.error.standard_unexpected_error_alert('Error in server/patron/display.js -> cmd_patron_delete: ',E);
132 'cmd_search_form' : [
135 obj.controller.view.cmd_search_form.setAttribute('disabled','true');
136 obj.left_deck.node.selectedIndex = 0;
137 obj.controller.view.patron_name.setAttribute('value', $("patronStrings").getString('staff.patron.display.cmd_search_form.no_patron'));
138 removeCSSClass(document.documentElement,'PATRON_HAS_BILLS');
139 removeCSSClass(document.documentElement,'PATRON_HAS_OVERDUES');
140 removeCSSClass(document.documentElement,'PATRON_HAS_NOTES');
141 removeCSSClass(document.documentElement,'PATRON_EXCEEDS_CHECKOUT_COUNT');
142 removeCSSClass(document.documentElement,'PATRON_EXCEEDS_OVERDUE_COUNT');
143 removeCSSClass(document.documentElement,'PATRON_EXCEEDS_FINES');
144 removeCSSClass(document.documentElement,'NO_PENALTIES');
145 removeCSSClass(document.documentElement,'ONE_PENALTY');
146 removeCSSClass(document.documentElement,'MULTIPLE_PENALTIES');
147 removeCSSClass(document.documentElement,'PATRON_HAS_ALERT');
148 removeCSSClass(document.documentElement,'PATRON_BARRED');
149 removeCSSClass(document.documentElement,'PATRON_INACTIVE');
150 removeCSSClass(document.documentElement,'PATRON_EXPIRED');
151 removeCSSClass(document.documentElement,'PATRON_HAS_INVALID_DOB');
152 removeCSSClass(document.documentElement,'PATRON_JUVENILE');
153 removeCSSClass(document.documentElement,'PATRON_HAS_INVALID_ADDRESS');
154 removeCSSClass(document.documentElement,'PATRON_AGE_GE_65');
155 removeCSSClass(document.documentElement,'PATRON_AGE_LT_65');
156 removeCSSClass(document.documentElement,'PATRON_AGE_GE_24');
157 removeCSSClass(document.documentElement,'PATRON_AGE_LT_24');
158 removeCSSClass(document.documentElement,'PATRON_AGE_GE_21');
159 removeCSSClass(document.documentElement,'PATRON_AGE_LT_21');
160 removeCSSClass(document.documentElement,'PATRON_AGE_GE_18');
161 removeCSSClass(document.documentElement,'PATRON_AGE_LT_18');
162 removeCSSClass(document.documentElement,'PATRON_AGE_GE_13');
163 removeCSSClass(document.documentElement,'PATRON_AGE_LT_13');
164 removeCSSClass(document.documentElement,'PATRON_NET_ACCESS_1');
165 removeCSSClass(document.documentElement,'PATRON_NET_ACCESS_2');
166 removeCSSClass(document.documentElement,'PATRON_NET_ACCESS_3');
169 'cmd_patron_refresh' : [
172 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_refresh" ) ); } catch(E) {};
173 obj.network.simple_request(
174 'RECALCULATE_STANDING_PENALTIES',
175 [ ses(), obj.patron.id() ]
180 'cmd_patron_checkout' : [
183 obj.reset_nav_styling('cmd_patron_checkout');
184 obj.spawn_checkout_interface();
187 'cmd_patron_items' : [
190 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_items" ) ); } catch(E) {};
191 obj.reset_nav_styling('cmd_patron_items');
192 var frame = obj.right_deck.set_iframe(
193 urls.XUL_PATRON_ITEMS,
194 //+ '?patron_id=' + window.escape( obj.patron.id() ),
197 'patron_id' : obj.patron.id(),
198 'on_list_change' : function(b) {
199 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
200 obj.summary_window.g.summary.controller.render('patron_checkouts');
201 obj.summary_window.g.summary.controller.render('patron_standing_penalties');
202 obj.summary_window.g.summary.controller.render('patron_bill');
203 obj.bill_window.g.bills.refresh(true);
205 'url_prefix' : xulG.url_prefix,
206 'new_tab' : xulG.new_tab,
207 'new_patron_tab' : xulG.new_patron_tab
210 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
211 obj.items_window = get_contentWindow(frame);
214 'cmd_patron_edit' : [
217 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_edit" ) ); } catch(E) {};
218 obj.reset_nav_styling('cmd_patron_edit');
220 function spawn_search(s) {
221 obj.error.sdump('D_TRACE', $("commonStrings").getFormattedString('staff.patron.display.cmd_patron_edit.edit_search', [js2JSON(s)]) );
222 obj.OpenILS.data.stash_retrieve();
223 xulG.new_patron_tab( {}, { 'doit' : 1, 'query' : s } );
226 function spawn_editor(p) {
227 var url = urls.XUL_PATRON_EDIT;
228 //var param_count = 0;
230 // if (param_count++ == 0) url += '?'; else url += '&';
231 // url += i + '=' + window.escape(p[i]);
233 var loc = xulG.url_prefix( urls.XUL_REMOTE_BROWSER ); // + '?url=' + window.escape( url );
239 'show_print_button' : true ,
240 'tab_name' : $("patronStrings").getString('staff.patron.display.spawn_editor.editing_related_patron'),
241 'passthru_content_params' : {
242 'spawn_search' : spawn_search,
243 'spawn_editor' : spawn_editor,
244 'url_prefix' : xulG.url_prefix,
245 'new_tab' : xulG.new_tab,
246 'new_patron_tab' : xulG.new_patron_tab,
253 obj.right_deck.set_iframe(
254 urls.XUL_REMOTE_BROWSER + '?patron_edit=1',
255 //+ '?url=' + window.escape(
256 // urls.XUL_PATRON_EDIT
257 // + '?ses=' + window.escape( ses() )
258 // + '&usr=' + window.escape( obj.patron.id() )
261 'url' : urls.XUL_PATRON_EDIT,
262 'show_print_button' : true,
263 'passthru_content_params' : {
266 'usr' : obj.patron.id()
268 'on_save' : function(p) {
270 if (obj.barcode) obj.barcode = p.card().barcode();
271 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
272 //obj.summary_window.g.summary.retrieve();
278 'spawn_search' : spawn_search,
279 'spawn_editor' : spawn_editor,
280 'url_prefix' : xulG.url_prefix,
281 'new_tab' : xulG.new_tab,
282 'new_patron_tab' : xulG.new_patron_tab
288 'cmd_patron_other' : [
291 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_other" ) ); } catch(E) {};
292 obj.reset_nav_styling('cmd_patron_other');
293 try { document.getElementById('PatronNavBar_other').firstChild.showPopup(); } catch(E) {};
296 'cmd_patron_info_notes' : [
299 obj.right_deck.set_iframe(
300 urls.XUL_PATRON_INFO_NOTES,
303 'patron_id' : obj.patron.id(),
304 'url_prefix' : xulG.url_prefix,
305 'new_tab' : xulG.new_tab,
306 'new_patron_tab' : xulG.new_patron_tab
311 'cmd_patron_info_stats' : [
314 obj.right_deck.set_iframe(
315 urls.XUL_PATRON_INFO_STAT_CATS,
318 'patron_id' : obj.patron.id(),
319 'url_prefix' : xulG.url_prefix,
320 'new_tab' : xulG.new_tab,
321 'new_patron_tab' : xulG.new_patron_tab
326 'cmd_patron_info_surveys' : [
329 obj.right_deck.set_iframe(
330 urls.XUL_PATRON_INFO_SURVEYS,
333 'patron_id' : obj.patron.id(),
334 'url_prefix' : xulG.url_prefix,
335 'new_tab' : xulG.new_tab,
336 'new_patron_tab' : xulG.new_patron_tab
341 'cmd_patron_info_groups' : [
344 obj.right_deck.set_iframe(
345 urls.XUL_PATRON_INFO_GROUP,
348 'patron_id' : obj.patron.id(),
349 'url_prefix' : xulG.url_prefix,
350 'new_tab' : xulG.new_tab,
351 'new_patron_tab' : xulG.new_patron_tab
356 'cmd_patron_alert' : [
360 obj.right_deck.set_iframe('data:text/html,'+obj.msg_url,{},{});
362 obj.right_deck.set_iframe('data:text/html,<h1>' + $("patronStrings").getString('staff.patron.display.no_alerts_or_messages') + '</h1>',{},{});
366 'cmd_patron_exit' : [
369 xulG.set_tab(urls.XUL_PATRON_BARCODE_ENTRY,{},{});
372 'cmd_patron_holds' : [
376 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_holds" ) ); } catch(E) {};
377 obj.reset_nav_styling('cmd_patron_holds');
378 obj.right_deck.set_iframe(
379 urls.XUL_PATRON_HOLDS,
380 //+ '?patron_id=' + window.escape( obj.patron.id() ),
383 'display_window' : window,
384 'patron_id' : obj.patron.id(),
385 'patron_barcode' : obj.patron.card().barcode(),
386 'on_list_change' : function(h) {
388 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
389 obj.summary_window.g.summary.controller.render('patron_holds');
394 'url_prefix' : xulG.url_prefix,
395 'new_tab' : xulG.new_tab,
396 'new_patron_tab' : xulG.new_patron_tab
404 'cmd_patron_bills' : [
407 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_bills" ) ); } catch(E) {};
408 obj.reset_nav_styling('cmd_patron_bills');
409 var f = obj.right_deck.set_iframe(
410 urls.XUL_PATRON_BILLS,
411 //+ '?patron_id=' + window.escape( obj.patron.id() ),
414 'display_window' : window,
415 'patron_id' : obj.patron.id(),
416 'url_prefix' : xulG.url_prefix,
417 'on_money_change' : function(b) {
418 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
423 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
424 obj.bill_window = get_contentWindow(f);
431 e.setAttribute('value',
432 ( obj.patron.prefix() ? obj.patron.prefix() + ' ' : '') +
433 obj.patron.family_name() + ', ' +
434 obj.patron.first_given_name() + ' ' +
435 ( obj.patron.second_given_name() ? obj.patron.second_given_name() + ' ' : '' ) +
436 ( obj.patron.suffix() ? obj.patron.suffix() : '')
438 JSAN.use('patron.util'); patron.util.set_penalty_css(obj.patron);
448 'cmd_verify_credentials' : [
451 var vframe = obj.right_deck.reset_iframe(
452 urls.XUL_VERIFY_CREDENTIALS,
455 'barcode' : obj.patron.card().barcode(),
456 'usrname' : obj.patron.usrname()
461 'cmd_perm_editor' : [
464 var frame = obj.right_deck.reset_iframe( urls.XUL_USER_PERM_EDITOR + '?ses=' + window.escape(ses()) + '&usr=' + obj.patron.id(), {}, {});
467 'cmd_standing_penalties' : [
470 function penalty_interface() {
471 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_messages" ) ); } catch(E) {};
472 obj.reset_nav_styling('cmd_standing_penalties');
473 return obj.right_deck.set_iframe(
474 urls.XUL_STANDING_PENALTIES,
477 'patron' : obj.patron,
478 'refresh' : function() {
491 var x = document.getElementById("PatronNavBar_checkout");
492 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
493 var x = document.getElementById("PatronNavBar_refresh");
494 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
495 var x = document.getElementById("PatronNavBar_items");
496 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
497 var x = document.getElementById("PatronNavBar_holds");
498 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
499 var x = document.getElementById("PatronNavBar_other");
500 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
501 var x = document.getElementById("PatronNavBar_edit");
502 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
503 var x = document.getElementById("PatronNavBar_bills");
504 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
505 var x = document.getElementById("PatronNavBar_messages");
506 x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
508 if (obj.barcode || obj.id) {
509 if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
510 try { window.xulG.set_tab_name($("patronStrings").getString('staff.patron.display.init.retrieving_patron')); } catch(E) { alert(E); }
513 obj.controller.view.PatronNavBar.selectedIndex = 1;
514 JSAN.use('util.widgets');
515 util.widgets.enable_accesskeys_in_node_and_children(
516 obj.controller.view.PatronNavBar.lastChild
518 util.widgets.disable_accesskeys_in_node_and_children(
519 obj.controller.view.PatronNavBar.firstChild
521 obj.controller.view.cmd_patron_refresh.setAttribute('disabled','true');
522 obj.controller.view.cmd_patron_checkout.setAttribute('disabled','true');
523 obj.controller.view.cmd_patron_items.setAttribute('disabled','true');
524 obj.controller.view.cmd_patron_holds.setAttribute('disabled','true');
525 obj.controller.view.cmd_patron_bills.setAttribute('disabled','true');
526 obj.controller.view.cmd_patron_edit.setAttribute('disabled','true');
527 obj.controller.view.patron_name.setAttribute('value', $("patronStrings").getString('staff.patron.display.init.retrieving'));
528 document.documentElement.setAttribute('class','');
529 var frame = obj.left_deck.set_iframe(
530 urls.XUL_PATRON_SUMMARY,
533 'display_window' : window,
534 'barcode' : obj.barcode,
536 'refresh' : function() { obj.refresh_all(); },
537 'on_finished' : obj.gen_patron_summary_finish_func(),
538 'stop_sign_page' : obj.gen_patron_stop_sign_page_func(),
539 'on_error' : function(E) {
542 if (typeof E.ilsevent != 'undefined') {
545 error = js2JSON(E).substr(0,100);
547 location.href = urls.XUL_PATRON_BARCODE_ENTRY + '?error=' + window.escape(error);
554 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
555 obj.summary_window = get_contentWindow(frame);
557 obj.render_search_form(params);
561 'reset_nav_styling' : function(btn,dont_hide_summary) {
563 this.controller.view.cmd_patron_checkout.setAttribute('style','');
564 this.controller.view.cmd_patron_items.setAttribute('style','');
565 this.controller.view.cmd_patron_edit.setAttribute('style','');
566 this.controller.view.cmd_patron_other.setAttribute('style','');
567 this.controller.view.cmd_patron_holds.setAttribute('style','');
568 this.controller.view.cmd_patron_bills.setAttribute('style','');
569 this.controller.view.cmd_standing_penalties.setAttribute('style','');
570 this.controller.view[ btn ].setAttribute('style','background: blue; color: white;');
571 var x = document.getElementById('splitter_grippy');
572 if (x && ! dont_hide_summary) {
573 if (! this.summary_hidden_once_already ) {
574 var first_deck = x.parentNode.previousSibling;
575 if (! first_deck.collapsed) x.doCommand();
576 this.summary_hidden_once_already = true;
584 'render_search_form' : function(params) {
586 if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
587 try { window.xulG.set_tab_name($("patronStrings").getString('staff.patron.display.render_search_form.patron_search')); } catch(E) { alert(E); }
590 obj.controller.view.PatronNavBar.selectedIndex = 0;
591 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','true');
592 obj.controller.view.cmd_patron_merge.setAttribute('disabled','true');
593 obj.controller.view.cmd_search_form.setAttribute('disabled','true');
595 var horizontal_interface = String( obj.OpenILS.data.hash.aous['ui.circ.patron_summary.horizontal'] ) == 'true';
596 var loc = horizontal_interface ? urls.XUL_PATRON_HORIZONTAL_SEARCH_FORM : urls.XUL_PATRON_SEARCH_FORM;
598 'clear_left_deck' : function() {
599 setTimeout( function() {
600 obj.left_deck.clear_all_except(loc);
601 obj.render_search_form(params);
604 'on_submit' : function(query,search_limit,search_sort) {
605 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','true');
606 obj.controller.view.cmd_patron_merge.setAttribute('disabled','true');
607 var list_frame = obj.right_deck.reset_iframe(
608 urls.XUL_PATRON_SEARCH_RESULT, // + '?' + query,
612 'search_limit' : search_limit,
613 'search_sort' : search_sort,
614 'on_select' : function(list) {
616 if (list.length < 1) return;
617 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','false');
618 if (list.length > 1) obj.controller.view.cmd_patron_merge.setAttribute('disabled','false');
619 obj.controller.view.cmd_search_form.setAttribute('disabled','false');
620 obj.retrieve_ids = list;
621 obj.controller.view.patron_name.setAttribute('value',$("patronStrings").getString('staff.patron.display.init.retrieving'));
622 document.documentElement.setAttribute('class','');
625 var frame = obj.left_deck.set_iframe(
626 urls.XUL_PATRON_SUMMARY + '?id=' + window.escape(list[0]),
630 'on_finished' : function(patron) {
632 obj.controller.render();
636 netscape.security.PrivilegeManager.enablePrivilege(
639 obj.summary_window = get_contentWindow(frame);
640 obj.patron = obj.summary_window.g.summary.patron;
641 obj.controller.render('patron_name');
647 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
648 obj.search_result = get_contentWindow(list_frame);
652 if (params['query']) {
653 my_xulG.query = JSON2js(params['query']);
654 if (params.doit) my_xulG.doit = 1;
657 var form_frame = obj.left_deck.set_iframe(
662 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
663 obj.search_window = get_contentWindow(form_frame);
664 obj._checkout_spawned = true;
667 '_checkout_spawned' : false,
669 'refresh_deck' : function(url) {
671 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
672 for (var i = 0; i < obj.right_deck.node.childNodes.length; i++) {
674 var f = obj.right_deck.node.childNodes[i];
675 var w = get_contentWindow(f);
677 if (w.location.href == url) w.refresh(true);
679 if (typeof w.refresh == 'function') {
685 obj.error.sdump('D_ERROR','refresh_deck: ' + E + '\n');
690 'refresh_all' : function() {
692 obj.controller.view.patron_name.setAttribute('value', $("patronStrings").getString('staff.patron.display.init.retrieving'));
693 document.documentElement.setAttribute('class','');
694 try { obj.summary_window.refresh(); } catch(E) { obj.error.sdump('D_ERROR', E + '\n'); }
695 try { obj.refresh_deck(); } catch(E) { obj.error.sdump('D_ERROR', E + '\n'); }
698 'spawn_checkout_interface' : function() {
701 try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_checkout" ) ); } catch(E) {};
702 obj.reset_nav_styling('cmd_patron_checkout',true);
703 var frame = obj.right_deck.set_iframe(
707 'set_tab' : xulG.set_tab,
708 'patron_id' : obj.patron.id(),
709 'patron' : obj.patron,
710 'check_stop_checkouts' : function() { return obj.check_stop_checkouts(); },
711 'on_list_change' : function(checkout) {
712 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
713 var x = obj.summary_window.g.summary.controller.view.patron_checkouts;
714 var n = Number(x.getAttribute('value'));
715 x.setAttribute('value',n+1);
717 'on_list_change_old' : function(checkout) {
719 /* this stops noncats from getting pushed into Items Out */
720 if (!checkout.circ.id()) return;
722 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
723 obj.summary_window.g.summary.controller.render('patron_checkouts');
724 obj.summary_window.g.summary.controller.render('patron_standing_penalties');
725 if (obj.items_window) {
726 obj.items_window.g.items.list.append(
730 'circ_id' : checkout.circ.id()
739 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
740 obj.checkout_window = get_contentWindow(frame);
742 alert('Error in spawn_checkout_interface(): ' + E);
746 'gen_patron_summary_finish_func' : function() {
749 return function(patron,params) {
751 obj.patron = patron; obj.controller.render();
753 obj.controller.view.cmd_patron_refresh.setAttribute('disabled','false');
754 obj.controller.view.cmd_patron_checkout.setAttribute('disabled','false');
755 obj.controller.view.cmd_patron_items.setAttribute('disabled','false');
756 obj.controller.view.cmd_patron_holds.setAttribute('disabled','false');
757 obj.controller.view.cmd_patron_bills.setAttribute('disabled','false');
758 obj.controller.view.cmd_patron_edit.setAttribute('disabled','false');
760 if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
762 window.xulG.set_tab_name(
763 $("patronStrings").getString('staff.patron.display.tab_name')
764 + ' ' + patron.family_name() + ', ' + patron.first_given_name() + ' '
765 + (patron.second_given_name() ? patron.second_given_name() : '' )
768 obj.error.sdump('D_ERROR',E);
772 if (!obj._checkout_spawned) {
773 obj.spawn_checkout_interface();
774 obj._checkout_spawned = true;
777 if (obj.stop_checkouts && obj.checkout_window) {
778 setTimeout( function() {
780 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
781 obj.checkout_window.g.checkout.check_disable();
787 alert('Error in patron_summary_finish_func(): ' + E);
792 'gen_patron_stop_sign_page_func' : function() {
794 // FIXME - replace this generated "stop sign" page with a dedicated XUL file or template
795 return function(patron,params) {
797 var msg = ''; obj.stop_checkouts = false;
798 if (patron.alert_message())
799 msg += $("patronStrings").getFormattedString('staff.patron.display.init.network_request.alert_message', [patron.alert_message()]);
800 //alert('obj.barcode = ' + obj.barcode);
802 if (patron.cards()) for (var i = 0; i < patron.cards().length; i++) {
803 //alert('card #'+i+' == ' + js2JSON(patron.cards()[i]));
804 if ( (patron.cards()[i].barcode()==obj.barcode) && ( ! get_bool(patron.cards()[i].active()) ) ) {
805 msg += $("patronStrings").getString('staff.patron.display.init.network_request.inactive_card');
806 obj.stop_checkouts = true;
810 if (get_bool(patron.barred())) {
811 msg += $("patronStrings").getString('staff.patron.display.init.network_request.account_barred');
812 obj.stop_checkouts = true;
814 if (!get_bool(patron.active())) {
815 msg += $("patronStrings").getString('staff.patron.display.init.network_request.account_inactive');
816 obj.stop_checkouts = true;
818 if (patron.expire_date()) {
819 var now = new Date();
820 now = now.getTime()/1000;
822 var expire_parts = patron.expire_date().substr(0,10).split('-');
823 expire_parts[1] = expire_parts[1] - 1;
825 var expire = new Date();
826 expire.setFullYear(expire_parts[0], expire_parts[1], expire_parts[2]);
827 expire = expire.getTime()/1000
830 msg += $("patronStrings").getString('staff.patron.display.init.network_request.account_expired');
831 obj.stop_checkouts = true;
834 var penalties = obj.patron.standing_penalties();
835 for (var i = 0; i < penalties.length; i++) {
836 if (penalties[i].standing_penalty().block_list()) {
837 msg += obj.OpenILS.data.hash.aou[ penalties[i].org_unit() ].shortname() + ' : ' + penalties[i].standing_penalty().label() + '<br/>';
840 var holds = params.holds_summary;
841 if (holds.ready && holds.ready > 0) {
842 msg += $("patronStrings").getFormattedString('staff.patron.display.init.holds_ready', [holds.ready]);
845 if (msg != obj.old_msg) {
846 //obj.error.yns_alert(msg,'Alert Message','OK',null,null,'Check here to confirm this message.');
847 document.documentElement.firstChild.focus();
848 var data_url = window.escape("<img src='" + xulG.url_prefix('/xul/server/skin/media/images/stop_sign.png') + "'/>" + '<h1>'
849 + $("patronStrings").getString('staff.patron.display.init.network_request.window_title') + '</h1><blockquote><p>' + msg + '</p>\r\n\r\n<pre>'
850 + $("patronStrings").getString('staff.patron.display.init.network_request.window_message') + '</pre></blockquote>');
851 obj.right_deck.set_iframe('data:text/html,'+data_url,{},{});
853 obj.msg_url = data_url;
855 obj.error.sdump('D_TRACE',$("patronStrings").getFormattedString('staff.patron.display.init.network_request.dump_error_message', [msg]));
859 alert('Error in patron_stop_sign_page_func(): ' + E);
865 dump('exiting patron/display.js\n');