]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/admin/org_settings.js
fixed boolean test
[Evergreen.git] / Open-ILS / xul / staff_client / server / admin / org_settings.js
1 var ORG_SETTING_UPDATE          = 'open-ils.actor:open-ils.actor.org_unit.settings.update';
2 var ORG_SETTING_RETRIEVE        = 'open-ils.actor:open-ils.actor.org_unit.settings.retrieve';
3 var ORG_SETTING_DELETE          = 'open-ils.actor:open-ils.actor.org_setting.delete';
4
5 var myPerms = [ 'UPDATE_ORG_SETTING' ];
6
7
8 var ORG_SETTINGS = {
9         'circ.lost_materials_processing_fee'    : null,
10         'cat.default_item_price'                                        : null,
11 //      'circ.collections_fee'                                          : null,
12         'auth.opac_timeout'                                                     : null,
13         'auth.staff_timeout'                                                    : null,
14 };
15
16 function osEditorInit() {
17         fetchUser();
18         $('user').appendChild(text(USER.usrname()));
19
20         for( var i in ORG_SETTINGS ) ORG_SETTINGS[i] = $(i);
21
22         setTimeout( 
23                 function() { 
24                         fetchHighestPermOrgs( SESSION, USER.id(), myPerms );
25                         osBuildOrgs();
26                         osDrawRange();
27                 }, 
28                 20 
29         );
30 }
31
32 function osCurrentOrg() {
33         var selector = $('os_orgs');
34         return getSelectorVal(selector);
35 }
36
37 function osBuildOrgs() {
38         var org = findOrgUnit(PERMS['UPDATE_ORG_SETTING']);
39
40         if( !org || org == -1 ) {
41                 org = findOrgUnit(USER.ws_ou());
42                 for( var i in ORG_SETTINGS ) 
43                         $(i+'.apply').disabled = true;
44         }
45
46         var type = findOrgType(org.ou_type()) ;
47
48         var selector = $('os_orgs');
49         buildOrgSel(selector, org, type.depth());
50         if(!isTrue(type.can_have_users())) 
51                 selector.options[0].disabled = true;
52
53         selector.onchange = osDrawRange;
54
55         osBaseOrg = org;
56
57         if( ! osBaseOrg.children() ) 
58                 for( var i in ORG_SETTINGS ) 
59                         $(i+'.apply_all').disabled = true;
60
61         var gotoOrg = USER.ws_ou();
62         if( ! setSelector( selector, gotoOrg ) ) {
63                 gotoOrg = USER.home_ou();
64                 setSelector( selector, gotoOrg );
65         }
66
67         for( var i in ORG_SETTINGS ) 
68                 osSetCallback(i);
69
70         return gotoOrg;
71 }
72
73 function osSetCallback(setting) {
74         $(setting+'.apply_all').onclick = function() { osUpdate(setting, true); };
75         $(setting+'.apply').onclick = function() { osUpdate(setting, false); };
76 }
77
78
79
80 function osDrawRange() {
81         var org = osCurrentOrg();
82         appendClear($('osCurrentOrg'), text(findOrgUnit(org).name()));
83         var req = new Request(ORG_SETTING_RETRIEVE, org);
84         req.callback(osDraw);
85         req.send();
86 }
87
88
89 function osDraw( r ) {
90         var org = osCurrentOrg();
91         var settings = r.getResultObject();
92
93         for( var i in ORG_SETTINGS ) {
94                 var node = ORG_SETTINGS[i];
95                 var val = settings[i];
96                 node.value = 
97                         (node.getAttribute('ismoney')) ?  
98                                 _formatMoney(val) : (val != null) ? val : "";
99         }
100 }
101
102 function _formatMoney(m) {
103         if(!m || m == 0) return '0.00';
104         m = m + '';
105         if( m.match(/\d+\.\d+/) ) return m;
106         if( !m.match(/\./) ) return m + '.00';
107         if( m.match(/^\.\d+/) ) return '0' + m;
108         return m;
109 }
110
111 function osUpdate( setting, allOrgs ) {
112         var val = ORG_SETTINGS[setting].value;
113         var org = osCurrentOrg();
114
115         if(allOrgs) {
116                 if(!confirmId('os_confirm_all')) return;
117                 var sel = $('os_orgs');
118                 var stop = false;
119                 iterate( sel.options, 
120                         function(item) {
121                                 if(stop) return;
122                                 var o_unit = findOrgUnit(item.value);
123                                 var type = findOrgType(o_unit.ou_type()) ;
124                                 if( type.can_have_users() ) { 
125                                         if(!osUpdateOrg(setting, val, o_unit.id()))
126                                                 stop = true;
127                                 }
128                         }
129                 );
130                 if(!stop) alertId('os_success');
131
132         } else {
133
134                 if(osUpdateOrg(setting, val, org)) 
135                         alertId('os_success');
136         }
137
138         osDrawRange();
139 }
140
141 function osUpdateOrg( setting, value, org ) {
142         var s = {};
143         s[setting] = value;
144         var req = new Request(ORG_SETTING_UPDATE, SESSION, org, s);
145         req.request.alertEvent = false;
146         req.send(true);
147         var resp = req.result();
148
149         if( checkILSEvent(resp) ) {
150                 alertILSEvent(resp, "Error updating " + findOrgUnit(org).name() );
151                 return false;
152         }
153
154         return true;
155 }
156
157
158