diff --git a/lms/static/coffee/src/discussion/content.coffee b/lms/static/coffee/src/discussion/content.coffee index 82b5e2b177..db20caac3a 100644 --- a/lms/static/coffee/src/discussion/content.coffee +++ b/lms/static/coffee/src/discussion/content.coffee @@ -28,9 +28,10 @@ Discussion = @Discussion if $replyView.length $replyView.show() else + thread_id = $discussionContent.parents(".thread").attr("_id") view = { id: id - showWatchCheckbox: $discussionContent.parents(".thread").attr("_id") not in $$user_info.subscribed_thread_ids + showWatchCheckbox: not Discussion.isSubscribed(thread_id, "thread") } $discussionContent.append Mustache.render Discussion.replyTemplate, view Markdown.makeWmdEditor $local(".reply-body"), "-reply-body-#{id}", Discussion.urlFor('upload') @@ -61,19 +62,15 @@ Discussion = @Discussion autowatch = false || $local(".discussion-auto-watch").is(":checked") Discussion.safeAjax + $elem: $(elem) url: url type: "POST" data: body: body anonymous: anonymous autowatch: autowatch - success: (response, textStatus) -> - if response.errors? and response.errors.length > 0 - errorsField = $local(".discussion-errors").empty() - for error in response.errors - errorsField.append($("
  • ").addClass("new-post-form-error").html(error)) - else - Discussion.handleAnchorAndReload(response) + success: Discussion.formErrorHandler $local(".discussion-errors"), (response, textStatus) -> + Discussion.handleAnchorAndReload(response) dataType: 'json' handleVote = (elem, value) -> @@ -119,14 +116,13 @@ Discussion = @Discussion title = $local(".thread-title-edit").val() body = $local("#wmd-input-thread-body-edit-#{id}").val() tags = $local(".thread-tags-edit").val() - $.post url, {title: title, body: body, tags: tags}, (response, textStatus) -> - if response.errors - errorsField = $local(".discussion-update-errors").empty() - for error in response.errors - errorsField.append($("
  • ").addClass("new-post-form-error").html(error)) - else + $.ajax + url: url + type: "POST" + data: {title: title, body: body, tags: tags}, + success: Discussion.formErrorHandler $local(".discussion-update-errors"), (response, textStatus) -> Discussion.handleAnchorAndReload(response) - , 'json' + dataType: 'json' handleEditComment = (elem) -> $local(".discussion-content-wrapper").hide() @@ -134,10 +130,7 @@ Discussion = @Discussion if $editView.length $editView.show() else - view = { - id: id - body: $local(".comment-raw-body").html() - } + view = { id: id, body: $local(".comment-raw-body").html() } $discussionContent.append Mustache.render Discussion.editCommentTemplate, view Markdown.makeWmdEditor $local(".comment-body-edit"), "-comment-body-edit-#{id}", Discussion.urlFor('update_comment', id) $local(".discussion-submit-update").unbind("click").click -> handleSubmitEditComment(this) @@ -146,14 +139,13 @@ Discussion = @Discussion handleSubmitEditComment= (elem) -> url = Discussion.urlFor('update_comment', id) body = $local("#wmd-input-comment-body-edit-#{id}").val() - $.post url, {body: body}, (response, textStatus) -> - if response.errors - errorsField = $local(".discussion-update-errors").empty() - for error in response.errors - errorsField.append($("
  • ").addClass("new-post-form-error").html(error)) - else + $.ajax + url: url + data: {body: body} + type: "POST" + success: Discussion.formErrorHandler $local(".discussion-update-errors"), (response, textStatus) -> Discussion.handleAnchorAndReload(response) - , 'json' + dataType: "json" handleEndorse = (elem) -> url = Discussion.urlFor('endorse_comment', id) @@ -203,35 +195,38 @@ Discussion = @Discussion rebindHideEvents() dataType: 'json' - - $local(".thread-title").click handleShowSingleThread + Discussion.bindLocalEvents $local, - $local(".discussion-show-comments").click handleShowSingleThread + "click .thread-title": -> + handleShowSingleThread(this) - $local(".discussion-reply-thread").click -> - handleShowSingleThread($local(".thread-title")) - handleReply(this) + "click .discussion-show-comments": -> + handleShowSingleThread(this) - $local(".discussion-reply-comment").click -> - handleReply(this) + "click .discussion-reply-thread": -> + handleShowSingleThread($local(".thread-title")) + handleReply(this) - $local(".discussion-cancel-reply").click -> - handleCancelReply(this) + "click .discussion-reply-comment": -> + handleReply(this) - $local(".discussion-vote-up").click -> - handleVote(this, "up") + "click .discussion-cancel-reply": -> + handleCancelReply(this) - $local(".discussion-vote-down").click -> - handleVote(this, "down") + "click .discussion-vote-up": -> + handleVote(this, "up") - $local(".discussion-endorse").click -> - handleEndorse(this) + "click .discussion-vote-down": -> + handleVote(this, "down") - $local(".discussion-edit").click -> - if $content.hasClass("thread") - handleEditThread(this) - else - handleEditComment(this) + "click .discussion-endorse": -> + handleEndorse(this) + + "click .discussion-edit": -> + if $content.hasClass("thread") + handleEditThread(this) + else + handleEditComment(this) initializeContent: (content) -> $content = $(content) diff --git a/lms/static/coffee/src/discussion/discussion.coffee b/lms/static/coffee/src/discussion/discussion.coffee index 1e26976924..9654c1ce20 100644 --- a/lms/static/coffee/src/discussion/discussion.coffee +++ b/lms/static/coffee/src/discussion/discussion.coffee @@ -128,8 +128,6 @@ initializeFollowThread = (index, thread) -> $(elem).hide() - handleUpdateDiscussionContent = ($elem, $discussion, url) -> - handleAjaxSearch = (elem) -> handle $elem = $(elem) diff --git a/lms/static/coffee/src/discussion/utils.coffee b/lms/static/coffee/src/discussion/utils.coffee index 70581cc38b..e7b95941d5 100644 --- a/lms/static/coffee/src/discussion/utils.coffee +++ b/lms/static/coffee/src/discussion/utils.coffee @@ -65,3 +65,20 @@ Discussion = @Discussion height: "30px" width: "100%" removeWithBackspace: true + + isSubscribed: (id, type) -> + if type == "thread" + id in $$user_info.subscribed_thread_ids + else if type == "commentable" or type == "discussion" + id in $$user_info.subscribed_commentable_ids + else + id in $$user_info.subscribed_user_ids + + formErrorHandler: (errorsField, success) -> + (response, textStatus, xhr) -> + if response.errors? and response.errors.length > 0 + errorsField.empty() + for error in response.errors + errorsField.append($("
  • ").addClass("new-post-form-error").html(error)) + else + success(response, textStatus, xhr)