discourse/app/serializers/category_detailed_serializer.rb

83 lines
1.7 KiB
Ruby
Raw Normal View History

2013-10-23 13:40:39 -05:00
class CategoryDetailedSerializer < BasicCategorySerializer
attributes :topic_count,
:post_count,
:topics_day,
:topics_week,
:topics_month,
:topics_year,
:posts_day,
:posts_week,
:posts_month,
:posts_year,
:description_excerpt,
2013-10-31 17:02:24 -05:00
:is_uncategorized,
:subcategory_ids
2013-02-05 13:16:51 -06:00
has_many :featured_users, serializer: BasicUserSerializer
2013-05-29 10:46:01 -05:00
has_many :displayable_topics, serializer: ListableTopicSerializer, embed: :objects, key: :topics
2013-02-05 13:16:51 -06:00
def is_uncategorized
object.id == SiteSetting.uncategorized_category_id
end
def include_is_uncategorized?
is_uncategorized
2013-02-05 13:16:51 -06:00
end
def include_displayable_topics?
2014-09-09 08:32:58 -05:00
displayable_topics.present?
2013-02-05 13:16:51 -06:00
end
def description_excerpt
PrettyText.excerpt(description,300) if description
2013-02-05 13:16:51 -06:00
end
def include_subcategory_ids?
subcategory_ids.present?
end
# Topic and post counts, including counts from the sub-categories:
def topics_day
count_with_subcategories(:topics_day)
end
def topics_week
count_with_subcategories(:topics_week)
end
def topics_month
count_with_subcategories(:topics_month)
end
def topics_year
count_with_subcategories(:topics_year)
end
def posts_day
count_with_subcategories(:posts_day)
end
def posts_week
count_with_subcategories(:posts_week)
end
def posts_month
count_with_subcategories(:posts_month)
end
def posts_year
count_with_subcategories(:posts_year)
end
def count_with_subcategories(method)
count = object.send(method) || 0
object.subcategories.each do |category|
count += (category.send(method) || 0)
end
count
2013-10-31 17:02:24 -05:00
end
2013-02-05 13:16:51 -06:00
end