From a702330ccdfa46a3e110f4df852f451975c51d30 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Tue, 21 Feb 2017 18:08:09 -0500 Subject: [PATCH] FEATURE: make show_subcategory_list a per-category setting --- .../discourse/controllers/composer.js.es6 | 11 +++++++---- .../controllers/navigation/category.js.es6 | 3 +-- .../javascripts/discourse/models/category.js.es6 | 3 ++- .../discourse/routes/build-category-route.js.es6 | 2 +- .../components/edit-category-settings.hbs | 9 +++++++++ .../discourse/widgets/hamburger-menu.js.es6 | 3 +-- app/controllers/categories_controller.rb | 1 + app/serializers/basic_category_serializer.rb | 3 ++- config/locales/client.en.yml | 1 + config/locales/server.ar.yml | 1 - config/locales/server.bs_BA.yml | 1 - config/locales/server.da.yml | 1 - config/locales/server.de.yml | 1 - config/locales/server.en.yml | 1 - config/locales/server.es.yml | 1 - config/locales/server.fa_IR.yml | 1 - config/locales/server.fi.yml | 1 - config/locales/server.fr.yml | 1 - config/locales/server.he.yml | 1 - config/locales/server.it.yml | 1 - config/locales/server.ja.yml | 1 - config/locales/server.ko.yml | 1 - config/locales/server.nl.yml | 1 - config/locales/server.pl_PL.yml | 1 - config/locales/server.pt.yml | 1 - config/locales/server.pt_BR.yml | 1 - config/locales/server.ro.yml | 1 - config/locales/server.ru.yml | 1 - config/locales/server.sk.yml | 1 - config/locales/server.sq.yml | 1 - config/locales/server.sv.yml | 1 - config/locales/server.te.yml | 1 - config/locales/server.tr_TR.yml | 1 - config/locales/server.uk.yml | 1 - config/locales/server.vi.yml | 1 - config/locales/server.zh_CN.yml | 1 - config/locales/server.zh_TW.yml | 1 - config/site_settings.yml | 3 --- ...4204_add_show_subcategory_list_to_categories.rb | 14 ++++++++++++++ test/javascripts/helpers/site-settings.js | 1 - 40 files changed, 39 insertions(+), 43 deletions(-) create mode 100644 db/migrate/20170221204204_add_show_subcategory_list_to_categories.rb diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index a9d77ba06b..13d3f291b9 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -563,14 +563,17 @@ export default Ember.Controller.extend({ return; } + this.setProperties({ showEditReason: false, editReason: null, scopedCategoryId: null }); + // If we show the subcategory list, scope the categories drop down to // the category we opened the composer with. - if (this.siteSettings.show_subcategory_list && opts.draftKey !== 'reply_as_new_topic') { - this.set('scopedCategoryId', opts.categoryId); + if (opts.categoryId && opts.draftKey !== 'reply_as_new_topic') { + const category = this.site.categories.findBy('id', opts.categoryId); + if (category && (category.get('show_subcategory_list') || category.get('parentCategory.show_subcategory_list'))) { + this.set('scopedCategoryId', opts.categoryId); + } } - this.setProperties({ showEditReason: false, editReason: null }); - // If we want a different draft than the current composer, close it and clear our model. if (composerModel && opts.draftKey !== composerModel.draftKey && diff --git a/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 b/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 index c3bcae7a96..3e6fc51210 100644 --- a/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 +++ b/app/assets/javascripts/discourse/controllers/navigation/category.js.es6 @@ -3,9 +3,8 @@ import NavigationDefaultController from 'discourse/controllers/navigation/defaul import { setting } from 'discourse/lib/computed'; export default NavigationDefaultController.extend({ - subcategoryListSetting: setting('show_subcategory_list'), showingParentCategory: Em.computed.none('category.parentCategory'), - showingSubcategoryList: Em.computed.and('subcategoryListSetting', 'showingParentCategory'), + showingSubcategoryList: Em.computed.and('category.show_subcategory_list', 'showingParentCategory'), @computed("showingSubcategoryList", "category", "noSubcategories") navItems(showingSubcategoryList, category, noSubcategories) { diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index b31f715b81..735fdda1a8 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -102,7 +102,8 @@ const Category = RestModel.extend({ allowed_tag_groups: this.get('allowed_tag_groups'), sort_order: this.get('sort_order'), sort_ascending: this.get('sort_ascending'), - topic_featured_link_allowed: this.get('topic_featured_link_allowed') + topic_featured_link_allowed: this.get('topic_featured_link_allowed'), + show_subcategory_list: this.get('show_subcategory_list') }, type: id ? 'PUT' : 'POST' }); diff --git a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 index 14bc77f8a5..b7b4167632 100644 --- a/app/assets/javascripts/discourse/routes/build-category-route.js.es6 +++ b/app/assets/javascripts/discourse/routes/build-category-route.js.es6 @@ -51,7 +51,7 @@ export default (filter, params) => { _createSubcategoryList(category) { this._categoryList = null; - if (Em.isNone(category.get('parentCategory')) && Discourse.SiteSettings.show_subcategory_list) { + if (Em.isNone(category.get('parentCategory')) && category.get('show_subcategory_list')) { return CategoryList.listForParent(this.store, category).then(list => this._categoryList = list); } diff --git a/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs b/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs index bf439c9e43..ed9c0689c2 100644 --- a/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs +++ b/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs @@ -19,6 +19,15 @@ +{{#unless category.parent_category_id}} +
+ +
+{{/unless}} +