mirror of
https://github.com/discourse/discourse.git
synced 2025-06-01 07:37:55 +08:00
Initial release of Discourse
This commit is contained in:
53
app/serializers/basic_topic_serializer.rb
Normal file
53
app/serializers/basic_topic_serializer.rb
Normal file
@ -0,0 +1,53 @@
|
||||
require_dependency 'age_words'
|
||||
|
||||
class BasicTopicSerializer < ApplicationSerializer
|
||||
include ActionView::Helpers
|
||||
|
||||
attributes :id, :title, :reply_count, :posts_count, :highest_post_number, :image_url, :created_at,
|
||||
:last_posted_at, :age, :unseen, :last_read_post_number, :unread, :new_posts
|
||||
|
||||
def age
|
||||
AgeWords.age_words(Time.now - (object.created_at || Time.now))
|
||||
end
|
||||
|
||||
def seen
|
||||
object.user_data.present?
|
||||
end
|
||||
|
||||
def unseen
|
||||
return false if scope.blank?
|
||||
return false if scope.user.blank?
|
||||
return false if object.user_data.present?
|
||||
return false if object.created_at < scope.user.created_at
|
||||
|
||||
# Only mark things as new since your last visit
|
||||
if scope.user.previous_visit_at.present?
|
||||
return false if object.created_at < scope.user.previous_visit_at
|
||||
end
|
||||
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def last_read_post_number
|
||||
object.user_data.last_read_post_number
|
||||
end
|
||||
alias :include_last_read_post_number? :seen
|
||||
|
||||
def unread
|
||||
unread_helper.unread_posts
|
||||
end
|
||||
alias :include_unread? :seen
|
||||
|
||||
def new_posts
|
||||
unread_helper.new_posts
|
||||
end
|
||||
alias :include_new_posts? :seen
|
||||
|
||||
protected
|
||||
|
||||
def unread_helper
|
||||
@unread_helper ||= Unread.new(object, object.user_data)
|
||||
end
|
||||
|
||||
end
|
Reference in New Issue
Block a user