diff --git a/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee b/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee
index b429ce3e63..d46304d5e1 100644
--- a/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee
+++ b/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee
@@ -37,6 +37,7 @@ class @DiscussionThreadView extends Backbone.View
@vote()
else
@unvote()
+ false
toggleFollowing: (event) ->
$elem = $(event.target)
diff --git a/lms/static/coffee/src/discussion/views/response_comment_view.coffee b/lms/static/coffee/src/discussion/views/response_comment_view.coffee
index 0dbddab7ba..13224c4620 100644
--- a/lms/static/coffee/src/discussion/views/response_comment_view.coffee
+++ b/lms/static/coffee/src/discussion/views/response_comment_view.coffee
@@ -3,4 +3,5 @@ class @ResponseCommentView extends Backbone.View
template: _.template($("#response-comment-template").html())
render: ->
@$el.html(@template(@model.toJSON()))
+ @$(".timeago").timeago()
@
diff --git a/lms/static/coffee/src/discussion/views/thread_response_view.coffee b/lms/static/coffee/src/discussion/views/thread_response_view.coffee
index 5d531a2c18..6d0c497567 100644
--- a/lms/static/coffee/src/discussion/views/thread_response_view.coffee
+++ b/lms/static/coffee/src/discussion/views/thread_response_view.coffee
@@ -1,8 +1,13 @@
class @ThreadResponseView extends Backbone.View
tagName: "li"
template: _.template($("#thread-response-template").html())
+ events:
+ "click .vote-btn": "toggleVote"
render: ->
@$el.html(@template(@model.toJSON()))
+ if window.user.voted(@model)
+ @$(".vote-btn").addClass("is-cast")
+ @$(".posted-details").timeago()
@renderComments()
@
@@ -12,4 +17,34 @@ class @ThreadResponseView extends Backbone.View
renderComment: (comment) =>
view = new ResponseCommentView(model: comment)
view.render()
- @$(".comments").append(view.el)
+ @$(".comments li:last").before(view.el)
+
+ toggleVote: ->
+ @$(".vote-btn").toggleClass("is-cast")
+ if @$(".vote-btn").hasClass("is-cast")
+ @vote()
+ else
+ @unvote()
+ false
+
+ vote: ->
+ url = @model.urlFor("upvote")
+ @$(".votes-count-number").html(parseInt(@$(".votes-count-number").html()) + 1)
+ DiscussionUtil.safeAjax
+ $elem: @$(".discussion-vote")
+ url: url
+ type: "POST"
+ success: (response, textStatus) =>
+ if textStatus == 'success'
+ @model.set(response)
+
+ unvote: ->
+ url = @model.urlFor("unvote")
+ @$(".votes-count-number").html(parseInt(@$(".votes-count-number").html()) - 1)
+ DiscussionUtil.safeAjax
+ $elem: @$(".discussion-vote")
+ url: url
+ type: "POST"
+ success: (response, textStatus) =>
+ if textStatus == 'success'
+ @model.set(response)
diff --git a/lms/templates/discussion/single_thread.html b/lms/templates/discussion/single_thread.html
index 0c7c557150..38c742e221 100644
--- a/lms/templates/discussion/single_thread.html
+++ b/lms/templates/discussion/single_thread.html
@@ -127,13 +127,23 @@