From 37c78524a85f5e5e4855a8ea93cc799d46c95234 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Wed, 22 Aug 2012 11:07:02 -0700 Subject: [PATCH] migrated threads reloading related stuff --- .../django_comment_client/forum/views.py | 24 ++++++++------ .../src/backbone_discussion/content.coffee | 1 + .../src/backbone_discussion/discussion.coffee | 32 +++++++++++++++++-- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 504f1b7eae..6c798c7237 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -142,19 +142,23 @@ 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) - recent_active_threads = cc.search_recent_active_threads( - course_id, - recursive=False, - query_params={'follower_id': request.user.id}, - ) - - trending_tags = cc.search_trending_tags( - course_id, - ) + if request.is_ajax(): - return utils.HtmlResponse(content) + return utils.JsonResponse({ + 'html': content, + 'discussionData': threads, + }) else: + recent_active_threads = cc.search_recent_active_threads( + course_id, + recursive=False, + query_params={'follower_id': request.user.id}, + ) + + trending_tags = cc.search_trending_tags( + course_id, + ) context = { 'csrf': csrf(request)['csrf_token'], 'course': course, diff --git a/lms/static/coffee/src/backbone_discussion/content.coffee b/lms/static/coffee/src/backbone_discussion/content.coffee index 5105c2a117..14fa140488 100644 --- a/lms/static/coffee/src/backbone_discussion/content.coffee +++ b/lms/static/coffee/src/backbone_discussion/content.coffee @@ -87,6 +87,7 @@ class @ContentView extends Backbone.View @$(".discussion-follow-thread").removeClass("discussion-unfollow-thread").html("Follow") ability: (ability) -> + console.log "triggered" for action, elemSelector of @model.actions if not ability[action] @$(elemSelector).parent().remove() diff --git a/lms/static/coffee/src/backbone_discussion/discussion.coffee b/lms/static/coffee/src/backbone_discussion/discussion.coffee index fa9e6e5cb7..6e670e0767 100644 --- a/lms/static/coffee/src/backbone_discussion/discussion.coffee +++ b/lms/static/coffee/src/backbone_discussion/discussion.coffee @@ -26,15 +26,41 @@ class @DiscussionView extends Backbone.View @model.view = @ @$el.children(".threads").children(".thread").each (index, elem) => threadView = new ThreadView el: elem, model: @model.find $(elem).attr("_id") + if @$el.hasClass("forum-discussion") + $(".discussion-sidebar").find(".sidebar-new-post-button") + .unbind('click').click $.proxy @newPost, @ + else if @$el.hasClass("inline-discussion") + @newPost() - search: -> + reload: ($elem, url) -> + if not url then return + DiscussionUtil.get $elem, url, (response, textStatus) => + $discussion = $(response.html) + $parent = @$el.parent() + @$el.replaceWith($discussion) + @model.reset(response.discussionData, { silent: false }) + view = new DiscussionView el: $discussion[0], model: @model + DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info) + + newPost: -> + + search: (event) -> + $elem = $(event.target) + url = URI($elem.attr("action")).addSearch({text: @$(".search-input").val()}) + @reload($elem, url) sort: -> + $elem = $(event.target) + url = $elem.attr("sort-url") + @reload($elem, url) - page: -> + page: (event) -> + $elem = $(event.target) + url = $elem.attr("page-url") + @reload($elem, url) events: "submit .search-wrapper>.discussion-search-form": "search" "click .discussion-search-link": "search" "click .discussion-sort-link": "sort" - "click .discussion-paginator>.discussion-page-link": "page" + "click .discussion-page-link": "page"