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