mirror of
https://github.com/discourse/discourse.git
synced 2024-12-12 07:36:28 +08:00
70f7c0ee6f
This commit changes the API for registering the plugin config page nav configuration from a server-side to a JS one; there is no need for it to be server-side. It also makes some changes to allow for 2 different ways of displaying navigation for plugin pages, depending on complexity: * TOP - This is the best mode for simple plugins without a lot of different custom configuration pages, and it reuses the grey horizontal nav bar already used for admins. * SIDEBAR - This is better for more complex plugins; likely this won't be used in the near future, but it's readily available if needed There is a new AdminPluginConfigNavManager service too to manage which plugin the admin is actively viewing, otherwise we would have trouble hiding the main plugin nav for admins when viewing a single plugin.
29 lines
701 B
JavaScript
29 lines
701 B
JavaScript
import { tracked } from "@glimmer/tracking";
|
|
import Service, { service } from "@ember/service";
|
|
import {
|
|
configNavForPlugin,
|
|
PLUGIN_NAV_MODE_SIDEBAR,
|
|
PLUGIN_NAV_MODE_TOP,
|
|
} from "discourse/lib/admin-plugin-config-nav";
|
|
|
|
export default class AdminPluginNavManager extends Service {
|
|
@service currentUser;
|
|
@tracked currentPlugin;
|
|
|
|
get currentUserUsingAdminSidebar() {
|
|
return this.currentUser?.use_admin_sidebar;
|
|
}
|
|
|
|
get currentConfigNav() {
|
|
return configNavForPlugin(this.currentPlugin.id);
|
|
}
|
|
|
|
get isSidebarMode() {
|
|
return this.currentConfigNav.mode === PLUGIN_NAV_MODE_SIDEBAR;
|
|
}
|
|
|
|
get isTopMode() {
|
|
return this.currentConfigNav.mode === PLUGIN_NAV_MODE_TOP;
|
|
}
|
|
}
|