alchemy_cms 4.0.1 → 4.0.6

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: a705fbfafc88c6d704d135683860121e0ba587c27e3730db0b99690c39301e4f
4
- data.tar.gz: 5e3bd59a9808f2c707570c534304243ea96f1e3f0e5cf3d4403261c00e64aab5
3
+ metadata.gz: a09c975c4f08333ff19d8d65ec1ccbffbb9d379b6b51c5ae72394b0f9407ad93
4
+ data.tar.gz: 6639c81d4b059fc5281de173792aec47281d86958d2aadf30a64e566d193d15e
5
5
  SHA512:
6
- metadata.gz: 95501e7b26788f436d965110aa6c050c5f6b390cf788941411014b3d146f81fd2c75b5ac239dc936b6f07318e8773199476b5b8c4e8c0c9d80a78b0ed47c801d
7
- data.tar.gz: ec08999acc7c276fdf275379477977241e24413754a62972d81132ed319b3a1cd58ee5d3e61856a35fc430a88949eb0195a4860410457cd88d70d9b888142a83
6
+ metadata.gz: fb6fadb1c5daf32aed6e4e74331b1a30fbb8da2b6d6ca3c638a3e0d6974046ef64de59a478a59702775787f233a8b07c9520d853f1b20f4eae4c811358e2f24a
7
+ data.tar.gz: 041b34771016cc0d83d445f9bd358a9ec2428e86dc6eb8778bc218497394c4b329bc10dc508d28f4028834841df6756e9233b5079dffe436ed704539e58012ec
data/.travis.yml CHANGED
@@ -6,9 +6,8 @@ cache:
6
6
  directories:
7
7
  - "travis_phantomjs"
8
8
  rvm:
9
- - 2.2.7
10
- - 2.3.5
11
- - 2.4.2
9
+ - 2.3.5
10
+ - 2.4.2
12
11
  before_install:
13
12
  - "phantomjs --version"
14
13
  - "export PATH=$PWD/travis_phantomjs/phantomjs-2.1.1-linux-x86_64/bin:$PATH"
@@ -22,8 +21,8 @@ before_script: bundle exec rake alchemy:spec:prepare
22
21
  script: bundle exec rspec
23
22
  after_success: bundle exec codeclimate-test-reporter
24
23
  env:
25
- - DB=mysql
26
- - DB=postgresql
24
+ - DB=mysql
25
+ - DB=postgresql
27
26
  notifications:
28
27
  slack:
29
28
  secure: QzOFw1Ph69pzwWBFgtIVkOnjbcRxB9HPRQ+RYjK+2tg+fsbiTJ+wYgHcZL49tPYcLAls4kymkFWzWBF3PCAXJMfKgUCqXzdQ2FuJC/JoVRTLll4wDnZFPG33jsm5tVznmycZ3ma4+ZWfJQ+C+elEBOba6v1kG9eGIy6sH2cvXfE=
data/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Change Log
2
2
 
3
+ ## 4.0.6 (2021-05-28)
4
+
5
+ - Allow "data" key for module navigations [#1512](https://github.com/AlchemyCMS/alchemy_cms/pull/1512) ([mamhoff](https://github.com/mamhoff))
6
+
7
+ ## 4.0.5 (2018-09-17)
8
+
9
+ - Do not cache sitemap in Turbolinks [#1463](https://github.com/AlchemyCMS/alchemy_cms/pull/1463) ([tvdeyen](https://github.com/tvdeyen))
10
+ - Skip folded deeper levels when rendering page tree [#1324](https://github.com/AlchemyCMS/alchemy_cms/pull/1324) ([pascalj](https://github.com/pascalj))
11
+
12
+ ## 4.0.4 (2018-09-05)
13
+
14
+ - Allow Kaminari 1.x [#1467](https://github.com/AlchemyCMS/alchemy_cms/pull/1467) ([tvdeyen](https://github.com/tvdeyen))
15
+
16
+ ## 4.0.3 (2018-05-14)
17
+
18
+ - Add must_revalidate to cache-control header [#1340](https://github.com/AlchemyCMS/alchemy_cms/pull/1340) ([afdev82](https://github.com/afdev82))
19
+
20
+ ## 4.0.2 (2018-05-08)
21
+
22
+ - Fix draggable trash item feature [#1429](https://github.com/AlchemyCMS/alchemy_cms/pull/1429) ([tvdeyen](https://github.com/tvdeyen))
23
+ - Allow CanCanCan 2.x [#1418](https://github.com/AlchemyCMS/alchemy_cms/pull/1418) ([tvdeyen](https://github.com/tvdeyen))
24
+
25
+ ## 4.0.1 (2018-04-23)
26
+
27
+ - Add more classes to YAML.safe_load [#1414](https://github.com/AlchemyCMS/alchemy_cms/pull/1414) ([tvdeyen](https://github.com/tvdeyen))
28
+
3
29
  ## 4.0.0 (2017-11-06)
4
30
 
5
31
  * Fixes image cropping issues [#1320](https://github.com/AlchemyCMS/alchemy_cms/pull/1320) and [#1321](https://github.com/AlchemyCMS/alchemy_cms/pull/1321) by [tvdeyen](https://github.com/tvdeyen)
data/alchemy_cms.gemspec CHANGED
@@ -23,14 +23,14 @@ Gem::Specification.new do |gem|
23
23
  gem.add_runtime_dependency 'acts-as-taggable-on', ['~> 5.0']
24
24
  gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.1']
25
25
  gem.add_runtime_dependency 'bourbon', ['~> 4.2']
26
- gem.add_runtime_dependency 'cancancan', ['~> 1.9']
26
+ gem.add_runtime_dependency 'cancancan', ['>= 1.9', '< 3.0']
27
27
  gem.add_runtime_dependency 'coffee-rails', ['~> 4.0']
28
28
  gem.add_runtime_dependency 'dragonfly', ['~> 1.0', '>= 1.0.7']
29
29
  gem.add_runtime_dependency 'dragonfly_svg', ['~> 0.0.4']
30
30
  gem.add_runtime_dependency 'handlebars_assets', ['~> 0.23']
31
31
  gem.add_runtime_dependency 'jquery-rails', ['~> 4.0']
32
32
  gem.add_runtime_dependency 'jquery-ui-rails', ['~> 5.0.0']
33
- gem.add_runtime_dependency 'kaminari', ['~> 0.15']
33
+ gem.add_runtime_dependency 'kaminari', ['>= 0.15', '< 2.0']
34
34
  gem.add_runtime_dependency 'originator', ['~> 3.1']
35
35
  gem.add_runtime_dependency 'non-stupid-digest-assets', ['~> 1.0.8']
36
36
  gem.add_runtime_dependency 'rails', ['~> 5.0', '< 6.0']
@@ -147,7 +147,10 @@ module Alchemy
147
147
 
148
148
  def paste_element_from_clipboard
149
149
  @source_element = Element.find(element_from_clipboard['id'])
150
- new_attributes = {page_id: @page.id}
150
+ new_attributes = {
151
+ parent_element_id: create_element_params[:parent_element_id],
152
+ page_id: @page.id
153
+ }
151
154
  if @page.can_have_cells?
152
155
  new_attributes = new_attributes.merge({cell_id: find_or_create_cell.try(:id)})
153
156
  end
@@ -156,7 +156,7 @@ module Alchemy
156
156
 
157
157
  def set_expiration_headers
158
158
  if @page.cache_page?
159
- expires_in @page.expiration_time, public: !@page.restricted
159
+ expires_in @page.expiration_time, public: !@page.restricted, must_revalidate: true
160
160
  else
161
161
  expires_now
162
162
  end
@@ -15,5 +15,10 @@ module Alchemy
15
15
  belongs_to :page, required: true
16
16
  belongs_to :user, required: true,
17
17
  class_name: Alchemy.user_class_name
18
+
19
+ def self.folded_for_user(user)
20
+ return none unless Alchemy.user_class < ActiveRecord::Base
21
+ where(user: user, folded: true)
22
+ end
18
23
  end
19
24
  end
@@ -10,23 +10,24 @@ module Alchemy
10
10
  tree = []
11
11
  path = [{id: object.parent_id, children: tree}]
12
12
  page_list = object.self_and_descendants
13
- skip_branch = false
14
13
  base_level = object.level - 1
14
+ # Load folded pages in advance
15
+ folded_user_pages = FoldedPage.folded_for_user(opts[:user]).pluck(:page_id)
16
+ folded_depth = Float::INFINITY
15
17
 
16
18
  page_list.each_with_index do |page, i|
17
19
  has_children = page_list[i + 1] && page_list[i + 1].parent_id == page.id
18
- folded = has_children && page.folded?(opts[:user])
20
+ folded = has_children && folded_user_pages.include?(page.id)
19
21
 
20
- if skip_branch
21
- next if page.parent_id == path.last[:children].last[:id]
22
-
23
- skip_branch = false
22
+ if page.depth > folded_depth
23
+ next
24
+ else
25
+ folded_depth = Float::INFINITY
24
26
  end
25
27
 
26
- # Do not walk my children if I'm folded and you don't need to have the
27
- # full tree.
28
+ # If this page is folded, skip all pages that are on a higher level (further down the tree).
28
29
  if folded && !opts[:full]
29
- skip_branch = true
30
+ folded_depth = page.depth
30
31
  end
31
32
 
32
33
  if page.parent_id != path.last[:id]
@@ -10,7 +10,9 @@
10
10
  </li>
11
11
  <% end %>
12
12
  </ul>
13
- <div id="cell_for_other_elements" class="sortable_cell for_other_elements_cell">
13
+ <div id="cell_for_other_elements"
14
+ class="sortable_cell for_other_elements_cell"
15
+ data-droppable-elements="<%= @page.element_names_from_definition.join(' ') %>">
14
16
  <%= render partial: 'alchemy/admin/elements/element',
15
17
  collection: @page.elements.not_trashed.not_in_cell %>
16
18
  </div>
@@ -18,7 +20,7 @@
18
20
  <%= content_tag :div,
19
21
  id: "cell_#{cell.name}",
20
22
  class: ["sortable_cell", "#{cell.name}_cell"].join(' '),
21
- data: {'cell-id' => cell.id, 'data-droppable-elements' => cell.element_definitions.join(' ')} do %>
23
+ data: {'cell-id' => cell.id, 'droppable-elements' => cell.element_definitions.join(' ')} do %>
22
24
  <%= render partial: 'alchemy/admin/elements/element', collection: elements %>
23
25
  <% end %>
24
26
  <% end %>
@@ -11,7 +11,8 @@
11
11
  </div>
12
12
  <div id="paste_element_tab">
13
13
  <%= alchemy_form_for([:admin, @element]) do |f| %>
14
- <%= f.hidden_field(:page_id) %>
14
+ <%= f.hidden_field :page_id %>
15
+ <%= f.hidden_field :parent_element_id, value: @parent_element.try(:id) %>
15
16
  <div class="input select">
16
17
  <label for="paste_from_clipboard" class="control-label"><%= Alchemy.t("Element") %></label>
17
18
  <%= select_tag 'paste_from_clipboard',
@@ -1,3 +1,7 @@
1
+ <% content_for :javascript_includes do %>
2
+ <meta name="turbolinks-cache-control" content="no-cache">
3
+ <% end %>
4
+
1
5
  <% content_for :toolbar do %>
2
6
  <div class="toolbar_buttons">
3
7
  <%= render 'alchemy/admin/partials/site_select' %>
@@ -1,5 +1,5 @@
1
1
  <% if can? *navigate_module(navigation) %>
2
- <%= content_tag :div, class: main_navigation_css_classes(navigation) do %>
2
+ <%= content_tag :div, class: main_navigation_css_classes(navigation), data: navigation["data"] do %>
3
3
  <%= link_to url_for_module(alchemy_module) do %>
4
4
  <% if navigation["image"] %>
5
5
  <%= image_tag(navigation["image"]) %>
@@ -117,12 +117,20 @@ module Alchemy
117
117
  end
118
118
  end
119
119
 
120
+ def remove_duplicate_folded_pages
121
+ Alchemy::FoldedPage.select(:page_id, :user_id).group(:page_id, :user_id).having("count(*) > 1").each do |duplicate_page|
122
+ duplicate_page_ids = Alchemy::FoldedPage.where(duplicate_page.attributes.except("id")).pluck(:id)
123
+ duplicate_page_ids_except_oldest = duplicate_page_ids.reject { |i| i == duplicate_page_ids.min }
124
+ Alchemy::FoldedPage.where(id: duplicate_page_ids_except_oldest).delete_all
125
+ end
126
+ end
127
+
120
128
  private
121
129
 
122
130
  def destroy_orphaned_records(records, class_name)
123
131
  records.each do |record|
124
132
  log "Destroy orphaned #{class_name}: #{record.inspect}"
125
- record.destroy
133
+ record.reload.try(:destroy)
126
134
  end
127
135
  end
128
136
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "4.0.1"
4
+ VERSION = "4.0.6"
5
5
 
6
6
  def self.version
7
7
  VERSION
@@ -8,6 +8,7 @@ namespace :alchemy do
8
8
  Rake::Task['alchemy:tidy:element_positions'].invoke
9
9
  Rake::Task['alchemy:tidy:content_positions'].invoke
10
10
  Rake::Task['alchemy:tidy:remove_orphaned_records'].invoke
11
+ Rake::Task['alchemy:tidy:remove_duplicate_folded_pages'].invoke
11
12
  end
12
13
 
13
14
  desc "Creates missing cells for pages."
@@ -56,5 +57,10 @@ namespace :alchemy do
56
57
  task remove_orphaned_contents: [:environment] do
57
58
  Alchemy::Tidy.remove_orphaned_contents
58
59
  end
60
+
61
+ desc "Remove duplicate folded pages."
62
+ task remove_duplicate_folded_pages: [:environment] do
63
+ Alchemy::Tidy.remove_duplicate_folded_pages
64
+ end
59
65
  end
60
66
  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.0.1
4
+ version: 4.0.6
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: 2018-04-23 00:00:00.000000000 Z
16
+ date: 2021-05-28 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: active_model_serializers
@@ -89,16 +89,22 @@ dependencies:
89
89
  name: cancancan
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - "~>"
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
94
  version: '1.9'
95
+ - - "<"
96
+ - !ruby/object:Gem::Version
97
+ version: '3.0'
95
98
  type: :runtime
96
99
  prerelease: false
97
100
  version_requirements: !ruby/object:Gem::Requirement
98
101
  requirements:
99
- - - "~>"
102
+ - - ">="
100
103
  - !ruby/object:Gem::Version
101
104
  version: '1.9'
105
+ - - "<"
106
+ - !ruby/object:Gem::Version
107
+ version: '3.0'
102
108
  - !ruby/object:Gem::Dependency
103
109
  name: coffee-rails
104
110
  requirement: !ruby/object:Gem::Requirement
@@ -193,16 +199,22 @@ dependencies:
193
199
  name: kaminari
194
200
  requirement: !ruby/object:Gem::Requirement
195
201
  requirements:
196
- - - "~>"
202
+ - - ">="
197
203
  - !ruby/object:Gem::Version
198
204
  version: '0.15'
205
+ - - "<"
206
+ - !ruby/object:Gem::Version
207
+ version: '2.0'
199
208
  type: :runtime
200
209
  prerelease: false
201
210
  version_requirements: !ruby/object:Gem::Requirement
202
211
  requirements:
203
- - - "~>"
212
+ - - ">="
204
213
  - !ruby/object:Gem::Version
205
214
  version: '0.15'
215
+ - - "<"
216
+ - !ruby/object:Gem::Version
217
+ version: '2.0'
206
218
  - !ruby/object:Gem::Dependency
207
219
  name: originator
208
220
  requirement: !ruby/object:Gem::Requirement
@@ -1001,8 +1013,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1001
1013
  version: '0'
1002
1014
  requirements:
1003
1015
  - ImageMagick (libmagick), v6.6 or greater.
1004
- rubyforge_project:
1005
- rubygems_version: 2.7.6
1016
+ rubygems_version: 3.1.4
1006
1017
  signing_key:
1007
1018
  specification_version: 4
1008
1019
  summary: A powerful, userfriendly and flexible CMS for Rails 4