2 # ---------------------------------------------------------------------------
3 # Copyright (C) 2008 Georgia Public Library Service / Equinox Software, Inc
4 # Mike Rylander <miker@esilibrary.com>
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 # ---------------------------------------------------------------------------
18 dojo.require('fieldmapper.dojoData');
19 dojo.require('openils.widget.TranslatorPopup');
20 dojo.require('openils.PermaCrud');
21 dojo.require('dojo.parser');
22 dojo.require('dojo.data.ItemFileWriteStore');
23 dojo.require('dojo.date.stamp');
24 dojo.require('dijit.form.TextBox');
25 dojo.require('dijit.form.TimeTextBox');
26 dojo.require('dijit.form.ValidationTextBox');
27 dojo.require('dijit.form.CheckBox');
28 dojo.require('dijit.form.FilteringSelect');
29 dojo.require('dijit.Tree');
30 dojo.require('dijit.layout.ContentPane');
31 dojo.require('dijit.layout.TabContainer');
32 dojo.require('dijit.layout.LayoutContainer');
33 dojo.require('dijit.layout.SplitContainer');
34 dojo.require('dojox.widget.Toaster');
35 dojo.require('dojox.fx');
36 dojo.requireLocalization("openils.conify", "conify");
40 var cookieManager = new HTTP.Cookies();
41 var ses = cookieManager.read('ses') || cgi.param('ses');
42 var pCRUD = new OpenSRF.ClientSession('open-ils.pcrud');
43 var pcrud = new openils.PermaCrud({ authtoken : ses });
45 var current_ou, current_ou_hoo, ou_list_store
47 var virgin_ou_id = -1;
49 var aou_strings = dojo.i18n.getLocalization('openils.conify', 'conify');
51 //var ou_type_store = new dojo.data.ItemFileWriteStore({ data : aout.toStoreData( globalOrgTypes ) });
55 function status_update (markup) {
56 if (parent !== window && parent.status_update) parent.status_update( markup );
59 function save_org () {
61 new_kid_button.disabled = false;
62 save_ou_button.disabled = false;
63 delete_ou_button.disabled = false;
65 var modified_ou = new aou().fromStoreItem( current_ou );
66 modified_ou.ischanged( 1 );
68 pcrud.apply( modified_ou, {
69 timeout : 10, // makes it synchronous
70 onerror : function (r) {
71 highlighter.editor_pane.red.play();
72 status_update( dojo.string.substitute( aou_strings.ERROR_SAVING_DATA, [ou_list_store.getValue( current_ou, 'name' )] ) );
74 oncomplete : function (r) {
76 if ( res && res.content() ) {
77 ou_list_store.setValue( current_ou, 'ischanged', 0 );
78 highlighter.editor_pane.green.play();
79 status_update( dojo.string.substitute( aou_strings.SUCCESS_SAVE, [ou_list_store.getValue( current_ou, 'name' )] ) );
81 highlighter.editor_pane.red.play();
82 status_update( dojo.string.substitute( aou_strings.ERROR_SAVING_DATA, [ou_list_store.getValue( current_ou, 'name' )] ) );
89 function hoo_load () {
90 // empty result not coming through ...
91 current_ou_hoo = new aouhoo().fromHash({id:ou_list_store.getValue( current_ou, 'id' )});
92 current_ou_hoo.isnew(1);
95 method : 'open-ils.pcrud.retrieve.aouhoo',
96 params : [ ses, ou_list_store.getValue( current_ou, 'id' ) ],
97 onerror : function (r) {
98 throw dojo.string.substitute(aou_strings.ERROR_FETCHING_HOURS, [ou_list_store.getValue( current_ou, 'name' )]);
100 oncomplete : function (r) {
101 current_ou_hoo = null;
105 if (res.content()) current_ou_hoo = res.content();
108 if (!current_ou_hoo) {
109 current_ou_hoo = new aouhoo().fromHash({id:ou_list_store.getValue( current_ou, 'id' )});
110 current_ou_hoo.isnew(1);
111 for (var i = 0; i < 7; i++) {
112 current_ou_hoo['dow_' + i + '_open']('09:00:00');
113 current_ou_hoo['dow_' + i + '_close']('17:00:00');
117 for (var i = 0; i < 7; i++) {
118 window['dow_' + i + '_open'].setValue(
119 dojo.date.stamp.fromISOString( 'T' + current_ou_hoo['dow_' + i + '_open']() )
121 window['dow_' + i + '_close'].setValue(
122 dojo.date.stamp.fromISOString( 'T' + current_ou_hoo['dow_' + i + '_close']() )
126 highlighter.hoo_pane.green.play();
132 function addr_load () {
133 // empty result not coming through ...
135 save_ill_address.disabled = false;
136 save_holds_address.disabled = false;
137 save_mailing_address.disabled = false;
138 save_billing_address.disabled = false;
140 if (ou_list_store.getValue( current_ou, 'billing_address' )) {
142 method : 'open-ils.pcrud.retrieve.aoa',
143 params : [ ses, ou_list_store.getValue( current_ou, 'billing_address' ) ],
144 onerror : function (r) {
145 throw dojo.string.substitute(aou_strings.ERROR_FETCHING_PHYSICAL, [ou_list_store.getValue( current_ou, 'name' )]);
147 oncomplete : function (r) {
148 current_billing_address = null;
152 if (res.content()) current_billing_address = res.content();
155 if (!current_billing_address) {
156 current_billing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
157 current_billing_address.isnew(1);
160 set_addr_inputs('billing');
161 highlighter.addresses_pane.green.play();
165 current_billing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
166 current_billing_address.isnew(1);
167 set_addr_inputs('billing');
170 if (ou_list_store.getValue( current_ou, 'mailing_address' )) {
172 method : 'open-ils.pcrud.retrieve.aoa',
173 params : [ ses, ou_list_store.getValue( current_ou, 'mailing_address' ) ],
174 onerror : function (r) {
175 throw dojo.string.substitute(aou_strings.ERROR_FETCHING_MAILING, [ou_list_store.getValue( current_ou, 'name' )]);
177 oncomplete : function (r) {
178 current_mailing_address = null;
182 if (res.content()) current_mailing_address = res.content();
185 if (!current_mailing_address) {
186 current_mailing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
187 current_mailing_address.isnew(1);
190 set_addr_inputs('mailing');
191 highlighter.addresses_pane.green.play();
195 current_mailing_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
196 current_mailing_address.isnew(1);
197 set_addr_inputs('mailing');
200 if (ou_list_store.getValue( current_ou, 'holds_address' )) {
202 method : 'open-ils.pcrud.retrieve.aoa',
203 params : [ ses, ou_list_store.getValue( current_ou, 'holds_address' ) ],
204 onerror : function (r) {
205 throw dojo.string.substitute(aou_strings.ERROR_FETCHING_HOLDS, [ou_list_store.getValue( current_ou, 'name' )]);
207 oncomplete : function (r) {
208 current_holds_address = null;
212 if (res.content()) current_holds_address = res.content();
215 if (!current_holds_address) {
216 current_holds_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
217 current_holds_address.isnew(1);
220 set_addr_inputs('holds');
221 highlighter.addresses_pane.green.play();
225 current_holds_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
226 current_holds_address.isnew(1);
227 set_addr_inputs('holds');
230 if (ou_list_store.getValue( current_ou, 'ill_address' )) {
232 method : 'open-ils.pcrud.retrieve.aoa',
233 params : [ ses, ou_list_store.getValue( current_ou, 'ill_address' ) ],
234 onerror : function (r) {
235 throw dojo.string.substitute(aou_strings.ERROR_FETCHING_ILL, [ou_list_store.getValue( current_ou, 'name' )]);
237 oncomplete : function (r) {
238 current_ill_address = null;
242 if (res.content()) current_ill_address = res.content();
245 if (!current_ill_address) {
246 current_ill_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
247 current_ill_address.isnew(1);
250 set_addr_inputs('ill');
251 highlighter.addresses_pane.green.play();
255 current_ill_address = new aoa().fromHash({org_unit:ou_list_store.getValue( current_ou, 'id' )});
256 current_ill_address.isnew(1);
257 set_addr_inputs('ill');
262 function set_addr_inputs (type) {
263 window[type + '_addr_valid'].setChecked( window['current_' + type + '_address'].valid() == 't' ? true : false );
264 window[type + '_addr_type'].setValue( window['current_' + type + '_address'].address_type() || '' );
265 window[type + '_addr_street1'].setValue( window['current_' + type + '_address'].street1() || '' );
266 window[type + '_addr_street2'].setValue( window['current_' + type + '_address'].street2() || '' );
267 window[type + '_addr_city'].setValue( window['current_' + type + '_address'].city() || '' );
268 window[type + '_addr_county'].setValue( window['current_' + type + '_address'].county() || '' );
269 window[type + '_addr_country'].setValue( window['current_' + type + '_address'].country() || '' );
270 window[type + '_addr_state'].setValue( window['current_' + type + '_address'].state() || '' );
271 window[type + '_addr_post_code'].setValue( window['current_' + type + '_address'].post_code() || '' );