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
This commit is contained in:
Alan Guo Xiang Tan 2022-10-17 12:08:15 +08:00 committed by GitHub
parent d1304ecb46
commit ae6549a6ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 2 deletions

View File

@ -31,5 +31,16 @@
{{/if}} {{/if}}
<Sidebar::Common::AllCategoriesSectionLink /> <Sidebar::Common::AllCategoriesSectionLink />
{{#if (and this.currentUser.admin (not this.hasDefaultSidebarCategories))}}
<Sidebar::SectionLink
@linkName="configure-default-sidebar-categories"
@content={{i18n "sidebar.sections.categories.configure_defaults"}}
@prefixType="icon"
@prefixValue="wrench"
@route="adminSiteSettingsCategory"
@model="sidebar"
@query={{hash filter="default_sidebar_categories"}} />
{{/if}}
</Sidebar::Section> </Sidebar::Section>
{{/if}} {{/if}}

View File

@ -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. * If a site has default sidebar categories configured, always show categories section for the user.
*/ */
get shouldDisplay() { get shouldDisplay() {
if (this.siteSettings.default_sidebar_categories.length > 0) { if (this.hasDefaultSidebarCategories) {
return true; return true;
} else { } else {
return this.categories.length > 0; return this.categories.length > 0;
} }
} }
get hasDefaultSidebarCategories() {
return this.siteSettings.default_sidebar_categories.length > 0;
}
@action @action
editTracked() { editTracked() {
this.router.transitionTo("preferences.sidebar", this.currentUser); this.router.transitionTo("preferences.sidebar", this.currentUser);

View File

@ -25,7 +25,7 @@ acceptance(
enable_sidebar: true, enable_sidebar: true,
}); });
needs.user(); needs.user({ admin: false });
test("uncategorized category is not shown", async function (assert) { test("uncategorized category is not shown", async function (assert) {
const categories = Site.current().categories; const categories = Site.current().categories;
@ -61,6 +61,7 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
needs.user({ needs.user({
sidebar_category_ids: [], sidebar_category_ids: [],
sidebar_tags: [], sidebar_tags: [],
admin: false,
}); });
needs.settings({ needs.settings({
@ -544,4 +545,24 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
initialCallbackCount 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"
);
});
}); });

View File

@ -4194,6 +4194,7 @@ en:
click_to_get_started: "Click here to get started." click_to_get_started: "Click here to get started."
header_link_text: "Categories" header_link_text: "Categories"
header_action_title: "edit your sidebar categories" header_action_title: "edit your sidebar categories"
configure_defaults: "Configure defaults"
community: community:
header_link_text: "Community" header_link_text: "Community"
header_action_title: "create a new topic" header_action_title: "create a new topic"