diff --git a/app/assets/javascripts/discourse/app/components/sidebar.hbs b/app/assets/javascripts/discourse/app/components/sidebar.hbs index 6de60c3aceb..b1b130f45d1 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar.hbs +++ b/app/assets/javascripts/discourse/app/components/sidebar.hbs @@ -2,7 +2,8 @@ {{#if this.currentUser}} {{else}} - + {{/if}} + diff --git a/app/assets/javascripts/discourse/app/components/sidebar/anonymous/community-section.js b/app/assets/javascripts/discourse/app/components/sidebar/anonymous/community-section.js new file mode 100644 index 00000000000..faef94d5dc6 --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/sidebar/anonymous/community-section.js @@ -0,0 +1,24 @@ +import SidebarCommonCommunitySection from "discourse/components/sidebar/common/community-section"; +import EverythingSectionLink from "discourse/lib/sidebar/common/community-section/everything-section-link"; +import AboutSectionLink from "discourse/lib/sidebar/common/community-section/about-section-link"; +import FAQSectionLink from "discourse/lib/sidebar/common/community-section/faq-section-link"; +import GroupsSectionLink from "discourse/lib/sidebar/common/community-section/groups-section-link"; +import UsersSectionLink from "discourse/lib/sidebar/common/community-section/users-section-link"; +import BadgesSectionLink from "discourse/lib/sidebar/common/community-section/badges-section-link"; + +export default class SidebarAnonymousCommunitySection extends SidebarCommonCommunitySection { + constructor() { + super(...arguments); + + this.defaultMoreSectionLinks = [GroupsSectionLink, BadgesSectionLink]; + + this.defaultMoreSecondarySectionLinks = []; + + this.defaultMainSectionLinks = [ + EverythingSectionLink, + UsersSectionLink, + AboutSectionLink, + FAQSectionLink, + ]; + } +} diff --git a/app/assets/javascripts/discourse/app/components/sidebar/anonymous/sections.hbs b/app/assets/javascripts/discourse/app/components/sidebar/anonymous/sections.hbs index cc088f932db..68ea9dde5b3 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/anonymous/sections.hbs +++ b/app/assets/javascripts/discourse/app/components/sidebar/anonymous/sections.hbs @@ -1,6 +1,8 @@ diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/community-section.hbs b/app/assets/javascripts/discourse/app/components/sidebar/common/community-section.hbs similarity index 83% rename from app/assets/javascripts/discourse/app/components/sidebar/user/community-section.hbs rename to app/assets/javascripts/discourse/app/components/sidebar/common/community-section.hbs index f709e645313..f66246864ce 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/user/community-section.hbs +++ b/app/assets/javascripts/discourse/app/components/sidebar/common/community-section.hbs @@ -1,8 +1,8 @@ {{#each this.sectionLinks as |sectionLink|}} diff --git a/app/assets/javascripts/discourse/app/components/sidebar/common/community-section.js b/app/assets/javascripts/discourse/app/components/sidebar/common/community-section.js new file mode 100644 index 00000000000..333a29f5d46 --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/sidebar/common/community-section.js @@ -0,0 +1,66 @@ +import Component from "@glimmer/component"; +import { inject as service } from "@ember/service"; + +import { + customSectionLinks, + secondaryCustomSectionLinks, +} from "discourse/lib/sidebar/custom-community-section-links"; + +export default class SidebarCommunitySection extends Component { + @service router; + @service topicTrackingState; + @service currentUser; + @service appEvents; + @service siteSettings; + + // Override in child + defaultMainSectionLinks = []; + defaultAdminMainSectionLinks = []; + defaultMoreSectionLinks = []; + defaultMoreSecondarySectionLinks = []; + headerActionsIcon; + headerActions; + + get moreSectionLinks() { + return [...this.defaultMoreSectionLinks, ...customSectionLinks].map( + (sectionLinkClass) => { + return this.#initializeSectionLink(sectionLinkClass); + } + ); + } + + get moreSecondarySectionLinks() { + return [ + ...this.defaultMoreSecondarySectionLinks, + ...secondaryCustomSectionLinks, + ].map((sectionLinkClass) => { + return this.#initializeSectionLink(sectionLinkClass); + }); + } + + get mainSectionLinks() { + return this.currentUser?.staff + ? [...this.defaultMainSectionLinks, ...this.defaultAdminMainSectionLinks] + : [...this.defaultMainSectionLinks]; + } + + get sectionLinks() { + return this.mainSectionLinks.map((sectionLinkClass) => { + return this.#initializeSectionLink(sectionLinkClass); + }); + } + + willDestroy() { + this.sectionLinks.forEach((sectionLink) => sectionLink.teardown()); + } + + #initializeSectionLink(sectionLinkClass) { + return new sectionLinkClass({ + topicTrackingState: this.topicTrackingState, + currentUser: this.currentUser, + appEvents: this.appEvents, + router: this.router, + siteSettings: this.siteSettings, + }); + } +} diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/community-section.js b/app/assets/javascripts/discourse/app/components/sidebar/user/community-section.js index c219723f585..2c46db8a403 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/user/community-section.js +++ b/app/assets/javascripts/discourse/app/components/sidebar/user/community-section.js @@ -1,70 +1,50 @@ -import Component from "@glimmer/component"; +import I18n from "I18n"; + import Composer from "discourse/models/composer"; import { getOwner } from "discourse-common/lib/get-owner"; import PermissionType from "discourse/models/permission-type"; -import { - customSectionLinks, - secondaryCustomSectionLinks, -} from "discourse/lib/sidebar/user/custom-community-section-links"; -import EverythingSectionLink from "discourse/lib/sidebar/user/community-section/everything-section-link"; +import EverythingSectionLink from "discourse/lib/sidebar/common/community-section/everything-section-link"; import TrackedSectionLink from "discourse/lib/sidebar/user/community-section/tracked-section-link"; import MyPostsSectionLink from "discourse/lib/sidebar/user/community-section/my-posts-section-link"; -import GroupsSectionLink from "discourse/lib/sidebar/user/community-section/groups-section-link"; -import UsersSectionLink from "discourse/lib/sidebar/user/community-section/users-section-link"; -import AboutSectionLink from "discourse/lib/sidebar/user/community-section/about-section-link"; -import FAQSectionLink from "discourse/lib/sidebar/user/community-section/faq-section-link"; +import GroupsSectionLink from "discourse/lib/sidebar/common/community-section/groups-section-link"; +import UsersSectionLink from "discourse/lib/sidebar/common/community-section/users-section-link"; +import AboutSectionLink from "discourse/lib/sidebar/common/community-section/about-section-link"; +import FAQSectionLink from "discourse/lib/sidebar/common/community-section/faq-section-link"; import AdminSectionLink from "discourse/lib/sidebar/user/community-section/admin-section-link"; -import BadgesSectionLink from "discourse/lib/sidebar/user/community-section/badges-section-link"; +import BadgesSectionLink from "discourse/lib/sidebar/common/community-section/badges-section-link"; +import SidebarCommonCommunitySection from "discourse/components/sidebar/common/community-section"; -import { inject as service } from "@ember/service"; import { action } from "@ember/object"; import { next } from "@ember/runloop"; -const MAIN_SECTION_LINKS = [ - EverythingSectionLink, - TrackedSectionLink, - MyPostsSectionLink, -]; +export default class SidebarUserCommunitySection extends SidebarCommonCommunitySection { + constructor() { + super(...arguments); -const ADMIN_MAIN_SECTION_LINKS = [AdminSectionLink]; + this.defaultMoreSectionLinks = [ + GroupsSectionLink, + UsersSectionLink, + BadgesSectionLink, + ]; -const MORE_SECTION_LINKS = [ - GroupsSectionLink, - UsersSectionLink, - BadgesSectionLink, -]; -const MORE_SECONDARY_SECTION_LINKS = [AboutSectionLink, FAQSectionLink]; + this.defaultMoreSecondarySectionLinks = [AboutSectionLink, FAQSectionLink]; -export default class SidebarUserCommunitySection extends Component { - @service router; - @service topicTrackingState; - @service currentUser; - @service appEvents; - @service siteSettings; + this.defaultMainSectionLinks = [ + EverythingSectionLink, + TrackedSectionLink, + MyPostsSectionLink, + ]; - moreSectionLinks = [...MORE_SECTION_LINKS, ...customSectionLinks].map( - (sectionLinkClass) => { - return this.#initializeSectionLink(sectionLinkClass); - } - ); + this.defaultAdminMainSectionLinks = [AdminSectionLink]; - moreSecondarySectionLinks = [ - ...MORE_SECONDARY_SECTION_LINKS, - ...secondaryCustomSectionLinks, - ].map((sectionLinkClass) => { - return this.#initializeSectionLink(sectionLinkClass); - }); + this.headerActionsIcon = "plus"; - #mainSectionLinks = this.currentUser.staff - ? [...MAIN_SECTION_LINKS, ...ADMIN_MAIN_SECTION_LINKS] - : [...MAIN_SECTION_LINKS]; - - sectionLinks = this.#mainSectionLinks.map((sectionLinkClass) => { - return this.#initializeSectionLink(sectionLinkClass); - }); - - willDestroy() { - this.sectionLinks.forEach((sectionLink) => sectionLink.teardown()); + this.headerActions = [ + { + action: this.composeTopic, + title: I18n.t("sidebar.sections.community.header_action_title"), + }, + ]; } @action @@ -85,14 +65,4 @@ export default class SidebarUserCommunitySection extends Component { getOwner(this).lookup("controller:composer").open(composerArgs); }); } - - #initializeSectionLink(sectionLinkClass) { - return new sectionLinkClass({ - topicTrackingState: this.topicTrackingState, - currentUser: this.currentUser, - appEvents: this.appEvents, - router: this.router, - siteSettings: this.siteSettings, - }); - } } diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/sections.js b/app/assets/javascripts/discourse/app/components/sidebar/user/sections.js index dfbda910117..36428e17a8b 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/user/sections.js +++ b/app/assets/javascripts/discourse/app/components/sidebar/user/sections.js @@ -1,5 +1,5 @@ import Component from "@glimmer/component"; -import { customSections as sidebarCustomSections } from "discourse/lib/sidebar/user/custom-sections"; +import { customSections as sidebarCustomSections } from "discourse/lib/sidebar/custom-sections"; import { getOwner, setOwner } from "@ember/application"; import { inject as service } from "@ember/service"; diff --git a/app/assets/javascripts/discourse/app/lib/plugin-api.js b/app/assets/javascripts/discourse/app/lib/plugin-api.js index 6d7e232645f..bc36114503f 100644 --- a/app/assets/javascripts/discourse/app/lib/plugin-api.js +++ b/app/assets/javascripts/discourse/app/lib/plugin-api.js @@ -95,8 +95,8 @@ import { import { CUSTOM_USER_SEARCH_OPTIONS } from "select-kit/components/user-chooser"; import { downloadCalendar } from "discourse/lib/download-calendar"; import { consolePrefix } from "discourse/lib/source-identifier"; -import { addSectionLink as addCustomCommunitySectionLink } from "discourse/lib/sidebar/user/custom-community-section-links"; -import { addSidebarSection } from "discourse/lib/sidebar/user/custom-sections"; +import { addSectionLink as addCustomCommunitySectionLink } from "discourse/lib/sidebar/custom-community-section-links"; +import { addSidebarSection } from "discourse/lib/sidebar/custom-sections"; import DiscourseURL from "discourse/lib/url"; import { registerNotificationTypeRenderer } from "discourse/lib/notification-types-manager"; import { registerUserMenuTab } from "discourse/lib/user-menu/tab"; diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/base-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/base-community-section-link.js similarity index 94% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/base-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/base-community-section-link.js index 7bb26101ddb..65af90de12e 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/base-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/base-community-section-link.js @@ -1,7 +1,7 @@ /** - * Base class representing a sidebar topics section link interface. + * Base class representing a sidebar communtiy section link interface. */ -export default class BaseSectionLink { +export default class BaseCommunitySectionLink { constructor({ topicTrackingState, currentUser, diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/base-custom-sidebar-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/base-custom-sidebar-section-link.js similarity index 100% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/base-custom-sidebar-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/base-custom-sidebar-section-link.js diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/base-custom-sidebar-section.js b/app/assets/javascripts/discourse/app/lib/sidebar/base-custom-sidebar-section.js similarity index 100% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/base-custom-sidebar-section.js rename to app/assets/javascripts/discourse/app/lib/sidebar/base-custom-sidebar-section.js diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/about-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/about-section-link.js similarity index 75% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/about-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/about-section-link.js index 8952425c951..0e7ff66016f 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/about-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/about-section-link.js @@ -1,6 +1,6 @@ import I18n from "I18n"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; export default class AboutSectionLink extends BaseSectionLink { get name() { diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/badges-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/badges-section-link.js similarity index 75% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/badges-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/badges-section-link.js index 2db8d3575b0..7ec4d209ad8 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/badges-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/badges-section-link.js @@ -1,6 +1,6 @@ import I18n from "I18n"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; export default class BadgesSectionLink extends BaseSectionLink { get name() { diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/everything-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/everything-section-link.js similarity index 80% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/everything-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/everything-section-link.js index 1f1793497b0..8071140d03a 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/everything-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/everything-section-link.js @@ -2,7 +2,7 @@ import I18n from "I18n"; import { tracked } from "@glimmer/tracking"; import { bind } from "discourse-common/utils/decorators"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; export default class EverythingSectionLink extends BaseSectionLink { @tracked totalUnread = 0; @@ -12,15 +12,19 @@ export default class EverythingSectionLink extends BaseSectionLink { constructor() { super(...arguments); - this.callbackId = this.topicTrackingState.onStateChange( - this._refreshCounts - ); + if (this.currentUser) { + this.callbackId = this.topicTrackingState.onStateChange( + this._refreshCounts + ); - this._refreshCounts(); + this._refreshCounts(); + } } teardown() { - this.topicTrackingState.offStateChange(this.callbackId); + if (this.callbackId) { + this.topicTrackingState.offStateChange(this.callbackId); + } } @bind diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/faq-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/faq-section-link.js similarity index 77% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/faq-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/faq-section-link.js index 4a496ffc10e..2fe5d646759 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/faq-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/faq-section-link.js @@ -1,6 +1,6 @@ import I18n from "I18n"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; export default class FAQSectionLink extends BaseSectionLink { get name() { diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/groups-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/groups-section-link.js similarity index 79% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/groups-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/groups-section-link.js index ddc97a5dd7e..d6ad8b78cfd 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/groups-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/groups-section-link.js @@ -1,6 +1,6 @@ import I18n from "I18n"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; export default class GroupsSectionLink extends BaseSectionLink { get name() { diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/users-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/users-section-link.js similarity index 78% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/users-section-link.js rename to app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/users-section-link.js index b98ca6ea229..019eaddb2a6 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/users-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/common/community-section/users-section-link.js @@ -1,6 +1,6 @@ import I18n from "I18n"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; export default class UsersSectionLink extends BaseSectionLink { get name() { diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/custom-community-section-links.js b/app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js similarity index 87% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/custom-community-section-links.js rename to app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js index 09ae8bb7d22..b18cccd0fdf 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/custom-community-section-links.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js @@ -1,4 +1,4 @@ -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseCommunitySectionLink from "discourse/lib/sidebar/base-community-section-link"; export let customSectionLinks = []; export let secondaryCustomSectionLinks = []; @@ -44,8 +44,8 @@ class RouteInfoHelper { * Appends an additional section link to the Community section under the "More..." links drawer. * * @callback addSectionLinkCallback - * @param {BaseSectionLink} baseSectionLink Factory class to inherit from. - * @returns {BaseSectionLink} A class that extends BaseSectionLink. + * @param {BaseCommunitySectionLink} baseCommunitySectionLink Factory class to inherit from. + * @returns {BaseCommunitySectionLink} A class that extends BaseCommunitySectionLink. * * @param {(addSectionLinkCallback|Object)} args - A callback function or an Object. * @param {string} args.name - The name of the link. Needs to be dasherized and lowercase. @@ -59,9 +59,9 @@ export function addSectionLink(args, secondary) { const links = secondary ? secondaryCustomSectionLinks : customSectionLinks; if (typeof args === "function") { - links.push(args.call(this, BaseSectionLink)); + links.push(args.call(this, BaseCommunitySectionLink)); } else { - const klass = class extends BaseSectionLink { + const klass = class extends BaseCommunitySectionLink { constructor() { super(...arguments); diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/custom-sections.js b/app/assets/javascripts/discourse/app/lib/sidebar/custom-sections.js similarity index 70% rename from app/assets/javascripts/discourse/app/lib/sidebar/user/custom-sections.js rename to app/assets/javascripts/discourse/app/lib/sidebar/custom-sections.js index 141f8092948..2284ca57fa2 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/custom-sections.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/custom-sections.js @@ -1,5 +1,5 @@ -import BaseCustomSidebarSection from "discourse/lib/sidebar/user/base-custom-sidebar-section"; -import BaseCustomSidebarSectionLink from "discourse/lib/sidebar/user/base-custom-sidebar-section-link"; +import BaseCustomSidebarSection from "discourse/lib/sidebar/base-custom-sidebar-section"; +import BaseCustomSidebarSectionLink from "discourse/lib/sidebar/base-custom-sidebar-section-link"; export const customSections = []; diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/admin-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/admin-section-link.js index 093e4360d99..2a1158e071e 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/admin-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/admin-section-link.js @@ -1,6 +1,6 @@ import I18n from "I18n"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; export default class AdminSectionLink extends BaseSectionLink { get name() { diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/my-posts-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/my-posts-section-link.js index 2caa96c6475..3f59055c405 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/my-posts-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/my-posts-section-link.js @@ -1,7 +1,7 @@ import I18n from "I18n"; import { tracked } from "@glimmer/tracking"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; const USER_DRAFTS_CHANGED_EVENT = "user-drafts:changed"; diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/tracked-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/tracked-section-link.js index 993efbc4880..6b89cf81299 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/tracked-section-link.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/user/community-section/tracked-section-link.js @@ -2,7 +2,7 @@ import I18n from "I18n"; import { tracked } from "@glimmer/tracking"; import { bind } from "discourse-common/utils/decorators"; -import BaseSectionLink from "discourse/lib/sidebar/user/community-section/base-section-link"; +import BaseSectionLink from "discourse/lib/sidebar/base-community-section-link"; import { isTrackedTopic } from "discourse/lib/topic-list-tracked-filter"; export default class TrackedSectionLink extends BaseSectionLink { diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-anonymous-community-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-anonymous-community-section-test.js new file mode 100644 index 00000000000..8d05fd766bb --- /dev/null +++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-anonymous-community-section-test.js @@ -0,0 +1,69 @@ +import I18n from "I18n"; + +import { test } from "qunit"; + +import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers"; +import { click, visit } from "@ember/test-helpers"; + +acceptance("Sidebar - Anonymous user - Community Section", function (needs) { + needs.settings({ + enable_experimental_sidebar_hamburger: true, + enable_sidebar: true, + }); + + test("everything, users, about and FAQ section links are shown by default ", async function (assert) { + await visit("/"); + + const sectionLinks = queryAll( + ".sidebar-section-community .sidebar-section-link" + ); + + assert.strictEqual( + sectionLinks[0].textContent.trim(), + I18n.t("sidebar.sections.community.links.everything.content"), + "displays the everything section link first" + ); + + assert.strictEqual( + sectionLinks[1].textContent.trim(), + I18n.t("sidebar.sections.community.links.users.content"), + "displays the users section link second" + ); + + assert.strictEqual( + sectionLinks[2].textContent.trim(), + I18n.t("about.simple_title"), + "displays the about section link third" + ); + + assert.strictEqual( + sectionLinks[3].textContent.trim(), + I18n.t("faq"), + "displays the FAQ section link last" + ); + }); + + test("groups and badges section links are shown in more...", async function (assert) { + await visit("/"); + + await click( + ".sidebar-section-community .sidebar-more-section-links-details-summary" + ); + + const sectionLinks = queryAll( + ".sidebar-more-section-links-details-content-main .sidebar-section-link" + ); + + assert.strictEqual( + sectionLinks[0].textContent.trim(), + I18n.t("sidebar.sections.community.links.groups.content"), + "displays the groups section link first" + ); + + assert.strictEqual( + sectionLinks[1].textContent.trim(), + I18n.t("badges.title"), + "displays the badges section link second" + ); + }); +}); diff --git a/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js b/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js index 8e62285b85f..741a8c23208 100644 --- a/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js +++ b/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js @@ -62,7 +62,7 @@ import { setTestPresence, } from "discourse/lib/user-presence"; import PreloadStore from "discourse/lib/preload-store"; -import { resetDefaultSectionLinks as resetTopicsSectionLinks } from "discourse/lib/sidebar/user/custom-community-section-links"; +import { resetDefaultSectionLinks as resetTopicsSectionLinks } from "discourse/lib/sidebar/custom-community-section-links"; import { clearBlockDecorateCallbacks, clearTagDecorateCallbacks, @@ -71,7 +71,7 @@ import { import { clearTagsHtmlCallbacks } from "discourse/lib/render-tags"; import { clearToolbarCallbacks } from "discourse/components/d-editor"; import { clearExtraHeaderIcons } from "discourse/widgets/header"; -import { resetSidebarSection } from "discourse/lib/sidebar/user/custom-sections"; +import { resetSidebarSection } from "discourse/lib/sidebar/custom-sections"; import { resetNotificationTypeRenderers } from "discourse/lib/notification-types-manager"; import { resetUserMenuTabs } from "discourse/lib/user-menu/tab"; import { reset as resetLinkLookup } from "discourse/lib/link-lookup";