From 3b76fe16d899230b79bb153ca3674fd5508a5256 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Wed, 22 Aug 2012 14:04:42 -0700 Subject: [PATCH] make inline page working --- .../django_comment_client/forum/views.py | 8 ++- .../src/backbone_discussion/content.coffee | 2 +- .../src/backbone_discussion/discussion.coffee | 12 ++-- .../discussion_module.coffee | 65 ++++++++----------- .../src/backbone_discussion/main.coffee | 2 +- .../src/backbone_discussion/utils.coffee | 4 -- lms/templates/courseware/courseware.html | 4 +- 7 files changed, 45 insertions(+), 52 deletions(-) diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 8f154f2bd6..4fab42564b 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -125,7 +125,11 @@ def inline_discussion(request, course_id, discussion_id): threads, query_params = get_threads(request, course_id, discussion_id) html = render_inline_discussion(request, course_id, threads, discussion_id=discussion_id, \ query_params=query_params) - return utils.HtmlResponse(html) + + return utils.JsonResponse({ + 'html': html, + 'discussionData': threads, + }) def render_search_bar(request, course_id, discussion_id=None, text=''): if not discussion_id: @@ -142,8 +146,6 @@ def forum_form_discussion(request, course_id): threads, query_params = get_threads(request, course_id) content = render_forum_discussion(request, course_id, threads, discussion_id=_general_discussion_id(course_id), query_params=query_params) - - if request.is_ajax(): return utils.JsonResponse({ 'html': content, diff --git a/lms/static/coffee/src/backbone_discussion/content.coffee b/lms/static/coffee/src/backbone_discussion/content.coffee index 3fde83bfc2..31f903e965 100644 --- a/lms/static/coffee/src/backbone_discussion/content.coffee +++ b/lms/static/coffee/src/backbone_discussion/content.coffee @@ -175,7 +175,7 @@ class @ContentView extends Backbone.View data: body: body anonymous: anonymous - autowatch: autowatch + auto_subscribe: autowatch error: DiscussionUtil.formErrorHandler @$(".discussion-errors") success: (response, textStatus) => DiscussionUtil.clearFormErrors @$(".discussion-errors") diff --git a/lms/static/coffee/src/backbone_discussion/discussion.coffee b/lms/static/coffee/src/backbone_discussion/discussion.coffee index d38ea47d85..7a664dfe0a 100644 --- a/lms/static/coffee/src/backbone_discussion/discussion.coffee +++ b/lms/static/coffee/src/backbone_discussion/discussion.coffee @@ -15,8 +15,6 @@ class @Discussion extends Backbone.Collection @add model model -class @DiscussionModuleView extends Backbone.View - class @DiscussionView extends Backbone.View $: (selector) -> @@ -39,11 +37,13 @@ class @DiscussionView extends Backbone.View @newPost() reload: ($elem, url) -> + console.log "here" if not url then return DiscussionUtil.get $elem, url, {}, (response, textStatus) => - $discussion = $(response.html) + console.log response $parent = @$el.parent() - @$el.replaceWith($discussion) + @$el.replaceWith(response.html) + $discussion = $parent.find("section.discussion") @model.reset(response.discussionData, { silent: false }) view = new DiscussionView el: $discussion[0], model: @model DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info) @@ -111,6 +111,8 @@ class @DiscussionView extends Backbone.View title = @$(".new-post-title").val() body = DiscussionUtil.getWmdContent @$el, $.proxy(@$, @), "new-post-body" tags = @$(".new-post-tags").val() + anonymous = false || @$(".discussion-post-anonymously").is(":checked") + autowatch = false || @$(".discussion-auto-watch").is(":checked") url = DiscussionUtil.urlFor('create_thread', @model.id) DiscussionUtil.safeAjax $elem: $(event.target) @@ -121,6 +123,8 @@ class @DiscussionView extends Backbone.View title: title body: body tags: tags + anonymous: anonymous + auto_subscribe: autowatch error: DiscussionUtil.formErrorHandler(@$(".new-post-form-errors")) success: (response, textStatus) => DiscussionUtil.clearFormErrors(@$(".new-post-form-errors")) diff --git a/lms/static/coffee/src/backbone_discussion/discussion_module.coffee b/lms/static/coffee/src/backbone_discussion/discussion_module.coffee index d449533ba9..036aba7b3a 100644 --- a/lms/static/coffee/src/backbone_discussion/discussion_module.coffee +++ b/lms/static/coffee/src/backbone_discussion/discussion_module.coffee @@ -1,42 +1,33 @@ -if not @Discussion? - @Discussion = {} - -Discussion = @Discussion - -@Discussion = $.extend @Discussion, - initializeDiscussionModule: (elem) -> - $discussionModule = $(elem) - $local = Discussion.generateLocal($discussionModule) - handleShowDiscussion = (elem) -> - $elem = $(elem) - if not $local("section.discussion").length +class @DiscussionModuleView extends Backbone.View + events: + "click .discussion-show": "toggleDiscussion" + toggleDiscussion: (event) -> + console.log "toggle" + if @showed + @$("section.discussion").hide() + $(event.target).html("Show Discussion") + @showed = false + else + if @retrieved + @$("section.discussion").show() + $(event.target).html("Hide Discussion") + @showed = true + else + $elem = $(event.target) discussion_id = $elem.attr("discussion_id") - url = Discussion.urlFor 'retrieve_discussion', discussion_id + url = DiscussionUtil.urlFor 'retrieve_discussion', discussion_id Discussion.safeAjax $elem: $elem url: url type: "GET" - success: (data, textStatus, xhr) -> - $discussionModule.append(data) - discussion = $local("section.discussion") - Discussion.initializeDiscussion(discussion) - Discussion.bindDiscussionEvents(discussion) - $elem.html("Hide Discussion") - $elem.unbind('click').click -> - handleHideDiscussion(this) - dataType: 'html' - else - $local("section.discussion").show() - $elem.html("Hide Discussion") - $elem.unbind('click').click -> - handleHideDiscussion(this) - - handleHideDiscussion = (elem) -> - $local("section.discussion").hide() - $elem = $(elem) - $elem.html("Show Discussion") - $elem.unbind('click').click -> - handleShowDiscussion(this) - - $local(".discussion-show").click -> - handleShowDiscussion(this) + dataType: 'json' + success: (response, textStatus) => + @$el.append(response.html) + $discussion = @$el.find("section.discussion") + $(event.target).html("Hide Discussion") + discussion = new Discussion() + discussion.reset(response.discussionData, {silent: false}) + view = new DiscussionView(el: $discussion[0], model: discussion) + DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info) + @retrieved = true + @showed = true diff --git a/lms/static/coffee/src/backbone_discussion/main.coffee b/lms/static/coffee/src/backbone_discussion/main.coffee index 1b2b04e2ed..2266e136ed 100644 --- a/lms/static/coffee/src/backbone_discussion/main.coffee +++ b/lms/static/coffee/src/backbone_discussion/main.coffee @@ -7,7 +7,7 @@ $ -> view = new DiscussionModuleView(el: elem) $("section.discussion").each (index, elem) -> - discussionData = DiscussionUtil.getDiscussionData(elem) + discussionData = DiscussionUtil.getDiscussionData($(elem).attr("_id")) discussion = new Discussion() discussion.reset(discussionData, {silent: false}) view = new DiscussionView(el: elem, model: discussion) diff --git a/lms/static/coffee/src/backbone_discussion/utils.coffee b/lms/static/coffee/src/backbone_discussion/utils.coffee index ce99354a94..0610ade1f8 100644 --- a/lms/static/coffee/src/backbone_discussion/utils.coffee +++ b/lms/static/coffee/src/backbone_discussion/utils.coffee @@ -6,10 +6,6 @@ class @DiscussionUtil $("script##{id}").html() @getDiscussionData: (id) -> - if id instanceof $ - id = id.attr("_id") - else if typeof id == "object" - id = $(id).attr("_id") return $$discussion_data[id] @addContent: (id, content) -> window.$$contents[id] = content diff --git a/lms/templates/courseware/courseware.html b/lms/templates/courseware/courseware.html index c1fc6a74cf..141d05352c 100644 --- a/lms/templates/courseware/courseware.html +++ b/lms/templates/courseware/courseware.html @@ -5,7 +5,7 @@ <%block name="headextra"> <%static:css group='course'/> - <%include file="discussion/_js_head_dependencies.html" /> + <%include file="../discussion/_js_head_dependencies.html" /> <%block name="js_extra"> @@ -23,7 +23,7 @@ <%static:js group='courseware'/> - <%include file="discussion/_js_body_dependencies.html" /> + <%include file="../discussion/_js_body_dependencies.html" />