alchemy_cms 4.0.1 → 4.0.6

Sign up to get free protection for your applications and to get access to all the features.
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