From dd66a80ab0d7fd3f1e1b4b8f500505091ed222e6 Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 13 Feb 2025 14:55:56 +1000 Subject: [PATCH] DEV: Plugin link fixes and enhancements, ship plugin desc to client --- .../services/admin-palette-data-source.js | 27 ++++++++++++------- .../app/lib/sidebar/admin-sidebar.js | 6 ++--- lib/application_layout_preloader.rb | 1 + plugins/chat/plugin.rb | 2 +- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/admin/addon/services/admin-palette-data-source.js b/app/assets/javascripts/admin/addon/services/admin-palette-data-source.js index f243c68981d..329ed7986f1 100644 --- a/app/assets/javascripts/admin/addon/services/admin-palette-data-source.js +++ b/app/assets/javascripts/admin/addon/services/admin-palette-data-source.js @@ -1,4 +1,5 @@ import Service, { service } from "@ember/service"; +import { adminRouteValid } from "discourse/lib/admin-utilities"; import { ajax } from "discourse/lib/ajax"; import escapeRegExp from "discourse/lib/escape-regexp"; import getURL from "discourse/lib/get-url"; @@ -64,15 +65,25 @@ export default class AdminPaletteDataSource extends Service { label.toLowerCase(), type: "page", icon: link.icon, - description: link.description ? i18n(link.description) : "", + description: link.description + ? link.description.includes(" ") + ? link.description + : i18n(link.description) + : "", }); }); }); - // TODO (martin) Probably hash these with the plugin name as key - const visiblePlugins = (PreloadStore.get("visiblePlugins") || []).filter( - (plugin) => plugin.admin_route && plugin.enabled - ); + const plugins = {}; + (PreloadStore.get("visiblePlugins") || {}).forEach((plugin) => { + if ( + plugin.admin_route && + plugin.enabled && + adminRouteValid(this.router, plugin.admin_route) + ) { + plugins[plugin.name] = plugin; + } + }); ajax("/admin/palette/settings.json").then((result) => { result.forEach((setting) => { // TODO: (martin) Might want to use the sidebar link name for this instead of the @@ -100,10 +111,8 @@ export default class AdminPaletteDataSource extends Service { let url; if (setting.plugin) { - const plugin = visiblePlugins.find( - (visiblePlugin) => visiblePlugin.name === setting.plugin - ); - if (plugin && plugin.admin_route) { + const plugin = plugins[setting.plugin]; + if (plugin) { url = plugin.admin_route.use_new_show_route ? this.router.urlFor( `adminPlugins.show.settings`, diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js b/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js index 283f7fd264a..9a608644a40 100644 --- a/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js +++ b/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js @@ -84,9 +84,8 @@ class SidebarAdminSectionLink extends BaseCustomSidebarSectionLink { // for the plugin ID has its own nested routes defined in the plugin. if (this.router.currentRoute.name === "adminPlugins.show.settings") { if ( - this.adminSidebarNavLink.route?.includes( - this.router.currentRoute.parent.params.plugin_id - ) + this.adminSidebarNavLink.route?.split(".").last === + this.router.currentRoute.parent.params.plugin_id ) { return this.router.currentRoute.name; } @@ -273,6 +272,7 @@ function pluginAdminRouteLinks(router) { label: plugin.admin_route.label, text: plugin.humanized_name, icon: "gear", + description: plugin.description, }; }); } diff --git a/lib/application_layout_preloader.rb b/lib/application_layout_preloader.rb index 466e0d21424..a4801274413 100644 --- a/lib/application_layout_preloader.rb +++ b/lib/application_layout_preloader.rb @@ -101,6 +101,7 @@ class ApplicationLayoutPreloader humanized_name: plugin.humanized_name, admin_route: plugin.full_admin_route, enabled: plugin.enabled?, + description: plugin.metadata.about, } end, ) diff --git a/plugins/chat/plugin.rb b/plugins/chat/plugin.rb index 5e83bb35171..312b9d358fa 100644 --- a/plugins/chat/plugin.rb +++ b/plugins/chat/plugin.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # name: chat -# about: Adds chat functionality to your site so it can natively support both long-form and short-form communication needs of your online community. +# about: Adds chat functionality to your site so it can natively support both long-form and short-form communication needs of your online community # meta_topic_id: 230881 # version: 0.4 # authors: Kane York, Mark VanLandingham, Martin Brennan, Joffrey Jaffeux