1 dojo.require("dijit.layout.LayoutContainer");
2 dojo.require("dijit.layout.ContentPane");
3 dojo.require('dijit.form.FilteringSelect');
4 dojo.require('dijit.Dialog');
5 dojo.require("dojox.grid.Grid");
6 dojo.require("fieldmapper.Fieldmapper");
7 dojo.require("fieldmapper.dojoData");
8 dojo.require("fieldmapper.OrgUtils");
9 dojo.require('dojo.cookie');
10 dojo.require('openils.CGI');
11 dojo.require('openils.User');
12 dojo.require('openils.Event');
13 dojo.require('openils.widget.OrgUnitFilteringSelect');
20 function osInit(data) {
21 authtoken = dojo.cookie('ses') || new openils.CGI().param('ses');
22 user = new openils.User({authtoken:authtoken});
23 contextOrg = user.user.ws_ou();
25 fieldmapper.standardRequest(
27 'open-ils.actor.user.get_work_ous.ids'],
30 oncomplete: function(r) {
31 var list = r.recv().content();
32 if(e = openils.Event.parse(list))
35 buildMergedOrgSelector(list);
42 dojo.addOnLoad(osInit);
46 for(var key in osSettings)
49 fieldmapper.standardRequest(
51 'open-ils.actor.ou_setting.ancestor_default.batch'],
53 params: [contextOrg, names],
54 oncomplete: function(r) {
55 var data = r.recv().content();
56 if(e = openils.Event.parse(data))
64 function buildMergedOrgSelector(orgList) {
66 for(var i = 0; i < orgList.length; i++) {
67 // add the work org parents
69 var node = fieldmapper.aou.findOrgUnit(orgList[i]);
70 while(node.parent_ou() != null) {
71 node = fieldmapper.aou.findOrgUnit(node.parent_ou());
74 orgNodeList = orgNodeList.concat(parents.reverse());
76 // add the work org children
77 orgNodeList = orgNodeList.concat(
78 fieldmapper.aou.descendantNodeList(orgList[i]));
81 var store = new dojo.data.ItemFileReadStore({data:aou.toStoreData(orgNodeList)});
82 osContextSelector.store = store;
83 osContextSelector.startup();
84 osContextSelector.setValue(user.user.ws_ou());
87 function osChangeContext() {
88 if(contextOrg == osContextSelector.getValue())
90 contextOrg = osContextSelector.getValue();
94 function osLoadGrid(data) {
95 var gridData = {items:[]}
96 for(var key in data) {
97 var setting = osSettings[key];
98 setting.context = null;
101 setting.context = data[key].org;
102 setting.value = data[key].value;
104 gridData.items.push({name:key});
106 gridData.items = gridData.items.sort(
108 var seta = osSettings[a.name];
109 var setb = osSettings[b.name];
110 if(seta.label > setb.label) return 1;
111 if(seta.label < setb.label) return -1;
115 gridData.identifier = 'name';
116 var store = new dojo.data.ItemFileReadStore({data:gridData});
117 var model = new dojox.grid.data.DojoData(
118 null, store, {rowsPerPage: 100, clientSort: true, query:{name:'*'}});
120 osGrid.setModel(model);
121 osGrid.setStructure(osGridLayout);
125 function osGetGridData(rowIdx) {
126 var data = this.grid.model.getRow(rowIdx);
128 var setting = osSettings[data.name];
129 var value = setting[this.field];
130 if(value == null) return '';
133 return fieldmapper.aou.findOrgUnit(value).shortname();
135 if(setting.type == 'bool') {
137 return dojo.byId('os-true').innerHTML;
138 return dojo.byId('os-false').innerHTML;
145 function osGetEditLink(rowIdx) {
146 var data = this.grid.model.getRow(rowIdx);
148 return this.value.replace(/SETTING/, data.name);
151 function osLaunchEditor(name) {
152 osEditDialog._osattr = name;
154 user.buildPermOrgSelector('UPDATE_ORG_UNIT_SETTING.' + name, osEditContextSelector);
155 dojo.byId('os-edit-name').innerHTML = osSettings[name].label;
156 dojo.byId('os-edit-desc').innerHTML = osSettings[name].desc || '';
158 dojo.style(osEditTextBox.domNode, 'display', 'none');
159 dojo.style(osEditCurrencyTextBox.domNode, 'display', 'none');
160 dojo.style(osEditNumberTextBox.domNode, 'display', 'none');
161 dojo.style(osEditBoolSelect.domNode, 'display', 'none');
163 switch(osSettings[name].type) {
165 dojo.style(osEditNumberTextBox.domNode, 'display', 'block');
168 dojo.style(osEditCurrencyTextBox.domNode, 'display', 'block');
171 dojo.style(osEditBoolSelect.domNode, 'display', 'block');
174 dojo.style(osEditTextBox.domNode, 'display', 'block');
178 function osEditSetting(deleteMe) {
180 var name = osEditDialog._osattr;
188 switch(osSettings[name].type) {
190 obj[name] = osEditNumberTextBox.getValue();
191 if(obj[name] == null) return;
194 obj[name] = osEditCurrencyTextBox.getValue();
195 if(obj[name] == null) return;
198 var val = osEditBoolSelect.getValue();
199 obj[name] = (val == 'true') ? 1 : null;
202 obj[name] = osEditTextBox.getValue();
203 if(obj[name] == null) return;
207 fieldmapper.standardRequest(
208 ['open-ils.actor', 'open-ils.actor.org_unit.settings.update'],
210 params: [authtoken, osEditContextSelector.getValue(), obj],
211 oncomplete: function(r) {
212 var res = r.recv().content();
213 if(e = openils.Event.parse(res))