Class: Thredded::PostView

Inherits:
Object
  • Object
show all
Defined in:
app/view_models/thredded/post_view.rb

Overview

A view model for PostCommon.

Constant Summary collapse

POST_IS_READ =
:read
POST_IS_UNREAD =
:unread

Instance Method Summary collapse

Constructor Details

#initialize(post, policy, topic_view: nil, first_in_page: false, first_unread_in_page: false) ⇒ PostView

Returns a new instance of PostView.

Parameters:

  • post (Thredded::PostCommon)
  • policy (#create? #update? #destroy? #moderate?)
  • topic_view (Thredded::TopicView) (defaults to: nil)
  • first_in_page (Boolean) (defaults to: false)
  • first_unread_in_page (Boolean) (defaults to: false)


22
23
24
25
26
27
28
# File 'app/view_models/thredded/post_view.rb', line 22

def initialize(post, policy, topic_view: nil, first_in_page: false, first_unread_in_page: false)
  @post   = post
  @policy = policy
  @topic_view = topic_view
  @first_unread_in_page = first_unread_in_page
  @first_in_page = first_in_page
end

Instance Method Details

#cache_keyObject

This cache key is used only for caching the content.



75
76
77
# File 'app/view_models/thredded/post_view.rb', line 75

def cache_key
  @post.cache_key
end

#can_destroy?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/view_models/thredded/post_view.rb', line 38

def can_destroy?
  @can_destroy ||= @policy.destroy?
end

#can_moderate?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/view_models/thredded/post_view.rb', line 42

def can_moderate?
  @can_moderate ||= @policy.moderate?
end

#can_reply?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'app/view_models/thredded/post_view.rb', line 30

def can_reply?
  @can_reply ||= @policy.create?
end

#can_update?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/view_models/thredded/post_view.rb', line 34

def can_update?
  @can_update ||= @policy.update?
end

#destroy_pathObject



66
67
68
# File 'app/view_models/thredded/post_view.rb', line 66

def destroy_path
  Thredded::UrlsHelper.delete_post_path(@post)
end

#edit_pathObject



58
59
60
# File 'app/view_models/thredded/post_view.rb', line 58

def edit_path
  Thredded::UrlsHelper.edit_post_path(@post)
end

#first_in_page?Boolean

Returns:

  • (Boolean)


97
98
99
# File 'app/view_models/thredded/post_view.rb', line 97

def first_in_page?
  @first_in_page
end

#first_unread_in_page?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'app/view_models/thredded/post_view.rb', line 93

def first_unread_in_page?
  @first_unread_in_page
end

#mark_unread_pathObject



62
63
64
# File 'app/view_models/thredded/post_view.rb', line 62

def mark_unread_path
  Thredded::UrlsHelper.mark_unread_path(@post)
end


70
71
72
# File 'app/view_models/thredded/post_view.rb', line 70

def permalink_path
  Thredded::UrlsHelper.permalink_path(@post)
end

#quote_pathObject



54
55
56
# File 'app/view_models/thredded/post_view.rb', line 54

def quote_path
  Thredded::UrlsHelper.quote_post_path(@post)
end

#quote_url_paramsObject



46
47
48
49
50
51
52
# File 'app/view_models/thredded/post_view.rb', line 46

def quote_url_params
  if @post.private_topic_post?
    { post: { quote_private_post_id: @post.id } }
  else
    { post: { quote_post_id: @post.id } }
  end.update(anchor: 'post_content')
end

#read_stateObject

returns nil if read state is not appropriate to the view (i.e. viewing posts outside a topic)



83
84
85
86
87
88
89
90
91
# File 'app/view_models/thredded/post_view.rb', line 83

def read_state
  if @topic_view.nil? || @policy.anonymous?
    nil
  elsif @topic_view.post_read?(@post)
    POST_IS_READ
  else
    POST_IS_UNREAD
  end
end