diff --git a/config/site_settings.yml b/config/site_settings.yml index 02cd5adad83..fa051214f40 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -414,6 +414,7 @@ basic: type: list list_type: font area: "fonts" + allow_any: false heading_font: default: "arial" choices: "BaseFontSetting.values" @@ -421,6 +422,7 @@ basic: type: list list_type: font area: "fonts" + allow_any: false enable_sitemap: default: true sitemap_page_size: diff --git a/lib/site_settings/type_supervisor.rb b/lib/site_settings/type_supervisor.rb index 5d2a458ef1e..bee07602d17 100644 --- a/lib/site_settings/type_supervisor.rb +++ b/lib/site_settings/type_supervisor.rb @@ -269,7 +269,11 @@ class SiteSettings::TypeSupervisor if type == self.class.types[:list] || type == self.class.types[:string] if @allow_any.key?(name) && !@allow_any[name] split = val.to_s.split("|") - diff = (split - @choices[name]) + resolved_choices = @choices[name] + if resolved_choices.first.is_a?(Hash) + resolved_choices = resolved_choices.map { |c| c[:value] } + end + diff = (split - resolved_choices) if diff.length > 0 raise Discourse::InvalidParameters.new( I18n.t(