From 3c681a207f64cd33bbb7610866e52ee142bd3fac Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Fri, 3 Aug 2012 15:07:57 -0400 Subject: [PATCH] fixed vote bug --- .../coffee/src/discussion/content.coffee | 19 +++++ .../coffee/src/discussion/discussion.coffee | 72 +++---------------- lms/static/coffee/src/discussion/utils.coffee | 32 +++++++++ 3 files changed, 59 insertions(+), 64 deletions(-) diff --git a/lms/static/coffee/src/discussion/content.coffee b/lms/static/coffee/src/discussion/content.coffee index 6884f5d420..a0f49cd356 100644 --- a/lms/static/coffee/src/discussion/content.coffee +++ b/lms/static/coffee/src/discussion/content.coffee @@ -3,6 +3,22 @@ if not @Discussion? Discussion = @Discussion +initializeVote = (content) -> + $content = $(content) + $local = Discussion.generateLocal($content.children(".discussion-content")) + id = $content.attr("_id") + if Discussion.isUpvoted id + $local(".discussion-vote-up").addClass("voted") + else if Discussion.isDownvoted id + $local(".discussion-vote-down").addClass("voted") + +initializeFollowThread = (thread) -> + $thread = $(thread) + id = $thread.attr("_id") + $thread.children(".discussion-content") + .find(".follow-wrapper") + .append(Discussion.subscriptionLink('thread', id)) + @Discussion = $.extend @Discussion, bindContentEvents: (content) -> @@ -265,6 +281,9 @@ Discussion = @Discussion initializeContent: (content) -> $content = $(content) + initializeVote $content + if $content.hasClass("thread") + initializeFollowThread $content $local = Discussion.generateLocal($content.children(".discussion-content")) $contentBody = $local(".content-body") raw_text = $contentBody.html() diff --git a/lms/static/coffee/src/discussion/discussion.coffee b/lms/static/coffee/src/discussion/discussion.coffee index df3411f472..849cf65819 100644 --- a/lms/static/coffee/src/discussion/discussion.coffee +++ b/lms/static/coffee/src/discussion/discussion.coffee @@ -3,75 +3,27 @@ if not @Discussion? Discussion = @Discussion -initializeVote = (index, content) -> - $content = $(content) - $local = Discussion.generateLocal($content.children(".discussion-content")) - id = $content.attr("_id") - if Discussion.isUpvoted id - $local(".discussion-vote-up").addClass("voted") - else if Discussion.isDownvoted id - $local(".discussion-vote-down").addClass("voted") - -subscriptionLink = (type, id) -> - - followLink = -> - Discussion.generateDiscussionLink("discussion-follow-#{type}", "Follow", handleFollow) - - unfollowLink = -> - Discussion.generateDiscussionLink("discussion-unfollow-#{type}", "Unfollow", handleUnfollow) - - handleFollow = (elem) -> - Discussion.safeAjax - $elem: $(elem) - url: Discussion.urlFor("follow_#{type}", id) - type: "POST" - success: (response, textStatus) -> - if textStatus == "success" - $(elem).replaceWith unfollowLink() - dataType: 'json' - - handleUnfollow = (elem) -> - Discussion.safeAjax - $elem: $(elem) - url: Discussion.urlFor("unfollow_#{type}", id) - type: "POST" - success: (response, textStatus) -> - if textStatus == "success" - $(elem).replaceWith followLink() - dataType: 'json' - - if Discussion.isSubscribed(id, type) - unfollowLink() - else - followLink() - initializeFollowDiscussion = (discussion) -> $discussion = $(discussion) id = $following.attr("_id") $local = Discussion.generateLocal() $discussion.children(".discussion-non-content") .find(".discussion-title-wrapper") - .append(subscriptionLink('discussion', id)) - -initializeFollowThread = (index, thread) -> - $thread = $(thread) - id = $thread.attr("_id") - $thread.children(".discussion-content") - .find(".follow-wrapper") - .append(subscriptionLink('thread', id)) + .append(Discussion.subscriptionLink('discussion', id)) @Discussion = $.extend @Discussion, initializeDiscussion: (discussion) -> + $discussion = $(discussion) + $discussion.find(".thread").each (index, thread) -> + Discussion.initializeContent(thread) + Discussion.bindContentEvents(thread) + $discussion.find(".comment").each (index, comment) -> + Discussion.initializeContent(comment) + Discussion.bindContentEvents(comment) - $local = Discussion.generateLocal(discussion) - - $local(".comment").each(initializeVote) - $local(".thread").each(initializeVote).each(initializeFollowThread) #initializeFollowDiscussion(discussion) TODO move this somewhere else - $local(".new-post-tags").tagsInput Discussion.tagsInputOptions() - bindDiscussionEvents: (discussion) -> $discussion = $(discussion) @@ -189,11 +141,3 @@ initializeFollowThread = (index, thread) -> "click .discussion-inline-sort-link": -> handleAjaxSort(this) - - $discussion.find(".thread").each (index, thread) -> - Discussion.initializeContent(thread) - Discussion.bindContentEvents(thread) - - $discussion.find(".comment").each (index, comment) -> - Discussion.initializeContent(comment) - Discussion.bindContentEvents(comment) diff --git a/lms/static/coffee/src/discussion/utils.coffee b/lms/static/coffee/src/discussion/utils.coffee index c60682b232..44944f0201 100644 --- a/lms/static/coffee/src/discussion/utils.coffee +++ b/lms/static/coffee/src/discussion/utils.coffee @@ -132,3 +132,35 @@ wmdEditors = {} if not window.$$annotated_content_info? window.$$annotated_content_info = {} window.$$annotated_content_info = $.extend window.$$annotated_content_info, newInfos + + subscriptionLink: (type, id) -> + followLink = -> + Discussion.generateDiscussionLink("discussion-follow-#{type}", "Follow", handleFollow) + + unfollowLink = -> + Discussion.generateDiscussionLink("discussion-unfollow-#{type}", "Unfollow", handleUnfollow) + + handleFollow = (elem) -> + Discussion.safeAjax + $elem: $(elem) + url: Discussion.urlFor("follow_#{type}", id) + type: "POST" + success: (response, textStatus) -> + if textStatus == "success" + $(elem).replaceWith unfollowLink() + dataType: 'json' + + handleUnfollow = (elem) -> + Discussion.safeAjax + $elem: $(elem) + url: Discussion.urlFor("unfollow_#{type}", id) + type: "POST" + success: (response, textStatus) -> + if textStatus == "success" + $(elem).replaceWith followLink() + dataType: 'json' + + if Discussion.isSubscribed(id, type) + unfollowLink() + else + followLink()