diff --git a/app/assets/javascripts/discourse/controllers/site-map.js.es6 b/app/assets/javascripts/discourse/controllers/site-map.js.es6 index e654a3af720..5f5c97111a9 100644 --- a/app/assets/javascripts/discourse/controllers/site-map.js.es6 +++ b/app/assets/javascripts/discourse/controllers/site-map.js.es6 @@ -18,14 +18,14 @@ export default Ember.ArrayController.extend(Discourse.HasCurrentUser, { }.property(), categories: function() { - if (Discourse.SiteSettings.allow_uncategorized_topics) { - return Discourse.Category.list(); - } else { - // Exclude the uncategorized category if it's empty - return Discourse.Category.list().reject(function(c) { - return c.get('isUncategorizedCategory') && !Discourse.User.currentProp('staff'); - }); - } + var hideUncategorized = !Discourse.SiteSettings.allow_uncategorized_topics, + showSubcatList = Discourse.SiteSettings.show_subcategory_list, + isStaff = Discourse.User.currentProp('staff'); + return Discourse.Category.list().reject(function(c) { + if (showSubcatList && c.get('parent_category_id')) { return true; } + if (hideUncategorized && c.get('isUncategorizedCategory') && !isStaff) { return true; } + return false; + }); }.property(), actions: { diff --git a/test/javascripts/controllers/site_map_controller_test.js b/test/javascripts/controllers/site_map_controller_test.js index 5dbfdb5257a..ba601593dd9 100644 --- a/test/javascripts/controllers/site_map_controller_test.js +++ b/test/javascripts/controllers/site_map_controller_test.js @@ -72,7 +72,7 @@ test("categories", function() { var categoryListStub = ["category1", "category2"]; this.stub(Discourse.Category, "list").returns(categoryListStub); - equal(controller.get("categories"), categoryListStub, "returns the list of categories"); + deepEqual(controller.get("categories"), categoryListStub, "returns the list of categories"); }); test("toggleMobleView", function() {