summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-04-16 02:11:55 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-04-16 02:11:55 -0400
commiteb779beb83ed6e8d000fd0453c9ed5c404327ae4 (patch)
treeb12b2282169b9504833afdf5b33ed8eae90f5e10
parenta34851422589d233e64ccf8dd8403c04f2636883 (diff)
Take metadata from config and make synchronous
-rw-r--r--app/index.js35
-rw-r--r--app/node_modules/okadminview/index.js96
-rw-r--r--app/node_modules/okview/index.js13
-rw-r--r--site/index.js6
-rw-r--r--themes/okadmin/templates/partials/head.liquid4
5 files changed, 63 insertions, 91 deletions
diff --git a/app/index.js b/app/index.js
index 01ea33b..d487bd7 100644
--- a/app/index.js
+++ b/app/index.js
@@ -38,33 +38,18 @@ function OKCMS(options) {
path.join(__dirname, '../themes/okadmin/templates');
var debug = options.debug || false;
- // Set metadata defaults
- // TODO Abstract this out somewhere else
- var meta = {
- type: 'meta',
- get: function() {
- return Q.promise(function(resolve, reject) {
- db.getMeta().then(function(metadata) {
- resolve(assign({}, {
- static: ''
- }, metadata));
- }).fail(reject);
- });
- }
+ var metaUser = options.meta || {};
+ var metaDefault = {
+ project: 'OKCMS'
};
- var adminMeta ={
- type: 'meta',
- get: function() {
- return Q.promise(function(resolve, reject) {
- db.getMeta().then(function(metadata) {
- resolve(assign({}, {
- static: withoutTrailingSlash(adminPath)
- }, metadata));
- }).fail(reject);
- });
- }
- };
+ var meta = assign({
+ static: ''
+ }, metaDefault, metaUser);
+
+ var adminMeta = assign({
+ static: withoutTrailingSlash(adminPath)
+ }, metaDefault, metaUser);
var schemaConfig = options.schemas || {};
var resourceConfig = options.resources || [];
diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js
index 161a195..82f364d 100644
--- a/app/node_modules/okadminview/index.js
+++ b/app/node_modules/okadminview/index.js
@@ -36,7 +36,7 @@ function OKAdminView(options) {
if (!options.templateProvider)
throw new Error('No templateProvider provided to OKAdminView');
if (!options.meta)
- throw new Error('No meta query provided to OKAdminView');
+ throw new Error('No metadata provided to OKAdminView');
if (!options.errorHandler)
throw new Error('No error handler provided to OKAdminView');
@@ -135,13 +135,11 @@ function OKAdminView(options) {
if (!resource) {
error(req, res, 404)(new Error('No such resource ' + type));
} else {
- meta.get().then(function(metadata) {
- var templateData = transformData(metadata, resource, {});
- view.renderResourceNew(req, res, assign(templateData, {
- success: req.flash('success'),
- errors: req.flash('errors'),
- }));
- }).fail(error(req, res, 500));
+ var templateData = transformData(meta, resource, {});
+ view.renderResourceNew(req, res, assign(templateData, {
+ success: req.flash('success'),
+ errors: req.flash('errors'),
+ }));
}
});
@@ -179,18 +177,16 @@ function OKAdminView(options) {
if (!resource) {
error(req, res, 400)(new Error('No such resource ' + type));
} else {
- meta.get().then(function(metadata) {
- try {
- resource.assertValid(data);
- resource.create(data).then(function(created) {
- req.flash('success', {action: 'create'});
- res.redirect(303, resource.getID(data));
- }).fail(error(req, res, 500));
- } catch (errors) {
- var templateData = transformData(metadata, resource, data);
- view.renderResource(req, res, assign(templateData, {errors: errors}));
- }
- }).fail(error(req, res, 500));;
+ try {
+ resource.assertValid(data);
+ resource.create(data).then(function(created) {
+ req.flash('success', {action: 'create'});
+ res.redirect(303, resource.getID(data));
+ }).fail(error(req, res, 500));
+ } catch (errors) {
+ var templateData = transformData(meta, resource, data);
+ view.renderResource(req, res, assign(templateData, {errors: errors}));
+ }
}
});
@@ -215,11 +211,7 @@ function OKAdminView(options) {
error(req, res, 500)(new Error('Resource batch contains invalid JSON'));
return;
}
- Q.all([
- meta.get(),
- resource.updateBatch(ids, resourcesParsed),
- ]).then(function(results) {
- var metadata = results.shift();
+ resource.updateBatch(ids, resourcesParsed).then(function(results) {
req.flash('success', {action: 'batch_update'});
res.redirect(303, '../..');
}).fail(error(req, res, 500));
@@ -234,19 +226,16 @@ function OKAdminView(options) {
if (!resource) {
error(req, res, 400)(new Error('No such resource ' + type));
} else {
- // TODO Prob should make metadata synchronous...
- meta.get().then(function(metadata) {
- try {
- resource.assertValid(data);
- resource.update(id, data).then(function(updated) {
- req.flash('success', {action: 'update'});
- res.redirect(303, '../' + resource.getID(updated));
- }).fail(error(req, res, 500));
- } catch (errors) {
- var templateData = transformData(metadata, resource, data);
- view.renderResource(req, res, assign(templateData, {errors: errors}));
- }
- }).fail(error(req, res, 500));
+ try {
+ resource.assertValid(data);
+ resource.update(id, data).then(function(updated) {
+ req.flash('success', {action: 'update'});
+ res.redirect(303, '../' + resource.getID(updated));
+ }).fail(error(req, res, 500));
+ } catch (errors) {
+ var templateData = transformData(meta, resource, data);
+ view.renderResource(req, res, assign(templateData, {errors: errors}));
+ }
}
});
@@ -257,11 +246,9 @@ function OKAdminView(options) {
if (!resource) {
error(req, res, 500)(new Error('No such resource ' + type));
} else {
- meta.get().then(function(metadata) {
- resource.destroy(id).then(function() {
- req.flash('success', {action: 'delete'});
- res.redirect(303, '../..');
- }).fail(error(req, res, 500));
+ resource.destroy(id).then(function() {
+ req.flash('success', {action: 'delete'});
+ res.redirect(303, '../..');
}).fail(error(req, res, 500));
}
});
@@ -328,10 +315,9 @@ OKAdminView.prototype.renderResourceNew = function(req, res, data) {
*/
function fetchIndexTemplateData(meta, queries) {
return Q.promise(function(resolve, reject) {
- Q.all([meta.get()].concat(queries.map(function(query) {
+ Q.all(queries.map(function(query) {
return query.get();
- }))).then(function(results) {
- var meta = results.shift();
+ })).then(function(results) {
var resources = results.reduce(function(cache, result, i) {
if (!result)
return cache;
@@ -376,16 +362,14 @@ function fetchIndexTemplateData(meta, queries) {
function fetchResourceTemplateData(meta, query, fn) {
fn = fn || function(m, r, d) { return {meta: m, resource: d}; };
return Q.promise(function(resolve, reject) {
- meta.get().then(function(metadata) {
- query.get().then(function(data) {
- if (!data) {
- reject(new Error('No resource data'));
- } else {
- var resource = query.resource;
- resolve(fn(metadata, resource, data));
- }
- }).fail(reject);
- }).fail(reject)
+ query.get().then(function(data) {
+ if (!data) {
+ reject(new Error('No resource data'));
+ } else {
+ var resource = query.resource;
+ resolve(fn(meta, resource, data));
+ }
+ }).fail(reject);
});
}
diff --git a/app/node_modules/okview/index.js b/app/node_modules/okview/index.js
index 951261c..fba1c18 100644
--- a/app/node_modules/okview/index.js
+++ b/app/node_modules/okview/index.js
@@ -21,7 +21,7 @@ function OKView(options) {
if (!options.template)
throw new Error('No template provided to OKView.');
if (!options.meta)
- throw new Error('No meta resource provided to OKView');
+ throw new Error('No metadata provided to OKView');
if (!options.route)
throw new Error('No route provided to OKView');
if (!options.errorHandler)
@@ -124,12 +124,9 @@ function fetchTemplateData(meta, queries, id) {
// resource and will resolve errors if no data is found
var single = queries && queries.length === 1;
return Q.promise(function(resolve, reject) {
- return Q.all(
- [meta.get()].concat(queries.map(function(query) {
- return query.get(id);
- })))
- .then(function(results) {
- var metadata = results.shift();
+ return Q.all(queries.map(function(query) {
+ return query.get(id);
+ })).then(function(results) {
if (single && !results[0]) {
reject(new Error('No resource found'));
} else {
@@ -164,7 +161,7 @@ function fetchTemplateData(meta, queries, id) {
cache[type] = result;
}
return cache;
- }, {meta: metadata});
+ }, {meta: meta});
resolve(normalized);
}
diff --git a/site/index.js b/site/index.js
index 7457bbf..521b7d7 100644
--- a/site/index.js
+++ b/site/index.js
@@ -11,8 +11,14 @@ var projectSchema = {
var app = okcms.createApp({
+ meta: {
+ project: 'TwoHustlers'
+ },
+
root: 'public',
+ debug: false,
+
schemas: {
page: {
id: {type: 'string', hidden: true},
diff --git a/themes/okadmin/templates/partials/head.liquid b/themes/okadmin/templates/partials/head.liquid
index c423584..7ee4824 100644
--- a/themes/okadmin/templates/partials/head.liquid
+++ b/themes/okadmin/templates/partials/head.liquid
@@ -2,12 +2,12 @@
<html>
<head>
<meta charset="utf8">
- <title>TwoHustlers Admin {{meta.title}}</title>
+ <title>{{meta.project}} Admin</title>
<link rel="stylesheet" href="{{meta.static}}/css/main.css">
</head>
<body>
<header class="admin-header">
- <span class="breadcrumb"><b>TwoHustlers{{meta.title}}</b> Admin</span>
+ <span class="breadcrumb"><b>{{meta.project}}</b> Admin</span>
<a class="site-link" href="/">View Site</a>
</header>
<div class="container">