summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-04-09 20:58:32 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-04-09 20:58:32 -0400
commit00fd19b33ead56842daeb6f6a24735a8687f7744 (patch)
treec9602a4cdfbd6f4a5f595c14d54504b6f8593be1
parent669d6aec9f812e4151bffbaa4f8830cf5764ee1e (diff)
Implement flash messaging for admin success/error stuff
-rw-r--r--app/node_modules/okadminview/index.js25
-rw-r--r--app/node_modules/okadminview/package.json2
-rw-r--r--themes/okadmin/templates/index.liquid2
-rw-r--r--themes/okadmin/templates/partials/errors.liquid10
-rw-r--r--themes/okadmin/templates/partials/flash.liquid14
-rw-r--r--themes/okadmin/templates/resource.liquid2
-rw-r--r--themes/okadmin/templates/resource_new.liquid2
7 files changed, 43 insertions, 14 deletions
diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js
index 05e2251..9e9aacf 100644
--- a/app/node_modules/okadminview/index.js
+++ b/app/node_modules/okadminview/index.js
@@ -2,6 +2,8 @@ var assign = require('object-assign');
var cloneDeep = require('lodash.clonedeep');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
+var session = require('express-session');
+var flash = require('connect-flash');
var Q = require('q');
var pluralize = require('pluralize');
var OKQuery = require('okquery');
@@ -75,6 +77,14 @@ function OKAdminView(options) {
strict: app.get('strict routing')
});
+ // Enable basic sessions for flash messages
+ router.use(session({
+ secret: 'okadmin',
+ resave: false,
+ saveUninitialized: false
+ }));
+ // Enable flash messaging
+ router.use(flash());
// Parse form data
router.use(bodyParser.urlencoded({extended: true}));
// HTML forms only support POST and GET methods
@@ -91,7 +101,10 @@ function OKAdminView(options) {
router.get('/', function readIndex(req, res, next) {
fetchIndexTemplateData(meta, indexQueries).then(function(data) {
- view.renderIndex(req, res, data);
+ view.renderIndex(req, res, assign(data, {
+ success: req.flash('success'),
+ errors: req.flash('errors')
+ }));
}).fail(errorHandler(req, res));
});
@@ -103,6 +116,8 @@ function OKAdminView(options) {
} else {
meta.get().then(function(metadata) {
view.renderResourceNew(req, res, {
+ success: req.flash('success'),
+ errors: req.flash('errors'),
meta: metadata,
resource: {
type: resource.type,
@@ -129,7 +144,10 @@ function OKAdminView(options) {
if (!data) {
resourceMissingHandler(req, res)()
} else {
- view.renderResource(req, res, data);
+ view.renderResource(req, res, assign(data, {
+ success: req.flash('success'),
+ errors: req.flash('errors')
+ }));
}
}).fail(errorHandler(req, res));
}
@@ -147,6 +165,7 @@ function OKAdminView(options) {
try {
resource.assertValid(data);
resource.create(data).then(function(created) {
+ req.flash('success', 'Created ' + type);
res.redirect(303, data[resource.idField]);
}).fail(errorHandler(req, res));
} catch (errors) {
@@ -170,6 +189,7 @@ function OKAdminView(options) {
try {
resource.assertValid(data);
resource.update(id, data).then(function(updated) {
+ req.flash('success', 'Updated ' + type);
res.redirect(303, '../' + updated[resource.idField]);
}).fail(errorHandler(req, res));
} catch (errors) {
@@ -189,6 +209,7 @@ function OKAdminView(options) {
} else {
meta.get().then(function(metadata) {
resource.destroy(id).then(function() {
+ req.flash('success', 'Deleted ' + type);
res.redirect(303, '../..');
}).fail(errorHandler(req, res));
}).fail(errorHandler(req, res));
diff --git a/app/node_modules/okadminview/package.json b/app/node_modules/okadminview/package.json
index c428645..4c6d11c 100644
--- a/app/node_modules/okadminview/package.json
+++ b/app/node_modules/okadminview/package.json
@@ -10,6 +10,8 @@
"license": "None",
"dependencies": {
"body-parser": "^1.12.2",
+ "connect-flash": "^0.1.1",
+ "express-session": "^1.11.1",
"lodash.clonedeep": "^3.0.0",
"method-override": "^2.3.2",
"object-assign": "^2.0.0",
diff --git a/themes/okadmin/templates/index.liquid b/themes/okadmin/templates/index.liquid
index 95c64dd..a5b27e5 100644
--- a/themes/okadmin/templates/index.liquid
+++ b/themes/okadmin/templates/index.liquid
@@ -1,5 +1,7 @@
{% include 'partials/head' %}
+{% include 'partials/flash' %}
+
<section class="index main">
{% for pair in resources %}
{% assign name = pair[0] %}
diff --git a/themes/okadmin/templates/partials/errors.liquid b/themes/okadmin/templates/partials/errors.liquid
deleted file mode 100644
index cdb0b25..0000000
--- a/themes/okadmin/templates/partials/errors.liquid
+++ /dev/null
@@ -1,10 +0,0 @@
-<div class="errors">
- {% for error in errors %}
- <div class="error">
- <div class="message">{{error.message}}</div>
- <div class="assertion">
- Expected {{error.expected}} but got {{error.actual}}
- </div>
- </div>
- {% endfor %}
-</div>
diff --git a/themes/okadmin/templates/partials/flash.liquid b/themes/okadmin/templates/partials/flash.liquid
new file mode 100644
index 0000000..33b621b
--- /dev/null
+++ b/themes/okadmin/templates/partials/flash.liquid
@@ -0,0 +1,14 @@
+{% if success %}
+ <div class="success">
+ {{success}}
+ </div>
+{% elsif errors %}
+ <div class="errors">
+ {% for error in errors %}
+ <div class="error">
+ <div class="message">{{error.message}}</div>
+ </div>
+ {% endfor %}
+ </div>
+{% endif %}
+
diff --git a/themes/okadmin/templates/resource.liquid b/themes/okadmin/templates/resource.liquid
index c321e8a..53cd83e 100644
--- a/themes/okadmin/templates/resource.liquid
+++ b/themes/okadmin/templates/resource.liquid
@@ -1,6 +1,6 @@
{% include 'partials/head' %}
-{% include 'partials/errors' %}
+{% include 'partials/flash' %}
<nav>
<a href="../..">Back</a>
diff --git a/themes/okadmin/templates/resource_new.liquid b/themes/okadmin/templates/resource_new.liquid
index c57dd83..8e80171 100644
--- a/themes/okadmin/templates/resource_new.liquid
+++ b/themes/okadmin/templates/resource_new.liquid
@@ -1,6 +1,6 @@
{% include 'partials/head' %}
-{% include 'partials/errors' %}
+{% include 'partials/flash' %}
<nav>
<a href="../..">Back</a>