summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-04-06 12:28:38 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-04-06 15:27:53 -0400
commit2175598ab95f33b3779d83e2df433eeedd25e70c (patch)
treeb3797a269a1da1664e8d7238f43534a4c2f97fec
parent03fef46a1e34015cc9fed4baf54fa04285f8798b (diff)
Inject OKServer views as dependencies
-rw-r--r--app/index.js17
-rw-r--r--app/node_modules/okserver/index.js17
-rw-r--r--app/node_modules/okserver/package.json3
3 files changed, 25 insertions, 12 deletions
diff --git a/app/index.js b/app/index.js
index 8ab7743..82be55b 100644
--- a/app/index.js
+++ b/app/index.js
@@ -34,9 +34,15 @@ function OKCMS(options) {
var schemas = this._schemas = this._createSchemas(schemaConfig);
var resources = this._resources =
this._createResources(resourceConfig, db, schemas);
+
+ // Create view instances from config
var views = this._views =
- this._createViews(viewConfig, db, meta, resources, templateCache);
- this._initViews(server, views);
+ this._createViews(viewConfig, db, meta, resources, templateProvider);
+ var server = this._server = new OKServer({
+ views: views,
+ root: root,
+ adminRoot: adminRoot
+ });
}
OKCMS.prototype.listen = function listen(port, options) {
@@ -74,16 +80,17 @@ OKCMS.prototype._createResources = function(resourceConfig, db, schemaCache) {
};
OKCMS.prototype._createViews = function(viewConfig, db,
- meta, resourceCache, templateCache) {
+ meta, resourceCache, templateProvider) {
viewConfig = viewConfig || {};
var self = this;
var createQueries = this._createQueries.bind(this);
return Object.keys(viewConfig).reduce(function(cache, route) {
var config = viewConfig[route];
var templateName = config.template || getDefaultTemplate(route, config);
- var template = templateCache.getTemplate(templateName);
- if (!template)
+ var template = templateProvider.getTemplate(templateName);
+ if (!template) {
throw new Error(format('No template named "%s" found', templateName));
+ }
var queryConfig = config.data || [];
var queries = createQueries(queryConfig, resourceCache);
// Instantiate!
diff --git a/app/node_modules/okserver/index.js b/app/node_modules/okserver/index.js
index adef189..230a53c 100644
--- a/app/node_modules/okserver/index.js
+++ b/app/node_modules/okserver/index.js
@@ -1,16 +1,21 @@
+var specificity = require('route-order')();
var express = require('express');
function OKServer(options) {
if (!(this instanceof OKServer)) return new OKServer(options);
options = options || {};
- this._app = express();
+ if (!options.views)
+ throw new Error('No views provided to OKServer!');
+ var views = options.views;
+ var app = this._app = express();
+ // Add views
+ Object.keys(views)
+ .sort(specificity)
+ .forEach(function(route) {
+ app.use(route, views[route].middleware());
+ });
}
-OKServer.prototype.addView = function addView(route, view) {
- this._app.use(route, view.middleware());
- return this;
-};
-
OKServer.prototype.listen = function listen(port) {
this._app.listen(port || 1337);
return this;
diff --git a/app/node_modules/okserver/package.json b/app/node_modules/okserver/package.json
index d0b611a..8c196ea 100644
--- a/app/node_modules/okserver/package.json
+++ b/app/node_modules/okserver/package.json
@@ -9,6 +9,7 @@
"author": "OKFocus",
"license": "None",
"dependencies": {
- "express": "^4.12.3"
+ "express": "^4.12.3",
+ "route-order": "^0.1.0"
}
}