[open-ils-commits] r12250 - in trunk/Open-ILS/xul/staff_client: chrome/content/OpenILS chrome/content/main server/admin server/patron (phasefx)

svn at svn.open-ils.org svn at svn.open-ils.org
Sat Feb 21 20:03:55 EST 2009


Author: phasefx
Date: 2009-02-21 20:03:54 -0500 (Sat, 21 Feb 2009)
New Revision: 12250

Added:
   trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay_horiz.xul
Modified:
   trunk/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js
   trunk/Open-ILS/xul/staff_client/chrome/content/main/constants.js
   trunk/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
   trunk/Open-ILS/xul/staff_client/server/patron/display.js
   trunk/Open-ILS/xul/staff_client/server/patron/display.xul
   trunk/Open-ILS/xul/staff_client/server/patron/display_overlay.xul
   trunk/Open-ILS/xul/staff_client/server/patron/summary.js
   trunk/Open-ILS/xul/staff_client/server/patron/summary.xul
Log:
backporting from staff-client-experiment: some layout experiments with patron display

Modified: trunk/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js	2009-02-22 01:03:54 UTC (rev 12250)
@@ -638,9 +638,25 @@
 			}
 		);
 
-		// Do this after we get the user object
+		// Do these after we get the user object
+
 		this.chain.push(
+			function() {
+				try {
+					var robj = obj.network.simple_request('FM_AOUS_RETRIEVE',[ obj.list.au[0].ws_ou() ]);
+					if (typeof robj.ilsevent != 'undefined') throw(robj);
+					obj.hash.aous = robj;
+					obj.data_progress('Retrieved org unit settings. ');
+				} catch(E) {
+					var error = 'Error: ' + js2JSON(E);
+					obj.error.sdump('D_ERROR',error);
+					throw(E);
+				}
+			}
+		);
 
+		this.chain.push(
+
 			function() {
 
 				gen_fm_retrieval_func('my_aou', 

Modified: trunk/Open-ILS/xul/staff_client/chrome/content/main/constants.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/chrome/content/main/constants.js	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/chrome/content/main/constants.js	2009-02-22 01:03:54 UTC (rev 12250)
@@ -105,6 +105,7 @@
 	'FM_AOU_RETRIEVE_RELATED_VIA_SESSION' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_unit.full_path.retrieve' },
 	'FM_AOU_IDS_RETRIEVE_VIA_RECORD_ID' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.actor.org_unit.retrieve_by_title', 'secure' : false },
 	'FM_AOU_IDS_RETRIEVE_VIA_RECORD_ID.authoritative' : { 'app' : 'open-ils.cat', 'method' : 'open-ils.cat.actor.org_unit.retrieve_by_title.authoritative', 'secure' : false },
+    'FM_AOUS_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_unit.settings.retrieve', 'secure' : false },
 	'FM_AOUT_RETRIEVE' : { 'app' : 'open-ils.actor', 'method' : 'open-ils.actor.org_types.retrieve', 'secure' : false },
 	'FM_ASC_BATCH_RETRIEVE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.stat_cat.asset.retrieve.batch', 'secure' : false },
 	'FM_ASC_RETRIEVE_VIA_AOU' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.stat_cat.asset.retrieve.all', 'secure' : false },

Modified: trunk/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/server/admin/org_unit_settings.xhtml	2009-02-22 01:03:54 UTC (rev 12250)
@@ -135,7 +135,12 @@
                     label : '&staff.server.admin.org_settings.patron.password.use_phone;',
                     desc : '&staff.server.admin.org_settings.patron.password.use_phone.desc;',
                     type : 'bool'
-                }
+                },
+		'ui.circ.patron_summary.horizontal' : {
+		    label : '&ui.circ.patron_summary.horizontal;',
+		    desc : '&ui.circ.patron_summary.horizontal.desc;',
+		    type : 'bool'
+		}
             };
         </script>
     </head>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/display.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/display.js	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/server/patron/display.js	2009-02-22 01:03:54 UTC (rev 12250)
@@ -26,13 +26,17 @@
 
 		JSAN.use('OpenILS.data'); this.OpenILS = {}; 
 		obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
-
+		
+		var horizontal_interface = String( obj.OpenILS.data.hash.aous['ui.circ.patron_summary.horizontal'] ) == 'true';
+		document.getElementById('ui.circ.patron_summary.horizontal').setAttribute('orient', horizontal_interface ? 'vertical' : 'horizontal');
+		document.getElementById('pdms1').setAttribute('orient', horizontal_interface ? 'vertical' : 'horizontal');
+		
 		JSAN.use('util.deck'); 
 		obj.right_deck = new util.deck('patron_right_deck');
 		obj.left_deck = new util.deck('patron_left_deck');
 
 		function spawn_checkout_interface() {
-            try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_checkout" ) ); } catch(E) {};
+	            try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_checkout" ) ); } catch(E) {};
 			obj.reset_nav_styling('cmd_patron_checkout');
 			var frame = obj.right_deck.set_iframe(
 				urls.XUL_CHECKOUT,
@@ -262,11 +266,17 @@
 							);
 						}
 					],
+                    'cmd_patron_other' : [
+						['command'],
+						function(ev) {
+                            try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_other" ) ); } catch(E) {};
+							obj.reset_nav_styling('cmd_patron_other');
+                            try { document.getElementById('PatronNavBar_other').firstChild.showPopup(); } catch(E) {};
+                        }
+                    ],
 					'cmd_patron_info' : [
 						['command'],
 						function(ev) {
-                            try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible( document.getElementById("PatronNavBar_info" ) ); } catch(E) {};
-							obj.reset_nav_styling('cmd_patron_info');
 							obj.right_deck.set_iframe(
 								urls.XUL_PATRON_INFO, // + '?patron_id=' + window.escape( obj.patron.id() ),
 								{},
@@ -278,6 +288,16 @@
 							);
 						}
 					],
+                    'cmd_patron_alert' : [
+                        ['command'],
+                        function(ev) {
+                            if (obj.msg_url) {
+                                obj.right_deck.set_iframe('data:text/html,'+obj.msg_url,{},{});
+                            } else {
+                                obj.right_deck.set_iframe('data:text/html,<h1>' + $("patronStrings").getString('staff.patron.display.no_alerts_or_messages') + '</h1>',{},{});
+                            }
+                        }
+                    ],
 					'cmd_patron_exit' : [
 						['command'],
 						function(ev) {
@@ -294,6 +314,7 @@
 								//+ '?patron_id=' + window.escape( obj.patron.id() ),
 								{},
 								{
+                                    'display_window' : window,
 									'patron_id' : obj.patron.id(),
 									'on_list_change' : function(h) {
 										netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
@@ -402,7 +423,7 @@
         x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
         var x = document.getElementById("PatronNavBar_holds");
         x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
-        var x = document.getElementById("PatronNavBar_info");
+        var x = document.getElementById("PatronNavBar_other");
         x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
         var x = document.getElementById("PatronNavBar_edit");
         x.addEventListener( 'focus', function(xx) { return function() { try { document.getElementById("PatronNavBarScrollbox").ensureElementIsVisible(xx); } catch(E) {}; } }(x), false);
@@ -430,13 +451,13 @@
 			obj.controller.view.cmd_patron_holds.setAttribute('disabled','true');
 			obj.controller.view.cmd_patron_bills.setAttribute('disabled','true');
 			obj.controller.view.cmd_patron_edit.setAttribute('disabled','true');
-			obj.controller.view.cmd_patron_info.setAttribute('disabled','true');
 			obj.controller.view.patron_name.setAttribute('value', $("patronStrings").getString('staff.patron.display.init.retrieving'));
 			document.documentElement.setAttribute('class','');
 			var frame = obj.left_deck.set_iframe(
 				urls.XUL_PATRON_SUMMARY,
 				{},
 				{
+                    'display_window' : window,
 					'barcode' : obj.barcode,
 					'id' : obj.id,
                     'refresh' : function() { obj.refresh_all(); },
@@ -450,7 +471,6 @@
 						obj.controller.view.cmd_patron_holds.setAttribute('disabled','false');
 						obj.controller.view.cmd_patron_bills.setAttribute('disabled','false');
 						obj.controller.view.cmd_patron_edit.setAttribute('disabled','false');
-						obj.controller.view.cmd_patron_info.setAttribute('disabled','false');
 
 						if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
 							try { 
@@ -530,6 +550,7 @@
 												+ $("patronStrings").getString('staff.patron.display.init.network_request.window_message') + '</pre></blockquote>');
 											obj.right_deck.set_iframe('data:text/html,'+data_url,{},{});
 											obj.old_msg = msg;
+                                            obj.msg_url = data_url;
 										} else {
 											obj.error.sdump('D_TRACE',$("patronStrings").getFormattedString('staff.patron.display.init.network_request.dump_error_message', [msg]));
 										}
@@ -572,13 +593,17 @@
 	},
 
 	'reset_nav_styling' : function(btn) {
-		this.controller.view.cmd_patron_checkout.setAttribute('style','');
-		this.controller.view.cmd_patron_items.setAttribute('style','');
-		this.controller.view.cmd_patron_edit.setAttribute('style','');
-		this.controller.view.cmd_patron_info.setAttribute('style','');
-		this.controller.view.cmd_patron_holds.setAttribute('style','');
-		this.controller.view.cmd_patron_bills.setAttribute('style','');
-		this.controller.view[ btn ].setAttribute('style','background: blue; color: white;');
+        try {
+            this.controller.view.cmd_patron_checkout.setAttribute('style','');
+            this.controller.view.cmd_patron_items.setAttribute('style','');
+            this.controller.view.cmd_patron_edit.setAttribute('style','');
+            this.controller.view.cmd_patron_other.setAttribute('style','');
+            this.controller.view.cmd_patron_holds.setAttribute('style','');
+            this.controller.view.cmd_patron_bills.setAttribute('style','');
+            this.controller.view[ btn ].setAttribute('style','background: blue; color: white;');
+        } catch(E) {
+            alert(E);
+        }
 	},
 
 	'render_search_form' : function(params) {

Modified: trunk/Open-ILS/xul/staff_client/server/patron/display.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/display.xul	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/server/patron/display.xul	2009-02-22 01:03:54 UTC (rev 12250)
@@ -96,6 +96,8 @@
 		<command id="cmd_patron_bills" />
 		<command id="cmd_patron_edit" />
 		<command id="cmd_patron_info" />
+		<command id="cmd_patron_other" />
+		<command id="cmd_patron_alert" />
 		<command id="cmd_patron_exit" />
 		<command id="cmd_patron_retrieve" />
 		<command id="cmd_patron_merge" />

Modified: trunk/Open-ILS/xul/staff_client/server/patron/display_overlay.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/display_overlay.xul	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/server/patron/display_overlay.xul	2009-02-22 01:03:54 UTC (rev 12250)
@@ -32,20 +32,22 @@
 		<label class="hideme invalid_address_indicator" value="&staff.patron.display_overlay.invalid_address.value;"/>
 	</hbox>
 	<hbox id="PatronNotNavBar" flex="1" class="my_bg">
-		<vbox id="pdm3" flex="1" persist="width">
-			<deck id="patron_left_deck"/>
-		</vbox>
-		<splitter id="pdms1" collapse="before" persist="state hidden"><grippy id="pdmsg1"/></splitter>
-		<vbox id="pdm4" flex="3" persist="width">
-			<deck id="patron_right_deck"/>
-		</vbox>
-	
+		<box id="ui.circ.patron_summary.horizontal" orient="horizontal" flex="1">
+			<vbox id="pdm3" flex="1"> 
+				<deck id="patron_left_deck"/>
+			</vbox>
+			<splitter id="pdms1" orient="horizontal" collapse="before" persist="state hidden"><grippy id="pdmsg1"/></splitter>
+			<vbox id="pdm4" flex="9">
+				<deck id="patron_right_deck"/>
+			</vbox>
+		 </box>	
 	</hbox>
 </vbox>
 </box>
 
 <deck id="patron_right_deck" flex="1">
 </deck>
+
 <deck id="patron_left_deck" flex="1">
 </deck>
 
@@ -60,37 +62,58 @@
             <spacer flex="1"/>
             <arrowscrollbox id="PatronNavBarScrollbox" orient="horizontal" flex="1">
                 <spacer flex="1"/>
-                <button id="PatronNavBar_refresh" command="cmd_patron_refresh" class="nav"
-                    label="&staff.patron_navbar.refresh;" accesskey="&staff.patron_navbar.refresh.accesskey;"/>
-                <button id="PatronNavBar_checkout" command="cmd_patron_checkout" class="nav"
-                    label="&staff.patron_navbar.checkout;" accesskey="&staff.patron_navbar.checkout.accesskey;"/>
-                <button id="PatronNavBar_items" command="cmd_patron_items" class="nav"
-                    label="&staff.patron_navbar.items;" accesskey="&staff.patron_navbar.items.accesskey;"/>
-                <button id="PatronNavBar_holds" command="cmd_patron_holds" class="nav"
-                    label="&staff.patron_navbar.holds;" accesskey="&staff.patron_navbar.holds.accesskey;"/>
-                <button id="PatronNavBar_bills" command="cmd_patron_bills" class="nav"
-                    label="&staff.patron_navbar.bills;" accesskey="&staff.patron_navbar.bills.accesskey;"/>
-                <button id="PatronNavBar_edit" command="cmd_patron_edit" class="nav"
-                    label="&staff.patron_navbar.edit;" accesskey="&staff.patron_navbar.edit.accesskey;"/>
-                <button id="PatronNavBar_info" command="cmd_patron_info" class="nav"
-                    label="&staff.patron_navbar.info;" accesskey="&staff.patron_navbar.info.accesskey;"/>
-                <button id="PatronNavBar_exit" command="cmd_patron_exit" class="nav"
-                    label="&staff.patron.display_overlay.exit.label;" accesskey="&staff.patron.display_overlay.exit.accesskey;"/>
+                <grid>
+                    <columns>
+                        <column/>
+                        <column/>
+                        <column/>
+                        <column/>
+                        <column/>
+                        <column/>
+                        <column/>
+                        <column/>
+                    </columns>
+                    <rows>
+                        <row>
+                            <button id="PatronNavBar_refresh" command="cmd_patron_refresh" class="nav"
+                                label="&staff.patron_navbar.refresh;" accesskey="&staff.patron_navbar.refresh.accesskey;"/>
+                            <button id="PatronNavBar_checkout" command="cmd_patron_checkout" class="nav"
+                                label="&staff.patron_navbar.checkout;" accesskey="&staff.patron_navbar.checkout.accesskey;"/>
+                            <button id="PatronNavBar_items" command="cmd_patron_items" class="nav"
+                                label="&staff.patron_navbar.items;" accesskey="&staff.patron_navbar.items.accesskey;"/>
+                            <button id="PatronNavBar_holds" command="cmd_patron_holds" class="nav"
+                                label="&staff.patron_navbar.holds;" accesskey="&staff.patron_navbar.holds.accesskey;"/>
+                            <button id="PatronNavBar_bills" command="cmd_patron_bills" class="nav"
+                                label="&staff.patron_navbar.bills;" accesskey="&staff.patron_navbar.bills.accesskey;"/>
+                            <button id="PatronNavBar_edit" command="cmd_patron_edit" class="nav"
+                                label="&staff.patron_navbar.edit;" accesskey="&staff.patron_navbar.edit.accesskey;"/>
+                            <button id="PatronNavBar_other" command="cmd_patron_other" class="nav" label="&staff.patron_navbar.other;" accesskey="&staff.patron_navbar.other.accesskey;" type="menu">
+                                <menupopup>
+                                    <menuitem label="&staff.patron_navbar.alert;" accesskey="&staff.patron_navbar.alert.accesskey;" command="cmd_patron_alert"/>
+                                    <menuitem label="&staff.patron_navbar.info;" conflicting_accesskey="&staff.patron_navbar.info.accesskey;" command="cmd_patron_info"/>
+                                    <menuitem label="&staff.patron_display.verify_password.label;" accesskey="&staff.patron_display.verify_password.accesskey;" command="cmd_verify_credentials"/>
+                                    <menuitem label="&staff.main.menu.admin.user_edit.label;" accesskey="&staff.main.menu.admin.user_edit.accesskey;" command="cmd_perm_editor"/>
+                                    <menuitem label="&staff.patron_navbar.actions.menu.standing_penalties.label;" accesskey="&staff.patron_navbar.actions.menu.standing_penalties.accesskey;" 
+                                        command="cmd_standing_penalties"/>
+                                </menupopup>
+                            </button>
+                            <button id="PatronNavBar_exit" command="cmd_patron_exit" class="nav"
+                                label="&staff.patron.display_overlay.exit.label;" accesskey="&staff.patron.display_overlay.exit.accesskey;"/>
+                        </row>
+                        <row>
+                            <label id="under_refresh"/>
+                            <label id="under_checkout"/>
+                            <label id="under_items"/>
+                            <label id="under_holds"/>
+                            <label id="under_bills"/>
+                            <label id="under_edit"/>
+                            <label id="under_info"/>
+                            <label id="under_edit"/>
+                        </row>
+                    </rows>
+                </grid>
             </arrowscrollbox>
         </hbox>
-        <hbox>
-            <spacer flex="1"/>
-            <menubar>
-                <menu label="&staff.patron_navbar.actions.menu.label;" accesskey="&staff.patron_navbar.actions.menu.accesskey;">
-                    <menupopup>
-                        <menuitem label="&staff.patron_display.verify_password.label;" accesskey="&staff.patron_display.verify_password.accesskey;" command="cmd_verify_credentials"/>
-                        <menuitem label="&staff.main.menu.admin.user_edit.label;" accesskey="&staff.main.menu.admin.user_edit.accesskey;" command="cmd_perm_editor"/>
-                        <menuitem label="&staff.patron_navbar.actions.menu.standing_penalties.label;" accesskey="&staff.patron_navbar.actions.menu.standing_penalties.accesskey;" 
-                            command="cmd_standing_penalties"/>
-                    </menupopup>
-                </menu>
-            </menubar>
-        </hbox>
     </vbox>
 </hbox>
 

Modified: trunk/Open-ILS/xul/staff_client/server/patron/summary.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/summary.js	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/server/patron/summary.js	2009-02-22 01:03:54 UTC (rev 12250)
@@ -188,6 +188,13 @@
 						function(e) {
 							return function() { 
 								e.setAttribute('value','...');
+                                var under_btn; 
+                                if (xulG) {
+                                    if (xulG.display_window) {
+                                        under_btn = xulG.display_window.document.getElementById('under_bills');
+                                        if (under_btn) under_btn.setAttribute('value','...');
+                                    }
+                                }
 								obj.network.simple_request(
 									'FM_MOUS_RETRIEVE.authoritative',
 									[ ses(), obj.patron.id() ],
@@ -195,6 +202,8 @@
 										JSAN.use('util.money');
 										var robj = req.getResultObject();
 										e.setAttribute('value', patronStrings.getFormattedString('staff.patron.summary.patron_bill.money', [util.money.sanitize( robj.balance_owed() )]));
+										if (under_btn) under_btn.setAttribute('value', 
+                                            patronStrings.getFormattedString('staff.patron.summary.patron_bill.money', [util.money.sanitize( robj.balance_owed() )]));
 									}
 								);
 								/*
@@ -232,6 +241,13 @@
 								var e4 = document.getElementById( 'patron_long_overdue' ); if (e4) e4.setAttribute('value','...');
 								var e5 = document.getElementById( 'patron_lost' ); if (e5) e5.setAttribute('value','...');
 								var e6 = document.getElementById( 'patron_noncat' ); if (e6) e6.setAttribute('value','...');
+                                var under_btn; 
+                                if (xulG) {
+                                    if (xulG.display_window) {
+                                        under_btn = xulG.display_window.document.getElementById('under_items');
+                                        if (under_btn) under_btn.setAttribute('value','...');
+                                    }
+                                }
 								obj.network.simple_request(
 									'FM_CIRC_COUNT_RETRIEVE_VIA_USER.authoritative',
 									[ ses(), obj.patron.id() ],
@@ -243,6 +259,10 @@
 											if (e3) e3.setAttribute('value', robj.claims_returned	);
 											if (e4) e4.setAttribute('value', robj.long_overdue	);
 											if (e5) e5.setAttribute('value', robj.lost	);
+                                            if (under_btn) under_btn.setAttribute('value', 
+                                                String( robj.out + robj.overdue + robj.claims_returned + robj.long_overdue) + 
+                                                ( robj.overdue > 0 || robj.claims_returned > 0 || robj.long_overdue > 0 ? '*' : '' )
+                                            );
 										} catch(E) {
 											alert(E);
 										}
@@ -274,6 +294,13 @@
 								e.setAttribute('value','...');
 								var e2 = document.getElementById('patron_holds_available');
 								if (e2) e2.setAttribute('value','...');
+                                var under_btn; 
+                                if (xulG) {
+                                    if (xulG.display_window) {
+                                        under_btn = xulG.display_window.document.getElementById('under_holds');
+                                        if (under_btn) under_btn.setAttribute('value','...');
+                                    }
+                                }
 								obj.network.simple_request(
 									'FM_AHR_COUNT_RETRIEVE.authoritative',
 									[ ses(), obj.patron.id() ],
@@ -284,6 +311,7 @@
 										if (e2) e2.setAttribute('value',
 											req.getResultObject().ready
 										);
+                                        if (under_btn) under_btn.setAttribute( 'value', req.getResultObject().ready + '/' + req.getResultObject().total );
 									}
 								);
 							};
@@ -365,7 +393,7 @@
 									patronStrings.getString('staff.patron.summary.expires_on') + ' ' + (
 										obj.patron.expire_date() ?
 										obj.patron.expire_date().substr(0,10) :
-										'<Unset>'
+									    patronStrings.getString('staff.patron.field.unset') 
 									)
 								);
 							};
@@ -375,11 +403,29 @@
 						['render'],
 						function(e) {
 							return function() { 
-								e.setAttribute('value',
+                                var hide_value = e.getAttribute('hide_value');
+								e.setAttribute( hide_value == 'true' ? 'hidden_value' : 'value',
 									obj.patron.dob() ?
 									obj.patron.dob().substr(0,10) :
-									'<Unset>'
+                                    patronStrings.getString('staff.patron.field.unset') 
 								);
+                                e.setAttribute( hide_value == 'false' ? 'hidden_value' : 'value',
+                                    patronStrings.getString('staff.patron.field.hidden') 
+                                );
+                                var x = document.getElementById('PatronSummaryContact_date_of_birth_label');
+                                if (x) {
+                                    var click_to_hide_dob = x.getAttribute('click_to_hide_dob');
+                                    if (click_to_hide_dob == 'true') {
+                                        x.onclick = function() {
+                                            hide_value = e.getAttribute('hide_value');
+                                            e.setAttribute('hide_value', hide_value == 'true' ? 'false' : 'true'); 
+                                            var value = e.getAttribute('value');
+                                            var hidden_value = e.getAttribute('hidden_value');
+                                            e.setAttribute('value',hidden_value);
+                                            e.setAttribute('hidden_value',value);
+                                        }
+                                    }
+                                }
 							};
 						}
 					],

Modified: trunk/Open-ILS/xul/staff_client/server/patron/summary.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/summary.xul	2009-02-22 00:57:29 UTC (rev 12249)
+++ trunk/Open-ILS/xul/staff_client/server/patron/summary.xul	2009-02-22 01:03:54 UTC (rev 12250)
@@ -19,10 +19,9 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- OVERLAYS -->
 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
-<?xul-overlay href="/xul/server/patron/summary_overlay.xul"?>
 
 <window id="patron_summary_win" 
-	onload="try { my_init(); font_helper(); } catch(E) { alert(E); }"
+	onload="try { my_init(); font_helper(); } catch(E) { alert(E); }" onunload="try { observer.unregister(); } catch(E) { alert(E); }"
 	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
 	<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,6 +34,26 @@
 	<![CDATA[
 		function $(id) { return document.getElementById(id); }
 		
+		var observer;
+		function myObserver() { this.register(); }
+		myObserver.prototype = {
+			register: function() {
+				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+				var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+				observerService.addObserver(this, "xul-overlay-merged", false);
+			},
+			unregister: function() {
+				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+				var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+				observerService.removeObserver(this, "xul-overlay-merged");
+			},
+			observe: function(subject,topic,data) {
+				dump('observe: <'+subject+','+topic+','+data+'>\n');
+				// setTimeout is needed here for xulrunner 1.8
+				setTimeout( function() { try { post_overlay(); } catch(E) { alert(E); } }, 0 );
+			}
+		}
+				
 		function my_init() {
 			try {
 				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
@@ -43,6 +62,24 @@
 				JSAN.addRepository('/xul/server/');
 				JSAN.use('util.error'); g.error = new util.error();
 				g.error.sdump('D_TRACE','my_init() for patron_summary.xul');
+				
+				JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.stash_retrieve();
+				
+				var horizontal_interface = String( g.data.hash.aous['ui.circ.patron_summary.horizontal'] ) == 'true';
+				var url = horizontal_interface ? '/xul/server/patron/summary_overlay_horiz.xul' : '/xul/server/patron/summary_overlay.xul';
+				
+				observer = new myObserver();
+				document.loadOverlay(location.protocol + '//' + location.hostname + url,observer)
+			} catch(E) {
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/summary.xul:my_init()', E]);
+				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
+				alert(err_msg);
+			}
+		}
+		
+		function post_overlay() {
+			try {
+				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 
 				var patron_id = xul_param('id'); 
 				var patron_bc = xul_param('barcode'); 
@@ -55,14 +92,13 @@
 				} );
 
 				window.refresh = function () { g.summary.retrieve(); }
-
+				font_helper();
 			} catch(E) {
-				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/summary.xul', E]);
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/summary.xul:post_overlay()', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
 		}
-
 	]]>
 	</script>
 	

Added: trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay_horiz.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay_horiz.xul	                        (rev 0)
+++ trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay_horiz.xul	2009-02-22 01:03:54 UTC (rev 12250)
@@ -0,0 +1,242 @@
+<?xml version="1.0"?>
+<!DOCTYPE overlay PUBLIC "" ""[
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
+]>
+<overlay id="patron_summary_overlay" 
+	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<script>dump('loading patron/summary_overlay.xul\n');</script>
+
+<commandset id="patron_summary_cmds" />
+
+<box id="patron_summary_main" flex="1" orient="vertical" class="my_overflow">
+	<hbox id="patron_info_sidebar" flex="1"/>
+</box>
+
+<hbox id="patron_info_sidebar">
+	<image id="patron_photo_url" />
+	<vbox id="patron_info" flex="1">
+        <groupbox flex="1">
+            <caption label="Patron Info"/>
+            <label id="patron_name" />
+            <grid>
+                <columns>
+                    <column/>
+                    <column/>
+                </columns>
+                <rows>
+                    <row>
+                        <label id="PatronSummaryContact_date_of_birth_label" click_to_hide_dob="true" class="text_left dob label click_link" value="&staff.patron_display.date_of_birth.label;"/>
+                        <label id="patron_date_of_birth" class="dob value" hide_value="true" persist="hide_value"/><!-- FIXME: persist doesn't work for this -->
+                    </row>
+                    <row>
+                        <label id="PatronSummaryContact_library_card_label" class="text_left card label"
+                            value="&staff.patron_display.library_card.label;"/>
+                        <label id="patron_card" class="card value click_link" onclick="try { copy_to_clipboard(event); } catch(E) { alert(E); }"/>
+                    </row>
+                    <row>
+                        <label id="PatronSummaryContact_usrname_label" class="text_left usrname label"
+                            value="&staff.patron.summary_overlay.opac_login.value;" />
+                        <label id="patron_usrname" class="usrname value"/>
+                    </row>
+                    <row>
+                        <label id="PatronSummaryContact_email_label" class="text_left email label"
+                            value="&staff.patron_display.email.label;" />
+                        <label id="patron_email" class="email value" style="text-decoration: underline; color: blue; -moz-user-focus: normal;" onclick="copy_to_clipboard(event)"/>
+                    </row>
+                </rows>
+            </grid>
+            <spacer/><!-- bug workaround.. for some reason.. maybe timing with the overlay inserting children.. the patron_name label shows up beneath the grid when rendered -->
+        </groupbox>
+    </vbox>
+	<vbox id="contact_info" flex="1">
+        <groupbox flex="1">
+            <caption>
+                <button id="contact_info_btn" label="Mailing Address" type="menu">
+                    <menupopup>
+                        <menuitem label="&staff.patron_display.mailing_address;" oncommand="document.getElementById('contact_info_btn').setAttribute('label',this.getAttribute('label')); document.getElementById('contact_info_deck').selectedIndex = 0;"/>
+                        <menuitem label="&staff.patron_display.physical_address;" oncommand="document.getElementById('contact_info_btn').setAttribute('label',this.getAttribute('label')); document.getElementById('contact_info_deck').selectedIndex = 1;"/>
+                        <menuitem label="Phone Numbers" oncommand="document.getElementById('contact_info_btn').setAttribute('label',this.getAttribute('label')); document.getElementById('contact_info_deck').selectedIndex = 2;"/>
+                        <menuitem label="Identification" oncommand="document.getElementById('contact_info_btn').setAttribute('label',this.getAttribute('label')); document.getElementById('contact_info_deck').selectedIndex = 3;"/>
+                    </menupopup>
+                </button>
+            </caption>
+            <deck id="contact_info_deck">
+    		    <vbox id="PatronSummaryContact_mailing_address" orient="vertical"/>
+                <vbox id="PatronSummaryContact_physical_address" orient="vertical"/>
+                <grid id="PatronSummaryContact_grid_phone" />
+		        <grid id="PatronSummaryContact_grid" flex="1"/>
+            </deck>
+        </groupbox>
+	</vbox>
+    <vbox>
+        <groupbox flex="1">
+            <caption label="Circ Info"/>
+        	<grid id="PatronSummaryStatus_grid" flex="1"/>
+        </groupbox>
+	</vbox>
+    <vbox>
+        <groupbox flex="1">
+            <caption label="Account Info"/>
+            <grid>
+                <columns>
+                    <column/>
+                </columns>
+                <rows>
+                    <row hidden="true">
+                        <label id="patron_standing" />
+                    </row>
+                    <row id="pdsgr1">
+                        <label id="patron_profile" class="profile value"/>
+                    </row>
+                    <row id="pdsgr5">
+                        <label id="patron_library" class="homelib value"/>
+                    </row>
+                    <row id="pdsgr5a">
+                        <label id="patron_net_access" class="net_access value"/>
+                    </row>
+                    <row id="pdsgr5aa">
+                        <label id="patron_date_of_exp" class="expire_date value"/>
+                    </row>
+                </rows>
+            </grid>
+        </groupbox>
+	</vbox>
+</hbox>
+
+<grid id="PatronSummaryStatus_grid">
+	<columns id="pdsgc">
+		<column id="pdsgc1" />
+		<column id="pdsgc2" />
+		<column id="pdsgc3" />
+		<column id="pdsgc4" />
+	</columns>
+	<rows id="pdsgr" flex="1">
+		<row id="pdsgr4">
+			<label id="PatronSummaryStatus_holds_label" class="text_left holds label"
+				value="&staff.patron_display.holds.label;" />
+            <hbox>
+    			<label id="patron_holds_available" class="holds_ready label" />
+                <label value="/" class="holds" /> <!-- Would it be better to consolidate this into one label and use .getFormattedString? -->
+    			<label id="patron_holds" class="holds value"/>
+            </hbox>
+		</row>
+		<row id="pdsgr2" class="hide_patron_credit" hidden="true">
+			<label id="PatronSummaryStatus_credit_label" class="text_left credit label"
+				value="&staff.patron_display.credit.label;" />
+			<label id="patron_credit" class="credit value"/>
+		</row><row>
+			<label id="PatronSummaryStatus_bills_label" class="text_left bill label"
+				value="&staff.patron_display.bills.label;" />
+			<label id="patron_bill" class="bill value"/>
+		</row>
+		<row id="pdsgr3">
+			<label id="PatronSummaryStatus_checkouts_label" class="text_left items_out label"
+				value="&staff.patron_display.checkouts.label;" />
+			<label id="patron_checkouts" class="items_out value"/>
+		</row>
+		<row>
+            <hbox>
+    			<label id="PatronSummaryStatus_checkouts_overdue_label" class="text_right items_overdue label" value="&staff.patron_display.checkouts_overdue.label;" />
+                <label value="/"/>
+			    <label id="PatronSummaryStatus_long_overdue_label" value="&staff.patron.summary_overlay.overdue.value;" class="text_right items_long_overdue label" />
+            </hbox>
+            <hbox>
+    			<label id="patron_overdue" class="items_overdue value" />
+                <label value="/"/>
+			    <label id="patron_long_overdue" class="items_long_overdue value" />
+            </hbox>
+		</row>
+		<row id="pdsgr7">
+            <hbox>
+    			<label id="PatronSummaryStatus_claimed_returned_label" value="&staff.patron.summary_overlay.claimed_returned.value;" class="text_right items_long_overdue label" />
+                <label value="/"/>
+    			<label id="PatronSummaryStatus_lost_label" value="&staff.patron.summary_overlay.lost_label.value;" class="text_left items_lost label"/>
+            </hbox>
+            <hbox>
+    			<label id="patron_claimed_returned" class="items_claimed_returned value" />
+                <label value="/"/>
+    			<label id="patron_lost" class="items_lost value"/>
+            </hbox>
+		</row>
+		<row id="pdsgr6a">
+			<label id="PatronSummaryStatus_noncat_label" value="&staff.patron.summary_overlay.noncat_label.value;" class="text_left items_noncat label"/>
+			<label id="patron_noncat" class="items_noncat value"/>
+		</row>
+	</rows>
+</grid>
+
+<grid id="PatronSummaryContact_grid">
+	<columns id="pdsgc">
+		<column id="pdsgc1" />
+		<column id="pdsgc2" />
+	</columns>
+	<rows id="pdsgr" flex="1">
+		<row id="pdsgr1">
+			<label id="PatronSummaryContact_ident_label" class="text_left"
+				value="&staff.patron_display.ident1.label;"/>
+			<vbox id="pdsgr0h">
+				<label id="patron_ident_type_1" class="ident ident_type ident1 value"/>
+				<label id="patron_ident_value_1" class="ident ident_value ident1 value"/>
+			</vbox>
+		</row>
+		<row id="pdsgr2">
+			<label id="PatronSummaryContact_ident_label2" class="text_left"
+				value="&staff.patron_display.ident2.label;"/>
+			<vbox id="pdsgr0ah">
+				<label id="patron_ident_type_2" class="ident ident_type ident2 value"/>
+				<label id="patron_ident_value_2" class="ident ident_value ident2 value"/>
+			</vbox>
+		</row>
+		<row id="pdsgr4"><label id="pdsgr4l" value=" "/></row>
+	</rows>
+</grid>
+
+<grid id="PatronSummaryContact_grid_phone">
+	<columns id="pdcgpc">
+		<column id="pdcgpc1" />
+		<column id="pdcgpc2" />
+	</columns>
+	<rows id="pdcgpr" flex="1">
+		<row id="pdcgpr1">
+			<label id="PatronSummaryContact_day_phone_label" class="text_left phone label day_phone"
+				value="&staff.patron_display.day_phone.label;" />
+			<label id="patron_day_phone" class="phone value day_phone"/> 
+		</row>
+		<row id="pdcgpr2">
+			<label id="PatronSummaryContact_evening_phone_label" class="text_left phone label evening_phone"
+				value="&staff.patron_display.evening_phone.label;" />
+			<label id="patron_evening_phone" class="phone value evening_phone"/>
+		</row>
+		<row id="pdcgpr3">
+			<label id="PatronSummaryContact_other_phone_label" class="text_left phone label other_phone"
+				value="&staff.patron_display.other_phone.label;" />
+			<label id="patron_other_phone" class="phone value other_phone"/> 
+		</row>
+		<row id="pdsgpr4"><label id="pdsgpr4l" value=" "/></row>
+		<row id="pdsgpr6"><label id="pdsgpr6l" value=" "/></row>
+
+	</rows>
+</grid>
+
+<vbox id="PatronSummaryContact_mailing_address">
+	<label id="patron_mailing_address_street1" tooltiptext="&staff.patron_display.mailing.street1.label;" class="address street street1 mailing"/>
+	<label id="patron_mailing_address_street2" tooltiptext="&staff.patron_display.mailing.street2.label;" class="address street street2 mailing"/>
+	<hbox id="pdcmah">
+		<label id="patron_mailing_address_city" tooltiptext="&staff.patron_display.mailing.city.label;" class="address city mailing"/>
+		<label id="patron_mailing_address_state" tooltiptext="&staff.patron_display.mailing.state.label;" class="address state mailing"/>
+		<label id="patron_mailing_address_post_code" tooltiptext="&staff.patron_display.mailing.post_code.label;" class="address post_code mailing"/>
+	</hbox>
+</vbox>
+
+<vbox id="PatronSummaryContact_physical_address">
+	<label id="patron_physical_address_street1" tooltiptext="&staff.patron_display.physical.street1.label;" class="address street street1 physical" />
+	<label id="patron_physical_address_street2" tooltiptext="&staff.patron_display.physical.street2.label;"  class="address street street2 physical"/>
+	<hbox id="pdcpah">
+		<label id="patron_physical_address_city" tooltiptext="&staff.patron_display.physical.city.label;" class="address city physical"/>
+		<label id="patron_physical_address_state" tooltiptext="&staff.patron_display.physical.state.label;" class="address state physical"/>
+		<label id="patron_physical_address_post_code" tooltiptext="&staff.patron_display.physical.post_code.label;" class="address post_code physical"/>
+	</hbox>
+</vbox>
+
+</overlay>



More information about the open-ils-commits mailing list