diff --git a/common/static/common/js/discussion/views/discussion_content_view.js b/common/static/common/js/discussion/views/discussion_content_view.js index f3900e6308..55bded5d34 100644 --- a/common/static/common/js/discussion/views/discussion_content_view.js +++ b/common/static/common/js/discussion/views/discussion_content_view.js @@ -107,10 +107,10 @@ }, can_vote: { enable: function() { - return this.$(".action-vote").closest(".actions-item").removeClass("is-hidden"); + this.$('.action-vote').closest('.actions-item').removeClass('is-disabled'); }, disable: function() { - return this.$(".action-vote").closest(".actions-item").addClass("is-hidden"); + this.$('.action-vote').closest('.actions-item').addClass('is-disabled'); } } }; @@ -415,17 +415,19 @@ updates = { upvoted_ids: (is_voting ? _.union : _.difference)(user.get('upvoted_ids'), [this.model.id]) }; - return DiscussionUtil.updateWithUndo(user, updates, { - url: url, - type: "POST", - $elem: $(event.currentTarget) - }, gettext("We had some trouble saving your vote. Please try again.")).done(function() { - if (is_voting) { - return self.model.vote(); - } else { - return self.model.unvote(); - } - }); + if (!$(event.target.closest(".actions-item")).hasClass('is-disabled')) { + return DiscussionUtil.updateWithUndo(user, updates, { + url: url, + type: "POST", + $elem: $(event.currentTarget) + }, gettext("We had some trouble saving your vote. Please try again.")).done(function() { + if (is_voting) { + return self.model.vote(); + } else { + return self.model.unvote(); + } + }); + } }; DiscussionContentShowView.prototype.togglePin = function(event) { diff --git a/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js index cb7b7a346e..167c79dd79 100644 --- a/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js +++ b/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js @@ -474,7 +474,7 @@ }); it("doesn't show voting button if can_vote ability is disabled", function() { this.view.render(); - return expect(this.view.$el.find(".action-vote").closest(".actions-item")).toHaveClass('is-hidden'); + return expect(this.view.$el.find(".action-vote").closest(".actions-item")).toHaveClass('is-disabled'); }); }); }); diff --git a/lms/static/sass/discussion/elements/_actions.scss b/lms/static/sass/discussion/elements/_actions.scss index ac3e83cac8..2953334ae5 100644 --- a/lms/static/sass/discussion/elements/_actions.scss +++ b/lms/static/sass/discussion/elements/_actions.scss @@ -18,6 +18,28 @@ &.is-hidden { display: none; } + + &.is-disabled { + a { + pointer-events: none; + + .action-icon { + display: none; + } + + .action-label { + padding-right: 0px; + } + + &:hover { + border-color: transparent; + + .action-label { + color: $forum-color-active-text; + } + } + } + } } .more-wrapper {