mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Allow themes to override color transformation variables (#7987)
Theme developers can now add any of the transformed color variables to their color scheme in about.json. For example
```
"color_schemes": {
"Light": {
"primary": "333333",
"secondary": "ffffff",
"primary-low": "ff0000"
}
},
```
would override the primary-low variable when compiling SCSS for the color scheme. The primary-low variable will also be visible in administrator color palette UI.
This commit is contained in:
@@ -34,20 +34,18 @@ class Theme < ActiveRecord::Base
|
||||
where('user_selectable OR id = ?', SiteSetting.default_theme_id)
|
||||
}
|
||||
|
||||
def notify_color_change(color)
|
||||
changed_colors << color
|
||||
def notify_color_change(color, scheme: nil)
|
||||
scheme ||= color.color_scheme
|
||||
changed_colors << color if color
|
||||
changed_schemes << scheme if scheme
|
||||
end
|
||||
|
||||
after_save do
|
||||
color_schemes = {}
|
||||
changed_colors.each do |color|
|
||||
color.save!
|
||||
color_schemes[color.color_scheme_id] ||= color.color_scheme
|
||||
end
|
||||
|
||||
color_schemes.values.each(&:save!)
|
||||
changed_colors.each(&:save!)
|
||||
changed_schemes.each(&:save!)
|
||||
|
||||
changed_colors.clear
|
||||
changed_schemes.clear
|
||||
|
||||
changed_fields.each(&:save!)
|
||||
changed_fields.clear
|
||||
@@ -343,6 +341,10 @@ class Theme < ActiveRecord::Base
|
||||
@changed_colors ||= []
|
||||
end
|
||||
|
||||
def changed_schemes
|
||||
@changed_schemes ||= Set.new
|
||||
end
|
||||
|
||||
def set_field(target:, name:, value: nil, type: nil, type_id: nil, upload_id: nil)
|
||||
name = name.to_s
|
||||
|
||||
|
||||
Reference in New Issue
Block a user