From 8b0e459256b5e32d7efd4ed193f78d4186c857dc Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Tue, 4 Sep 2012 10:06:03 -0700 Subject: [PATCH 1/3] fixed endorse --- .../views/discussion_content_view.coffee | 32 +++++++++---------- .../views/discussion_thread_view.coffee | 2 ++ .../views/response_comment_view.coffee | 1 + .../views/thread_response_view.coffee | 1 + 4 files changed, 19 insertions(+), 17 deletions(-) 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..853d96e3b1 100644 --- a/lms/static/coffee/src/discussion/views/discussion_content_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_content_view.coffee @@ -1,29 +1,23 @@ 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) -> 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) -> subscribed: (subscribed) -> - if subscribed - @$(".dogear").addClass("is-followed") - else - @$(".dogear").removeClass("is-followed") ability: (ability) -> - console.log "ability changed" for action, selector of @abilityRenderer if not ability[action] selector.disable.apply(@) @@ -41,11 +35,15 @@ class @DiscussionContentView extends Backbone.View enable: -> @$(".action-endorse").css("cursor", "auto") disable: -> @$(".action-endorse").css("cursor", "default") - 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 514f60aef3..e5e30a44ee 100644 --- a/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_thread_view.coffee @@ -23,12 +23,14 @@ class @DiscussionThreadView extends DiscussionContentView 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() 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 8e0509f0f4..a49a7d22a1 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() From 245bb7ce96c1e8c9f1c1f725df6c1a234f945e4a Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Tue, 4 Sep 2012 10:15:41 -0700 Subject: [PATCH 2/3] oops fixed following --- .../src/discussion/views/discussion_content_view.coffee | 4 ++++ 1 file changed, 4 insertions(+) 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 853d96e3b1..80506db261 100644 --- a/lms/static/coffee/src/discussion/views/discussion_content_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_content_view.coffee @@ -16,6 +16,10 @@ class @DiscussionContentView extends Backbone.View comments_count: (comments_count) -> subscribed: (subscribed) -> + if subscribed + @$(".dogear").addClass("is-followed") + else + @$(".dogear").removeClass("is-followed") ability: (ability) -> for action, selector of @abilityRenderer From e14995138291f24b599b997e7e99c114b0cab0e6 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Tue, 4 Sep 2012 10:27:59 -0700 Subject: [PATCH 3/3] fixed close threads --- lms/static/coffee/src/discussion/main.coffee | 1 - .../views/discussion_content_view.coffee | 13 ++++++++ .../views/discussion_thread_view.coffee | 30 ++++++++++--------- .../discussion/_underscore_templates.html | 7 ++--- 4 files changed, 32 insertions(+), 19 deletions(-) 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 80506db261..915c2757f2 100644 --- a/lms/static/coffee/src/discussion/views/discussion_content_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_content_view.coffee @@ -8,6 +8,16 @@ class @DiscussionContentView extends Backbone.View @$(".action-endorse").removeClass("is-endorsed") 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) -> @@ -38,6 +48,9 @@ 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() renderPartialAttrs: -> for attr, value of @model.changedAttributes() 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 047291a90b..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,24 +1,12 @@ 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()) @@ -137,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/templates/discussion/_underscore_templates.html b/lms/templates/discussion/_underscore_templates.html index 1a5fe6158d..b005c4567c 100644 --- a/lms/templates/discussion/_underscore_templates.html +++ b/lms/templates/discussion/_underscore_templates.html @@ -13,14 +13,13 @@
${'<%- body %>'}
-
- ${'<% if (closed) { %>'} - This thread is closed. - ${'<% } %>'} +