* Add default_settings class method to ScopedSettings ScopedSettings was extended to use value of unscoped setting instead of only using defaults set in config/settings.yml for selected settings. This adds possibility for admins to set default values of users' settings, for example default theme (as requested in #7092). * Add ability to change an instance default theme Closes #7092
This commit is contained in:
parent
d1c2c917d9
commit
6cb3514d64
6 changed files with 51 additions and 3 deletions
|
@ -2,6 +2,10 @@
|
|||
|
||||
module Settings
|
||||
class ScopedSettings
|
||||
DEFAULTING_TO_UNSCOPED = %w(
|
||||
theme
|
||||
).freeze
|
||||
|
||||
def initialize(object)
|
||||
@object = object
|
||||
end
|
||||
|
@ -50,15 +54,22 @@ module Settings
|
|||
Rails.cache.fetch(Setting.cache_key(key, @object)) do
|
||||
db_val = thing_scoped.find_by(var: key.to_s)
|
||||
if db_val
|
||||
default_value = Setting.default_settings[key]
|
||||
default_value = ScopedSettings.default_settings[key]
|
||||
return default_value.with_indifferent_access.merge!(db_val.value) if default_value.is_a?(Hash)
|
||||
db_val.value
|
||||
else
|
||||
Setting.default_settings[key]
|
||||
ScopedSettings.default_settings[key]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class << self
|
||||
def default_settings
|
||||
defaulting = DEFAULTING_TO_UNSCOPED.map { |k| [k, Setting[k]] }.to_h
|
||||
Setting.default_settings.merge!(defaulting)
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def thing_scoped
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue