Class: Entry
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Entry
- Includes:
- HasOwner
- Defined in:
- app/models/entry.rb
Constant Summary collapse
- PER_PAGE =
10
Class Method Summary collapse
- .community_privacies ⇒ Object
- .creation_parameters ⇒ Object
- .entity_parameters ⇒ Object
- .page_for_administration(page) ⇒ Object
- .page_for_owner(user, page) ⇒ Object
- .page_for_visitors(user, page) ⇒ Object
- .privacy_for_user(user) ⇒ Object
Instance Method Summary collapse
- #can_be_reposted_by?(user) ⇒ Boolean
- #commentable_by?(user) ⇒ Boolean
- #editable_by?(user) ⇒ Boolean
-
#generally_accessible_to?(user) ⇒ Boolean
Is entry visible to user as generally accessible entry?.
-
#visible_to?(user) ⇒ Boolean
Is entry visible to user?.
-
#visible_to_community_to?(user) ⇒ Boolean
Is entry visible to user as entry for community?.
-
#visible_to_followees_to?(user) ⇒ Boolean
Is entry visible to user as entry for followees?.
Class Method Details
.community_privacies ⇒ Object
49 50 51 |
# File 'app/models/entry.rb', line 49 def self.community_privacies [Entry.privacies[:generally_accessible], Entry.privacies[:visible_to_community]] end |
.creation_parameters ⇒ Object
58 59 60 |
# File 'app/models/entry.rb', line 58 def self.creation_parameters entity_parameters # + %i(community_id) end |
.entity_parameters ⇒ Object
53 54 55 56 |
# File 'app/models/entry.rb', line 53 def self.entity_parameters for_image = %i(image image_name image_author_name image_author_link) for_image + %i(lead title body slug privacy show_name source source_link) end |
.page_for_administration(page) ⇒ Object
33 34 35 |
# File 'app/models/entry.rb', line 33 def self.page_for_administration(page) not_deleted.with_privacy(Entry.community_privacies).recent.page(page).per(PER_PAGE) end |
.page_for_owner(user, page) ⇒ Object
45 46 47 |
# File 'app/models/entry.rb', line 45 def self.page_for_owner(user, page) owned_by(user).not_deleted.recent.page(page).per(PER_PAGE) end |
.page_for_visitors(user, page) ⇒ Object
39 40 41 |
# File 'app/models/entry.rb', line 39 def self.page_for_visitors(user, page) not_deleted.with_privacy(Entry.privacy_for_user(user)).recent.page(page).per(PER_PAGE) end |
.privacy_for_user(user) ⇒ Object
63 64 65 |
# File 'app/models/entry.rb', line 63 def self.privacy_for_user(user) user.is_a?(User) ? Entry.community_privacies : Entry.privacies[:generally_accessible] end |
Instance Method Details
#can_be_reposted_by?(user) ⇒ Boolean
68 69 70 |
# File 'app/models/entry.rb', line 68 def can_be_reposted_by?(user) generally_accessible? && UserPrivilege.user_in_group?(user, :editors) end |
#commentable_by?(user) ⇒ Boolean
110 111 112 |
# File 'app/models/entry.rb', line 110 def commentable_by?(user) user.is_a? User end |
#editable_by?(user) ⇒ Boolean
105 106 107 |
# File 'app/models/entry.rb', line 105 def editable_by?(user) owned_by?(user) || (UserPrivilege.user_has_privilege?(user, :administrator) && visible_to?(user)) end |
#generally_accessible_to?(user) ⇒ Boolean
Is entry visible to user as generally accessible entry?
85 86 87 |
# File 'app/models/entry.rb', line 85 def generally_accessible_to?(user) user.nil? || user.is_a?(User) end |
#visible_to?(user) ⇒ Boolean
Is entry visible to user?
76 77 78 79 |
# File 'app/models/entry.rb', line 76 def visible_to?(user) method = "#{self.privacy}_to?".to_sym respond_to?(method) ? send(method, user) : owned_by?(user) end |
#visible_to_community_to?(user) ⇒ Boolean
Is entry visible to user as entry for community?
93 94 95 |
# File 'app/models/entry.rb', line 93 def visible_to_community_to?(user) user.is_a? User end |
#visible_to_followees_to?(user) ⇒ Boolean
Is entry visible to user as entry for followees?
101 102 103 |
# File 'app/models/entry.rb', line 101 def visible_to_followees_to?(user) owned_by?(user) || (self.user.is_a?(User) && self.user.follows?(user)) end |