Class: Thredded::PostView
- Inherits:
-
Object
- Object
- Thredded::PostView
- 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
-
#cache_key ⇒ Object
This cache key is used only for caching the content.
- #can_destroy? ⇒ Boolean
- #can_moderate? ⇒ Boolean
- #can_reply? ⇒ Boolean
- #can_update? ⇒ Boolean
- #destroy_path ⇒ Object
- #edit_path ⇒ Object
- #first_in_page? ⇒ Boolean
- #first_unread_in_page? ⇒ Boolean
-
#initialize(post, policy, topic_view: nil, first_in_page: false, first_unread_in_page: false) ⇒ PostView
constructor
A new instance of PostView.
- #mark_unread_path ⇒ Object
- #permalink_path ⇒ Object
- #quote_path ⇒ Object
- #quote_url_params ⇒ Object
-
#read_state ⇒ Object
returns nil if read state is not appropriate to the view (i.e. viewing posts outside a topic).
Constructor Details
#initialize(post, policy, topic_view: nil, first_in_page: false, first_unread_in_page: false) ⇒ PostView
Returns a new instance of PostView.
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_key ⇒ Object
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
38 39 40 |
# File 'app/view_models/thredded/post_view.rb', line 38 def can_destroy? @can_destroy ||= @policy.destroy? end |
#can_moderate? ⇒ 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
30 31 32 |
# File 'app/view_models/thredded/post_view.rb', line 30 def can_reply? @can_reply ||= @policy.create? end |
#can_update? ⇒ Boolean
34 35 36 |
# File 'app/view_models/thredded/post_view.rb', line 34 def can_update? @can_update ||= @policy.update? end |
#destroy_path ⇒ Object
66 67 68 |
# File 'app/view_models/thredded/post_view.rb', line 66 def destroy_path Thredded::UrlsHelper.delete_post_path(@post) end |
#edit_path ⇒ Object
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
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
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_path ⇒ Object
62 63 64 |
# File 'app/view_models/thredded/post_view.rb', line 62 def mark_unread_path Thredded::UrlsHelper.mark_unread_path(@post) end |
#permalink_path ⇒ Object
70 71 72 |
# File 'app/view_models/thredded/post_view.rb', line 70 def permalink_path Thredded::UrlsHelper.permalink_path(@post) end |
#quote_path ⇒ Object
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_params ⇒ Object
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_state ⇒ Object
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 |