diff options
| author | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-16 02:11:55 -0400 |
|---|---|---|
| committer | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-16 02:11:55 -0400 |
| commit | eb779beb83ed6e8d000fd0453c9ed5c404327ae4 (patch) | |
| tree | b12b2282169b9504833afdf5b33ed8eae90f5e10 | |
| parent | a34851422589d233e64ccf8dd8403c04f2636883 (diff) | |
Take metadata from config and make synchronous
| -rw-r--r-- | app/index.js | 35 | ||||
| -rw-r--r-- | app/node_modules/okadminview/index.js | 96 | ||||
| -rw-r--r-- | app/node_modules/okview/index.js | 13 | ||||
| -rw-r--r-- | site/index.js | 6 | ||||
| -rw-r--r-- | themes/okadmin/templates/partials/head.liquid | 4 |
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"> |
