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:
Bianca Nenciu
2020-10-13 16:17:06 +03:00
committed by GitHub
parent a73fd4227f
commit 25b8ed740b
23 changed files with 213 additions and 124 deletions

View File

@ -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