alchemy_cms 4.5.0 → 4.6.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.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +23 -17
  3. data/.rubocop.yml +7 -15
  4. data/CHANGELOG.md +17 -0
  5. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +5 -5
  6. data/app/assets/javascripts/alchemy/templates/page.hbs +1 -1
  7. data/app/assets/stylesheets/alchemy/_mixins.scss +2 -3
  8. data/app/assets/stylesheets/alchemy/_variables.scss +2 -2
  9. data/app/assets/stylesheets/alchemy/lists.scss +0 -8
  10. data/app/assets/stylesheets/alchemy/nodes.scss +1 -1
  11. data/app/assets/stylesheets/alchemy/sitemap.scss +59 -21
  12. data/app/controllers/alchemy/admin/pages_controller.rb +0 -1
  13. data/app/controllers/alchemy/api/pages_controller.rb +2 -0
  14. data/app/decorators/alchemy/content_editor.rb +55 -0
  15. data/app/helpers/alchemy/admin/pages_helper.rb +16 -16
  16. data/app/models/alchemy/content.rb +8 -22
  17. data/app/models/alchemy/node.rb +8 -7
  18. data/app/models/alchemy/page.rb +11 -0
  19. data/app/models/alchemy/page/url_path.rb +66 -0
  20. data/app/serializers/alchemy/page_serializer.rb +2 -1
  21. data/app/serializers/alchemy/page_tree_serializer.rb +4 -3
  22. data/app/views/alchemy/admin/layoutpages/index.html.erb +5 -1
  23. data/app/views/alchemy/admin/nodes/_form.html.erb +2 -2
  24. data/app/views/alchemy/admin/pages/_form.html.erb +1 -1
  25. data/app/views/alchemy/admin/pages/_menu_fields.html.erb +33 -29
  26. data/app/views/alchemy/admin/pages/_page.html.erb +3 -6
  27. data/app/views/alchemy/admin/pages/_sitemap.html.erb +6 -0
  28. data/app/views/alchemy/admin/pages/info.html.erb +1 -1
  29. data/config/alchemy/config.yml +0 -6
  30. data/config/locales/alchemy.en.yml +6 -6
  31. data/lib/alchemy/config.rb +30 -2
  32. data/lib/alchemy/ssl_protection.rb +3 -1
  33. data/lib/alchemy/upgrader/four_point_six.rb +50 -0
  34. data/lib/alchemy/version.rb +1 -1
  35. data/lib/tasks/alchemy/convert.rake +2 -0
  36. data/lib/tasks/alchemy/upgrade.rake +67 -46
  37. metadata +6 -2
@@ -1,4 +1,10 @@
1
1
  <div id="sitemap-wrapper">
2
+ <h4 id="sitemap_heading">
3
+ <span class="page_name"><%= Alchemy::Page.human_attribute_name(:name) %></span>
4
+ <span class="page_urlname"><%= Alchemy::Page.human_attribute_name(:urlname) %></span>
5
+ <span class="page_status"><%= Alchemy.t(:page_status) %></span>
6
+ </h4>
7
+
2
8
  <p class="loading"></p>
3
9
  </div>
4
10
 
@@ -18,7 +18,7 @@
18
18
  <label><%= Alchemy::Page.human_attribute_name(:urlname) %></label>
19
19
  <p><%= @page.urlname %></p>
20
20
  <% else %>
21
- <label><%= Alchemy::LegacyPageUrl.human_attribute_name(:urlname) %></label>
21
+ <label><%= Alchemy::Page.human_attribute_name(:urlname) %></label>
22
22
  <p><%= "/#{@page.urlname}" %></p>
23
23
  <% end %>
24
24
  </div>
@@ -1,12 +1,6 @@
1
1
  # == This is the global Alchemy configuration file
2
2
  #
3
3
 
4
- # === Require SSL for login form and all admin modules
5
- #
6
- # NOTE: You have to create a SSL certificate on your server to make this work
7
- #
8
- require_ssl: false
9
-
10
4
  # === Auto Log Out Time
11
5
  #
12
6
  # The amount of time of inactivity in minutes after which the user is kicked out of his current session.
@@ -573,7 +573,6 @@ en:
573
573
  button_label: Upload image(s)
574
574
  upload_success: "Picture %{name} uploaded successfully"
575
575
  upload_failure: "Error while uploading %{name}: %{error}"
576
- url_name: "URL-Name"
577
576
  visible: "visible"
578
577
  want_to_create_new_language: "Do you want to create a new empty language tree?"
579
578
  want_to_make_copy_of_existing_language: "Do you want to copy an existing language tree?"
@@ -670,9 +669,9 @@ en:
670
669
  page_layout:
671
670
  blank: "^Please choose a page layout."
672
671
  urlname:
673
- too_short: "^The pages urlname is too short (minimum of 3 characters)."
674
- taken: "^URL-Name already taken."
675
- exclusion: "^URL-Name reserved."
672
+ too_short: "^URL-Path is too short (minimum of 3 characters)."
673
+ taken: "^URL-Path already taken."
674
+ exclusion: "^URL-Path reserved."
676
675
  alchemy/picture:
677
676
  attributes:
678
677
  image_file:
@@ -780,7 +779,7 @@ en:
780
779
  locale: Localization
781
780
  code: ISO Code
782
781
  alchemy/legacy_page_url:
783
- urlname: "URL path"
782
+ urlname: "URL-Path"
784
783
  alchemy/node:
785
784
  name: "Name"
786
785
  title: "Title"
@@ -805,7 +804,8 @@ en:
805
804
  tag_list: Tags
806
805
  title: "Title"
807
806
  updated_at: "Updated at"
808
- urlname: "Urlname"
807
+ urlname: "URL-Path"
808
+ slug: "Slug"
809
809
  visible: "visible in navigation"
810
810
  alchemy/picture:
811
811
  image_file_name: "Filename"
@@ -8,8 +8,10 @@ module Alchemy
8
8
  # @param name [String]
9
9
  #
10
10
  def get(name)
11
+ check_deprecation(name)
11
12
  show[name.to_s]
12
13
  end
14
+
13
15
  alias_method :parameter, :get
14
16
 
15
17
  # Returns a merged configuration of the following files
@@ -25,11 +27,22 @@ module Alchemy
25
27
  @config ||= merge_configs!(alchemy_config, main_app_config, env_specific_config)
26
28
  end
27
29
 
30
+ # A list of deprecated configurations
31
+ # a value of nil means there is no new default
32
+ # any not nil value is the new default
33
+ def deprecated_configs
34
+ {
35
+ url_nesting: true,
36
+ require_ssl: nil,
37
+ auto_logout_time: nil,
38
+ }
39
+ end
40
+
28
41
  private
29
42
 
30
43
  # Alchemy default configuration
31
44
  def alchemy_config
32
- read_file(File.join(File.dirname(__FILE__), '..', '..', 'config/alchemy/config.yml'))
45
+ read_file(File.join(File.dirname(__FILE__), "..", "..", "config/alchemy/config.yml"))
33
46
  end
34
47
 
35
48
  # Application specific configuration
@@ -54,11 +67,26 @@ module Alchemy
54
67
  # Merges all given configs together
55
68
  #
56
69
  def merge_configs!(*config_files)
57
- raise LoadError, 'No Alchemy config file found!' if config_files.map(&:blank?).all?
70
+ raise LoadError, "No Alchemy config file found!" if config_files.map(&:blank?).all?
71
+
58
72
  config = {}
59
73
  config_files.each { |h| config.merge!(h.stringify_keys!) }
60
74
  config
61
75
  end
76
+
77
+ def check_deprecation(name)
78
+ if deprecated_configs.key?(name.to_sym)
79
+ config = deprecated_configs[name.to_sym]
80
+ if config.nil?
81
+ Alchemy::Deprecation.warn("#{name} configuration is deprecated and will be removed from Alchemy 5.0")
82
+ else
83
+ value = show[name.to_s]
84
+ if value != config
85
+ Alchemy::Deprecation.warn("Setting #{name} configuration to #{value} is deprecated and will be always #{config} in Alchemy 5.0")
86
+ end
87
+ end
88
+ end
89
+ end
62
90
  end
63
91
  end
64
92
  end
@@ -26,7 +26,9 @@ module Alchemy
26
26
 
27
27
  # Redirects current request to https.
28
28
  def enforce_ssl
29
- redirect_to url_for(request.params.merge(protocol: 'https'))
29
+ redirect_to url_for(request.params.merge(protocol: "https"))
30
30
  end
31
+
32
+ deprecate :enforce_ssl, deprecator: Alchemy::Deprecation
31
33
  end
32
34
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Alchemy
4
+ class Upgrader::FourPointSix < Upgrader
5
+ class << self
6
+ def todos
7
+ notice = <<-NOTE.strip_heredoc
8
+
9
+ ℹ️ Page visible attribute is deprecated
10
+ ----------------------------------------
11
+
12
+ Page slugs will be visible in URLs of child pages all the time in the future.
13
+ Please use Menus and Tags instead to re-organize your pages if your page tree does not reflect the URL hierarchy.
14
+
15
+ A rake task to help with the migration is available.
16
+
17
+ bin/rake alchemy:upgrade:4.6:restructure_page_tree
18
+
19
+ NOTE
20
+ todo notice, "Alchemy v4.6 TODO"
21
+ end
22
+
23
+ def restructure_page_tree
24
+ desc "Move child pages of invisible pages to visible parent."
25
+ Alchemy::Deprecation.silence do
26
+ # All leaves can safely be marked visible
27
+ Alchemy::Page.leaves.update_all(visible: true)
28
+ Alchemy::Page.language_roots.each do |root_page|
29
+ # Root pages are always visible
30
+ root_page.update!(visible: true)
31
+ remove_invisible_children(root_page)
32
+ end
33
+ Alchemy::Page.update_all(visible: true)
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def remove_invisible_children(page)
40
+ page.children.each { |child| remove_invisible_children(child) }
41
+ if !page.visible
42
+ page.children.reload.reverse.each do |child|
43
+ puts "Moving #{child.urlname} to right of #{page.urlname}"
44
+ child.move_to_right_of(page)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "4.5.0"
4
+ VERSION = "4.6.0"
5
5
 
6
6
  def self.version
7
7
  VERSION
@@ -3,6 +3,7 @@ namespace :alchemy do
3
3
  namespace :urlnames do
4
4
  desc "Converts the urlname of all pages to nested url paths."
5
5
  task to_nested: [:environment] do
6
+ Alchemy::Deprecation.warn('alchemy:convert:urlnames:to_nested task is deprecated and will be removed from Alchemy 5.0')
6
7
  unless Alchemy::Config.get(:url_nesting)
7
8
  raise "\nURL nesting is disabled! Please enable url_nesting in `config/alchemy/config.yml` first.\n\n"
8
9
  end
@@ -18,6 +19,7 @@ namespace :alchemy do
18
19
 
19
20
  desc "Converts the urlname of all pages to contain the slug only."
20
21
  task to_slug: [:environment] do
22
+ Alchemy::Deprecation.warn('alchemy:convert:urlnames:to_slug task is deprecated and will be removed from Alchemy 5.0')
21
23
  if Alchemy::Config.get(:url_nesting)
22
24
  raise "\nURL nesting is enabled! Please disable url_nesting in `config/alchemy/config.yml` first.\n\n"
23
25
  end
@@ -1,29 +1,32 @@
1
- require 'alchemy/upgrader'
2
- require 'alchemy/version'
1
+ # frozen_string_literal: true
2
+
3
+ require "alchemy/upgrader"
4
+ require "alchemy/version"
3
5
 
4
6
  namespace :alchemy do
5
7
  desc "Upgrades your app to AlchemyCMS v#{Alchemy::VERSION}."
6
8
  task upgrade: [
7
- 'alchemy:upgrade:prepare',
8
- 'alchemy:upgrade:4.1:run', 'alchemy:upgrade:4.1:todo',
9
- 'alchemy:upgrade:4.2:run', 'alchemy:upgrade:4.2:todo',
10
- 'alchemy:upgrade:4.4:run', 'alchemy:upgrade:4.4:todo'
9
+ "alchemy:upgrade:prepare",
10
+ "alchemy:upgrade:4.1:run", "alchemy:upgrade:4.1:todo",
11
+ "alchemy:upgrade:4.2:run", "alchemy:upgrade:4.2:todo",
12
+ "alchemy:upgrade:4.4:run", "alchemy:upgrade:4.4:todo",
13
+ "alchemy:upgrade:4.6:run", "alchemy:upgrade:4.6:todo",
11
14
  ] do
12
15
  Alchemy::Upgrader.display_todos
13
16
  end
14
17
 
15
18
  namespace :upgrade do
16
- desc 'Alchemy Upgrader: Prepares the database and updates Alchemys configuration file.'
19
+ desc "Alchemy Upgrader: Prepares the database and updates Alchemys configuration file."
17
20
  task prepare: [
18
- 'alchemy:upgrade:database',
19
- 'alchemy:upgrade:config'
21
+ "alchemy:upgrade:database",
22
+ "alchemy:upgrade:config",
20
23
  ]
21
24
 
22
25
  desc "Alchemy Upgrader: Prepares the database."
23
26
  task database: [
24
- 'alchemy:install:migrations',
25
- 'db:migrate',
26
- 'alchemy:db:seed'
27
+ "alchemy:install:migrations",
28
+ "db:migrate",
29
+ "alchemy:db:seed",
27
30
  ]
28
31
 
29
32
  desc "Alchemy Upgrader: Copy configuration file."
@@ -37,19 +40,19 @@ namespace :alchemy do
37
40
  end
38
41
  end
39
42
 
40
- desc 'Upgrade Alchemy to v4.1'
41
- task '4.1' => [
42
- 'alchemy:upgrade:prepare',
43
- 'alchemy:upgrade:4.1:run',
44
- 'alchemy:upgrade:4.1:todo'
43
+ desc "Upgrade Alchemy to v4.1"
44
+ task "4.1" => [
45
+ "alchemy:upgrade:prepare",
46
+ "alchemy:upgrade:4.1:run",
47
+ "alchemy:upgrade:4.1:todo",
45
48
  ] do
46
49
  Alchemy::Upgrader.display_todos
47
50
  end
48
51
 
49
- namespace '4.1' do
50
- task run: ['alchemy:upgrade:4.1:harden_acts_as_taggable_on_migrations']
52
+ namespace "4.1" do
53
+ task run: ["alchemy:upgrade:4.1:harden_acts_as_taggable_on_migrations"]
51
54
 
52
- desc 'Harden acts_as_taggable_on migrations'
55
+ desc "Harden acts_as_taggable_on migrations"
53
56
  task harden_acts_as_taggable_on_migrations: [:environment] do
54
57
  Alchemy::Upgrader::FourPointOne.harden_acts_as_taggable_on_migrations
55
58
  end
@@ -59,45 +62,45 @@ namespace :alchemy do
59
62
  end
60
63
  end
61
64
 
62
- desc 'Upgrade Alchemy to v4.2'
63
- task '4.2' => [
64
- 'alchemy:upgrade:prepare',
65
- 'alchemy:upgrade:4.2:run',
66
- 'alchemy:upgrade:4.2:todo'
65
+ desc "Upgrade Alchemy to v4.2"
66
+ task "4.2" => [
67
+ "alchemy:upgrade:prepare",
68
+ "alchemy:upgrade:4.2:run",
69
+ "alchemy:upgrade:4.2:todo",
67
70
  ] do
68
71
  Alchemy::Upgrader.display_todos
69
72
  end
70
73
 
71
- namespace '4.2' do
74
+ namespace "4.2" do
72
75
  task run: [
73
- 'alchemy:upgrade:4.2:convert_picture_galleries',
74
- 'alchemy:upgrade:4.2:migrate_picture_galleries',
75
- 'alchemy:upgrade:4.2:convert_cells',
76
- 'alchemy:upgrade:4.2:migrate_cells',
77
- 'alchemy:upgrade:4.2:update_element_partial_name_variable'
76
+ "alchemy:upgrade:4.2:convert_picture_galleries",
77
+ "alchemy:upgrade:4.2:migrate_picture_galleries",
78
+ "alchemy:upgrade:4.2:convert_cells",
79
+ "alchemy:upgrade:4.2:migrate_cells",
80
+ "alchemy:upgrade:4.2:update_element_partial_name_variable",
78
81
  ]
79
82
 
80
- desc 'Convert `picture_gallery` element definitions to `nestable_elements`.'
83
+ desc "Convert `picture_gallery` element definitions to `nestable_elements`."
81
84
  task convert_picture_galleries: [:environment] do
82
85
  Alchemy::Upgrader::FourPointTwo.convert_picture_galleries
83
86
  end
84
87
 
85
- desc 'Migrate `picture_gallery` elements to `nestable_elements`.'
88
+ desc "Migrate `picture_gallery` elements to `nestable_elements`."
86
89
  task migrate_picture_galleries: [:environment] do
87
90
  Alchemy::Upgrader::FourPointTwo.migrate_picture_galleries
88
91
  end
89
92
 
90
- desc 'Convert cells config to fixed nestable elements.'
93
+ desc "Convert cells config to fixed nestable elements."
91
94
  task convert_cells: [:environment] do
92
95
  Alchemy::Upgrader::FourPointTwo.convert_cells
93
96
  end
94
97
 
95
- desc 'Migrate existing cells to fixed nestable elements.'
96
- task migrate_cells: ['alchemy:install:migrations', 'db:migrate'] do
98
+ desc "Migrate existing cells to fixed nestable elements."
99
+ task migrate_cells: ["alchemy:install:migrations", "db:migrate"] do
97
100
  Alchemy::Upgrader::FourPointTwo.migrate_cells
98
101
  end
99
102
 
100
- desc 'Update element views to use element partial name variable.'
103
+ desc "Update element views to use element partial name variable."
101
104
  task :update_element_partial_name_variable do
102
105
  Alchemy::Upgrader::FourPointTwo.update_element_views_variable_name
103
106
  end
@@ -107,19 +110,19 @@ namespace :alchemy do
107
110
  end
108
111
  end
109
112
 
110
- desc 'Upgrade Alchemy to v4.4'
111
- task '4.4' => [
112
- 'alchemy:upgrade:prepare',
113
- 'alchemy:upgrade:4.4:run',
114
- 'alchemy:upgrade:4.4:todo'
113
+ desc "Upgrade Alchemy to v4.4"
114
+ task "4.4" => [
115
+ "alchemy:upgrade:prepare",
116
+ "alchemy:upgrade:4.4:run",
117
+ "alchemy:upgrade:4.4:todo",
115
118
  ] do
116
119
  Alchemy::Upgrader.display_todos
117
120
  end
118
121
 
119
- namespace '4.4' do
122
+ namespace "4.4" do
120
123
  task run: [
121
- 'alchemy:upgrade:4.4:rename_element_views',
122
- 'alchemy:upgrade:4.4:update_local_variable'
124
+ "alchemy:upgrade:4.4:rename_element_views",
125
+ "alchemy:upgrade:4.4:update_local_variable",
123
126
  ]
124
127
 
125
128
  desc "Remove '_view' suffix from element views."
@@ -127,7 +130,7 @@ namespace :alchemy do
127
130
  Alchemy::Upgrader::FourPointFour.rename_element_views
128
131
  end
129
132
 
130
- desc 'Update element views local variable to element name.'
133
+ desc "Update element views local variable to element name."
131
134
  task update_local_variable: [:environment] do
132
135
  Alchemy::Upgrader::FourPointFour.update_local_variable
133
136
  end
@@ -136,5 +139,23 @@ namespace :alchemy do
136
139
  Alchemy::Upgrader::FourPointFour.alchemy_4_4_todos
137
140
  end
138
141
  end
142
+
143
+ desc "Upgrade Alchemy to v4.6"
144
+ task "4.6" => [
145
+ "alchemy:upgrade:prepare",
146
+ ]
147
+
148
+ namespace "4.6" do
149
+ task run: []
150
+
151
+ desc "Move child pages of invisible pages to visible parent."
152
+ task restructure_page_tree: [:environment] do
153
+ Alchemy::Upgrader::FourPointSix.restructure_page_tree
154
+ end
155
+
156
+ task :todo do
157
+ Alchemy::Upgrader::FourPointSix.todos
158
+ end
159
+ end
139
160
  end
140
161
  end
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.5.0
4
+ version: 4.6.0
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-03-30 00:00:00.000000000 Z
16
+ date: 2020-06-04 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: active_model_serializers
@@ -739,6 +739,7 @@ files:
739
739
  - app/controllers/concerns/alchemy/locale_redirects.rb
740
740
  - app/controllers/concerns/alchemy/page_redirects.rb
741
741
  - app/controllers/concerns/alchemy/site_redirects.rb
742
+ - app/decorators/alchemy/content_editor.rb
742
743
  - app/helpers/alchemy/admin/attachments_helper.rb
743
744
  - app/helpers/alchemy/admin/base_helper.rb
744
745
  - app/helpers/alchemy/admin/contents_helper.rb
@@ -790,6 +791,7 @@ files:
790
791
  - app/models/alchemy/page/page_naming.rb
791
792
  - app/models/alchemy/page/page_natures.rb
792
793
  - app/models/alchemy/page/page_scopes.rb
794
+ - app/models/alchemy/page/url_path.rb
793
795
  - app/models/alchemy/picture.rb
794
796
  - app/models/alchemy/picture/transformations.rb
795
797
  - app/models/alchemy/picture/url.rb
@@ -1102,6 +1104,7 @@ files:
1102
1104
  - lib/alchemy/upgrader.rb
1103
1105
  - lib/alchemy/upgrader/four_point_four.rb
1104
1106
  - lib/alchemy/upgrader/four_point_one.rb
1107
+ - lib/alchemy/upgrader/four_point_six.rb
1105
1108
  - lib/alchemy/upgrader/four_point_two.rb
1106
1109
  - lib/alchemy/upgrader/tasks/cells_migration.rb
1107
1110
  - lib/alchemy/upgrader/tasks/cells_upgrader.rb
@@ -1246,3 +1249,4 @@ signing_key:
1246
1249
  specification_version: 4
1247
1250
  summary: A powerful, userfriendly and flexible CMS for Rails 5
1248
1251
  test_files: []
1252
+ ...