From 9afb0b29f8bc22597b8eb48d8aace3bad16d5c0e Mon Sep 17 00:00:00 2001 From: Krzysztof Kotlarek Date: Thu, 14 Mar 2024 12:28:08 +1100 Subject: [PATCH] FEATURE: filter additional keywords for the sidebar (#26148) With the new admin sidebar restructure, we have a link to "Installed plugins". We would like to ensure that when the admin is searching for a plugin name like "akismet" or "automation" this link will be visible. Also when entering the plugins page, related plugins should be highlighted. --- .../admin-config-area-sidebar-experiment.js | 6 +- .../components/admin-plugins-list-item.gjs | 18 +++++- .../admin/addon/models/admin-plugin.js | 8 ++- .../javascripts/admin/addon/routes/admin.js | 10 ++++ ...ager.js => admin-sidebar-state-manager.js} | 5 +- .../app/components/sidebar/api-section.js | 8 ++- .../app/lib/sidebar/admin-sidebar.js | 60 +++++++++++++------ .../tests/acceptance/admin-plugins-test.js | 2 +- .../acceptance/admin-sidebar-section-test.js | 12 ++-- .../stylesheets/common/admin/plugins.scss | 10 +++- app/controllers/application_controller.rb | 14 ++++- .../requests/application_controller_spec.rb | 18 ++++-- spec/requests/application_controller_spec.rb | 6 +- spec/system/admin_plugins_list_spec.rb | 4 +- spec/system/admin_sidebar_navigation_spec.rb | 13 ++++ 15 files changed, 150 insertions(+), 44 deletions(-) rename app/assets/javascripts/admin/addon/services/{admin-sidebar-experiment-state-manager.js => admin-sidebar-state-manager.js} (62%) diff --git a/app/assets/javascripts/admin/addon/components/admin-config-area-sidebar-experiment.js b/app/assets/javascripts/admin/addon/components/admin-config-area-sidebar-experiment.js index 1425896d195..14e46c70eed 100644 --- a/app/assets/javascripts/admin/addon/components/admin-config-area-sidebar-experiment.js +++ b/app/assets/javascripts/admin/addon/components/admin-config-area-sidebar-experiment.js @@ -12,7 +12,7 @@ import { ADMIN_PANEL } from "discourse/lib/sidebar/panels"; // TODO (martin) (2024-02-01) Remove this experimental UI. export default class AdminConfigAreaSidebarExperiment extends Component { - @service adminSidebarExperimentStateManager; + @service adminSidebarStateManager; @service toasts; @service router; @tracked editedNavConfig; @@ -46,7 +46,7 @@ export default class AdminConfigAreaSidebarExperiment extends Component { @action loadDefaultNavConfig() { - const savedConfig = this.adminSidebarExperimentStateManager.navConfig; + const savedConfig = this.adminSidebarStateManager.navConfig; this.editedNavConfig = savedConfig ? JSON.stringify(savedConfig, null, 2) : this.defaultAdminNav; @@ -116,7 +116,7 @@ export default class AdminConfigAreaSidebarExperiment extends Component { } #saveConfig(config) { - this.adminSidebarExperimentStateManager.navConfig = config; + this.adminSidebarStateManager.navConfig = config; resetPanelSections( ADMIN_PANEL, useAdminNavConfig(config), diff --git a/app/assets/javascripts/admin/addon/components/admin-plugins-list-item.gjs b/app/assets/javascripts/admin/addon/components/admin-plugins-list-item.gjs index 7c90536bc4b..422c92ff82a 100644 --- a/app/assets/javascripts/admin/addon/components/admin-plugins-list-item.gjs +++ b/app/assets/javascripts/admin/addon/components/admin-plugins-list-item.gjs @@ -14,6 +14,7 @@ import PluginCommitHash from "./plugin-commit-hash"; export default class AdminPluginsListItem extends Component { @service session; @service currentUser; + @service sidebarState; @action async togglePluginEnabled(plugin) { @@ -30,9 +31,22 @@ export default class AdminPluginsListItem extends Component { } } + get isAdminSearchFiltered() { + if (!this.sidebarState.filter) { + return false; + } + return this.args.plugin.nameTitleizedLower.match(this.sidebarState.filter); + } +