From 52e780e0b21bb4fbed2a313aa677a5af5e41e74d Mon Sep 17 00:00:00 2001 From: Arjun Singh Date: Mon, 3 Sep 2012 23:28:44 -0700 Subject: [PATCH] add all filter --- .../views/discussion_thread_list_view.coffee | 18 +++++++++++++----- lms/templates/discussion/_filter_dropdown.html | 5 +++++ 2 files changed, 18 insertions(+), 5 deletions(-) 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 7da89ca398..66911d3a8e 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 @@ -6,10 +6,17 @@ class @DiscussionThreadListView extends Backbone.View "keyup .post-search-field": "performSearch" "click .sort-bar a": "sortThreads" "click .browse-topic-drop-menu": "filterTopic" + "click .browse-topic-drop-search-input": "ignoreClick" initialize: -> @displayedCollection = new Discussion(@collection.models) + # Because we want the behavior that when the body is clicked the menu is + # closed, we need to ignore clicks in the search field and stop propagation. + # Without this, clicking the search field would also close the menu. + ignoreClick: (event) -> + event.stopPropagation() + render: -> @timer = 0 @$el.html(@template()) @@ -41,16 +48,15 @@ class @DiscussionThreadListView extends Backbone.View @$(".browse").removeClass('is-open') setTimeout (-> @$(".post-search-field").focus()), 200 - toggleTopicDrop: => + toggleTopicDrop: (event) => + event.stopPropagation() @$(".browse").toggleClass('is-dropped') if @$(".browse").hasClass('is-dropped') @$(".browse-topic-drop-menu-wrapper").show() - setTimeout((=> - $("body").bind("click", @toggleTopicDrop) - ), 0) + $('body').bind 'click', @toggleTopicDrop else @$(".browse-topic-drop-menu-wrapper").hide() - $("body").unbind("click", @toggleTopicDrop) + $('body').unbind 'click', @toggleTopicDrop setTopic: (event) -> item = $(event.target).closest('a') @@ -70,6 +76,8 @@ class @DiscussionThreadListView extends Backbone.View filterTopic: (event) -> @setTopic(event) item = $(event.target).closest('li') + if item.find("span.board-name").data("discussion_id") == "#all" + item = item.parent() discussionIds = _.compact _.map item.find("span.board-name"), (board) -> $(board).data("discussion_id") discussionIds = _.map discussionIds, (info) -> info.id filtered = @collection.filter (thread) => diff --git a/lms/templates/discussion/_filter_dropdown.html b/lms/templates/discussion/_filter_dropdown.html index c8b974ad4d..f6e9b48bcf 100644 --- a/lms/templates/discussion/_filter_dropdown.html +++ b/lms/templates/discussion/_filter_dropdown.html @@ -28,6 +28,11 @@