2013-10-23 14:40:39 -04:00
|
|
|
class CategoryDetailedSerializer < BasicCategorySerializer
|
|
|
|
|
2013-12-13 15:15:51 -05:00
|
|
|
attributes :topic_count,
|
|
|
|
:post_count,
|
|
|
|
:topics_day,
|
2013-04-05 16:09:27 -04:00
|
|
|
:topics_week,
|
|
|
|
:topics_month,
|
|
|
|
:topics_year,
|
2013-12-13 15:15:51 -05:00
|
|
|
:posts_day,
|
|
|
|
:posts_week,
|
|
|
|
:posts_month,
|
|
|
|
:posts_year,
|
2013-06-14 11:18:27 -04:00
|
|
|
:description_excerpt,
|
2013-10-31 18:02:24 -04:00
|
|
|
:is_uncategorized,
|
|
|
|
:subcategory_ids
|
2013-02-05 14:16:51 -05:00
|
|
|
|
|
|
|
has_many :featured_users, serializer: BasicUserSerializer
|
2013-05-29 11:46:01 -04:00
|
|
|
has_many :displayable_topics, serializer: ListableTopicSerializer, embed: :objects, key: :topics
|
2013-02-05 14:16:51 -05:00
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def is_uncategorized
|
|
|
|
object.id == SiteSetting.uncategorized_category_id
|
|
|
|
end
|
2013-12-13 15:15:51 -05:00
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def include_is_uncategorized?
|
|
|
|
is_uncategorized
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def include_displayable_topics?
|
|
|
|
return displayable_topics.present?
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def description_excerpt
|
|
|
|
PrettyText.excerpt(description,300) if description
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def include_subcategory_ids?
|
|
|
|
subcategory_ids.present?
|
2013-12-13 15:15:51 -05:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
# Topic and post counts, including counts from the sub-categories:
|
|
|
|
|
|
|
|
def topics_day
|
|
|
|
count_with_subcategories(:topics_day)
|
2013-12-13 15:15:51 -05:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def topics_week
|
|
|
|
count_with_subcategories(:topics_week)
|
2013-12-13 15:15:51 -05:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def topics_month
|
|
|
|
count_with_subcategories(:topics_month)
|
2013-05-27 14:15:20 -04:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def topics_year
|
|
|
|
count_with_subcategories(:topics_year)
|
2013-05-27 14:15:20 -04:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def posts_day
|
|
|
|
count_with_subcategories(:posts_day)
|
2013-05-28 14:54:00 -04:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def posts_week
|
|
|
|
count_with_subcategories(:posts_week)
|
2013-06-14 11:18:27 -04:00
|
|
|
end
|
|
|
|
|
2014-02-05 18:39:26 -05:00
|
|
|
def posts_month
|
|
|
|
count_with_subcategories(:posts_month)
|
|
|
|
end
|
|
|
|
|
|
|
|
def posts_year
|
|
|
|
count_with_subcategories(:posts_year)
|
|
|
|
end
|
|
|
|
|
|
|
|
def count_with_subcategories(method)
|
2014-02-07 11:38:22 -05:00
|
|
|
object.subcategories.inject(object.send(method) || 0) { |sum,c| sum += (c.send(method) || 0) }
|
2013-10-31 18:02:24 -04:00
|
|
|
end
|
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|