1 dojo.require("dijit.layout.LayoutContainer");
2 dojo.require("dijit.layout.ContentPane");
3 dojo.require('dijit.form.FilteringSelect');
4 dojo.require("dojox.grid.Grid");
5 dojo.require("fieldmapper.Fieldmapper");
6 dojo.require("fieldmapper.dojoData");
7 dojo.require("fieldmapper.OrgUtils");
8 dojo.require('dojo.cookie');
9 dojo.require('openils.CGI');
10 dojo.require('openils.User');
11 dojo.require('openils.Event');
12 dojo.require('openils.widget.OrgUnitFilteringSelect');
19 function osInit(data) {
20 authtoken = dojo.cookie('ses') || new openils.CGI().param('ses');
21 user = new openils.User({authtoken:authtoken}).user;
22 contextOrg = user.ws_ou();
24 fieldmapper.standardRequest(
26 'open-ils.actor.user.get_work_ous.ids'],
29 oncomplete: function(r) {
30 var list = r.recv().content();
31 if(e = openils.Event.parse(list))
34 buildMergedOrgSelector(list);
41 dojo.addOnLoad(osInit);
45 for(var key in osSettings)
48 fieldmapper.standardRequest(
50 'open-ils.actor.ou_setting.ancestor_default.batch'],
52 params: [contextOrg, names],
53 oncomplete: function(r) {
54 var data = r.recv().content();
55 if(e = openils.Event.parse(data))
63 function buildMergedOrgSelector(orgList) {
65 for(var i = 0; i < orgList.length; i++) {
66 // add the work org parents
68 var node = fieldmapper.aou.findOrgUnit(orgList[i]);
69 while(node.parent_ou() != null) {
70 node = fieldmapper.aou.findOrgUnit(node.parent_ou());
73 orgNodeList = orgNodeList.concat(parents.reverse());
75 // add the work org children
76 orgNodeList = orgNodeList.concat(
77 fieldmapper.aou.descendantNodeList(orgList[i]));
80 var store = new dojo.data.ItemFileReadStore({data:aou.toStoreData(orgNodeList)});
81 osContextSelector.store = store;
82 osContextSelector.startup();
83 osContextSelector.setValue(user.ws_ou());
86 function osChangeContext() {
87 if(contextOrg == osContextSelector.getValue())
89 contextOrg = osContextSelector.getValue();
93 function osLoadGrid(data) {
94 var gridData = {items:[]}
95 for(var key in data) {
96 var setting = osSettings[key];
97 setting.context = null;
100 setting.context = data[key].org;
101 setting.value = data[key].value;
103 gridData.items.push({name:key});
105 gridData.identifier = 'name';
106 var store = new dojo.data.ItemFileReadStore({data:gridData});
107 var model = new dojox.grid.data.DojoData(
108 null, store, {rowsPerPage: 100, clientSort: true, query:{name:'*'}});
110 osGrid.setModel(model);
111 osGrid.setStructure(osGridLayout);
115 function osGetGridData(rowIdx) {
116 var data = this.grid.model.getRow(rowIdx);
118 var value = osSettings[data.name][this.field];
119 if(value == null) return '';
122 return fieldmapper.aou.findOrgUnit(value).shortname();
128 function osGetEditLink(rowIdx) {
129 var data = this.grid.model.getRow(rowIdx);
131 return this.value.replace(/SETTING/, data.name);
134 function osLaunchEditor(name) {