mirror of
https://github.com/discourse/discourse.git
synced 2025-05-30 15:28:37 +08:00
DEV: Make site setting type uploaded_image_list use upload IDs (#10401)
It used to be a list of concatenated upload URLs which was prone to break.
This commit is contained in:
@ -209,6 +209,7 @@ module SiteSettingExtension
|
||||
MultiJson.dump(Hash[*@client_settings.map do |name|
|
||||
value = self.public_send(name)
|
||||
value = value.to_s if type_supervisor.get_type(name) == :upload
|
||||
value = value.map(&:to_s).join("|") if type_supervisor.get_type(name) == :uploaded_image_list
|
||||
[name, value]
|
||||
end.flatten])
|
||||
end
|
||||
@ -233,10 +234,12 @@ module SiteSettingExtension
|
||||
.reject { |s, _| !include_hidden && hidden_settings.include?(s) }
|
||||
.map do |s, v|
|
||||
|
||||
value = public_send(s)
|
||||
type_hash = type_supervisor.type_hash(s)
|
||||
default = defaults.get(s, default_locale).to_s
|
||||
|
||||
value = public_send(s)
|
||||
value = value.map(&:to_s).join("|") if type_hash[:type].to_s == "uploaded_image_list"
|
||||
|
||||
if type_hash[:type].to_s == "upload" &&
|
||||
default.to_i < Upload::SEEDED_ID_THRESHOLD
|
||||
|
||||
@ -482,7 +485,21 @@ module SiteSettingExtension
|
||||
def setup_methods(name)
|
||||
clean_name = name.to_s.sub("?", "").to_sym
|
||||
|
||||
if type_supervisor.get_type(name) == :upload
|
||||
if type_supervisor.get_type(name) == :uploaded_image_list
|
||||
define_singleton_method clean_name do
|
||||
uploads_list = uploads[name]
|
||||
return uploads_list if uploads_list
|
||||
|
||||
if (value = current[name]).nil?
|
||||
refresh!
|
||||
value = current[name]
|
||||
end
|
||||
|
||||
value = value.split("|").map(&:to_i)
|
||||
uploads_list = Upload.where(id: value).to_a
|
||||
uploads[name] = uploads_list if uploads_list
|
||||
end
|
||||
elsif type_supervisor.get_type(name) == :upload
|
||||
define_singleton_method clean_name do
|
||||
upload = uploads[name]
|
||||
return upload if upload
|
||||
@ -552,7 +569,7 @@ module SiteSettingExtension
|
||||
end
|
||||
|
||||
def clear_uploads_cache(name)
|
||||
if type_supervisor.get_type(name) == :upload && uploads.has_key?(name)
|
||||
if (type_supervisor.get_type(name) == :upload || type_supervisor.get_type(name) == :uploaded_image_list) && uploads.has_key?(name)
|
||||
uploads.delete(name)
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user