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) ⇒ PostView

Returns a new instance of PostView.

Parameters:



20
21
22
23
24
# File 'app/view_models/thredded/post_view.rb', line 20

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

Instance Method Details

#cache_keyObject

This cache key is used only for caching the content.



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

def cache_key
  @post.cache_key
end

#can_destroy?Boolean

Returns:

  • (Boolean)


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

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

#can_moderate?Boolean

Returns:

  • (Boolean)


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

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

#can_reply?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/view_models/thredded/post_view.rb', line 26

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

#can_update?Boolean

Returns:

  • (Boolean)


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

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

#destroy_pathObject



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

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

#edit_pathObject



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

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

#mark_unread_pathObject



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

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


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

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

#quote_pathObject



50
51
52
# File 'app/view_models/thredded/post_view.rb', line 50

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

#quote_url_paramsObject



42
43
44
45
46
47
48
# File 'app/view_models/thredded/post_view.rb', line 42

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)



79
80
81
82
83
84
85
86
87
# File 'app/view_models/thredded/post_view.rb', line 79

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