effective_posts 2.4.2 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84c27105c23c603f005a3389dba3e7f04a13c88e9d46f0fe7c135a1b5f40bf07
4
- data.tar.gz: d9d1637b7f30a5190455e5337848ad6fcbffe129d943483ccadeb8f611e426b4
3
+ metadata.gz: fb8b8e024f90c5178e6904396c0f2e565d54e5b4eb0eac92c41e9442089016c3
4
+ data.tar.gz: bfe539309dbf2538961d899773af1855a54127864f8fcd98f9e375b1500bd452
5
5
  SHA512:
6
- metadata.gz: eb22ed3626f8637052610a9d7a12cc9a08ea3bf09589953e3a7d1ee681e1f6ff73c7f250f00eb612ed7e50567f0515667c0a33c817cddcef09fb3f3bf8455266
7
- data.tar.gz: 4ea9ec43edfd22c8c37ef8348757d8c2e4ce4208168be17a0cf93b0490df235d2b59a0cba0b679313ce1fb79941b8e4ea1ac36418c7c98b1e8057476fae213b6
6
+ metadata.gz: 821dc29782ba4a54c87425c9fec3f993d1febcd5b43c5b256462df60f700afddde1e07eb2bd803af1508c4b359ffda6f7f4e3c956ce8facd70c751d9b9590ba9
7
+ data.tar.gz: bbf9908b09e91896d285496ef14aa59bf1eab7bd07ef479ae7d528a91801a9705b439a5c78365fa78ee648b25118e46dce7488c053c92b346c33b4bd14311474
@@ -36,7 +36,9 @@ module Effective
36
36
  def show
37
37
  @category = EffectivePosts.category(params[:category])
38
38
 
39
- @posts ||= Effective::Post.posts(user: current_user, unpublished: EffectiveResources.authorized?(self, :admin, :effective_posts))
39
+ admin = EffectiveResources.authorized?(self, :admin, :effective_posts)
40
+
41
+ @posts ||= Effective::Post.posts(user: current_user, unpublished: admin, archived: admin)
40
42
  @post = @posts.find(params[:id])
41
43
 
42
44
  if @post.respond_to?(:roles_permit?)
@@ -45,10 +47,11 @@ module Effective
45
47
 
46
48
  EffectiveResources.authorize!(self, :show, @post)
47
49
 
48
- if EffectiveResources.authorized?(self, :admin, :effective_posts)
50
+ if admin
49
51
  flash.now[:warning] = [
50
52
  'Hi Admin!',
51
53
  ('You are viewing a hidden post.' unless @post.published?),
54
+ ('You are viewing an archived post.' if @post.archived?),
52
55
  'Click here to',
53
56
  ("<a href='#{effective_posts.edit_admin_post_path(@post)}' class='alert-link'>edit post settings</a>.")
54
57
  ].compact.join(' ')
@@ -1,15 +1,23 @@
1
1
  class EffectivePostsDatatable < Effective::Datatable
2
+ bulk_actions do
3
+ bulk_action('Archive selected', effective_posts.bulk_archive_admin_posts_path)
4
+ bulk_action('Unarchive selected', effective_posts.bulk_unarchive_admin_posts_path)
5
+ end
6
+
2
7
  filters do
3
- scope :all
8
+ scope :unarchived, label: 'All'
4
9
  scope :published
5
10
  scope :unpublished
6
11
  scope :news
7
12
  scope :events
13
+ scope :archived
8
14
  end
9
15
 
10
16
  datatable do
11
17
  order :published_at, :desc
12
18
 
19
+ bulk_actions_col
20
+
13
21
  col :published_at
14
22
  col :id, visible: false
15
23
 
@@ -27,6 +35,8 @@ class EffectivePostsDatatable < Effective::Datatable
27
35
  col :draft
28
36
  end
29
37
 
38
+ col :archived
39
+
30
40
  col :start_at
31
41
  col :end_at, visible: false
32
42
  col :location, visible: false
@@ -71,7 +71,9 @@ module EffectivePostsHelper
71
71
  def admin_post_status_badge(post)
72
72
  return nil unless EffectiveResources.authorized?(self, :admin, :effective_posts)
73
73
 
74
- if post.draft?
74
+ if post.archived?
75
+ content_tag(:span, 'ARCHIVED', class: 'badge badge-info')
76
+ elsif post.draft?
75
77
  content_tag(:span, 'DRAFT', class: 'badge badge-info')
76
78
  elsif post.published? == false
77
79
  content_tag(:span, "TO BE PUBLISHED AT #{post.published_at&.strftime('%F %H:%M') || 'LATER'}", class: 'badge badge-info')
@@ -8,7 +8,9 @@ module Effective
8
8
 
9
9
  attr_accessor :current_user
10
10
 
11
+ acts_as_archived
11
12
  acts_as_slugged
13
+
12
14
  log_changes if respond_to?(:log_changes)
13
15
  acts_as_tagged if respond_to?(:acts_as_tagged)
14
16
  acts_as_role_restricted if respond_to?(:acts_as_role_restricted)
@@ -34,6 +36,7 @@ module Effective
34
36
  tags :text
35
37
 
36
38
  roles_mask :integer
39
+ archived :boolean
37
40
 
38
41
  # Event Fields
39
42
  start_at :datetime
@@ -56,17 +59,21 @@ module Effective
56
59
  validates :published_at, presence: true, unless: -> { draft? }
57
60
  validates :start_at, presence: true, if: -> { category == 'events' }
58
61
 
59
- scope :drafts, -> { where(draft: true) }
60
- scope :published, -> { where(draft: false).where("published_at < ?", Time.zone.now) }
61
- scope :unpublished, -> { where(draft: true).or(where("published_at > ?", Time.zone.now)) }
62
- scope :with_category, -> (category) { where(category: category) }
62
+ scope :unarchived, -> { where(archived: false) }
63
+ scope :archived, -> { where(archived: true) }
64
+
65
+ scope :drafts, -> { unarchived.where(draft: true) }
66
+ scope :published, -> { unarchived.where(draft: false).where("published_at < ?", Time.zone.now) }
67
+ scope :unpublished, -> { unarchived.where(draft: true).or(where("published_at > ?", Time.zone.now)) }
63
68
 
64
69
  # Kind of a meta category
65
- scope :news, -> { where(category: EffectivePosts.news_categories) }
66
- scope :events, -> { where(category: EffectivePosts.event_categories) }
70
+ scope :news, -> { unarchived.where(category: EffectivePosts.news_categories) }
71
+ scope :events, -> { unarchived.where(category: EffectivePosts.event_categories) }
72
+
73
+ scope :with_category, -> (category) { where(category: category) } # Don't add unarchived here
67
74
 
68
75
  scope :deep, -> {
69
- base = with_rich_text_excerpt_and_embeds.with_rich_text_body_and_embeds
76
+ base = with_attached_image.with_rich_text_excerpt_and_embeds.with_rich_text_body_and_embeds
70
77
  base = base.includes(:pg_search_document) if defined?(PgSearch)
71
78
  base
72
79
  }
@@ -78,7 +85,7 @@ module Effective
78
85
  limit(per_page).offset(offset)
79
86
  }
80
87
 
81
- scope :posts, -> (user: nil, category: nil, unpublished: false) {
88
+ scope :posts, -> (user: nil, category: nil, unpublished: false, archived: false) {
82
89
  scope = all.deep.order(published_at: :desc)
83
90
 
84
91
  if defined?(EffectiveRoles) && EffectivePosts.use_effective_roles
@@ -95,6 +102,10 @@ module Effective
95
102
  scope = scope.published
96
103
  end
97
104
 
105
+ unless archived
106
+ scope = scope.unarchived
107
+ end
108
+
98
109
  scope
99
110
  }
100
111
 
@@ -36,6 +36,8 @@
36
36
 
37
37
  = f.check_box :draft, hint: 'Save this post as a draft. It will not be accessible on the website.'
38
38
 
39
+ = f.check_box :archived, label: 'Yes, this post is archived. It will not be displayed.'
40
+
39
41
  - if EffectivePosts.use_effective_roles
40
42
  = render partial: '/admin/posts/roles', locals: { post: post, form: f, f: f }
41
43
 
data/config/routes.rb CHANGED
@@ -2,6 +2,11 @@ EffectivePosts::Engine.routes.draw do
2
2
  namespace :admin do
3
3
  resources :posts, except: [:show] do
4
4
  post :approve, on: :member
5
+
6
+ post :archive, on: :member
7
+ post :unarchive, on: :member
8
+ post :bulk_archive, on: :collection
9
+ post :bulk_unarchive, on: :collection
5
10
  end
6
11
  end
7
12
 
@@ -10,12 +10,13 @@ class CreateEffectivePosts < ActiveRecord::Migration[6.0]
10
10
  t.string :category
11
11
  t.string :slug
12
12
 
13
- t.boolean :draft, :default => false
13
+ t.boolean :draft, default: false
14
14
  t.datetime :published_at
15
15
 
16
16
  t.text :tags
17
17
 
18
- t.integer :roles_mask, :default => 0
18
+ t.integer :roles_mask, default: 0
19
+ t.boolean :archived, default: false
19
20
 
20
21
  # Events fields
21
22
  t.datetime :start_at
@@ -1,3 +1,3 @@
1
1
  module EffectivePosts
2
- VERSION = '2.4.2'.freeze
2
+ VERSION = '2.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_posts
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-01 00:00:00.000000000 Z
11
+ date: 2024-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails