effective_pages 3.0.0 → 3.0.1
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 +4 -4
- data/app/controllers/admin/pages_controller.rb +4 -0
- data/app/controllers/effective/pages_controller.rb +5 -5
- data/app/models/effective/page.rb +25 -4
- data/app/views/admin/pages/_form.html.haml +2 -3
- data/app/views/admin/pages/_rich_texts.html.haml +2 -0
- data/config/effective_pages.rb +2 -2
- data/config/routes.rb +3 -7
- data/db/migrate/01_create_effective_pages.rb.erb +11 -3
- data/lib/effective_pages.rb +1 -7
- data/lib/effective_pages/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccfde3b643933010d2ed2b254f381eda959b5d057cf9e30ab1cb1e2ed57adfaf
|
4
|
+
data.tar.gz: 5021c6f8feb8dfddc5f32ae1e076c976f7fc15408d0c69db25ae37e8c40da834
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70284db9597483e1ff7117056a18c282c7c822c372a6f5d1826e1d01ad4fbdba6603385e584c64040b0e2a0702590f3427d258837a38829cdbf340e5650ee613
|
7
|
+
data.tar.gz: f0f64d3c8739c2aeefb511cbbd1b6fd505728e7608f06684c020c68781d0baf005b753919da9b0ed2cdaad0dcc637d5016d43ac3c7750e12344a7464a6b26678
|
@@ -14,5 +14,9 @@ module Admin
|
|
14
14
|
submit :save, 'Save and View', redirect: -> { effective_pages.page_path(resource) }
|
15
15
|
submit :save, 'Duplicate', only: :edit, redirect: -> { effective_posts.new_admin_page_path(duplicate_id: resource.id) }
|
16
16
|
|
17
|
+
def permitted_params
|
18
|
+
params.require(:effective_page).permit!
|
19
|
+
end
|
20
|
+
|
17
21
|
end
|
18
22
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
module Effective
|
2
2
|
class PagesController < ApplicationController
|
3
|
-
before_action(:authenticate_user!) if defined?(Devise) && EffectiveResources.authenticate_user
|
4
|
-
|
5
3
|
include Effective::CrudController
|
6
4
|
|
7
5
|
def show
|
@@ -10,9 +8,11 @@ module Effective
|
|
10
8
|
|
11
9
|
@page = @pages.find(params[:id])
|
12
10
|
|
13
|
-
|
14
|
-
|
11
|
+
if @page.authenticate_user? || @page.roles.present?
|
12
|
+
authenticate_user!
|
13
|
+
end
|
15
14
|
|
15
|
+
raise Effective::AccessDenied.new('Access Denied', :show, @page) unless @page.roles_permit?(current_user)
|
16
16
|
EffectiveResources.authorize!(self, :show, @page)
|
17
17
|
|
18
18
|
@page_title = @page.title
|
@@ -29,7 +29,7 @@ module Effective
|
|
29
29
|
end
|
30
30
|
|
31
31
|
template = File.join(EffectivePages.pages_path, @page.template)
|
32
|
-
layout = (@page.layout
|
32
|
+
layout = File.join(EffectivePages.layouts_path, @page.layout)
|
33
33
|
|
34
34
|
render(template, layout: layout, locals: { page: @page })
|
35
35
|
end
|
@@ -2,13 +2,17 @@ module Effective
|
|
2
2
|
class Page < ActiveRecord::Base
|
3
3
|
attr_accessor :current_user
|
4
4
|
|
5
|
-
|
5
|
+
# These parent / children are for the menu as well
|
6
|
+
belongs_to :menu_parent, class_name: 'Effective::Page', optional: true
|
7
|
+
|
8
|
+
has_many :menu_children, -> { Effective::Page.menuable }, class_name: 'Effective::Page',
|
9
|
+
foreign_key: :menu_parent_id, inverse_of: :menu_parent
|
6
10
|
|
7
|
-
log_changes if respond_to?(:log_changes)
|
8
11
|
acts_as_role_restricted
|
12
|
+
acts_as_slugged
|
13
|
+
has_many_rich_texts
|
9
14
|
|
10
|
-
|
11
|
-
has_many :menu_items, as: :menuable, dependent: :destroy
|
15
|
+
log_changes if respond_to?(:log_changes)
|
12
16
|
|
13
17
|
self.table_name = EffectivePages.pages_table_name.to_s
|
14
18
|
|
@@ -22,7 +26,15 @@ module Effective
|
|
22
26
|
template :string
|
23
27
|
|
24
28
|
slug :string
|
29
|
+
|
25
30
|
roles_mask :integer
|
31
|
+
authenticate_user :boolean
|
32
|
+
|
33
|
+
# Menu stuff
|
34
|
+
menu :boolean
|
35
|
+
menu_name :string
|
36
|
+
menu_url :string
|
37
|
+
menu_position :integer
|
26
38
|
|
27
39
|
timestamps
|
28
40
|
end
|
@@ -32,11 +44,20 @@ module Effective
|
|
32
44
|
|
33
45
|
validates :template, presence: true
|
34
46
|
|
47
|
+
# validates :menu_name, if: -> { menu? },
|
48
|
+
# presence: true, inclusion: { in: EffectivePages.menus }
|
49
|
+
|
50
|
+
# validates :menu_position, if: -> { menu? },
|
51
|
+
# presence: true, uniqueness: { scope: [:menu_name, :menu_parent_id] }
|
52
|
+
|
35
53
|
scope :drafts, -> { where(draft: true) }
|
36
54
|
scope :published, -> { where(draft: false) }
|
37
55
|
scope :sorted, -> { order(:title) }
|
38
56
|
scope :except_home, -> { where.not(title: 'Home') }
|
39
57
|
|
58
|
+
scope :menuable, -> { where(menu: true).order(:menu_position) }
|
59
|
+
scope :for_menu, -> (name) { menuable.where(menu_name: name) }
|
60
|
+
|
40
61
|
def to_s
|
41
62
|
title
|
42
63
|
end
|
@@ -18,12 +18,11 @@
|
|
18
18
|
= f.text_field :meta_description, hint: "A one or two sentence summary of this page. Appears on Google search results underneath the page title.", input_html: { maxlength: 150 }
|
19
19
|
|
20
20
|
= render partial: '/admin/pages/additional_fields', locals: { page: page, form: f, f: f }
|
21
|
-
|
22
|
-
= f.rich_text_area :body, hint: 'The main body of your page'
|
21
|
+
= render partial: '/admin/pages/rich_texts', locals: { page: page, form: f, f: f }
|
23
22
|
|
24
23
|
= f.check_box :draft, label: 'Save this page as a draft. It will not be accessible on the website.'
|
25
24
|
|
26
|
-
- if
|
25
|
+
- if EffectivePages.use_effective_roles
|
27
26
|
= render partial: '/admin/pages/roles', locals: { page: page, form: f, f: f }
|
28
27
|
|
29
28
|
= effective_submit(f)
|
data/config/effective_pages.rb
CHANGED
@@ -3,8 +3,8 @@ EffectivePages.setup do |config|
|
|
3
3
|
config.menus_table_name = :menus
|
4
4
|
config.menu_items_table_name = :menu_items
|
5
5
|
|
6
|
-
#
|
7
|
-
config.
|
6
|
+
# The menu names a page can belong to
|
7
|
+
config.menus = [:main, :footer]
|
8
8
|
|
9
9
|
# The directory where your page templates live
|
10
10
|
# Any files in this directory will be automatically available when
|
data/config/routes.rb
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
class EffectivePagesConstraint
|
2
|
-
def self.matches?(request)
|
3
|
-
Effective::Page.find(request.path_parameters[:id] || '/').present? rescue false
|
4
|
-
end
|
5
|
-
end
|
6
|
-
|
7
1
|
EffectivePages::Engine.routes.draw do
|
8
2
|
namespace :admin do
|
9
3
|
resources :pages, except: [:show]
|
@@ -11,7 +5,9 @@ EffectivePages::Engine.routes.draw do
|
|
11
5
|
end
|
12
6
|
|
13
7
|
scope module: 'effective' do
|
14
|
-
|
8
|
+
match '*id', to: 'pages#show', via: :get, as: :page, constraints: lambda { |req|
|
9
|
+
Effective::Page.find_by_slug_or_id(req.path_parameters[:id] || '/').present?
|
10
|
+
}
|
15
11
|
end
|
16
12
|
end
|
17
13
|
|
@@ -4,13 +4,21 @@ class CreateEffectivePages < ActiveRecord::Migration[4.2]
|
|
4
4
|
t.string :title
|
5
5
|
t.string :meta_description
|
6
6
|
|
7
|
-
t.boolean :draft, :
|
7
|
+
t.boolean :draft, default: false
|
8
8
|
|
9
|
-
t.string :layout, :
|
9
|
+
t.string :layout, default: 'application'
|
10
10
|
t.string :template
|
11
11
|
|
12
12
|
t.string :slug
|
13
|
-
|
13
|
+
|
14
|
+
t.boolean :authenticate_user, default: false
|
15
|
+
t.integer :roles_mask, default: 0
|
16
|
+
|
17
|
+
t.integer :menu_parent_id
|
18
|
+
t.boolean :menu, default: true
|
19
|
+
t.string :menu_name
|
20
|
+
t.string :menu_url
|
21
|
+
t.integer :menu_position
|
14
22
|
|
15
23
|
t.datetime :updated_at
|
16
24
|
t.datetime :created_at
|
data/lib/effective_pages.rb
CHANGED
@@ -12,7 +12,7 @@ module EffectivePages
|
|
12
12
|
:site_og_image, :site_og_image_width, :site_og_image_height,
|
13
13
|
:site_title, :site_title_suffix, :fallback_meta_description,
|
14
14
|
:silence_missing_page_title_warnings, :silence_missing_meta_description_warnings, :silence_missing_canonical_url_warnings,
|
15
|
-
:use_effective_roles, :
|
15
|
+
:use_effective_roles, :menus, :menu, :layout
|
16
16
|
]
|
17
17
|
end
|
18
18
|
|
@@ -39,10 +39,4 @@ module EffectivePages
|
|
39
39
|
end.compact.sort
|
40
40
|
end
|
41
41
|
|
42
|
-
def self.permitted_params
|
43
|
-
@permitted_params ||= [
|
44
|
-
:title, :meta_description, :draft, :layout, :template, :slug, roles: []
|
45
|
-
]
|
46
|
-
end
|
47
|
-
|
48
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_pages
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
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: 2021-
|
11
|
+
date: 2021-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- app/views/admin/menus/show.html.haml
|
96
96
|
- app/views/admin/pages/_additional_fields.html.haml
|
97
97
|
- app/views/admin/pages/_form.html.haml
|
98
|
+
- app/views/admin/pages/_rich_texts.html.haml
|
98
99
|
- app/views/admin/pages/_roles.html.haml
|
99
100
|
- config/effective_pages.rb
|
100
101
|
- config/routes.rb
|