From 4d99c839b6032808c153df1aed752d1a470cb190 Mon Sep 17 00:00:00 2001 From: Gabriel Grubba <70247653+Grubba27@users.noreply.github.com> Date: Tue, 13 May 2025 14:30:24 -0300 Subject: [PATCH] FEATURE: porting type object to site settings (#32706) --- .../editor.gjs | 34 +- .../editor/child-tree-node.gjs | 4 +- .../editor/child-tree.gjs | 10 +- .../editor/tree-node.gjs | 8 +- .../editor/tree.gjs | 12 +- .../field-input-description.gjs | 0 .../field.gjs | 18 +- .../number-field.gjs | 10 +- .../types/boolean.gjs | 4 +- .../types/categories.gjs | 6 +- .../types/enum.gjs | 4 +- .../components/schema-setting/types/float.gjs | 9 + .../types/groups.gjs | 6 +- .../schema-setting/types/integer.gjs | 10 + .../types/models.gjs | 4 +- .../types/string.gjs | 8 +- .../types/tags.gjs | 6 +- .../schema-theme-setting/types/float.gjs | 9 - .../schema-theme-setting/types/integer.gjs | 10 - .../admin/addon/mixins/setting-component.js | 8 + .../admin/addon/models/site-setting.js | 12 +- .../admin/addon/routes/admin-route-map.js | 2 +- .../admin/addon/routes/admin-schema.js | 32 + .../admin/addon/templates/admin-schema.gjs | 25 + .../customize-themes-show-schema.gjs | 15 +- .../fixtures/theme-setting-schema-data.js | 16 +- .../editor-test.gjs | 775 ++++++++++++++++-- app/assets/stylesheets/admin/admin_base.scss | 3 +- ...schema.scss => customize_show_schema.scss} | 2 +- ...editor.scss => schema_setting_editor.scss} | 18 +- .../admin/site_settings_controller.rb | 4 +- config/locales/client.en.yml | 50 +- config/locales/server.en.yml | 1 + config/routes.rb | 1 + ...rb => schema_settings_object_validator.rb} | 10 +- lib/site_settings/type_supervisor.rb | 15 +- lib/theme_settings_manager/objects.rb | 2 +- lib/theme_settings_validator.rb | 2 +- lib/validators/objects_setting_validator.rb | 31 + .../lib/site_settings/type_supervisor_spec.rb | 57 ++ .../theme_settings_object_validator_spec.rb | 2 +- ...diting_objects_typed_theme_setting_spec.rb | 2 +- .../admin_objects_theme_setting_editor.rb | 4 +- 43 files changed, 1049 insertions(+), 212 deletions(-) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/editor.gjs (89%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/editor/child-tree-node.gjs (71%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/editor/child-tree.gjs (78%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/editor/tree-node.gjs (87%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/editor/tree.gjs (70%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/field-input-description.gjs (100%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/field.gjs (66%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/number-field.gjs (83%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/types/boolean.gjs (71%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/types/categories.gjs (79%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/types/enum.gjs (81%) create mode 100644 app/assets/javascripts/admin/addon/components/schema-setting/types/float.gjs rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/types/groups.gjs (75%) create mode 100644 app/assets/javascripts/admin/addon/components/schema-setting/types/integer.gjs rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/types/models.gjs (84%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/types/string.gjs (86%) rename app/assets/javascripts/admin/addon/components/{schema-theme-setting => schema-setting}/types/tags.gjs (74%) delete mode 100644 app/assets/javascripts/admin/addon/components/schema-theme-setting/types/float.gjs delete mode 100644 app/assets/javascripts/admin/addon/components/schema-theme-setting/types/integer.gjs create mode 100644 app/assets/javascripts/admin/addon/routes/admin-schema.js create mode 100644 app/assets/javascripts/admin/addon/templates/admin-schema.gjs rename app/assets/javascripts/discourse/tests/integration/components/{admin-schema-theme-setting => admin-schema-setting}/editor-test.gjs (63%) rename app/assets/stylesheets/admin/{customize_themes_show_schema.scss => customize_show_schema.scss} (88%) rename app/assets/stylesheets/admin/{schema_theme_setting_editor.scss => schema_setting_editor.scss} (87%) rename lib/{theme_settings_object_validator.rb => schema_settings_object_validator.rb} (97%) create mode 100644 lib/validators/objects_setting_validator.rb diff --git a/app/assets/javascripts/admin/addon/components/schema-theme-setting/editor.gjs b/app/assets/javascripts/admin/addon/components/schema-setting/editor.gjs similarity index 89% rename from app/assets/javascripts/admin/addon/components/schema-theme-setting/editor.gjs rename to app/assets/javascripts/admin/addon/components/schema-setting/editor.gjs index 14fb1e8fbbf..f10374640f0 100644 --- a/app/assets/javascripts/admin/addon/components/schema-theme-setting/editor.gjs +++ b/app/assets/javascripts/admin/addon/components/schema-setting/editor.gjs @@ -8,10 +8,10 @@ import DButton from "discourse/components/d-button"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { cloneJSON } from "discourse/lib/object"; import { i18n } from "discourse-i18n"; -import Tree from "admin/components/schema-theme-setting/editor/tree"; -import FieldInput from "admin/components/schema-theme-setting/field"; +import Tree from "admin/components/schema-setting/editor/tree"; +import FieldInput from "admin/components/schema-setting/field"; -export default class SchemaThemeSettingNewEditor extends Component { +export default class SchemaSettingNewEditor extends Component { @service router; @tracked history = []; @@ -21,9 +21,8 @@ export default class SchemaThemeSettingNewEditor extends Component { @tracked saveButtonDisabled = false; @tracked validationErrorMessage; inputFieldObserver = new Map(); - data = cloneJSON(this.args.setting.value); - schema = this.args.setting.objects_schema; + schema = this.args.schema; @action onChildClick(index, propertyName, parentNodeIndex) { @@ -68,7 +67,7 @@ export default class SchemaThemeSettingNewEditor extends Component { const lastHistory = this.history[this.history.length - 1]; - return i18n("admin.customize.theme.schema.back_button", { + return i18n("admin.customize.schema.back_button", { name: this.generateSchemaTitle( this.#resolveDataFromPaths(lastHistory.dataPaths)[lastHistory.index], this.#resolveSchemaFromPaths(lastHistory.schemaPaths), @@ -229,16 +228,11 @@ export default class SchemaThemeSettingNewEditor extends Component { @action saveChanges() { this.saveButtonDisabled = true; - this.args.setting - .updateSetting(this.args.themeId, this.data) + .updateSetting(this.args.id, this.data) .then((result) => { this.args.setting.set("value", result[this.args.setting.setting]); - - this.router.transitionTo( - "adminCustomizeThemes.show", - this.args.themeId - ); + this.router.transitionTo(this.args.routeToRedirect, this.args.id); }) .catch((e) => { if (e.jqXHR.responseJSON && e.jqXHR.responseJSON.errors) { @@ -251,17 +245,17 @@ export default class SchemaThemeSettingNewEditor extends Component { }