diff --git a/lms/static/coffee/src/discussion/main.coffee b/lms/static/coffee/src/discussion/main.coffee index dae4af8e02..4ec7dc9b8d 100644 --- a/lms/static/coffee/src/discussion/main.coffee +++ b/lms/static/coffee/src/discussion/main.coffee @@ -8,7 +8,6 @@ DiscussionApp = threads = element.data("threads") content_info = element.data("content-info") window.user = new DiscussionUser(user_info) - console.log content_info Content.loadContentInfos(content_info) discussion = new Discussion(threads) new DiscussionRouter({discussion: discussion}) diff --git a/lms/static/coffee/src/discussion/views/discussion_content_view.coffee b/lms/static/coffee/src/discussion/views/discussion_content_view.coffee index 5d7aeb2a37..915c2757f2 100644 --- a/lms/static/coffee/src/discussion/views/discussion_content_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_content_view.coffee @@ -1,18 +1,27 @@ class @DiscussionContentView extends Backbone.View - partialRenderer: + attrRenderer: endorsed: (endorsed) -> + if endorsed + @$(".action-endorse").addClass("is-endorsed") + else + @$(".action-endorse").removeClass("is-endorsed") - closed: (closed) -> # we should just re-render the whole thread, or update according to new abilities + closed: (closed) -> + return if not @$(".action-openclose").length + return if not @$(".post-status-closed").length + if closed + @$(".post-status-closed").show() + @$(".action-openclose").html(@$(".action-openclose").html().replace("Close", "Open")) + @$(".discussion-reply-new").hide() + else + @$(".post-status-closed").hide() + @$(".action-openclose").html(@$(".action-openclose").html().replace("Open", "Close")) + @$(".discussion-reply-new").show() voted: (voted) -> - if voted - @$(".discussion-vote").addClass("is-cast") - else - @$(".discussion-vote").removeClass("is-cast") votes_point: (votes_point) -> - @$(".discussion-vote .votes-count-number").html(votes_point) comments_count: (comments_count) -> @@ -23,7 +32,6 @@ class @DiscussionContentView extends Backbone.View @$(".dogear").removeClass("is-followed") ability: (ability) -> - console.log "ability changed" for action, selector of @abilityRenderer if not ability[action] selector.disable.apply(@) @@ -40,12 +48,19 @@ class @DiscussionContentView extends Backbone.View can_endorse: enable: -> @$(".action-endorse").css("cursor", "auto") disable: -> @$(".action-endorse").css("cursor", "default") + can_openclose: + enable: -> @$(".action-openclose").closest("li").show() + disable: -> @$(".action-openclose").closest("li").hide() - renderPartial: -> - console.log "changed" + renderPartialAttrs: -> for attr, value of @model.changedAttributes() - if @partialRenderer[attr] - @partialRenderer[attr].apply(@, [value]) + if @attrRenderer[attr] + @attrRenderer[attr].apply(@, [value]) + + renderAttrs: -> + for attr, value of @model.attributes + if @attrRenderer[attr] + @attrRenderer[attr].apply(@, [value]) initialize: -> - @model.bind('change', @renderPartial, @) + @model.bind('change', @renderPartialAttrs, @) 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 f302f364ce..3dddb7d901 100644 --- a/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee @@ -1,34 +1,24 @@ class @DiscussionThreadView extends DiscussionContentView - abilityRenderer: - editable: - enable: -> @$(".action-edit").closest("li").show() - disable: -> @$(".action-edit").closest("li").hide() - can_delete: - enable: -> @$(".action-delete").closest("li").show() - disable: -> @$(".action-delete").closest("li").hide() - can_endorse: - enable: -> - @$(".action-endorse").css("cursor", "auto") - disable: -> - @$(".action-endorse").css("cursor", "default") - events: "click .discussion-vote": "toggleVote" "click .action-follow": "toggleFollowing" "click .discussion-submit-post": "submitComment" "click .action-edit": "edit" "click .action-delete": "delete" + "click .action-openclose": "toggleClosed" template: _.template($("#thread-template").html()) initialize: -> + super() @model.on "change", @updateModelDetails render: -> @$el.html(@template(@model.toJSON())) @renderDogear() @renderVoted() + @renderAttrs() @$("span.timeago").timeago() Markdown.makeWmdEditor @$(".reply-body"), "", DiscussionUtil.urlFor("upload"), (text) -> DiscussionUtil.postMathJaxProcessor(text) @convertMath() @@ -135,7 +125,21 @@ class @DiscussionThreadView extends DiscussionContentView delete: -> - toggleEndorse: -> + toggleClosed: (event) -> + $elem = $(event.target) + url = @model.urlFor('close') + closed = @model.get('closed') + data = { closed: not closed } + DiscussionUtil.safeAjax + $elem: $elem + url: url + data: data + type: "POST" + success: (response, textStatus) => + @model.set('closed', not closed) + @model.set('ability', response.ability) + + toggleEndorse: (event) -> $elem = $(event.target) url = @model.urlFor('endorse') endorsed = @model.get('endorsed') 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 634fad6556..351f0f5689 100644 --- a/lms/static/coffee/src/discussion/views/response_comment_view.coffee +++ b/lms/static/coffee/src/discussion/views/response_comment_view.coffee @@ -3,6 +3,7 @@ class @ResponseCommentView extends DiscussionContentView template: _.template($("#response-comment-template").html()) render: -> @$el.html(@template(@model.toJSON())) + @renderAttrs() @$(".timeago").timeago() @convertMath() @ 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 bc3f393661..ceb604994c 100644 --- a/lms/static/coffee/src/discussion/views/thread_response_view.coffee +++ b/lms/static/coffee/src/discussion/views/thread_response_view.coffee @@ -11,6 +11,7 @@ class @ThreadResponseView extends DiscussionContentView @$el.html(@template(@model.toJSON())) if window.user.voted(@model) @$(".vote-btn").addClass("is-cast") + @renderAttrs() @$(".posted-details").timeago() @convertMath() @renderComments() diff --git a/lms/templates/discussion/_underscore_templates.html b/lms/templates/discussion/_underscore_templates.html index 3d86c92796..b005c4567c 100644 --- a/lms/templates/discussion/_underscore_templates.html +++ b/lms/templates/discussion/_underscore_templates.html @@ -13,14 +13,13 @@