return r.render('acq/financial/create_provider.html')
+ ''' Pure Python version
def list(self):
r = RequestMgr()
providers = provider_mgr.list(r)
f.owner(OrgUtil.get_org_unit(f.owner()))
r.ctx.acq.provider_list.value = providers
return r.render('acq/financial/list_providers.html')
+ '''
+
+
+ def list(self):
+ return RequestMgr().render('acq/financial/list_providers.html')
+
/* import the default css for the install applications */
@import "default/acq.css";
@import "default/admin.css";
+/* import the dojo CSS */
+@import "../../js/dojo/dojox/grid/_grid/Grid.css";
+@import "../../js/dojo/dijit/themes/tundra/tundra.css";
+@import "../../js/dojo/dojo/resources/dojo.css";
+
+
+
/* base default style */
.label { margin: 1px; }
+
+/* local dojo style enhancements ----------------------------------- */
+.dojoxGrid {border: 1px solid #333; height: 90%;}
+.dojoxGrid-cell {padding: 8px;}
+/* ----------------------------------------------------------------- */
+
--- /dev/null
+if(!dojo._hasResource['openils.acq.Provider']) {
+dojo._hasResource['openils.acq.Provider'] = true;
+dojo.provide('openils.acq.Provider');
+
+/** Declare the Provider class with dojo */
+dojo.declare('openils.acq.Provider', null, {
+ /* add instance methods here if necessary */
+});
+
+/* define some static provider methods ------- */
+
+openils.acq.Provider.createProviderGrid = function(domId, structure) {
+ /** Fetches the list of providers and builds a grid from them */
+ openils.acq.Provider.fetchList(
+ function(providers) {
+ items = [];
+ for(var p in providers) {
+ var prov = providers[p];
+ items.push({
+ id:prov.id(),
+ name:prov.name(),
+ owner: findOrgUnit(prov.owner()).name(),
+ currency_type:prov.currency_type()
+ });
+ }
+ openils.acq.Provider.buildGrid(domId, structure, items);
+ }
+ );
+}
+
+openils.acq.Provider.fetchList = function(callback) {
+ /** Retrieves the list of provider objects that I have permission to view */
+ var ses = new OpenSRF.ClientSession('open-ils.acq');
+ var req = ses.request('open-ils.acq.provider.org.retrieve', oilsAuthtoken); /* XXX make this a streaming call */
+ req.oncomplete = function(r) {
+ callback(r.recv().content());
+ };
+ req.send();
+};
+
+openils.acq.Provider.buildGrid = function(domId, structure, dataList, identifier) {
+ /** Builds a dojo grid based on the provided data.
+ * @param domId The DOM node where the grid lives
+ * @param structure The layout of the grid. i.e. colums.
+ * @param dataList List of objects (hashes) to be inserted into the grid.
+ * @paramd identifier The ID field for objects in the grid. Defaults to 'id'
+ */
+ identifier = (identifier) ? identifier : 'id';
+ var store = new dojo.data.ItemFileWriteStore({data:{identifier:identifier,items:dataList}});
+ var model = new dojox.grid.data.DojoData(null, store, {rowsPerPage: 20, clientSort: true});
+ var grid = new dojox.Grid({structure: structure, model: model}, dojo.byId(domId));
+ grid.setModel(model);
+ grid.setStructure(structure);
+ grid.startup();
+ return {grid:grid, store:store, model:model};
+};
+}
+
<%def name="page_title()">${_('Evergreen Acquisitions')}</%def>
<title>${self.page_title()}</title>
${self.block_css()}
- ${self.block_js()}
+ ${self.block_js()}
</head>
</%def>
<%def name='block_body()'>
-<body>${self.block_body_content()}</body>
+ <body>${self.block_body_content()}</body>
</%def>
<%def name='block_body_content()'/>
<%def name='block_css()'>
- <style type="text/css">
- @import "/js/dijit/themes/tundra/tundra.css";
- @import "/js/dojo/resources/dojo.css";
- </style>
- <link rel='stylesheet' type='text/css' href='${c.oils.core.media_prefix.value}/css/skin/${c.oils.core.skin.value}.css'/>
- <link rel='stylesheet' type='text/css' href='${c.oils.core.media_prefix.value}/css/theme/${c.oils.core.theme.value}.css'/>
+ <link rel='stylesheet' type='text/css'
+ href='${c.oils.core.media_prefix.value}/css/skin/${c.oils.core.skin.value}.css'/>
+ <link rel='stylesheet' type='text/css'
+ href='${c.oils.core.media_prefix.value}/css/theme/${c.oils.core.theme.value}.css'/>
</%def>
<%def name='block_js()'>
- <script type="text/javascript" src="/js/dojo/dojo.js"
- djConfig="parseOnLoad: true"></script>
- <script type="text/javascript">
- dojo.require("dojo.parser");
- dojo.require("dijit.layout.LayoutContainer")
- dojo.require("dijit.layout.ContentPane")
+ <!-- set up some global JS variables -->
+ <script type='text/javascript'>
+ var oilsAuthtoken = '${c.oils.core.authtoken.value}';
+ </script>
+
+ <!-- some of these will dojo-ized ... -->
+ <script src='${c.oils.core.media_prefix.value}/js/opensrf/JSON_v1.js'> </script>
+ <script src='${c.oils.core.media_prefix.value}/js/opensrf/opensrf.js'> </script>
+ <script src='${c.oils.core.media_prefix.value}/js/opensrf/opensrf_xhr.js'> </script>
+ <script src='${c.oils.core.media_prefix.value}/js/openils/fmall.js'> </script>
+ <script src='${c.oils.core.media_prefix.value}/js/openils/fmgen.js'> </script>
+ <script src='${c.oils.core.media_prefix.value}/js/openils/OrgTree.js'> </script>
+ <script src='${c.oils.core.media_prefix.value}/js/openils/org_utils.js'> </script>
- dojo.require("dijit.form.Form")
- dojo.require("dijit.form.Button");
- dojo.require("dijit.form.TextBox");
- dojo.require("dijit.form.NumberTextBox");
- dojo.require("dijit.form.NumberSpinner");
- dojo.require("dijit.form.FilteringSelect");
+ <script type="text/javascript" src="${c.oils.core.media_prefix.value}/js/dojo/dojo/dojo.js"
+ djConfig="parseOnLoad: true"></script>
+
+ <script type="text/javascript">
+ dojo.require("dojo.parser");
+ dojo.require("dijit.layout.LayoutContainer")
+ dojo.require("dijit.layout.ContentPane")
+ dojo.require("dijit.form.Form")
+ dojo.require("dijit.form.Button");
+ dojo.require("dijit.form.TextBox");
+ dojo.require("dijit.form.NumberTextBox");
+ dojo.require("dijit.form.NumberSpinner");
+ dojo.require("dijit.form.FilteringSelect");
+ dojo.require("dojo.data.ItemFileWriteStore");
+ dojo.require("dojox.grid.Grid");
+ dojo.require("dojox.grid._data.model");
+ dojo.require("fieldmapper.dojoData");
</script>
</%def>
+
<a href='${c.oils.acq.prefix.value}/provider/create'>${_('New Provider')}</a>
</div>
</div>
+<div id='oils-acq-provider-grid'> </div>
+<script>
+ dojo.require('openils.acq.Provider');
+ /* define the layout columns */
+ var cols = [{
+ cells : [[
+ {name: '${_("ID")}', field: 'id'},
+ {name: '${_("Name")}', field: "name"},
+ {name: '${_("Owner")}', field: "owner"},
+ {name: '${_("Currency Type")}', field: "currency_type"}
+ ]]
+ }];
-<table class='oils-admin-table'>
- <thead>
- <tr>
- <td>${_('Name')}</td>
- <td>${_('Owner')}</td>
- <td>${_('Currency Type')}</td>
- </tr>
- </thead>
- <tbody>
- % for provider in c.oils.acq.provider_list.value:
- <tr>
- <td><a href='${c.oils.acq.prefix.value}/provider/view/${provider.id()}'>${provider.name()}</a></td>
- <td>${provider.owner().name()}</td>
- <td>${provider.currency_type()}</td>
- </tr>
- %endfor
- </tbody>
-</table>
+ /* build the provider grid on page load */
+ dojo.addOnLoad(function(){
+ openils.acq.Provider.createProviderGrid('oils-acq-provider-grid', cols)});
+</script>
</%def>