diff --git a/app/assets/javascripts/discourse/controllers/topic_controller.js b/app/assets/javascripts/discourse/controllers/topic_controller.js index bd63ecc88..31c040c46 100644 --- a/app/assets/javascripts/discourse/controllers/topic_controller.js +++ b/app/assets/javascripts/discourse/controllers/topic_controller.js @@ -16,23 +16,6 @@ Discourse.TopicController = Discourse.ObjectController.extend({ loadingAbove: false, needs: ['header', 'modal', 'composer', 'quoteButton'], - filter: function() { - if (this.get('bestOf') === true) return 'best_of'; - if (this.get('userFilters').length > 0) return 'user'; - return null; - }.property('userFilters.[]', 'bestOf'), - - filterDesc: function() { - var filter = this.get('filter'); - if (!filter) return null; - - if (filter !== 'user') return Em.String.i18n("topic.filters." + filter); - - // If we're a user filter, include the count - return Em.String.i18n("topic.filters.user", {count: this.get('userFilters.length')}); - - }.property('filter'), - selectedPosts: function() { var posts = this.get('content.posts'); if (!posts) return null; @@ -80,8 +63,10 @@ Discourse.TopicController = Discourse.ObjectController.extend({ if (!this.get('content.loaded')) return true; if (!this.get('currentPost')) return true; if (this.get('content.highest_post_number') < 2) return true; - return this.present('filter'); - }.property('filter', 'content.loaded', 'currentPost'), + if (this.get('bestOf')) return true; + if (this.get('userFilters.length')) return true; + return false; + }.property('content.loaded', 'currentPost', 'bestOf', 'userFilters.length'), selectPost: function(post) { post.toggleProperty('selected'); @@ -171,6 +156,28 @@ Discourse.TopicController = Discourse.ObjectController.extend({ } }, + /** + Show or hide the bottom bar, depending on our filter options. + + @method updateBottomBar + **/ + updateBottomBar: function() { + + var postFilters = this.get('postFilters'); + + if (postFilters.bestOf) { + this.set('filterDesc', Em.String.i18n("topic.filters.best_of")); + } else if (postFilters.userFilters.length > 0) { + this.set('filterDesc', Em.String.i18n("topic.filters.user", {count: postFilters.userFilters.length})); + } else { + // Hide the bottom bar + $('#topic-filter').slideUp(); + return; + } + + $('#topic-filter').slideDown(); + }, + enableBestOf: function(e) { this.set('bestOf', true); this.get('userFilters').clear(); @@ -194,7 +201,8 @@ Discourse.TopicController = Discourse.ObjectController.extend({ this.set('loadingBelow', true); var topicController = this; - return Discourse.Topic.find(this.get('id'), this.get('postFilters')).then(function(result) { + var postFilters = this.get('postFilters'); + return Discourse.Topic.find(this.get('id'), postFilters).then(function(result) { var first = result.posts.first(); if (first) { topicController.set('currentPost', first.post_number); @@ -205,6 +213,8 @@ Discourse.TopicController = Discourse.ObjectController.extend({ if (p.post_number === 1) return; posts.pushObject(Discourse.Post.create(p, topic)); }); + + topicController.updateBottomBar(); topicController.set('loadingBelow', false); }); }.observes('postFilters'), diff --git a/app/assets/javascripts/discourse/routes/topic_best_of_route.js b/app/assets/javascripts/discourse/routes/topic_best_of_route.js index adf458d82..b54c940bc 100644 --- a/app/assets/javascripts/discourse/routes/topic_best_of_route.js +++ b/app/assets/javascripts/discourse/routes/topic_best_of_route.js @@ -17,6 +17,9 @@ Discourse.TopicBestOfRoute = Discourse.Route.extend({ topicController.cancelFilter(); topicController.set('bestOf', true); this.modelFor('topic').loadPosts(params); + + // After we load, show the bottom bar + //Em.run.next(function () { topicController.updateBottomBar(); }) } }); diff --git a/app/assets/javascripts/discourse/templates/topic.js.handlebars b/app/assets/javascripts/discourse/templates/topic.js.handlebars index 8a0ec57c7..b7ebf207f 100644 --- a/app/assets/javascripts/discourse/templates/topic.js.handlebars +++ b/app/assets/javascripts/discourse/templates/topic.js.handlebars @@ -126,12 +126,10 @@ {{/if}} {{/if}} -{{#if controller.filter}} - <div id='topic-filter'> - {{filterDesc}} - <a href='#' {{action cancelFilter target="controller"}}>{{i18n topic.filters.cancel}}</a> - </div> -{{/if}} +<div id='topic-filter' style='display: none'> + {{filterDesc}} + <a href='#' {{action cancelFilter target="controller"}}>{{i18n topic.filters.cancel}}</a> +</div> {{render share}} {{render quoteButton}}