diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 01161633777..50fdf050ad5 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -989,12 +989,30 @@ export default Ember.Controller.extend(BufferedContent, { : undefined; }, - @computed("selectedPostsCount", "model.postStream.stream.length") - selectedAllPosts(selectedPostsCount, postsCount) { - return selectedPostsCount >= postsCount; + @computed( + "selectedPostsCount", + "model.postStream.isMegaTopic", + "model.postStream.stream.length", + "model.posts_count" + ) + selectedAllPosts( + selectedPostsCount, + isMegaTopic, + postsCount, + topicPostsCount + ) { + if (isMegaTopic) { + return selectedPostsCount >= topicPostsCount; + } else { + return selectedPostsCount >= postsCount; + } + }, + + @computed("selectedAllPosts", "model.postStream.isMegaTopic") + canSelectAll(selectedAllPosts, isMegaTopic) { + return isMegaTopic ? false : !selectedAllPosts; }, - canSelectAll: Ember.computed.not("selectedAllPosts"), canDeselectAll: Ember.computed.alias("selectedAllPosts"), @computed( diff --git a/app/assets/javascripts/discourse/templates/selected-posts.hbs b/app/assets/javascripts/discourse/templates/selected-posts.hbs index d4ac87ead3b..87bb29fe5df 100644 --- a/app/assets/javascripts/discourse/templates/selected-posts.hbs +++ b/app/assets/javascripts/discourse/templates/selected-posts.hbs @@ -1,7 +1,7 @@
{{count-i18n key="topic.multi_select.description" count=selectedPostsCount}}
{{#if canSelectAll}} - + {{/if}} {{#if canDeselectAll}} diff --git a/test/javascripts/acceptance/topic-test.js.es6 b/test/javascripts/acceptance/topic-test.js.es6 index 57cff8e85b1..1ac08cc3199 100644 --- a/test/javascripts/acceptance/topic-test.js.es6 +++ b/test/javascripts/acceptance/topic-test.js.es6 @@ -252,6 +252,11 @@ QUnit.test("selecting posts", async assert => { "it should show the multi select menu" ); + assert.ok( + exists(".select-all"), + "it should allow users to select all the posts" + ); + await click(".toggle-admin-menu"); assert.ok( diff --git a/test/javascripts/controllers/topic-test.js.es6 b/test/javascripts/controllers/topic-test.js.es6 index 0e3c4e72216..968c8d9f777 100644 --- a/test/javascripts/controllers/topic-test.js.es6 +++ b/test/javascripts/controllers/topic-test.js.es6 @@ -123,6 +123,16 @@ QUnit.test("selectedAllPosts", function(assert) { controller.get("selectedAllPosts"), "all posts (including filtered posts) are selected" ); + + model.setProperties({ + "postStream.isMegaTopic": true, + posts_count: 1 + }); + + assert.ok( + controller.get("selectedAllPosts"), + "it uses the topic's post count for megatopics" + ); }); QUnit.test("selectedPostsUsername", function(assert) {