alchemy_cms 4.4.1 → 4.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/PULL_REQUEST_TEMPLATE.md +18 -0
- data/.github/workflows/ci.yml +7 -3
- data/.github/workflows/greetings.yml +13 -0
- data/.github/workflows/stale.yml +17 -0
- data/.rubocop.yml +0 -4
- data/CHANGELOG.md +13 -1
- data/Gemfile +4 -7
- data/alchemy_cms.gemspec +2 -0
- data/app/controllers/alchemy/admin/pages_controller.rb +2 -2
- data/app/controllers/alchemy/admin/trash_controller.rb +20 -1
- data/app/controllers/concerns/alchemy/page_redirects.rb +1 -1
- data/app/helpers/alchemy/pages_helper.rb +1 -1
- data/app/models/alchemy/content.rb +1 -7
- data/app/models/alchemy/element.rb +1 -3
- data/app/models/alchemy/page.rb +3 -3
- data/app/models/alchemy/page/page_naming.rb +6 -6
- data/app/models/alchemy/page/page_natures.rb +1 -1
- data/app/serializers/alchemy/page_tree_serializer.rb +2 -2
- data/app/views/alchemy/admin/pages/_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/info.html.erb +1 -1
- data/app/views/alchemy/navigation/_link.html.erb +1 -1
- data/lib/alchemy/auth_accessors.rb +22 -14
- data/lib/alchemy/test_support/factories/element_factory.rb +6 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -1
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -1
- data/lib/tasks/alchemy/convert.rake +4 -4
- metadata +33 -4
- data/PULL_REQUEST_TEMPLATE.md +0 -14
- data/lib/alchemy/sass_support.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae4ec24167d52bce7dd695bff45480caea2bdc319b2ade53f0ce1e1765c8f2ec
|
4
|
+
data.tar.gz: fea9390ea760a741269c9115c41090bfd0052705bbb161cb110295a390f84343
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e2b632ebbc2222d6664d0b9e315d978df3840968e90570da00f89226427aa21465ac7fb17f350a21e976f928a84ec32b6476c4cd769791fdfc7ad774456c32b
|
7
|
+
data.tar.gz: 74f98bf1fdf3301ae10af181414c49819945ba10b41abf5a0f993fb00606aa866e7fd4ae1c8a15b1808e2e3734e94d5954a889836f043f66d77ace3e71d1f395
|
@@ -0,0 +1,18 @@
|
|
1
|
+
## What is this pull request for?
|
2
|
+
|
3
|
+
Describe you pull request here...
|
4
|
+
|
5
|
+
Closes #<issue number> (Remove if not related to any issue)
|
6
|
+
|
7
|
+
### Notable changes (remove if none)
|
8
|
+
|
9
|
+
Explain any changes (maybe breaking?) that have been made.
|
10
|
+
|
11
|
+
### Screenshots
|
12
|
+
|
13
|
+
Remove if no visual changes have been made.
|
14
|
+
|
15
|
+
## Checklist
|
16
|
+
- [ ] I have followed [Pull Request guidelines](https://github.com/AlchemyCMS/alchemy_cms/blob/master/CONTRIBUTING.md)
|
17
|
+
- [ ] I have added a detailed description into each commit message
|
18
|
+
- [ ] I have added tests to cover this change
|
data/.github/workflows/ci.yml
CHANGED
@@ -20,14 +20,18 @@ jobs:
|
|
20
20
|
env:
|
21
21
|
DB: ${{ matrix.database }}
|
22
22
|
MYSQL_PASSWORD: root
|
23
|
-
|
24
|
-
|
23
|
+
POSTGRES_USER: postgres
|
24
|
+
POSTGRES_PASSWORD: password
|
25
25
|
RAILS_ENV: test
|
26
26
|
RAILS_VERSION: ${{ matrix.rails }}
|
27
27
|
CC_TEST_REPORTER_ID: bca4349e32f97919210ac8a450b04904b90683fcdd57d65a22c0f5065482bc22
|
28
28
|
services:
|
29
29
|
postgres:
|
30
|
-
image: postgres:
|
30
|
+
image: postgres:11
|
31
|
+
env:
|
32
|
+
POSTGRES_USER: postgres
|
33
|
+
POSTGRES_PASSWORD: password
|
34
|
+
POSTGRES_DB: alchemy_cms_dummy_test
|
31
35
|
ports: ['5432:5432']
|
32
36
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
33
37
|
steps:
|
@@ -0,0 +1,13 @@
|
|
1
|
+
name: Greetings
|
2
|
+
|
3
|
+
on: [pull_request, issues]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
greeting:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
steps:
|
9
|
+
- uses: actions/first-interaction@v1
|
10
|
+
with:
|
11
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
12
|
+
issue-message: 'Hey. Thanks for reporting this issue and welcome to AlchemyCMS. The maintainer have been notified. Please be patient while waiting for an answer. Open Source is done by volunteers, so give them some time to react. Meanwhile please think about sending a PR that fixes this issue. It is way more likely that it will be accepted than this bug fixed for you. Remember OpenSource is done by all of us. Again, thanks for reporting.'
|
13
|
+
pr-message: 'Hey. Thanks for sending this PR. It is very much appreciated. Please be patient and give the maintainers some time to review your work. Meanwhile make sure that the PR meets our [contributing guidelines](https://github.com/AlchemyCMS/alchemy_cms/blob/master/CONTRIBUTING.md). This mostly means [great commit messages](https://chris.beams.io/posts/git-commit/) and adding tests. Thanks again for your contribution. Your help makes Alchemy better.'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
name: Mark stale issues and pull requests
|
2
|
+
|
3
|
+
on:
|
4
|
+
schedule:
|
5
|
+
- cron: "0 0 * * *"
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
stale:
|
9
|
+
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
|
12
|
+
steps:
|
13
|
+
- uses: actions/stale@v1
|
14
|
+
with:
|
15
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
16
|
+
stale-issue-message: 'This issue has not seen any activity in a long time. If the issue descriped still exists in recent versions of Alchemy, please open a new issue or preferably open a PR with a fix. Thanks for reporting.'
|
17
|
+
stale-pr-message: 'This pull request has not seen any activiy in a long time. Probably because of missing tests or a necessary rebase. Please open a new PR to latest master if you want to continue working on this. Thanks for the contribution.'
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
## 5.0.0 (unreleased)
|
2
2
|
|
3
|
+
## 4.4.2 (2020-02-25)
|
4
|
+
|
5
|
+
- Do not use deprecated methods [#1737](https://github.com/AlchemyCMS/alchemy_cms/pull/1737) ([tvdeyen](https://github.com/tvdeyen))
|
6
|
+
- Order contents by their position in its element [#1733](https://github.com/AlchemyCMS/alchemy_cms/pull/1733) ([tvdeyen](https://github.com/tvdeyen))
|
7
|
+
- Eager load relations in elements trash [#1732](https://github.com/AlchemyCMS/alchemy_cms/pull/1732) ([tvdeyen](https://github.com/tvdeyen))
|
8
|
+
- Run CI builds with Sprockets 3.7.2 [#1731](https://github.com/AlchemyCMS/alchemy_cms/pull/1731) ([tvdeyen](https://github.com/tvdeyen))
|
9
|
+
- Re-organize development dependencies [#1730](https://github.com/AlchemyCMS/alchemy_cms/pull/1730) ([tvdeyen](https://github.com/tvdeyen))
|
10
|
+
- Update pr template [#1729](https://github.com/AlchemyCMS/alchemy_cms/pull/1729) ([tvdeyen](https://github.com/tvdeyen))
|
11
|
+
- Generate views without _view in the filename [#1728](https://github.com/AlchemyCMS/alchemy_cms/pull/1728) ([tvdeyen](https://github.com/tvdeyen))
|
12
|
+
- Fix CI Builds [#1727](https://github.com/AlchemyCMS/alchemy_cms/pull/1727) ([tvdeyen](https://github.com/tvdeyen))
|
13
|
+
- Fix page tagging condition: should_attach_to_menu? [#1725](https://github.com/AlchemyCMS/alchemy_cms/pull/1725) ([mickenorlen](https://github.com/mickenorlen))
|
14
|
+
- Fix Alchemy.user_class_name constant conflict [#1724](https://github.com/AlchemyCMS/alchemy_cms/pull/1724) ([mickenorlen](https://github.com/mickenorlen))
|
15
|
+
|
3
16
|
## 4.4.1 (2020-01-08)
|
4
17
|
|
5
18
|
- Fix updating page preview after element create/save [#1710](https://github.com/AlchemyCMS/alchemy_cms/pull/1710) ([tvdeyen](https://github.com/tvdeyen))
|
@@ -607,4 +620,3 @@ No changes
|
|
607
620
|
## 3.0.0 (2014-07-03)
|
608
621
|
|
609
622
|
[Release Notes](https://github.com/AlchemyCMS/alchemy_cms/releases/tag/v3.0.0)
|
610
|
-
|
data/Gemfile
CHANGED
@@ -5,20 +5,16 @@ gemspec
|
|
5
5
|
rails_version = ENV.fetch('RAILS_VERSION', 6.0).to_f
|
6
6
|
gem 'rails', "~> #{rails_version}.0"
|
7
7
|
|
8
|
-
# Profiling
|
9
|
-
gem 'rack-mini-profiler', group: :development, require: false
|
10
|
-
|
11
8
|
if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
|
12
9
|
gem 'sqlite3', rails_version > 5.0 ? '~> 1.4.1' : '~> 1.3.6'
|
13
10
|
end
|
14
11
|
gem 'mysql2', '~> 0.5.1' if ENV['DB'] == 'mysql'
|
15
12
|
gem 'pg', '~> 1.0' if ENV['DB'] == 'postgresql'
|
16
|
-
gem 'sassc-rails'
|
17
13
|
|
18
14
|
group :development, :test do
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
if ENV['CI']
|
16
|
+
gem 'sprockets', '< 4.0' # Sprockets 4 has serious issues with libsass on Linux machines
|
17
|
+
else
|
22
18
|
gem 'launchy'
|
23
19
|
gem 'annotate'
|
24
20
|
gem 'bumpy'
|
@@ -31,5 +27,6 @@ group :development, :test do
|
|
31
27
|
gem 'dotenv', '~> 2.2'
|
32
28
|
gem 'github_fast_changelog', require: false
|
33
29
|
gem 'active_record_query_trace', require: false
|
30
|
+
gem 'rack-mini-profiler', require: false
|
34
31
|
end
|
35
32
|
end
|
data/alchemy_cms.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |gem|
|
|
36
36
|
gem.add_runtime_dependency 'ransack', ['>= 1.8', '< 3.0']
|
37
37
|
gem.add_runtime_dependency 'request_store', ['~> 1.2']
|
38
38
|
gem.add_runtime_dependency 'responders', ['>= 2.0', '< 4.0']
|
39
|
+
gem.add_runtime_dependency 'sassc-rails', ['~> 2.1']
|
39
40
|
gem.add_runtime_dependency 'select2-rails', ['>= 3.5.9.1', '< 4.0']
|
40
41
|
gem.add_runtime_dependency 'simple_form', ['>= 4.0', '< 6']
|
41
42
|
gem.add_runtime_dependency 'sprockets', ['>= 3.0', '< 5']
|
@@ -48,6 +49,7 @@ Gem::Specification.new do |gem|
|
|
48
49
|
gem.add_development_dependency 'rails-controller-testing', ['~> 1.0']
|
49
50
|
gem.add_development_dependency 'rspec-activemodel-mocks', ['~> 1.0']
|
50
51
|
gem.add_development_dependency 'rspec-rails', ['>= 4.0.0.beta2']
|
52
|
+
gem.add_development_dependency 'simplecov', ['~> 0.17.1']
|
51
53
|
gem.add_development_dependency 'webdrivers', ['~> 4.0']
|
52
54
|
gem.add_development_dependency 'shoulda-matchers', ['~> 4.0']
|
53
55
|
|
@@ -93,7 +93,7 @@ module Alchemy
|
|
93
93
|
# Set page configuration like page names, meta tags and states.
|
94
94
|
def configure
|
95
95
|
@page_layouts = PageLayout.layouts_with_own_for_select(@page.page_layout, Language.current.id, @page.layoutpage?)
|
96
|
-
render @page.redirects_to_external
|
96
|
+
render @page.definition['redirects_to_external'] ? 'configure_external' : 'configure'
|
97
97
|
end
|
98
98
|
|
99
99
|
# Updates page
|
@@ -330,7 +330,7 @@ module Alchemy
|
|
330
330
|
end
|
331
331
|
|
332
332
|
def redirect_path_after_create_page
|
333
|
-
if @page.redirects_to_external
|
333
|
+
if @page.definition['redirects_to_external'] || !@page.editable_by?(current_alchemy_user)
|
334
334
|
admin_pages_path
|
335
335
|
else
|
336
336
|
params[:redirect_to] || edit_admin_page_path(@page)
|
@@ -8,7 +8,7 @@ module Alchemy
|
|
8
8
|
authorize_resource class: false
|
9
9
|
|
10
10
|
def index
|
11
|
-
@elements = Element.trashed
|
11
|
+
@elements = Element.trashed.includes(*element_includes)
|
12
12
|
@page = Page.find(params[:page_id])
|
13
13
|
@allowed_elements = @page.available_element_definitions
|
14
14
|
end
|
@@ -18,6 +18,25 @@ module Alchemy
|
|
18
18
|
@elements = Element.trashed
|
19
19
|
@elements.map(&:destroy)
|
20
20
|
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def element_includes
|
25
|
+
[
|
26
|
+
{
|
27
|
+
contents: {
|
28
|
+
essence: :ingredient_association
|
29
|
+
},
|
30
|
+
all_nested_elements: [
|
31
|
+
{
|
32
|
+
contents: {
|
33
|
+
essence: :ingredient_association
|
34
|
+
}
|
35
|
+
}
|
36
|
+
]
|
37
|
+
}
|
38
|
+
]
|
39
|
+
end
|
21
40
|
end
|
22
41
|
end
|
23
42
|
end
|
@@ -244,7 +244,7 @@ module Alchemy
|
|
244
244
|
|
245
245
|
# Returns +'active'+ if the given external page is in the current url path or +nil+.
|
246
246
|
def external_page_css_class(page)
|
247
|
-
return nil if !page.redirects_to_external
|
247
|
+
return nil if !page.definition['redirects_to_external']
|
248
248
|
request.path.split('/').delete_if(&:blank?).first == page.urlname.gsub(/^\//, '') ? 'active' : nil
|
249
249
|
end
|
250
250
|
|
@@ -30,13 +30,7 @@ module Alchemy
|
|
30
30
|
|
31
31
|
stampable stamper_class_name: Alchemy.user_class_name
|
32
32
|
|
33
|
-
acts_as_list
|
34
|
-
|
35
|
-
# ActsAsList scope
|
36
|
-
def scope_condition
|
37
|
-
# Fixes a bug with postgresql having a wrong element_id value, if element_id is nil.
|
38
|
-
"element_id = #{element_id || 'null'} AND essence_type = '#{essence_type}'"
|
39
|
-
end
|
33
|
+
acts_as_list scope: [:element_id]
|
40
34
|
|
41
35
|
# Essence scopes
|
42
36
|
scope :essence_booleans, -> { where(essence_type: "Alchemy::EssenceBoolean") }
|
@@ -60,9 +60,7 @@ module Alchemy
|
|
60
60
|
|
61
61
|
stampable stamper_class_name: Alchemy.user_class_name
|
62
62
|
|
63
|
-
|
64
|
-
# In order to get contents in creation order we also order them by id.
|
65
|
-
has_many :contents, -> { order(:position, :id) }, dependent: :destroy, inverse_of: :element
|
63
|
+
has_many :contents, -> { order(:position) }, dependent: :destroy, inverse_of: :element
|
66
64
|
|
67
65
|
has_many :all_nested_elements,
|
68
66
|
-> { order(:position).not_trashed },
|
data/app/models/alchemy/page.rb
CHANGED
@@ -143,7 +143,7 @@ module Alchemy
|
|
143
143
|
|
144
144
|
after_update :create_legacy_url,
|
145
145
|
if: :should_create_legacy_url?,
|
146
|
-
unless:
|
146
|
+
unless: -> { definition['redirects_to_external'] }
|
147
147
|
|
148
148
|
after_update :attach_to_menu!,
|
149
149
|
if: :should_attach_to_menu?
|
@@ -470,7 +470,7 @@ module Alchemy
|
|
470
470
|
def update_node!(node)
|
471
471
|
hash = {lft: node.left, rgt: node.right, parent_id: node.parent, depth: node.depth, restricted: node.restricted}
|
472
472
|
|
473
|
-
if Config.get(:url_nesting) && !redirects_to_external
|
473
|
+
if Config.get(:url_nesting) && !definition['redirects_to_external'] && urlname != node.url
|
474
474
|
LegacyPageUrl.create(page_id: id, urlname: urlname)
|
475
475
|
hash[:urlname] = node.url
|
476
476
|
end
|
@@ -602,7 +602,7 @@ module Alchemy
|
|
602
602
|
end
|
603
603
|
|
604
604
|
def should_attach_to_menu?
|
605
|
-
menu_id && nodes.none?
|
605
|
+
menu_id.present? && nodes.none?
|
606
606
|
end
|
607
607
|
end
|
608
608
|
end
|
@@ -9,7 +9,7 @@ module Alchemy
|
|
9
9
|
included do
|
10
10
|
before_validation :set_urlname,
|
11
11
|
if: :renamed?,
|
12
|
-
unless: -> { systempage? || redirects_to_external
|
12
|
+
unless: -> { systempage? || definition['redirects_to_external'] || name.blank? }
|
13
13
|
|
14
14
|
validates :name,
|
15
15
|
presence: true
|
@@ -17,13 +17,13 @@ module Alchemy
|
|
17
17
|
uniqueness: {scope: [:language_id, :layoutpage], if: -> { urlname.present? }},
|
18
18
|
exclusion: {in: RESERVED_URLNAMES},
|
19
19
|
length: {minimum: 3, if: -> { urlname.present? }},
|
20
|
-
format: {with: /\A[:\.\w\-+_\/\?&%;=]*\z/, if:
|
20
|
+
format: {with: /\A[:\.\w\-+_\/\?&%;=]*\z/, if: -> { definition['redirects_to_external'] }}
|
21
21
|
validates :urlname,
|
22
22
|
on: :update,
|
23
|
-
presence: {if:
|
23
|
+
presence: {if: -> { definition['redirects_to_external'] }}
|
24
24
|
|
25
25
|
before_save :set_title,
|
26
|
-
unless: -> { systempage? || redirects_to_external
|
26
|
+
unless: -> { systempage? || definition['redirects_to_external'] },
|
27
27
|
if: -> { title.blank? }
|
28
28
|
|
29
29
|
after_update :update_descendants_urlnames,
|
@@ -31,7 +31,7 @@ module Alchemy
|
|
31
31
|
|
32
32
|
after_move :update_urlname!,
|
33
33
|
if: -> { Config.get(:url_nesting) },
|
34
|
-
unless:
|
34
|
+
unless: -> { definition['redirects_to_external'] }
|
35
35
|
end
|
36
36
|
|
37
37
|
# Returns true if name or urlname has changed.
|
@@ -86,7 +86,7 @@ module Alchemy
|
|
86
86
|
def update_descendants_urlnames
|
87
87
|
reload
|
88
88
|
descendants.each do |descendant|
|
89
|
-
next if descendant.redirects_to_external
|
89
|
+
next if descendant.definition['redirects_to_external']
|
90
90
|
descendant.update_urlname!
|
91
91
|
end
|
92
92
|
end
|
@@ -74,7 +74,7 @@ module Alchemy
|
|
74
74
|
|
75
75
|
# @deprecated Please use a menu node with an url pointing to your controller path instead.
|
76
76
|
def controller_and_action
|
77
|
-
if
|
77
|
+
if definition['controller']
|
78
78
|
{
|
79
79
|
controller: definition["controller"].gsub(/(^\b)/, "/#{$1}"),
|
80
80
|
action: definition["action"]
|
@@ -57,9 +57,9 @@ module Alchemy
|
|
57
57
|
restricted: page.restricted?,
|
58
58
|
page_layout: page.page_layout,
|
59
59
|
slug: page.slug,
|
60
|
-
redirects_to_external: page.redirects_to_external
|
60
|
+
redirects_to_external: page.definition['redirects_to_external'],
|
61
61
|
urlname: page.urlname,
|
62
|
-
external_urlname: page.redirects_to_external
|
62
|
+
external_urlname: page.definition['redirects_to_external'] ? page.external_urlname : nil,
|
63
63
|
level: level,
|
64
64
|
root: level == 1,
|
65
65
|
root_or_leaf: level == 1 || !has_children,
|
@@ -71,7 +71,7 @@
|
|
71
71
|
alchemy.configure_admin_page_path(page),
|
72
72
|
{
|
73
73
|
title: Alchemy.t(:edit_page_properties),
|
74
|
-
size: page.redirects_to_external
|
74
|
+
size: page.definition['redirects_to_external'] ? '450x330' : '450x680'
|
75
75
|
}
|
76
76
|
) -%>
|
77
77
|
<label class="center"><%= Alchemy.t(:edit_page_properties) %></label>
|
@@ -14,7 +14,7 @@
|
|
14
14
|
<p><%= @page.layout_display_name %></p>
|
15
15
|
</div>
|
16
16
|
<div class="value">
|
17
|
-
<% if @page.redirects_to_external
|
17
|
+
<% if @page.definition['redirects_to_external'] %>
|
18
18
|
<label><%= Alchemy::Page.human_attribute_name(:urlname) %></label>
|
19
19
|
<p><%= @page.urlname %></p>
|
20
20
|
<% else %>
|
@@ -44,8 +44,7 @@
|
|
44
44
|
# Alchemy.register_ability MyCustom::Ability
|
45
45
|
#
|
46
46
|
module Alchemy
|
47
|
-
mattr_accessor :
|
48
|
-
:user_class_primary_key,
|
47
|
+
mattr_accessor :user_class_primary_key,
|
49
48
|
:current_user_method,
|
50
49
|
:signup_path,
|
51
50
|
:login_path,
|
@@ -73,17 +72,25 @@ module Alchemy
|
|
73
72
|
# # config/initializers/alchemy.rb
|
74
73
|
# Alchemy.user_class_name = 'Admin'
|
75
74
|
#
|
75
|
+
|
76
|
+
# Prefix with :: when getting to avoid constant name conflicts
|
77
|
+
def self.user_class_name
|
78
|
+
if !@@user_class_name.is_a?(String)
|
79
|
+
raise TypeError, 'Alchemy.user_class_name must be a String, not a Class.'
|
80
|
+
end
|
81
|
+
"::#{@@user_class_name}"
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.user_class_name=(user_class_name)
|
85
|
+
@@user_class_name = user_class_name
|
86
|
+
end
|
87
|
+
|
76
88
|
def self.user_class
|
77
89
|
@@user_class ||= begin
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
83
|
-
end
|
84
|
-
rescue NameError => e
|
85
|
-
if e.message =~ /#{Regexp.escape(@@user_class_name)}/
|
86
|
-
abort <<-MSG.strip_heredoc
|
90
|
+
@@user_class_name.constantize
|
91
|
+
rescue NameError => e
|
92
|
+
if e.message =~ /#{Regexp.escape(@@user_class_name)}/
|
93
|
+
abort <<-MSG.strip_heredoc
|
87
94
|
|
88
95
|
AlchemyCMS cannot find any user class!
|
89
96
|
|
@@ -92,9 +99,10 @@ module Alchemy
|
|
92
99
|
|
93
100
|
bundle add alchemy-devise
|
94
101
|
|
95
|
-
|
96
|
-
|
97
|
-
|
102
|
+
MSG
|
103
|
+
else
|
104
|
+
raise e
|
105
|
+
end
|
98
106
|
end
|
99
107
|
end
|
100
108
|
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy_cms.rb
CHANGED
@@ -19,6 +19,7 @@ require 'non-stupid-digest-assets'
|
|
19
19
|
require 'ransack'
|
20
20
|
require 'request_store'
|
21
21
|
require 'responders'
|
22
|
+
require 'sassc-rails'
|
22
23
|
require 'simple_form'
|
23
24
|
require 'select2-rails'
|
24
25
|
require 'turbolinks'
|
@@ -48,7 +49,6 @@ require_relative 'alchemy/on_page_layout/callbacks_runner'
|
|
48
49
|
require_relative 'alchemy/page_layout'
|
49
50
|
require_relative 'alchemy/paths'
|
50
51
|
require_relative 'alchemy/permissions'
|
51
|
-
require_relative 'alchemy/sass_support'
|
52
52
|
require_relative 'alchemy/ssl_protection'
|
53
53
|
require_relative 'alchemy/resource'
|
54
54
|
require_relative 'alchemy/tinymce'
|
@@ -19,7 +19,7 @@ module Alchemy
|
|
19
19
|
raise "Element name '#{element['name']}' has wrong format. Only lowercase and non whitespace characters allowed."
|
20
20
|
end
|
21
21
|
|
22
|
-
conditional_template "view.html.#{template_engine}", "#{elements_dir}/_#{@element_name}
|
22
|
+
conditional_template "view.html.#{template_engine}", "#{elements_dir}/_#{@element_name}.html.#{template_engine}"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -40,7 +40,7 @@ namespace :alchemy do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def name_for_node(page)
|
43
|
-
if page.visible? && page.public? && !page.redirects_to_external
|
43
|
+
if page.visible? && page.public? && !page.definition['redirects_to_external']
|
44
44
|
nil
|
45
45
|
else
|
46
46
|
page.name
|
@@ -48,7 +48,7 @@ namespace :alchemy do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def page_for_node(page)
|
51
|
-
if page.visible? && page.public? && !page.redirects_to_external
|
51
|
+
if page.visible? && page.public? && !page.definition['redirects_to_external']
|
52
52
|
page
|
53
53
|
elsif Alchemy::Config.get(:redirect_to_public_child) && page.visible? && !page.public? && page.children.published.any?
|
54
54
|
page.children.published.first
|
@@ -64,8 +64,8 @@ namespace :alchemy do
|
|
64
64
|
new_node = node.children.create!(
|
65
65
|
name: name_for_node(page),
|
66
66
|
page: page_for_node(page),
|
67
|
-
url: page.redirects_to_external
|
68
|
-
external: page.redirects_to_external
|
67
|
+
url: page.definition['redirects_to_external'] ? page.urlname : nil,
|
68
|
+
external: page.definition['redirects_to_external'] && Alchemy::Config.get(:open_external_links_in_new_tab),
|
69
69
|
language_id: page.language_id
|
70
70
|
)
|
71
71
|
print "."
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.4.
|
4
|
+
version: 4.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2020-
|
16
|
+
date: 2020-02-25 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: active_model_serializers
|
@@ -321,6 +321,20 @@ dependencies:
|
|
321
321
|
- - "<"
|
322
322
|
- !ruby/object:Gem::Version
|
323
323
|
version: '4.0'
|
324
|
+
- !ruby/object:Gem::Dependency
|
325
|
+
name: sassc-rails
|
326
|
+
requirement: !ruby/object:Gem::Requirement
|
327
|
+
requirements:
|
328
|
+
- - "~>"
|
329
|
+
- !ruby/object:Gem::Version
|
330
|
+
version: '2.1'
|
331
|
+
type: :runtime
|
332
|
+
prerelease: false
|
333
|
+
version_requirements: !ruby/object:Gem::Requirement
|
334
|
+
requirements:
|
335
|
+
- - "~>"
|
336
|
+
- !ruby/object:Gem::Version
|
337
|
+
version: '2.1'
|
324
338
|
- !ruby/object:Gem::Dependency
|
325
339
|
name: select2-rails
|
326
340
|
requirement: !ruby/object:Gem::Requirement
|
@@ -493,6 +507,20 @@ dependencies:
|
|
493
507
|
- - ">="
|
494
508
|
- !ruby/object:Gem::Version
|
495
509
|
version: 4.0.0.beta2
|
510
|
+
- !ruby/object:Gem::Dependency
|
511
|
+
name: simplecov
|
512
|
+
requirement: !ruby/object:Gem::Requirement
|
513
|
+
requirements:
|
514
|
+
- - "~>"
|
515
|
+
- !ruby/object:Gem::Version
|
516
|
+
version: 0.17.1
|
517
|
+
type: :development
|
518
|
+
prerelease: false
|
519
|
+
version_requirements: !ruby/object:Gem::Requirement
|
520
|
+
requirements:
|
521
|
+
- - "~>"
|
522
|
+
- !ruby/object:Gem::Version
|
523
|
+
version: 0.17.1
|
496
524
|
- !ruby/object:Gem::Dependency
|
497
525
|
name: webdrivers
|
498
526
|
requirement: !ruby/object:Gem::Requirement
|
@@ -533,7 +561,10 @@ files:
|
|
533
561
|
- ".github/FUNDING.yml"
|
534
562
|
- ".github/ISSUE_TEMPLATE/Bug_report.md"
|
535
563
|
- ".github/ISSUE_TEMPLATE/Feature_request.md"
|
564
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
536
565
|
- ".github/workflows/ci.yml"
|
566
|
+
- ".github/workflows/greetings.yml"
|
567
|
+
- ".github/workflows/stale.yml"
|
537
568
|
- ".gitignore"
|
538
569
|
- ".hound.yml"
|
539
570
|
- ".localeapp/config.rb"
|
@@ -544,7 +575,6 @@ files:
|
|
544
575
|
- CONTRIBUTING.md
|
545
576
|
- Gemfile
|
546
577
|
- LICENSE
|
547
|
-
- PULL_REQUEST_TEMPLATE.md
|
548
578
|
- README.md
|
549
579
|
- Rakefile
|
550
580
|
- alchemy_cms.gemspec
|
@@ -1021,7 +1051,6 @@ files:
|
|
1021
1051
|
- lib/alchemy/resource.rb
|
1022
1052
|
- lib/alchemy/resources_helper.rb
|
1023
1053
|
- lib/alchemy/routing_constraints.rb
|
1024
|
-
- lib/alchemy/sass_support.rb
|
1025
1054
|
- lib/alchemy/seeder.rb
|
1026
1055
|
- lib/alchemy/shell.rb
|
1027
1056
|
- lib/alchemy/ssl_protection.rb
|
data/PULL_REQUEST_TEMPLATE.md
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
## What is this pull request for?
|
2
|
-
|
3
|
-
Describe you pull request here...
|
4
|
-
|
5
|
-
Closes #<issue number> (Remove if not related to any issue)
|
6
|
-
|
7
|
-
### Notable changes (remove if none)
|
8
|
-
|
9
|
-
Explain any changes (maybe breaking?) that have been made.
|
10
|
-
|
11
|
-
-
|
12
|
-
-
|
13
|
-
|
14
|
-
### Screenshots (remove if none)
|
data/lib/alchemy/sass_support.rb
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'sassc-rails'
|
3
|
-
rescue LoadError, Gem::LoadError
|
4
|
-
begin
|
5
|
-
require 'sass-rails'
|
6
|
-
rescue LoadError, Gem::LoadError
|
7
|
-
raise LoadError, "Could not find the `sass-rails` or `sassc-rails` gem for AlchemyCMS! Please add one of them to your project's Gemfile."
|
8
|
-
end
|
9
|
-
end
|