From 274e5f7a1f15e1244ce7039913036501d76ef8dc Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Thu, 20 Mar 2025 15:38:46 +1000 Subject: [PATCH] UX: Add theme settings and value transformers (#67) This commit adds the above for these core site settings: * search_experience * enable_welcome_banner Since for horizon we want better control of the default experience of these settings OOTB. See also https://github.com/discourse/discourse/pull/31917 --- .../api-initializers/{next-gen.gjs => horizon.gjs} | 10 ++++++++++ .../discourse/api-initializers/user-pallette.js | 6 ------ settings.yml | 11 +++++++++++ 3 files changed, 21 insertions(+), 6 deletions(-) rename javascripts/discourse/api-initializers/{next-gen.gjs => horizon.gjs} (50%) delete mode 100644 javascripts/discourse/api-initializers/user-pallette.js create mode 100644 settings.yml diff --git a/javascripts/discourse/api-initializers/next-gen.gjs b/javascripts/discourse/api-initializers/horizon.gjs similarity index 50% rename from javascripts/discourse/api-initializers/next-gen.gjs rename to javascripts/discourse/api-initializers/horizon.gjs index 0eee595..2af5325 100644 --- a/javascripts/discourse/api-initializers/next-gen.gjs +++ b/javascripts/discourse/api-initializers/horizon.gjs @@ -1,8 +1,18 @@ import { apiInitializer } from "discourse/lib/api"; import CustomColorHtmlClass from "../components/custom-color-html-class"; +import CustomUserPalette from "../components/custom-user-palette"; import ExperimentalScreen from "../components/experimental-screen"; export default apiInitializer("1.8.0", (api) => { api.renderInOutlet("above-main-container", ExperimentalScreen); api.renderInOutlet("above-main-container", CustomColorHtmlClass); + api.renderInOutlet("sidebar-footer-actions", CustomUserPalette); + + api.registerValueTransformer("site-setting-enable-welcome-banner", () => { + return settings.enable_welcome_banner; + }); + + api.registerValueTransformer("site-setting-search-experience", () => { + return settings.search_experience; + }); }); diff --git a/javascripts/discourse/api-initializers/user-pallette.js b/javascripts/discourse/api-initializers/user-pallette.js deleted file mode 100644 index 48f9f42..0000000 --- a/javascripts/discourse/api-initializers/user-pallette.js +++ /dev/null @@ -1,6 +0,0 @@ -import { apiInitializer } from "discourse/lib/api"; -import CustomUserPalette from "../components/custom-user-palette"; - -export default apiInitializer("1.8.0", (api) => { - api.renderInOutlet("sidebar-footer-actions", CustomUserPalette); -}); diff --git a/settings.yml b/settings.yml new file mode 100644 index 0000000..343fd3b --- /dev/null +++ b/settings.yml @@ -0,0 +1,11 @@ +enable_welcome_banner: + default: true + description: "Overrides the core `enable welcome banner` site setting" + +search_experience: + type: enum + default: search_field + choices: + - search_field + - search_icon + description: "Overrides the core `search experience` site setting"