Class: Decidim::Blogs::Post

Inherits:
ApplicationRecord show all
Includes:
Authorable, Comments::CommentableWithComponent, Endorsable, Followable, HasAttachmentCollections, HasAttachments, HasComponent, Loggable, Reportable, Resourceable, Searchable, Traceable, TranslatableResource
Defined in:
decidim-blogs/app/models/decidim/blogs/post.rb

Overview

The data store for a Blog in the Decidim::Blogs component. It stores a title, description and any other useful information to render a blog.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Followable

#followers

Methods included from Searchable

searchable_resources, searchable_resources_by_type, searchable_resources_of_type_comment, searchable_resources_of_type_component, searchable_resources_of_type_participant, searchable_resources_of_type_participatory_space

Class Method Details

.all_timestamp_attributes_in_modelObject



41
42
43
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 41

def all_timestamp_attributes_in_model
  super + ["published_at"]
end

.log_presenter_class_for(_log) ⇒ Object



45
46
47
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 45

def log_presenter_class_for(_log)
  Decidim::Blogs::AdminLog::PostPresenter
end

Instance Method Details

#allow_resource_permissions?Boolean

Public: Overrides the ‘allow_resource_permissions?` Resourceable concern method.

Returns:

  • (Boolean)


69
70
71
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 69

def allow_resource_permissions?
  true
end

#attachment_contextObject



85
86
87
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 85

def attachment_context
  :admin
end

#comments_have_alignment?Boolean

Public: Overrides the ‘comments_have_alignment?` Commentable concern method.

Returns:

  • (Boolean)


59
60
61
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 59

def comments_have_alignment?
  true
end

#comments_have_votes?Boolean

Public: Overrides the ‘comments_have_votes?` Commentable concern method.

Returns:

  • (Boolean)


64
65
66
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 64

def comments_have_votes?
  true
end

#official?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 73

def official?
  author.is_a?(Decidim::Organization)
end

#published?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 54

def published?
  published_at <= Time.current
end

#reported_attributesObject

Public: Overrides the ‘reported_attributes` Reportable concern method.



95
96
97
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 95

def reported_attributes
  [:title, :body]
end

#reported_content_urlObject

Public: Overrides the ‘reported_content_url` Reportable concern method.



90
91
92
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 90

def reported_content_url
  ResourceLocatorPresenter.new(self).url
end

#reported_searchable_content_extrasObject

Public: Overrides the ‘reported_searchable_content_extras` Reportable concern method.



100
101
102
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 100

def reported_searchable_content_extras
  [normalized_author.name]
end

#user_group?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 77

def user_group?
  author.is_a?(Decidim::UserGroup)
end

#users_to_notify_on_comment_createdObject



81
82
83
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 81

def users_to_notify_on_comment_created
  followers
end

#visible?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'decidim-blogs/app/models/decidim/blogs/post.rb', line 50

def visible?
  participatory_space.try(:visible?) && component.try(:published?) && published?
end