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]));
82 dojo.forEach(orgNodeList, function(item) {
83 if(list.filter(function(i){return (i.id() == item.id())}).length == 0)
87 var store = new dojo.data.ItemFileReadStore({data:aou.toStoreData(list)});
88 osContextSelector.store = store;
89 osContextSelector.startup();
90 osContextSelector.setValue(user.user.ws_ou());
93 function osChangeContext() {
94 if(contextOrg == osContextSelector.getValue())
96 contextOrg = osContextSelector.getValue();
100 function osLoadGrid(data) {
101 var gridData = {items:[]}
102 for(var key in data) {
103 var setting = osSettings[key];
104 setting.context = null;
105 setting.value = null;
107 setting.context = data[key].org;
108 setting.value = data[key].value;
110 gridData.items.push({name:key});
112 gridData.items = gridData.items.sort(
114 var seta = osSettings[a.name];
115 var setb = osSettings[b.name];
116 if(seta.label > setb.label) return 1;
117 if(seta.label < setb.label) return -1;
121 gridData.identifier = 'name';
122 var store = new dojo.data.ItemFileReadStore({data:gridData});
123 var model = new dojox.grid.data.DojoData(
124 null, store, {rowsPerPage: 100, clientSort: true, query:{name:'*'}});
126 osGrid.setModel(model);
127 osGrid.setStructure(osGridLayout);
131 function osGetGridData(rowIdx) {
132 var data = this.grid.model.getRow(rowIdx);
134 var setting = osSettings[data.name];
135 var value = setting[this.field];
136 if(value == null) return '';
139 return fieldmapper.aou.findOrgUnit(value).shortname();
141 if(setting.noInherit)
145 if(setting.type == 'bool') {
147 return dojo.byId('os-true').innerHTML;
148 return dojo.byId('os-false').innerHTML;
155 function osGetEditLink(rowIdx) {
156 var data = this.grid.model.getRow(rowIdx);
158 return this.value.replace(/SETTING/, data.name);
161 function osLaunchEditor(name) {
162 osEditDialog._osattr = name;
164 user.buildPermOrgSelector(
165 ['UPDATE_ORG_UNIT_SETTING.' + name, 'UPDATE_ORG_UNIT_SETTING_ALL'],
166 osEditContextSelector, osSettings[name].context
168 dojo.byId('os-edit-name').innerHTML = osSettings[name].label;
169 dojo.byId('os-edit-desc').innerHTML = osSettings[name].desc || '';
171 dojo.style(osEditTextBox.domNode, 'display', 'none');
172 dojo.style(osEditCurrencyTextBox.domNode, 'display', 'none');
173 dojo.style(osEditNumberTextBox.domNode, 'display', 'none');
174 dojo.style(osEditBoolSelect.domNode, 'display', 'none');
177 switch(osSettings[name].type) {
179 widget = osEditNumberTextBox;
182 widget = osEditCurrencyTextBox;
185 widget = osEditBoolSelect;
188 widget = osEditTextBox;
191 dojo.style(widget.domNode, 'display', 'block');
192 widget.setValue(osSettings[name].value);
195 function osEditSetting(deleteMe) {
197 var name = osEditDialog._osattr;
205 switch(osSettings[name].type) {
207 obj[name] = osEditNumberTextBox.getValue();
208 if(obj[name] == null) return;
211 obj[name] = osEditCurrencyTextBox.getValue();
212 if(obj[name] == null) return;
215 var val = osEditBoolSelect.getValue();
216 obj[name] = (val == 'true') ? true : false;
219 obj[name] = osEditTextBox.getValue();
220 if(obj[name] == null) return;
224 fieldmapper.standardRequest(
225 ['open-ils.actor', 'open-ils.actor.org_unit.settings.update'],
227 params: [authtoken, osEditContextSelector.getValue(), obj],
228 oncomplete: function(r) {
229 var res = r.recv().content();
230 if(e = openils.Event.parse(res))