discourse/app/serializers/site_serializer.rb

125 lines
2.8 KiB
Ruby
Raw Normal View History

require_dependency 'discourse_tagging'
require_dependency 'wizard'
require_dependency 'wizard/builder'
2013-02-05 14:16:51 -05:00
class SiteSerializer < ApplicationSerializer
2013-02-25 11:42:20 -05:00
attributes :default_archetype,
:notification_types,
:post_types,
:groups,
:filters,
:periods,
:top_menu_items,
:anonymous_top_menu_items,
2014-02-12 23:37:28 -05:00
:uncategorized_category_id, # this is hidden so putting it here
:is_readonly,
:disabled_plugins,
:user_field_max_length,
:suppressed_from_homepage_category_ids,
:post_action_types,
:topic_flag_types,
:can_create_tag,
:can_tag_topics,
:tags_filter_regexp,
:top_tags,
:wizard_required
has_many :categories, serializer: BasicCategorySerializer, embed: :objects
2013-02-05 14:16:51 -05:00
has_many :trust_levels, embed: :objects
has_many :archetypes, embed: :objects, serializer: ArchetypeSerializer
has_many :user_fields, embed: :objects, serialzer: UserFieldSerializer
2013-02-05 14:16:51 -05: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-05 14:16:51 -05:00
def default_archetype
Archetype.default
end
def post_types
2013-03-18 16:03:46 -04:00
Post.types
end
2013-02-25 11:42:20 -05:00
def filters
Discourse.filters.map(&:to_s)
end
def periods
TopTopic.periods.map(&:to_s)
end
2014-02-05 17:54:16 -05: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
def uncategorized_category_id
SiteSetting.uncategorized_category_id
end
2014-02-12 23:37:28 -05:00
def is_readonly
Discourse.readonly_mode?
end
def disabled_plugins
Discourse.disabled_plugin_names
end
def user_field_max_length
UserField.max_length
end
def can_create_tag
SiteSetting.tagging_enabled && scope.can_create_tag?
end
def can_tag_topics
SiteSetting.tagging_enabled && scope.can_tag_topics?
end
def include_tags_filter_regexp?
SiteSetting.tagging_enabled
end
def tags_filter_regexp
DiscourseTagging::TAGS_FILTER_REGEXP.source
end
def include_top_tags?
Tag.include_tags?
end
def top_tags
Tag.top_tags
end
def wizard_required
true
end
def include_wizard_required?
Wizard::Builder.new(scope.user).build.requires_completion?
end
2013-02-05 14:16:51 -05:00
end