mirror of
https://github.com/discourse/discourse.git
synced 2025-02-05 19:11:13 +00:00
FIX: More header dropdown admin sidebar fixes (#27241)
Followup 73c6bb25937a5b6a4872f30126597e76ec6906e6 The admin sidebar was also disappearing on another child admin route (in this case the docker_manager plugin update page). Instead of relying on the route name which is flaky, we can set a boolean when the sidebar is forced in the root admin route, then turn it off when leaving admin.
This commit is contained in:
parent
078d363510
commit
979eca99d5
@ -4,6 +4,7 @@ import DiscourseURL from "discourse/lib/url";
|
|||||||
import DiscourseRoute from "discourse/routes/discourse";
|
import DiscourseRoute from "discourse/routes/discourse";
|
||||||
import I18n from "discourse-i18n";
|
import I18n from "discourse-i18n";
|
||||||
|
|
||||||
|
// DEPRECATED: (martin) This route is deprecated and will be removed in the near future.
|
||||||
export default class AdminRoute extends DiscourseRoute {
|
export default class AdminRoute extends DiscourseRoute {
|
||||||
@service siteSettings;
|
@service siteSettings;
|
||||||
@service currentUser;
|
@service currentUser;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { tracked } from "@glimmer/tracking";
|
import { tracked } from "@glimmer/tracking";
|
||||||
import { service } from "@ember/service";
|
import { service } from "@ember/service";
|
||||||
import { MAIN_PANEL } from "discourse/lib/sidebar/panels";
|
|
||||||
import DiscourseRoute from "discourse/routes/discourse";
|
import DiscourseRoute from "discourse/routes/discourse";
|
||||||
import I18n from "discourse-i18n";
|
import I18n from "discourse-i18n";
|
||||||
|
|
||||||
@ -31,7 +30,7 @@ export default class AdminRoute extends DiscourseRoute {
|
|||||||
|
|
||||||
if (this.adminSidebarStateManager.currentUserUsingAdminSidebar) {
|
if (this.adminSidebarStateManager.currentUserUsingAdminSidebar) {
|
||||||
if (!transition?.to.name.startsWith("admin")) {
|
if (!transition?.to.name.startsWith("admin")) {
|
||||||
this.sidebarState.setPanel(MAIN_PANEL);
|
this.adminSidebarStateManager.stopForcingAdminSidebar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
|
import { alias } from "@ember/object/computed";
|
||||||
import Service, { service } from "@ember/service";
|
import Service, { service } from "@ember/service";
|
||||||
import KeyValueStore from "discourse/lib/key-value-store";
|
import KeyValueStore from "discourse/lib/key-value-store";
|
||||||
import { ADMIN_PANEL } from "discourse/lib/sidebar/panels";
|
import { ADMIN_PANEL, MAIN_PANEL } from "discourse/lib/sidebar/panels";
|
||||||
|
|
||||||
export default class AdminSidebarStateManager extends Service {
|
export default class AdminSidebarStateManager extends Service {
|
||||||
@service sidebarState;
|
@service sidebarState;
|
||||||
@service currentUser;
|
@service currentUser;
|
||||||
|
@alias("sidebarState.currentUserUsingAdminSidebar")
|
||||||
|
currentUserUsingAdminSidebar;
|
||||||
|
@alias("sidebarState.isForcingAdminSidebar") isForcingAdminSidebar;
|
||||||
|
|
||||||
keywords = {};
|
keywords = {};
|
||||||
|
|
||||||
@ -37,10 +41,6 @@ export default class AdminSidebarStateManager extends Service {
|
|||||||
this.store.setObject({ key: "navConfig", value });
|
this.store.setObject({ key: "navConfig", value });
|
||||||
}
|
}
|
||||||
|
|
||||||
get currentUserUsingAdminSidebar() {
|
|
||||||
return this.currentUser?.use_admin_sidebar;
|
|
||||||
}
|
|
||||||
|
|
||||||
maybeForceAdminSidebar(opts = {}) {
|
maybeForceAdminSidebar(opts = {}) {
|
||||||
opts.onlyIfAlreadyActive ??= true;
|
opts.onlyIfAlreadyActive ??= true;
|
||||||
|
|
||||||
@ -48,6 +48,7 @@ export default class AdminSidebarStateManager extends Service {
|
|||||||
this.sidebarState.currentPanel?.key === ADMIN_PANEL;
|
this.sidebarState.currentPanel?.key === ADMIN_PANEL;
|
||||||
|
|
||||||
if (!this.currentUserUsingAdminSidebar) {
|
if (!this.currentUserUsingAdminSidebar) {
|
||||||
|
this.isForcingAdminSidebar = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,14 +59,21 @@ export default class AdminSidebarStateManager extends Service {
|
|||||||
if (isAdminSidebarActive) {
|
if (isAdminSidebarActive) {
|
||||||
return this.#forceAdminSidebar();
|
return this.#forceAdminSidebar();
|
||||||
} else {
|
} else {
|
||||||
|
this.isForcingAdminSidebar = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stopForcingAdminSidebar() {
|
||||||
|
this.sidebarState.setPanel(MAIN_PANEL);
|
||||||
|
this.isForcingAdminSidebar = false;
|
||||||
|
}
|
||||||
|
|
||||||
#forceAdminSidebar() {
|
#forceAdminSidebar() {
|
||||||
this.sidebarState.setPanel(ADMIN_PANEL);
|
this.sidebarState.setPanel(ADMIN_PANEL);
|
||||||
this.sidebarState.setSeparatedMode();
|
this.sidebarState.setSeparatedMode();
|
||||||
this.sidebarState.hideSwitchPanelButtons();
|
this.sidebarState.hideSwitchPanelButtons();
|
||||||
|
this.isForcingAdminSidebar = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -99,8 +99,8 @@ export default Controller.extend({
|
|||||||
|
|
||||||
// Always show sidebar for admin if user can see the admin sidbar
|
// Always show sidebar for admin if user can see the admin sidbar
|
||||||
if (
|
if (
|
||||||
this.router.currentRouteName.startsWith("admin") &&
|
this.sidebarState.isForcingAdminSidebar &&
|
||||||
this.currentUser?.use_admin_sidebar
|
this.sidebarState.currentUserUsingAdminSidebar
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ export default class SidebarState extends Service {
|
|||||||
@tracked mode = COMBINED_MODE;
|
@tracked mode = COMBINED_MODE;
|
||||||
@tracked displaySwitchPanelButtons = false;
|
@tracked displaySwitchPanelButtons = false;
|
||||||
@tracked filter = "";
|
@tracked filter = "";
|
||||||
|
@tracked isForcingAdminSidebar = false;
|
||||||
|
|
||||||
panels = panels;
|
panels = panels;
|
||||||
collapsedSections = new TrackedSet();
|
collapsedSections = new TrackedSet();
|
||||||
@ -122,9 +123,13 @@ export default class SidebarState extends Service {
|
|||||||
return this.currentPanelKey === MAIN_PANEL;
|
return this.currentPanelKey === MAIN_PANEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get currentUserUsingAdminSidebar() {
|
||||||
|
return this.currentUser?.use_admin_sidebar;
|
||||||
|
}
|
||||||
|
|
||||||
get adminSidebarAllowedWithLegacyNavigationMenu() {
|
get adminSidebarAllowedWithLegacyNavigationMenu() {
|
||||||
return (
|
return (
|
||||||
this.currentUser?.use_admin_sidebar &&
|
this.currentUserUsingAdminSidebar &&
|
||||||
this.siteSettings.navigation_menu === "header dropdown"
|
this.siteSettings.navigation_menu === "header dropdown"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user