[open-ils-commits] SPAM: r9138 - in branches/dojo-admin/Open-ILS/web/conify/global: . actor

svn at svn.open-ils.org svn at svn.open-ils.org
Wed Mar 26 12:34:09 EDT 2008


Author: miker
Date: 2008-03-26 11:58:44 -0400 (Wed, 26 Mar 2008)
New Revision: 9138

Added:
   branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.js
   branches/dojo-admin/Open-ILS/web/conify/global/admin.html
   branches/dojo-admin/Open-ILS/web/conify/global/config/
Modified:
   branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.html
Log:
admin wrapper with status display; separation of JS and HTML where useful

Modified: branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.html
===================================================================
--- branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.html	2008-03-26 03:28:32 UTC (rev 9137)
+++ branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.html	2008-03-26 15:58:44 UTC (rev 9138)
@@ -41,251 +41,11 @@
 		<script language='javascript' src='/opac/common/js/OrgTree.js' type='text/javascript'></script>
 
 		<!-- Dojo goodness -->
-		<script type="text/javascript" src="/conify/js/dojo/dojo.js.uncompressed.js" djConfig="parseOnLoad: true"></script>
-		<script type="text/javascript" src="/conify/js/dijit/dijit.js.uncompressed.js"></script>
+		<script type="text/javascript" src="/conify/js/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
+		<script type="text/javascript" src="/conify/js/dijit/dijit.js"></script>
 
-		<script type="text/javascript">
-			dojo.require('conify.fieldmapper.addToHash', true);
-			dojo.require('conify.fieldmapper.addFromHash', true);
-			dojo.require('conify.fieldmapper.addToStoreData', true);
-			dojo.require('conify.fieldmapper.addFromStoreItem', true);
-			dojo.require('dojo.parser');
-			dojo.require('dojo.data.ItemFileWriteStore');
-			dojo.require('dojo.date.stamp');
-			dojo.require('dijit.form.TextBox');
-			dojo.require('dijit.form.TimeTextBox');
-			dojo.require('dijit.form.ValidationTextBox');
-			dojo.require('dijit.form.CheckBox');
-			dojo.require('dijit.form.FilteringSelect');
-			dojo.require('dijit.Tree');
-			dojo.require('dijit.layout.ContentPane');
-			dojo.require('dijit.layout.TabContainer');
-			dojo.require('dijit.layout.LayoutContainer');
-			dojo.require('dijit.layout.SplitContainer');
-			dojo.require('dojox.widget.Toaster');
-			dojo.require('dojox.fx');
-		</script>
+		<script type="text/javascript" src="org_unit.js"></script>
 
-		<script type="text/javascript">
-			// some handy globals
-
-			var cgi = new CGI();
-			var cookieManager = new HTTP.Cookies();
-			var ses = cookieManager.read('ses') || cgi.param('ses');
-			var pCRUD = new OpenSRF.ClientSession('open-ils.permacrud');
-
-			var current_ou, current_ou_hoo;
-			var virgin_ou_id = -1;
-
-			var ou_type_store = new dojo.data.ItemFileWriteStore({ data : aout.toStoreData( globalOrgTypes ) });
-
-			var highlighter = {};
-
-			function save_org () {
-				var modified_ou = new aou().fromStoreItem( current_ou );
-				modified_ou.ischanged( 1 );
-
-				new_kid_button.disabled = false;
-				save_ou_button.disabled = false;
-				delete_ou_button.disabled = false;
-
-				pCRUD.request({
-					method : 'open-ils.permacrud.update.aou',
-					timeout : 10,
-					params : [ ses, modified_ou ],
-					onerror : function (r) {
-						highlighter.editor_pane.red.play();
-						throw 'Problem saving data for ' + ou_list_store.getValue( current_ou, 'name' );
-					},
-					oncomplete : function (r) {
-						var res = r.recv();
-						if ( res && res.content() ) {
-							highlighter.editor_pane.green.play();
-						} else {
-							highlighter.editor_pane.red.play();
-							throw 'Problem saving data for ' + ou_list_store.getValue( current_ou, 'name' );
-						}
-					},
-				}).send();
-			}
-	
-			function hoo_load () {
-				// empty result not coming through ...
-				current_ou_hoo = new aouhoo().fromHash({id:ou_list_store.getValue( current_ou, 'id' )});
-				current_ou_hoo.isnew(1);
-
-				pCRUD.request({
-					method : 'open-ils.permacrud.retrieve.aouhoo',
-					params : [ ses, ou_list_store.getValue( current_ou, 'id' ) ],
-					onerror : function (r) { throw 'Problem fetching hours of operation for ' + ou_list_store.getValue( current_ou, 'name' );},
-					oncomplete : function (r) {
-						current_ou_hoo = null;
-
-						var res = r.recv();
-						if (res) {
-							if (res.content()) current_ou_hoo = res.content();
-						}
-
-						if (!current_ou_hoo) {
-							current_ou_hoo = new aouhoo().fromHash({id:ou_list_store.getValue( current_ou, 'id' )});
-							current_ou_hoo.isnew(1);
-							for (var i = 0; i < 7; i++) {
-								current_ou_hoo['dow_' + i + '_open']('09:00:00');
-								current_ou_hoo['dow_' + i + '_close']('17:00:00');
-							}
-						}
-
-						for (var i = 0; i < 7; i++) {
-							window['dow_' + i + '_open'].setValue(
-								dojo.date.stamp.fromISOString( 'T' + current_ou_hoo['dow_' + i + '_open']() )
-							);
-							window['dow_' + i + '_close'].setValue(
-								dojo.date.stamp.fromISOString( 'T' + current_ou_hoo['dow_' + i + '_close']() )
-							);
-						}
-
-						highlighter.hoo_pane.green.play();
-					}
-				}).send();
-
-			}
-
-			function addr_load () {
-				// empty result not coming through ...
-
-				save_ill_address.disabled = false;
-				save_holds_address.disabled = false;
-				save_mailing_address.disabled = false;
-				save_billing_address.disabled = false;
-
-				if (ou_list_store.getValue( current_ou, 'billing_address' )) {
-					pCRUD.request({
-						method : 'open-ils.permacrud.retrieve.aoa',
-						params : [ ses, ou_list_store.getValue( current_ou, 'billing_address' ) ],
-						onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
-						oncomplete : function (r) {
-							current_billing_address = null;
-
-							var res = r.recv();
-							if (res) {
-								if (res.content()) current_billing_address = res.content();
-							}
-
-							if (!current_billing_address) {
-								current_billing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-								current_billing_address.isnew(1);
-							}
-
-							set_addr_inputs('billing');
-							highlighter.addresses_pane.green.play();
-						}
-					}).send();
-				} else {
-					current_billing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-					current_billing_address.isnew(1);
-					set_addr_inputs('billing');
-				}
-
-				if (ou_list_store.getValue( current_ou, 'mailing_address' )) {
-					pCRUD.request({
-						method : 'open-ils.permacrud.retrieve.aoa',
-						params : [ ses, ou_list_store.getValue( current_ou, 'mailing_address' ) ],
-						onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
-						oncomplete : function (r) {
-							current_mailing_address = null;
-
-							var res = r.recv();
-							if (res) {
-								if (res.content()) current_mailing_address = res.content();
-							}
-
-							if (!current_mailing_address) {
-								current_mailing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-								current_mailing_address.isnew(1);
-							}
-
-							set_addr_inputs('mailing');
-							highlighter.addresses_pane.green.play();
-						}
-					}).send();
-				} else {
-					current_mailing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-					current_mailing_address.isnew(1);
-					set_addr_inputs('mailing');
-				}
-
-				if (ou_list_store.getValue( current_ou, 'holds_address' )) {
-					pCRUD.request({
-						method : 'open-ils.permacrud.retrieve.aoa',
-						params : [ ses, ou_list_store.getValue( current_ou, 'holds_address' ) ],
-						onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
-						oncomplete : function (r) {
-							current_holds_address = null;
-
-							var res = r.recv();
-							if (res) {
-								if (res.content()) current_holds_address = res.content();
-							}
-
-							if (!current_holds_address) {
-								current_holds_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-								current_holds_address.isnew(1);
-							}
-
-							set_addr_inputs('holds');
-							highlighter.addresses_pane.green.play();
-						}
-					}).send();
-				} else {
-					current_holds_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-					current_holds_address.isnew(1);
-					set_addr_inputs('holds');
-				}
-
-				if (ou_list_store.getValue( current_ou, 'ill_address' )) {
-					pCRUD.request({
-						method : 'open-ils.permacrud.retrieve.aoa',
-						params : [ ses, ou_list_store.getValue( current_ou, 'ill_address' ) ],
-						onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
-						oncomplete : function (r) {
-							current_ill_address = null;
-
-							var res = r.recv();
-							if (res) {
-								if (res.content()) current_ill_address = res.content();
-							}
-
-							if (!current_ill_address) {
-								current_ill_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-								current_ill_address.isnew(1);
-							}
-
-							set_addr_inputs('ill');
-							highlighter.addresses_pane.green.play();
-						}
-					}).send();
-				} else {
-					current_ill_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
-					current_ill_address.isnew(1);
-					set_addr_inputs('ill');
-				}
-
-			}
-
-			function set_addr_inputs (type) {
-				window[type + '_addr_valid'].setChecked( window['current_' + type + '_address'].valid() == 't' ? true : false );
-				window[type + '_addr_type'].setValue( window['current_' + type + '_address'].address_type() || '' );
-				window[type + '_addr_street1'].setValue( window['current_' + type + '_address'].street1() || '' );
-				window[type + '_addr_street2'].setValue( window['current_' + type + '_address'].street2() || '' );
-				window[type + '_addr_city'].setValue( window['current_' + type + '_address'].city() || '' );
-				window[type + '_addr_county'].setValue( window['current_' + type + '_address'].county() || '' );
-				window[type + '_addr_country'].setValue( window['current_' + type + '_address'].country() || '' );
-				window[type + '_addr_state'].setValue( window['current_' + type + '_address'].state() || '' );
-				window[type + '_addr_post_code'].setValue( window['current_' + type + '_address'].post_code() || '' );
-			}
-
-		</script>
-
 	</head>
 
 	<body class="tundra" id='pagebody'>
@@ -296,19 +56,50 @@
 				<script type="dojo/method">
 
 					var ou_list_data = { label : 'shortname', identifier : 'id' };
+					window.dirtyStore = [];
 		
 					pCRUD.request({
 						method : 'open-ils.permacrud.search.aou.atomic',
 						timeout : 10,
 						params : [ ses, { id : { "!=" : null } }, { order_by : { aou : 'shortname' } } ],
 						onerror : function (r) { throw 'Problem fetching org units';},
-						oncomplete : function (r) { window.ou_list_store = new dojo.data.ItemFileWriteStore({ data : aou.toStoreData( r.recv().content() ) }); }
+						oncomplete : function (r) {
+							window.ou_list_store = new dojo.data.ItemFileWriteStore({ data : aou.toStoreData( r.recv().content() ) });
+							window.ou_list_store.onSet = function (item, attr, n, o) {
+								if (attr == 'ischanged') return;
+								if (n == o) return;
+								this.setValue( item, 'ischanged', 1);
+							};
+							dojo.addOnUnload( function (event) {
+
+								ou_list_store.fetch({
+									query : { ischanged : 1 },
+									queryOptions : { deep : true },
+									onItem : function (item, req) { try { if (this.isItem( item )) window.dirtyStore.push( item ); } catch (e) { /* meh */ } },
+									scope : ou_list_store
+								});
+
+								if (dirtyStore.length > 0) {
+									var confirmation = confirm(
+										'There are unsaved modified Organizational Units!  '+
+										'OK to save these changes, Cancel to abandon them.'
+									);
+
+									if (confirmation) {
+										for (var i in window.dirtyStore) {
+											window.current_ou = window.dirtyStore[i];
+											save_org(true);
+										}
+									}
+								}
+
+							});
+						}
 					}).send();
-		
 
 				</script>
 				<div
-				  id="dijit_ou_tree"
+				  id="ou_tree"
 				  label="Oragnizational Units"
 				  query="{'_top':'true'}"
 				  dojoType="dijit.Tree"
@@ -322,6 +113,7 @@
 						current_ou = item;
 
 						highlighter.editor_pane.green.play();
+						status_update( 'Now editing' + this.store.getValue( item, 'name' ) );
 
 						new_kid_button.disabled = false;
 						save_ou_button.disabled = false;
@@ -359,22 +151,26 @@
 					</script>
 
 					<script type="dojo/method" event="getLabel" args="item,pI">
-						return this.store.getValue(item,'shortname') + ' : ' + this.store.getValue(item,'name');
+						var label = this.store.getValue(item,'shortname') + ' : ' + this.store.getValue(item,'name');
+						if (this.store.getValue(item,'ischanged') == 1) label = '* ' + label;
+						return label;
 					</script>
 
 				</div>
 			</div>
 
 			<div id="right_pane" dojoType="dijit.layout.ContentPane"  sizeMin="200" sizeShare="300">
-				<div><span style="font-weight:bold; margin-right:10px;">Now editing:</span><span id="current_ou_name"></span></div>
 
 				<div id="right_tabpane" dojoType="dijit.layout.TabContainer">
 	
 					<div id="editor_pane" dojoType="dijit.layout.ContentPane" title="Main Settings">
 						<script type="dojo/method">
+							highlighter.ou_tree = {};
 							highlighter.editor_pane = {};
 							highlighter.hoo_pane = {};
 							highlighter.addresses_pane = {};
+							highlighter.ou_tree.green = dojox.fx.highlight( { color : '#B4FFB4', node : 'ou_tree', duration : 500 } );
+							highlighter.ou_tree.red = dojox.fx.highlight( { color : '#FF2018', node : 'ou_tree', duration : 500 } );
 							highlighter.editor_pane.green = dojox.fx.highlight( { color : '#B4FFB4', node : 'editor_pane', duration : 500 } );
 							highlighter.editor_pane.red = dojox.fx.highlight( { color : '#FF2018', node : 'editor_pane', duration : 500 } );
 							highlighter.hoo_pane.green = dojox.fx.highlight( { color : '#B4FFB4', node : 'hoo_pane', duration : 500 } );
@@ -504,7 +300,7 @@
 										);
 										if ( existing_kids.length > 0) {
 											highlighter.editor_pane.red.play();
-											alert(existing_kids.length + ' kids still exist');
+											status_update( 'Cannot delete' + ou_list_store.getValue( current_ou, 'name' ) + ', ' + existing_kids.length + ' subordinates still exist.' );
 											return;
 										}
 									}
@@ -521,7 +317,7 @@
 											params : [ ses, modified_ou ],
 											onerror : function (r) {
 												highlighter.editor_pane.red.play();
-												throw 'Problem deleting ' + ou_list_store.getValue( current_ou, 'name' );
+												status_update( 'Problem deleting ' + ou_list_store.getValue( current_ou, 'name' ) );
 											},
 											oncomplete : function (r) {
 												var res = r.recv();
@@ -530,7 +326,7 @@
 													ou_list_store.fetch({
 														query : { id : ou_list_store.getValue( current_ou, 'id' ) },
 														queryOptions : { deep : true },
-														onItem : function (item, req) { try { this.deleteItem( item ); } catch (e) { /* meh */ } },
+														onItem : function (item, req) { try { if (this.isItem( item )) this.deleteItem( item ); } catch (e) { /* meh */ } },
 														scope : ou_list_store
 													});
 	
@@ -548,9 +344,10 @@
 													}
 			
 													highlighter.editor_pane.green.play();
+													status_update( ou_list_store.getValue( current_ou, 'name' ) + ' deleted' );
 												} else {
 													highlighter.editor_pane.red.play();
-													throw 'Problem deleting ' + ou_list_store.getValue( current_ou, 'name' );
+													status_update( 'Problem deleting ' + ou_list_store.getValue( current_ou, 'name' ) );
 												}
 											},
 										}).send();
@@ -585,7 +382,7 @@
 									params : [ ses, new_fm_obj ],
 									onerror : function (r) {
 										highlighter.editor_pane.red.play();
-										throw 'Problem creating child Org Unit';
+										status_update( 'Problem creating child Org Unit' );
 									},
 									oncomplete : function (r) {
 										var res = r.recv();
@@ -596,12 +393,14 @@
 											);
 										} else {
 											highlighter.editor_pane.red.play();
-											throw 'Problem creating child Org Unit';
+											status_update( 'Problem creating child Org Unit' );
 										}
 									},
 								}).send();
 	
 								highlighter.editor_pane.green.play();
+								highlighter.ou_tree.green.play();
+								status_update( 'New child Organizational Unit created for ' + ou_list_store.getValue( current_ou, 'name' ) );
 	
 							</script>
 						</button>
@@ -659,16 +458,17 @@
 									params : [ ses, current_ou_hoo ],
 									onerror : function (r) {
 										highlighter.editor_pane.red.play();
-										throw 'Problem saving Hours of Operation data for ' + ou_list_store.getValue( current_ou, 'name' );
+										status_update( 'Problem saving Hours of Operation data for ' + ou_list_store.getValue( current_ou, 'name' ));
 									},
 									oncomplete : function (r) {
 										var res = r.recv();
 										if ( res && res.content() ) {
 											current_ou_hoo.isnew(0);
 											highlighter.editor_pane.green.play();
+											status_update( 'Hours of Operation updated for ' + ou_list_store.getValue( current_ou, 'name' ) );
 										} else {
 											highlighter.editor_pane.red.play();
-											throw 'Problem saving Hours of Operation data for ' + ou_list_store.getValue( current_ou, 'name' );
+											status_update( 'Problem saving Hours of Operation data for ' + ou_list_store.getValue( current_ou, 'name' ));
 										}
 									},
 								}).send();
@@ -736,7 +536,7 @@
 											params : [ ses, current_billing_address ],
 											onerror : function (r) {
 												highlighter.addresses_pane.red.play();
-												throw 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' );
+												status_update( 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' ) );
 											},
 											oncomplete : function (r) {
 												var res = r.recv();
@@ -748,9 +548,10 @@
 													}
 													current_billing_address.isnew(0);
 													highlighter.addresses_pane.green.play();
+													status_update( 'Changes to the Physical Address of ' + ou_list_store.getValue( current_ou, 'name' ) + ' saved' );
 												} else {
 													highlighter.addresses_pane.red.play();
-													throw 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' );
+													status_update( 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' ) );
 												}
 											},
 										}).send();
@@ -806,7 +607,7 @@
 											params : [ ses, current_holds_address ],
 											onerror : function (r) {
 												highlighter.addresses_pane.red.play();
-												throw 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' );
+												throw 'Problem saving Holds Address data for ' + ou_list_store.getValue( current_ou, 'name' );
 											},
 											oncomplete : function (r) {
 												var res = r.recv();
@@ -818,9 +619,10 @@
 													}
 													current_holds_address.isnew(0);
 													highlighter.addresses_pane.green.play();
+													status_update( 'Changes to the Holds Address of ' + ou_list_store.getValue( current_ou, 'name' ) + ' saved' );
 												} else {
 													highlighter.addresses_pane.red.play();
-													throw 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' );
+													throw 'Problem saving Holds Address data for ' + ou_list_store.getValue( current_ou, 'name' );
 												}
 											},
 										}).send();
@@ -876,7 +678,7 @@
 											params : [ ses, current_mailing_address ],
 											onerror : function (r) {
 												highlighter.addresses_pane.red.play();
-												throw 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' );
+												throw 'Problem saving Mailing Address data for ' + ou_list_store.getValue( current_ou, 'name' );
 											},
 											oncomplete : function (r) {
 												var res = r.recv();
@@ -888,9 +690,10 @@
 													}
 													current_mailing_address.isnew(0);
 													highlighter.addresses_pane.green.play();
+													status_update( 'Changes to the Mailing Address of ' + ou_list_store.getValue( current_ou, 'name' ) + ' saved' );
 												} else {
 													highlighter.addresses_pane.red.play();
-													throw 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' );
+													throw 'Problem saving Mailing Address data for ' + ou_list_store.getValue( current_ou, 'name' );
 												}
 											},
 										}).send();
@@ -958,6 +761,7 @@
 													}
 													current_ill_address.isnew(0);
 													highlighter.addresses_pane.green.play();
+													status_update( 'Changes to the ILL Address of ' + ou_list_store.getValue( current_ou, 'name' ) + ' saved' );
 												} else {
 													highlighter.addresses_pane.red.play();
 													throw 'Problem saving Physical Address data for ' + ou_list_store.getValue( current_ou, 'name' );
@@ -973,5 +777,7 @@
 				</div>
 			</div>
 		</div>
+
+		<div id="status_bar"><span style="font-weight: bold; margin: 5px; margin-right: 10px;">Now editing:</span><span id="current_ou_name"></span></div>
 	</body>
 </html>

Added: branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.js
===================================================================
--- branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.js	                        (rev 0)
+++ branches/dojo-admin/Open-ILS/web/conify/global/actor/org_unit.js	2008-03-26 15:58:44 UTC (rev 9138)
@@ -0,0 +1,242 @@
+dojo.require('conify.fieldmapper.addToHash', true);
+dojo.require('conify.fieldmapper.addFromHash', true);
+dojo.require('conify.fieldmapper.addToStoreData', true);
+dojo.require('conify.fieldmapper.addFromStoreItem', true);
+dojo.require('dojo.parser');
+dojo.require('dojo.data.ItemFileWriteStore');
+dojo.require('dojo.date.stamp');
+dojo.require('dijit.form.TextBox');
+dojo.require('dijit.form.TimeTextBox');
+dojo.require('dijit.form.ValidationTextBox');
+dojo.require('dijit.form.CheckBox');
+dojo.require('dijit.form.FilteringSelect');
+dojo.require('dijit.Tree');
+dojo.require('dijit.layout.ContentPane');
+dojo.require('dijit.layout.TabContainer');
+dojo.require('dijit.layout.LayoutContainer');
+dojo.require('dijit.layout.SplitContainer');
+dojo.require('dojox.widget.Toaster');
+dojo.require('dojox.fx');
+
+// some handy globals
+var cgi = new CGI();
+var cookieManager = new HTTP.Cookies();
+var ses = cookieManager.read('ses') || cgi.param('ses');
+var pCRUD = new OpenSRF.ClientSession('open-ils.permacrud');
+
+var current_ou, current_ou_hoo;
+var virgin_ou_id = -1;
+
+var ou_type_store = new dojo.data.ItemFileWriteStore({ data : aout.toStoreData( globalOrgTypes ) });
+
+var highlighter = {};
+
+function status_update (markup) {
+	if (parent.status_update) parent.status_update( markup );
+}
+
+function save_org () {
+	var modified_ou = new aou().fromStoreItem( current_ou );
+	modified_ou.ischanged( 1 );
+
+	new_kid_button.disabled = false;
+	save_ou_button.disabled = false;
+	delete_ou_button.disabled = false;
+
+	pCRUD.request({
+		method : 'open-ils.permacrud.update.aou',
+		timeout : 10,
+		params : [ ses, modified_ou ],
+		onerror : function (r) {
+			highlighter.editor_pane.red.play();
+			status_update( 'Problem saving data for ' + ou_list_store.getValue( current_ou, 'name' ) );
+		},
+		oncomplete : function (r) {
+			var res = r.recv();
+			if ( res && res.content() ) {
+				ou_list_store.setValue( current_ou, 'ischanged', 0 );
+				highlighter.editor_pane.green.play();
+				status_update( 'Saved changes to ' + ou_list_store.getValue( current_ou, 'name' ) );
+			} else {
+				highlighter.editor_pane.red.play();
+				status_update( 'Problem saving data for ' + ou_list_store.getValue( current_ou, 'name' ) );
+			}
+		},
+	}).send();
+}
+	
+function hoo_load () {
+	// empty result not coming through ...
+	current_ou_hoo = new aouhoo().fromHash({id:ou_list_store.getValue( current_ou, 'id' )});
+	current_ou_hoo.isnew(1);
+
+	pCRUD.request({
+		method : 'open-ils.permacrud.retrieve.aouhoo',
+		params : [ ses, ou_list_store.getValue( current_ou, 'id' ) ],
+		onerror : function (r) { throw 'Problem fetching hours of operation for ' + ou_list_store.getValue( current_ou, 'name' );},
+		oncomplete : function (r) {
+			current_ou_hoo = null;
+
+			var res = r.recv();
+			if (res) {
+				if (res.content()) current_ou_hoo = res.content();
+			}
+
+			if (!current_ou_hoo) {
+				current_ou_hoo = new aouhoo().fromHash({id:ou_list_store.getValue( current_ou, 'id' )});
+				current_ou_hoo.isnew(1);
+				for (var i = 0; i < 7; i++) {
+					current_ou_hoo['dow_' + i + '_open']('09:00:00');
+					current_ou_hoo['dow_' + i + '_close']('17:00:00');
+				}
+			}
+
+			for (var i = 0; i < 7; i++) {
+				window['dow_' + i + '_open'].setValue(
+					dojo.date.stamp.fromISOString( 'T' + current_ou_hoo['dow_' + i + '_open']() )
+				);
+				window['dow_' + i + '_close'].setValue(
+					dojo.date.stamp.fromISOString( 'T' + current_ou_hoo['dow_' + i + '_close']() )
+				);
+			}
+
+			highlighter.hoo_pane.green.play();
+		}
+	}).send();
+
+}
+
+function addr_load () {
+	// empty result not coming through ...
+
+	save_ill_address.disabled = false;
+	save_holds_address.disabled = false;
+	save_mailing_address.disabled = false;
+	save_billing_address.disabled = false;
+
+	if (ou_list_store.getValue( current_ou, 'billing_address' )) {
+		pCRUD.request({
+			method : 'open-ils.permacrud.retrieve.aoa',
+			params : [ ses, ou_list_store.getValue( current_ou, 'billing_address' ) ],
+			onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
+			oncomplete : function (r) {
+				current_billing_address = null;
+
+				var res = r.recv();
+				if (res) {
+					if (res.content()) current_billing_address = res.content();
+				}
+
+				if (!current_billing_address) {
+					current_billing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+					current_billing_address.isnew(1);
+				}
+
+				set_addr_inputs('billing');
+				highlighter.addresses_pane.green.play();
+			}
+		}).send();
+	} else {
+		current_billing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+		current_billing_address.isnew(1);
+		set_addr_inputs('billing');
+	}
+
+	if (ou_list_store.getValue( current_ou, 'mailing_address' )) {
+		pCRUD.request({
+			method : 'open-ils.permacrud.retrieve.aoa',
+			params : [ ses, ou_list_store.getValue( current_ou, 'mailing_address' ) ],
+			onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
+			oncomplete : function (r) {
+				current_mailing_address = null;
+
+				var res = r.recv();
+				if (res) {
+					if (res.content()) current_mailing_address = res.content();
+				}
+
+				if (!current_mailing_address) {
+					current_mailing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+					current_mailing_address.isnew(1);
+				}
+
+				set_addr_inputs('mailing');
+				highlighter.addresses_pane.green.play();
+			}
+		}).send();
+	} else {
+		current_mailing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+		current_mailing_address.isnew(1);
+		set_addr_inputs('mailing');
+	}
+
+	if (ou_list_store.getValue( current_ou, 'holds_address' )) {
+		pCRUD.request({
+			method : 'open-ils.permacrud.retrieve.aoa',
+			params : [ ses, ou_list_store.getValue( current_ou, 'holds_address' ) ],
+			onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
+			oncomplete : function (r) {
+				current_holds_address = null;
+
+				var res = r.recv();
+				if (res) {
+					if (res.content()) current_holds_address = res.content();
+				}
+
+				if (!current_holds_address) {
+					current_holds_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+					current_holds_address.isnew(1);
+				}
+
+				set_addr_inputs('holds');
+				highlighter.addresses_pane.green.play();
+			}
+		}).send();
+	} else {
+		current_holds_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+		current_holds_address.isnew(1);
+		set_addr_inputs('holds');
+	}
+
+	if (ou_list_store.getValue( current_ou, 'ill_address' )) {
+		pCRUD.request({
+			method : 'open-ils.permacrud.retrieve.aoa',
+			params : [ ses, ou_list_store.getValue( current_ou, 'ill_address' ) ],
+			onerror : function (r) { throw 'Problem fetching Physical Address for ' + ou_list_store.getValue( current_ou, 'name' );},
+			oncomplete : function (r) {
+				current_ill_address = null;
+
+				var res = r.recv();
+				if (res) {
+					if (res.content()) current_ill_address = res.content();
+				}
+
+				if (!current_ill_address) {
+					current_ill_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+					current_ill_address.isnew(1);
+				}
+
+				set_addr_inputs('ill');
+				highlighter.addresses_pane.green.play();
+			}
+		}).send();
+	} else {
+		current_ill_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
+		current_ill_address.isnew(1);
+		set_addr_inputs('ill');
+	}
+
+}
+
+function set_addr_inputs (type) {
+	window[type + '_addr_valid'].setChecked( window['current_' + type + '_address'].valid() == 't' ? true : false );
+	window[type + '_addr_type'].setValue( window['current_' + type + '_address'].address_type() || '' );
+	window[type + '_addr_street1'].setValue( window['current_' + type + '_address'].street1() || '' );
+	window[type + '_addr_street2'].setValue( window['current_' + type + '_address'].street2() || '' );
+	window[type + '_addr_city'].setValue( window['current_' + type + '_address'].city() || '' );
+	window[type + '_addr_county'].setValue( window['current_' + type + '_address'].county() || '' );
+	window[type + '_addr_country'].setValue( window['current_' + type + '_address'].country() || '' );
+	window[type + '_addr_state'].setValue( window['current_' + type + '_address'].state() || '' );
+	window[type + '_addr_post_code'].setValue( window['current_' + type + '_address'].post_code() || '' );
+}
+

Added: branches/dojo-admin/Open-ILS/web/conify/global/admin.html
===================================================================
--- branches/dojo-admin/Open-ILS/web/conify/global/admin.html	                        (rev 0)
+++ branches/dojo-admin/Open-ILS/web/conify/global/admin.html	2008-03-26 15:58:44 UTC (rev 9138)
@@ -0,0 +1,57 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<title>Conify :: Global :: Admin</title>
+
+        <style type="text/css">
+            @import url("/conify/js/dojo/resources/dojo.css");
+            @import url("/conify/js/dijit/themes/tundra/tundra.css");
+            @import url("/conify/js/dojox/widget/Toaster/Toaster.css");
+        </style>
+
+        <style>
+            html, body
+            {
+                height: 100%;
+                width: 100%;
+                margin: 0px 0px 0px 0px;
+                padding: 0px 0px 0px 0px;
+                overflow: hidden;
+            }
+        </style>
+
+        <!-- Dojo goodness -->
+        <script type="text/javascript" src="/conify/js/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
+        <script type="text/javascript" src="/conify/js/dijit/dijit.js"></script>
+
+        <script type="text/javascript">
+            dojo.require('dojo.parser');
+            dojo.require('dijit.form.Button');
+            dojo.require('dijit.layout.ContentPane');
+            dojo.require('dijit.layout.LayoutContainer');
+
+            function status_update (markup) {
+                dojo.byId('status_text').innerHTML = markup;
+            }
+
+        </script>
+
+	</head>
+	<body class="tundra" id='pagebody'>
+		<div dojoType="dijit.layout.LayoutContainer" style="height: 100%; width: 100%; margin: 0; padding: 0; border: 0;">
+			<div id="top_pane" jsId="top_pane" dojoType="dijit.layout.ContentPane" layoutAlign="top" orientation="horizontal" style="margin: 4px; width: 100%; text-align: middle;" title="Controls">
+				<img src="/opac/images/small_logo.jpg"/>
+				<span style="font-size: large; padding-left: 20px;"> Configure your ILS </span>
+			</div>
+			<div id="left_pane" jsId="left_pane" dojoType="dijit.layout.ContentPane" layoutAlign="left" orientation="vertical" style="height: 90%; margin: 4px" title="Controls">
+				<button dojoType="dijit.form.Button" label="Organizational Units" onClick="dojo.byId('action_iframe').src = 'actor/org_unit.html';" />
+			</div>
+			<div id="content_pane" jsId="content_pane" dojoType="dijit.layout.ContentPane" layoutAlign="client" style="margin: 2px; border-top: 2px solid grey; border-bottom: 2px solid grey; border-left: 2px solid grey;">
+				<iframe id="action_iframe" marginwidth="0" marginheight="0" style="border:0; height: 100%; width: 100%;"></iframe>
+			</div>
+			<div id="bottom_pane" jsId="bottom_pane" dojoType="dijit.layout.ContentPane" layoutAlign="bottom" orientation="horizontal" style="margin: 4px; height: 5%; width: 100%" title="Controls">
+				<span id="status_text"/>
+			</div>
+		</div>
+	</body>
+</html>
+



More information about the open-ils-commits mailing list