FEATURE: Allow themes to specify modifiers in their about.json file (#9097)

There are three modifiers:
- serialize_topic_excerpts (boolean)
- csp_extensions (array of strings)
- svg_icons (array of strings)

When multiple themes are active, the values will be combined. The combination method varies based on the setting. CSP/SVG arrays will be combined. serialize_topic_excerpts will use `Enumerable#any`.
This commit is contained in:
David Taylor
2020-03-11 13:30:45 +00:00
committed by GitHub
parent 0754c7c404
commit d1474e94a1
15 changed files with 205 additions and 6 deletions

View File

@@ -145,6 +145,13 @@ class RemoteTheme < ActiveRecord::Base
raise ImportError, I18n.t("themes.import_error.about_json_values", errors: self.errors.full_messages.join(","))
end
ThemeModifierSet::MODIFIERS.keys.each do |modifier_name|
theme.theme_modifier_set.public_send(:"#{modifier_name}=", theme_info.dig("modifiers", modifier_name.to_s))
end
if !theme.theme_modifier_set.valid?
raise ImportError, I18n.t("themes.import_error.modifier_values", errors: theme.theme_modifier_set.errors.full_messages.join(","))
end
importer.all_files.each do |filename|
next unless opts = ThemeField.opts_from_file_path(filename)
value = importer[filename]