diff options
| author | Jules Laplace <jules@okfoc.us> | 2015-09-25 18:05:37 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2015-09-25 18:05:37 -0400 |
| commit | ed083ad3191a5d7d61abb21fa7dafec5121ecaab (patch) | |
| tree | 46f73a62a8c8115d900221ae1b9fca7d4e662030 | |
| parent | 3aa171fbaf05d0ee5b82673443da51ed43719475 (diff) | |
post comment
| -rw-r--r-- | bucky/app/bucky.js | 22 | ||||
| -rw-r--r-- | bucky/app/index.js | 4 | ||||
| -rw-r--r-- | bucky/app/router.js | 8 | ||||
| -rw-r--r-- | bucky/db/index.js | 3 | ||||
| -rw-r--r-- | bucky/util/util.js | 2 | ||||
| -rw-r--r-- | public/assets/js/lib/views/index/hootbox.js | 23 | ||||
| -rw-r--r-- | public/assets/js/vendor/view/formview.js | 44 | ||||
| -rw-r--r-- | views/partials/hootbox.ejs | 2 |
8 files changed, 78 insertions, 30 deletions
diff --git a/bucky/app/bucky.js b/bucky/app/bucky.js index 43799fe..008427d 100644 --- a/bucky/app/bucky.js +++ b/bucky/app/bucky.js @@ -1,5 +1,5 @@ var db = require('../db') -var util = require('../lib/util') +var util = require('../util/util') var _ = require('lodash') var bucky = module.exports = { @@ -136,6 +136,26 @@ var bucky = module.exports = { }) }, + /* COMMENTS */ + + createComment: function (req, res, next){ + if (! req.body.comment || ! req.body.comment.length) { + res.json({ error: "no comment" }) + return + } + var data = { + thread: res.thread.get('id'), + parent_id: req.body.parent_id || -1, + username: req.user.get('username'), + date: util.now(), + comment: req.body.comment, + } + db.createComment(data).then(function(comment){ + res.comment = comment + next() + }) + }, + /* MAIL */ ensureMailboxes: function (req, res, next){ diff --git a/bucky/app/index.js b/bucky/app/index.js index ad97526..d06b018 100644 --- a/bucky/app/index.js +++ b/bucky/app/index.js @@ -23,8 +23,8 @@ site.init = function(){ app = express() app.set('port', 5000) app.set('view engine', 'ejs') - app.set('views', path.join(__dirname, '../views')) - app.use(express.static(path.join(__dirname, '../public'))) + app.set('views', path.join(__dirname, '../../views')) + app.use(express.static(path.join(__dirname, '../../public'))) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) app.use( multer({ dest:'./uploads/' }).single("file") ) diff --git a/bucky/app/router.js b/bucky/app/router.js index 7ac6599..fe7d336 100644 --- a/bucky/app/router.js +++ b/bucky/app/router.js @@ -66,8 +66,14 @@ module.exports = function(app){ }) app.post("/api/thread/:id/comment", middleware.ensureAuthenticated, + bucky.ensureThread, + // ensure thread privacy + bucky.createComment, + // add comments and files function(req, res){ - // add comments and files + res.json({ + comment: res.comment + }) }) app.delete("/api/thread/:id", middleware.ensureAuthenticated, diff --git a/bucky/db/index.js b/bucky/db/index.js index b6fa235..77e94fa 100644 --- a/bucky/db/index.js +++ b/bucky/db/index.js @@ -111,6 +111,9 @@ db.getCommentsForThread = function (id, limit, offset, order){ db.getCommentCounts = function(ids){ return knex.column('thread').count('* as count').select().from('comments').where('thread', 'in', ids).groupBy('thread') } +db.createComment = function(comment){ + return new Comment(comment).save() +} /* KEYWORDS */ diff --git a/bucky/util/util.js b/bucky/util/util.js index e67488b..d4b6b8a 100644 --- a/bucky/util/util.js +++ b/bucky/util/util.js @@ -2,3 +2,5 @@ var util = module.exports = {} util.sanitizeName = function (s){ return (s || "").replace(new RegExp("[^-_a-zA-Z0-9]", 'g'), "") } util.sanitize = function (s){ return (s || "").replace(/<>&/g, "") } + +util.now = function(){ return Math.floor( (+ new Date()) / 1000 ) } diff --git a/public/assets/js/lib/views/index/hootbox.js b/public/assets/js/lib/views/index/hootbox.js index 9d1cc3d..4a23d32 100644 --- a/public/assets/js/lib/views/index/hootbox.js +++ b/public/assets/js/lib/views/index/hootbox.js @@ -5,10 +5,13 @@ var HootBox = FormView.extend({ events: { }, + action: "/api/thread/1/comment", + initialize: function(){ this.__super__.initialize.call(this) this.template = this.$(".template").html() this.$hoots = this.$("#hoots") + this.$comment = this.$("[name=comment]") }, load: function(comments){ @@ -31,7 +34,23 @@ var HootBox = FormView.extend({ this.$hoots.append($el) }, - success: function(){ - this.prependComment(comment) + validate: function(){ + var errors = [] + if (! this.$comment.val()) { + errors.push("no comment") + return errors + } + return null + }, + + beforeSend: function(){ + this.$comment.val("") + }, + + showErrors: function(){ + }, + + success: function(data){ + this.prependComment(data.comment) } })
\ No newline at end of file diff --git a/public/assets/js/vendor/view/formview.js b/public/assets/js/vendor/view/formview.js index 05b1ecb..7e77500 100644 --- a/public/assets/js/vendor/view/formview.js +++ b/public/assets/js/vendor/view/formview.js @@ -80,7 +80,7 @@ var FormView = View.extend({ var action = typeof this.action == "function" ? this.action() : this.action if (! action) return - + var request = $.ajax({ url: action, type: this.method, @@ -90,30 +90,27 @@ var FormView = View.extend({ processData: false, contentType: false, success: function(response){ - - if (response.error) { - var errors = [] - for (var key in response.error.errors) { - errors.push(response.error.errors[key].message); - } - if (errorCallback) { - errorCallback(errors) - } - else { - this.showErrors(errors) - } - return + if (response.error) { + var errors = [] + for (var key in response.error.errors) { + errors.push(response.error.errors[key].message); + } + if (errorCallback) { + errorCallback(errors) } else { - if (successCallback) { - successCallback(response) - } - if (this.success) { - this.success(response) - } + this.showErrors(errors) } - - + return + } + else { + if (successCallback) { + successCallback(response) + } + if (this.success) { + this.success(response) + } + } }.bind(this), error: function(response){ }.bind(this), @@ -127,7 +124,8 @@ var FormView = View.extend({ if (this.useMinotaur) { Minotaur.show() } - + + this.beforeSend && this.beforeSend() }, }) diff --git a/views/partials/hootbox.ejs b/views/partials/hootbox.ejs index c65d264..872ca68 100644 --- a/views/partials/hootbox.ejs +++ b/views/partials/hootbox.ejs @@ -1,6 +1,6 @@ <div class="bluebox" id="hootbox"> <form> - <input type="text" name="hoot"> + <input type="text" name="comment"> <button><%= hoot_text %></button> </form> <table id="hoots"> |
