diff --git a/lms/static/coffee/src/discussion/discussion_router.coffee b/lms/static/coffee/src/discussion/discussion_router.coffee index 14ee1b52f3..b2e41cd5af 100644 --- a/lms/static/coffee/src/discussion/discussion_router.coffee +++ b/lms/static/coffee/src/discussion/discussion_router.coffee @@ -13,7 +13,7 @@ if Backbone? @nav.render() @newPostView = new NewPostView(el: $(".new-post-article"), collection: @discussion) - @newPostView.on "thread:created", @navigateToThread + @nav.on "thread:created", @navigateToThread allThreads: -> @nav.updateSidebar() @@ -42,5 +42,4 @@ if Backbone? @navigate("#{thread.get("commentable_id")}/threads/#{thread_id}", trigger: true) navigateToAllThreads: => - console.log "navigating" @navigate("", trigger: true) diff --git a/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee b/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee index 6f1ee52c08..e661877ef5 100644 --- a/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee @@ -40,15 +40,13 @@ if Backbone? if active @setActiveThread(thread_id) + #TODO fix this entire chain of events addAndSelectThread: (thread) => commentable_id = thread.get("commentable_id") commentable = @$(".board-name[data-discussion_id]").filter(-> $(this).data("discussion_id").id == commentable_id) - commentable.click() - @displayedCollection.add thread - content = @renderThread(thread) - $(".post-list").prepend content - content.wrap("
  • ") - content.click() + @setTopicHack(commentable) + @retrieveDiscussion commentable_id, => + @trigger "thread:created", thread.get('id') updateSidebar: => @@ -187,6 +185,13 @@ if Backbone? $("body").unbind "click", @toggleTopicDrop $("body").unbind "keydown", @setActiveItem + # TODO get rid of this asap + setTopicHack: (boardNameContainer) -> + item = $(boardNameContainer).closest('a') + boardName = item.find(".board-name").html() + _.each item.parents('ul').not('.browse-topic-drop-menu'), (parent) -> + boardName = $(parent).siblings('a').find('.board-name').html() + ' / ' + boardName + @$(".current-board").html(@fitName(boardName)) setTopic: (event) -> item = $(event.target).closest('a') @@ -243,6 +248,20 @@ if Backbone? discussionIds = _.map item.find(".board-name[data-discussion_id]"), (board) -> $(board).data("discussion_id").id @retrieveDiscussions(discussionIds) + retrieveDiscussion: (discussion_id, callback=null) -> + url = DiscussionUtil.urlFor("retrieve_discussion", discussion_id) + DiscussionUtil.safeAjax + url: url + type: "GET" + success: (response, textStatus) => + @collection.current_page = response.page + @collection.pages = response.num_pages + @collection.reset(response.discussion_data) + Content.loadContentInfos(response.content_info) + @displayedCollection.reset(@collection.models) + if callback? + callback() + retrieveDiscussions: (discussion_ids) -> @discussionIds = discussion_ids.join(',') url = DiscussionUtil.urlFor("search")