mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Upload Site Settings. (#6573)
This commit is contained in:
@@ -190,7 +190,11 @@ module SiteSettingExtension
|
||||
end
|
||||
|
||||
def client_settings_json_uncached
|
||||
MultiJson.dump(Hash[*@client_settings.map { |n| [n, self.send(n)] }.flatten])
|
||||
MultiJson.dump(Hash[*@client_settings.map do |name|
|
||||
value = self.public_send(name)
|
||||
value = value.to_s if type_supervisor.get_type(name) == :upload
|
||||
[name, value]
|
||||
end.flatten])
|
||||
end
|
||||
|
||||
# Retrieve all settings
|
||||
@@ -212,7 +216,9 @@ module SiteSettingExtension
|
||||
defaults.all(default_locale)
|
||||
.reject { |s, _| !include_hidden && hidden_settings.include?(s) }
|
||||
.map do |s, v|
|
||||
|
||||
value = send(s)
|
||||
|
||||
opts = {
|
||||
setting: s,
|
||||
description: description(s),
|
||||
@@ -312,6 +318,7 @@ module SiteSettingExtension
|
||||
def remove_override!(name)
|
||||
provider.destroy(name)
|
||||
current[name] = defaults.get(name, default_locale)
|
||||
uploads.delete(name)
|
||||
clear_cache!
|
||||
end
|
||||
|
||||
@@ -319,6 +326,7 @@ module SiteSettingExtension
|
||||
val, type = type_supervisor.to_db_value(name, val)
|
||||
provider.save(name, val, type)
|
||||
current[name] = type_supervisor.to_rb_value(name, val)
|
||||
uploads.delete(name)
|
||||
notify_clients!(name) if client_settings.include? name
|
||||
clear_cache!
|
||||
end
|
||||
@@ -410,12 +418,31 @@ module SiteSettingExtension
|
||||
def setup_methods(name)
|
||||
clean_name = name.to_s.sub("?", "").to_sym
|
||||
|
||||
define_singleton_method clean_name do
|
||||
if (c = current[name]).nil?
|
||||
refresh!
|
||||
current[name]
|
||||
else
|
||||
c
|
||||
if type_supervisor.get_type(name) == :upload
|
||||
define_singleton_method clean_name do
|
||||
upload = uploads[name]
|
||||
return upload if upload
|
||||
|
||||
if (value = current[name]).nil?
|
||||
refresh!
|
||||
value = current[name]
|
||||
end
|
||||
|
||||
value = value.to_i
|
||||
|
||||
if value > 0
|
||||
upload = Upload.find_by(id: value)
|
||||
uploads[name] = upload if upload
|
||||
end
|
||||
end
|
||||
else
|
||||
define_singleton_method clean_name do
|
||||
if (c = current[name]).nil?
|
||||
refresh!
|
||||
current[name]
|
||||
else
|
||||
c
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -448,6 +475,11 @@ module SiteSettingExtension
|
||||
|
||||
private
|
||||
|
||||
def uploads
|
||||
@uploads ||= {}
|
||||
@uploads[provider.current_site] ||= {}
|
||||
end
|
||||
|
||||
def logger
|
||||
Rails.logger
|
||||
end
|
||||
|
Reference in New Issue
Block a user