mirror of
https://github.com/discourse/discourse.git
synced 2024-12-25 02:13:45 +08:00
c95ffb98ef
At this moment, this feature is under a site setting named lazy_load_categories. In the future, categories will no longer be preloaded through site data. This commit add information about categories in topic list and ensures that data is used to display topic list items. Parent categories are serialized too because they are necessary to render {{category-link}}.
45 lines
1.0 KiB
Ruby
45 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class TopicListSerializer < ApplicationSerializer
|
|
attributes :can_create_topic,
|
|
:more_topics_url,
|
|
:for_period,
|
|
:per_page,
|
|
:top_tags,
|
|
:tags,
|
|
:shared_drafts
|
|
|
|
has_many :topics, serializer: TopicListItemSerializer, embed: :objects
|
|
has_many :shared_drafts, serializer: TopicListItemSerializer, embed: :objects
|
|
has_many :tags, serializer: TagSerializer, embed: :objects
|
|
has_many :categories, serializer: TopicCategorySerializer, embed: :objects
|
|
|
|
def can_create_topic
|
|
scope.can_create?(Topic)
|
|
end
|
|
|
|
def include_shared_drafts?
|
|
object.shared_drafts.present?
|
|
end
|
|
|
|
def include_for_period?
|
|
for_period.present?
|
|
end
|
|
|
|
def include_more_topics_url?
|
|
object.more_topics_url.present? && (object.topics.size == object.per_page)
|
|
end
|
|
|
|
def include_top_tags?
|
|
Tag.include_tags?
|
|
end
|
|
|
|
def include_tags?
|
|
SiteSetting.tagging_enabled && object.tags.present?
|
|
end
|
|
|
|
def include_categories?
|
|
SiteSetting.lazy_load_categories
|
|
end
|
|
end
|