discourse/app/serializers/theme_settings_serializer.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

102 lines
2.0 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
class ThemeSettingsSerializer < ApplicationSerializer
attributes :setting,
:type,
:default,
:value,
:description,
:objects_schema_property_descriptions,
:valid_values,
:list_type,
:textarea,
:json_schema,
:objects_schema
def setting
object.name
end
def type
object.type_name
end
def default
object.default
end
def value
object.value
end
def description
description_regexp = /^theme_metadata\.settings\.#{setting}(\.description)?$/
locale_file_description =
object.theme.internal_translations.find { |t| t.key.match?(description_regexp) }&.value
locale_file_description || object.description
end
def objects_schema_property_descriptions
locales = {}
key = "theme_metadata.settings.#{setting}.schema.properties."
object.theme.internal_translations.each do |internal_translation|
if internal_translation.key.start_with?(key)
locales[internal_translation.key.delete_prefix(key)] = internal_translation.value
end
end
locales
end
def include_objects_schema_property_descriptions?
include_objects_schema?
end
def valid_values
object.choices
end
def include_valid_values?
object.type == ThemeSetting.types[:enum]
end
def include_description?
description.present?
end
def list_type
object.list_type
end
def include_list_type?
object.type == ThemeSetting.types[:list]
end
def textarea
object.textarea
end
def include_textarea?
object.type == ThemeSetting.types[:string]
end
def objects_schema
object.schema
end
def include_objects_schema?
object.type == ThemeSetting.types[:objects]
end
def json_schema
object.json_schema
end
def include_json_schema?
object.type == ThemeSetting.types[:string] && object.json_schema.present?
end
end