2013-03-06 15:17:07 -05:00
|
|
|
require_dependency 'pinned_check'
|
|
|
|
|
2013-03-14 14:45:29 -04:00
|
|
|
class TopicListItemSerializer < ListableTopicSerializer
|
2013-02-05 14:16:51 -05:00
|
|
|
|
2013-02-25 11:42:20 -05:00
|
|
|
attributes :views,
|
|
|
|
:like_count,
|
|
|
|
:visible,
|
|
|
|
:pinned,
|
|
|
|
:closed,
|
|
|
|
:archived,
|
|
|
|
:starred,
|
|
|
|
:has_best_of,
|
2013-04-02 16:52:51 -04:00
|
|
|
:archetype,
|
2013-04-29 16:37:08 -04:00
|
|
|
:rank_details,
|
|
|
|
:excerpt
|
2013-02-05 14:16:51 -05:00
|
|
|
|
2013-05-12 21:07:02 -04:00
|
|
|
has_one :category, serializer: BasicCategorySerializer
|
2013-02-05 14:16:51 -05:00
|
|
|
has_many :posters, serializer: TopicPosterSerializer, embed: :objects
|
|
|
|
|
|
|
|
def starred
|
|
|
|
object.user_data.starred?
|
|
|
|
end
|
|
|
|
alias :include_starred? :seen
|
|
|
|
|
2013-04-02 16:52:51 -04:00
|
|
|
|
|
|
|
# This is for debugging / tweaking the hot topic rankings.
|
|
|
|
# We will likely remove it after we are happier with things.
|
|
|
|
def rank_details
|
|
|
|
|
|
|
|
hot_topic_type = case object.hot_topic.hot_topic_type
|
|
|
|
when 1 then 'sticky'
|
|
|
|
when 2 then 'recent high scoring'
|
|
|
|
when 3 then 'old high scoring'
|
|
|
|
end
|
|
|
|
|
|
|
|
{topic_score: object.score,
|
|
|
|
percent_rank: object.percent_rank,
|
|
|
|
random_bias: object.hot_topic.random_bias,
|
|
|
|
random_multiplier: object.hot_topic.random_multiplier,
|
|
|
|
days_ago_bias: object.hot_topic.days_ago_bias,
|
|
|
|
days_ago_multiplier: object.hot_topic.days_ago_multiplier,
|
|
|
|
ranking_score: object.hot_topic.score,
|
|
|
|
hot_topic_type: hot_topic_type}
|
|
|
|
end
|
|
|
|
|
|
|
|
def include_rank_details?
|
2013-04-03 15:24:26 -04:00
|
|
|
object.topic_list.try(:has_rank_details?)
|
2013-04-02 16:52:51 -04:00
|
|
|
end
|
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
def posters
|
|
|
|
object.posters || []
|
|
|
|
end
|
|
|
|
|
2013-03-06 15:17:07 -05:00
|
|
|
def pinned
|
|
|
|
PinnedCheck.new(object, object.user_data).pinned?
|
|
|
|
end
|
|
|
|
|
2013-04-29 16:37:08 -04:00
|
|
|
def include_excerpt?
|
|
|
|
pinned
|
|
|
|
end
|
|
|
|
|
|
|
|
def excerpt
|
2013-04-29 23:25:55 -04:00
|
|
|
object.posts.first.try(:excerpt,220, strip_links: true) || nil
|
2013-04-29 16:37:08 -04:00
|
|
|
end
|
2013-04-02 16:52:51 -04:00
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|