From ae6549a6ea78aee536c5096e10c10037ef69ff60 Mon Sep 17 00:00:00 2001 From: Alan Guo Xiang Tan Date: Mon, 17 Oct 2022 12:08:15 +0800 Subject: [PATCH] FEATURE: Add sidebar link for admin to configure default categories (#18595) Displays a sidebar section link to admin users when `default_sidebar_categories` site setting has not been configured for the site. Internal Ref: /t/73500 --- .../sidebar/user/categories-section.hbs | 11 +++++++++ .../sidebar/user/categories-section.js | 6 ++++- .../sidebar-user-categories-section-test.js | 23 ++++++++++++++++++- config/locales/client.en.yml | 1 + 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.hbs b/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.hbs index 4b09f94ee79..72708bf5f4d 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.hbs +++ b/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.hbs @@ -31,5 +31,16 @@ {{/if}} + + {{#if (and this.currentUser.admin (not this.hasDefaultSidebarCategories))}} + + {{/if}} {{/if}} diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.js b/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.js index a10320c1143..f20fc093b19 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.js +++ b/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.js @@ -49,13 +49,17 @@ export default class SidebarUserCategoriesSection extends SidebarCommonCategorie * If a site has default sidebar categories configured, always show categories section for the user. */ get shouldDisplay() { - if (this.siteSettings.default_sidebar_categories.length > 0) { + if (this.hasDefaultSidebarCategories) { return true; } else { return this.categories.length > 0; } } + get hasDefaultSidebarCategories() { + return this.siteSettings.default_sidebar_categories.length > 0; + } + @action editTracked() { this.router.transitionTo("preferences.sidebar", this.currentUser); diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js index 20a402d5350..e1c07c679e2 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js @@ -25,7 +25,7 @@ acceptance( enable_sidebar: true, }); - needs.user(); + needs.user({ admin: false }); test("uncategorized category is not shown", async function (assert) { const categories = Site.current().categories; @@ -61,6 +61,7 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) { needs.user({ sidebar_category_ids: [], sidebar_tags: [], + admin: false, }); needs.settings({ @@ -544,4 +545,24 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) { initialCallbackCount ); }); + + test("section link to admin site settings page when default sidebar categories have not been configured", async function (assert) { + setupUserSidebarCategories(); + updateCurrentUser({ admin: true }); + + await visit("/"); + + assert.ok( + exists(".sidebar-section-link-configure-default-sidebar-categories"), + "section link to configure default sidebar categories is shown" + ); + + await click(".sidebar-section-link-configure-default-sidebar-categories"); + + assert.strictEqual( + currentURL(), + "/admin/site_settings/category/all_results?filter=default_sidebar_categories", + "it links to the admin site settings page correctly" + ); + }); }); diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 3faf8f2d7ee..8b5311771f2 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -4194,6 +4194,7 @@ en: click_to_get_started: "Click here to get started." header_link_text: "Categories" header_action_title: "edit your sidebar categories" + configure_defaults: "Configure defaults" community: header_link_text: "Community" header_action_title: "create a new topic"