From 7045ac189dbfdb7c41fe369aa8f7bb6a58edbc52 Mon Sep 17 00:00:00 2001 From: Keegan George Date: Mon, 2 Mar 2026 14:05:48 -0800 Subject: [PATCH 001/565] DEV: add modifier for site setting data and outlets (#38133) This update adds a modifier so plugins can modify site setting data before it's returned to the admin UI as well as plugin outlets for site settings. ```ruby register_modifier(:site_setting_result) do |opts| if opts[:setting] == :some_setting opts[:disabled] = true opts[:custom_data] = { reason: "feature_not_available" } end opts end ``` --------- Co-authored-by: Martin Brennan --- .../admin/components/site-setting.gjs | 24 ++++++++++++++++--- lib/site_setting_extension.rb | 2 +- spec/lib/site_setting_extension_spec.rb | 13 ++++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/frontend/discourse/admin/components/site-setting.gjs b/frontend/discourse/admin/components/site-setting.gjs index d63e07b7b0f66..5179ac0afdf80 100644 --- a/frontend/discourse/admin/components/site-setting.gjs +++ b/frontend/discourse/admin/components/site-setting.gjs @@ -16,8 +16,10 @@ import JobStatus from "discourse/admin/components/site-settings/job-status"; import SiteSetting from "discourse/admin/models/site-setting"; import DButton from "discourse/components/d-button"; import JsonSchemaEditorModal from "discourse/components/modal/json-schema-editor"; +import PluginOutlet from "discourse/components/plugin-outlet"; import basePath from "discourse/helpers/base-path"; import icon from "discourse/helpers/d-icon"; +import lazyHash from "discourse/helpers/lazy-hash"; import { uniqueItemsFromArray } from "discourse/lib/array-tools"; import { bind } from "discourse/lib/decorators"; import { deepEqual } from "discourse/lib/object"; @@ -290,8 +292,12 @@ export default class SiteSettingComponent extends Component { return this.setting.staffLogFilter; } + get isDisabled() { + return this.setting.themeable || this.setting.disabled; + } + get canUpdate() { - if (this.setting.themeable) { + if (this.isDisabled) { return false; } @@ -416,7 +422,10 @@ export default class SiteSettingComponent extends Component {