2013-02-06 03:16:51 +08:00
|
|
|
class SiteSerializer < ApplicationSerializer
|
|
|
|
|
2013-02-26 00:42:20 +08:00
|
|
|
attributes :default_archetype,
|
2013-02-21 02:15:50 +08:00
|
|
|
:notification_types,
|
2013-05-28 02:15:20 +08:00
|
|
|
:post_types,
|
2014-09-21 04:05:21 +08:00
|
|
|
:groups,
|
2014-01-15 01:48:57 +08:00
|
|
|
:filters,
|
|
|
|
:periods,
|
|
|
|
:top_menu_items,
|
|
|
|
:anonymous_top_menu_items,
|
2014-02-13 12:37:28 +08:00
|
|
|
:uncategorized_category_id, # this is hidden so putting it here
|
2015-02-05 05:23:39 +08:00
|
|
|
:is_readonly,
|
2015-02-24 02:02:30 +08:00
|
|
|
:disabled_plugins,
|
2015-09-04 01:18:46 +08:00
|
|
|
:user_field_max_length,
|
2016-04-01 05:33:25 +08:00
|
|
|
:suppressed_from_homepage_category_ids,
|
|
|
|
:post_action_types,
|
|
|
|
:topic_flag_types
|
2013-02-21 02:15:50 +08:00
|
|
|
|
2013-05-13 16:04:03 +08:00
|
|
|
has_many :categories, serializer: BasicCategorySerializer, embed: :objects
|
2013-02-06 03:16:51 +08:00
|
|
|
has_many :trust_levels, embed: :objects
|
|
|
|
has_many :archetypes, embed: :objects, serializer: ArchetypeSerializer
|
2014-09-27 02:48:34 +08:00
|
|
|
has_many :user_fields, embed: :objects, serialzer: UserFieldSerializer
|
2013-02-06 03:16:51 +08:00
|
|
|
|
2016-04-01 05:33:25 +08:00
|
|
|
def groups
|
|
|
|
cache_fragment("group_names") do
|
|
|
|
Group.order(:name).pluck(:id,:name).map { |id,name| { id: id, name: name } }.as_json
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def post_action_types
|
|
|
|
cache_fragment("post_action_types_#{I18n.locale}") do
|
|
|
|
ActiveModel::ArraySerializer.new(PostActionType.ordered).as_json
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def topic_flag_types
|
|
|
|
cache_fragment("post_action_flag_types_#{I18n.locale}") do
|
|
|
|
flags = PostActionType.ordered.where(name_key: ['inappropriate', 'spam', 'notify_moderators'])
|
|
|
|
ActiveModel::ArraySerializer.new(flags, each_serializer: TopicFlagTypeSerializer).as_json
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
def default_archetype
|
|
|
|
Archetype.default
|
|
|
|
end
|
|
|
|
|
2013-02-21 02:15:50 +08:00
|
|
|
def post_types
|
2013-03-19 04:03:46 +08:00
|
|
|
Post.types
|
2013-02-21 02:15:50 +08:00
|
|
|
end
|
2013-02-26 00:42:20 +08:00
|
|
|
|
2014-01-15 01:48:57 +08:00
|
|
|
def filters
|
|
|
|
Discourse.filters.map(&:to_s)
|
|
|
|
end
|
|
|
|
|
|
|
|
def periods
|
|
|
|
TopTopic.periods.map(&:to_s)
|
|
|
|
end
|
2014-02-06 06:54:16 +08:00
|
|
|
|
2014-01-15 01:48:57 +08:00
|
|
|
def top_menu_items
|
|
|
|
Discourse.top_menu_items.map(&:to_s)
|
|
|
|
end
|
|
|
|
|
|
|
|
def anonymous_top_menu_items
|
|
|
|
Discourse.anonymous_top_menu_items.map(&:to_s)
|
|
|
|
end
|
|
|
|
|
2013-10-24 07:05:51 +08:00
|
|
|
def uncategorized_category_id
|
|
|
|
SiteSetting.uncategorized_category_id
|
2013-05-28 02:15:20 +08:00
|
|
|
end
|
|
|
|
|
2014-02-13 12:37:28 +08:00
|
|
|
def is_readonly
|
|
|
|
Discourse.readonly_mode?
|
|
|
|
end
|
|
|
|
|
2015-02-05 05:23:39 +08:00
|
|
|
def disabled_plugins
|
|
|
|
Discourse.disabled_plugin_names
|
|
|
|
end
|
|
|
|
|
2015-02-24 02:02:30 +08:00
|
|
|
def user_field_max_length
|
|
|
|
UserField.max_length
|
|
|
|
end
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|