mirror of
https://github.com/discourse/discourse.git
synced 2026-08-11 05:25:16 -05: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
|
||||
|
||||
@@ -182,6 +182,8 @@ class SiteSettings::TypeSupervisor
|
||||
type = get_data_type(name, val)
|
||||
elsif type == self.class.types[:enum]
|
||||
val = @defaults_provider[name].is_a?(Integer) ? val.to_i : val.to_s
|
||||
elsif type == self.class.types[:uploaded_image_list] && val.present?
|
||||
val = val.is_a?(String) ? val : val.map(&:id).join("|")
|
||||
elsif type == self.class.types[:upload] && val.present?
|
||||
val = val.is_a?(Integer) ? val : val.id
|
||||
end
|
||||
|
||||
@@ -6,7 +6,7 @@ class SelectableAvatarsEnabledValidator
|
||||
end
|
||||
|
||||
def valid_value?(value)
|
||||
value == "f" || SiteSetting.selectable_avatars.split("\n").size > 1
|
||||
value == "f" || SiteSetting.selectable_avatars.size > 1
|
||||
end
|
||||
|
||||
def error_message
|
||||
|
||||
Reference in New Issue
Block a user