alchemy_cms 4.6.3 → 4.6.7
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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +23 -0
 - data/alchemy_cms.gemspec +1 -1
 - data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +3 -3
 - data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +7 -7
 - data/app/controllers/alchemy/admin/base_controller.rb +9 -3
 - data/app/models/alchemy/attachment.rb +1 -1
 - data/app/models/alchemy/content.rb +1 -1
 - data/app/models/alchemy/element.rb +1 -1
 - data/app/models/alchemy/node.rb +1 -1
 - data/app/models/alchemy/page.rb +1 -1
 - data/app/models/alchemy/picture.rb +1 -1
 - data/lib/alchemy/engine.rb +7 -0
 - data/lib/alchemy/error_tracking/airbrake_handler.rb +13 -0
 - data/lib/alchemy/error_tracking.rb +14 -0
 - data/lib/alchemy/essence.rb +1 -1
 - data/lib/alchemy/upgrader/four_point_two.rb +1 -0
 - data/lib/alchemy/upgrader/tasks/cells_migration.rb +3 -1
 - data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +21 -3
 - data/lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb +8 -4
 - data/lib/alchemy/upgrader/tasks/fixed_element_name_finder.rb +31 -0
 - data/lib/alchemy/userstamp.rb +1 -1
 - data/lib/alchemy/version.rb +1 -1
 - data/lib/alchemy_cms.rb +1 -0
 - metadata +15 -11
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ca89899748d18f70ee78b29698acf1bf9a768a938ef9bc6b95183eda42fb0e7b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e8fcc703a6dce815bea12d6af8f9e0307fcf38589a41fb12b96fe223ce09c793
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 6f653e26248ed2a01b92fcc6b7ded6b4eac3e057b25ad84830a6ba2ca3fa3df8c1d1af722c281bcb89ab273f4a07f5556822e0e27b40ca89d2057a4a9337e174
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 96404109c54eb6c3c12e46bcc925725ccd352041437f895359f8b11e4b10abe93abd039e040868b0bbf5a5716865bcbbcc0662c3e20fd4d5ce636e8a0c5aa465
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,3 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## 4.6.7 (2022-01-23)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            - fix(CellsMigration): Do not autogenerate nested elements
         
     | 
| 
      
 4 
     | 
    
         
            +
            - make the admin error tracker customizable
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            ## 4.6.6 (2021-11-24)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            - Give overlay picture spec more time to load images
         
     | 
| 
      
 9 
     | 
    
         
            +
            - Stay below dragonfly 1.4
         
     | 
| 
      
 10 
     | 
    
         
            +
            - Adjust tinymce skin assets urls again
         
     | 
| 
      
 11 
     | 
    
         
            +
            - Fix userstamp spec
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ## 4.6.5 (2021-11-17)
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            - Set stampable user_class_name without root identifier ([tvdeyen](https://github.com/tvdeyen))
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ## 4.6.4 (2021-11-15)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            - Use relative path for tinymce font-face ([tvdeyen](https://github.com/tvdeyen))
         
     | 
| 
      
 20 
     | 
    
         
            +
            - make the fixed element upgrader more robust ([darkswoop](https://github.com/darkswoop))
         
     | 
| 
      
 21 
     | 
    
         
            +
            - don't use existing element names when migrating from cells ([darkswoop](https://github.com/darkswoop))
         
     | 
| 
      
 22 
     | 
    
         
            +
            - enhance regexp in partial name upgrader ([darkswoop](https://github.com/darkswoop))
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       1 
24 
     | 
    
         
             
            ## 4.6.3 (2020-05-06)
         
     | 
| 
       2 
25 
     | 
    
         | 
| 
       3 
26 
     | 
    
         
             
            - Use symbols in polymorphic routes for resources [#2087](https://github.com/AlchemyCMS/alchemy_cms/pull/2087) ([tvdeyen](https://github.com/tvdeyen))
         
     | 
    
        data/alchemy_cms.gemspec
    CHANGED
    
    | 
         @@ -23,7 +23,7 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       23 
23 
     | 
    
         
             
              gem.add_runtime_dependency 'awesome_nested_set',               ['~> 3.1']
         
     | 
| 
       24 
24 
     | 
    
         
             
              gem.add_runtime_dependency 'cancancan',                        ['>= 2.1', '< 4.0']
         
     | 
| 
       25 
25 
     | 
    
         
             
              gem.add_runtime_dependency 'coffee-rails',                     ['~> 4.0', '< 5.0']
         
     | 
| 
       26 
     | 
    
         
            -
              gem.add_runtime_dependency 'dragonfly',                        [' 
     | 
| 
      
 26 
     | 
    
         
            +
              gem.add_runtime_dependency 'dragonfly',                        ['>= 1.0.7', '< 1.4']
         
     | 
| 
       27 
27 
     | 
    
         
             
              gem.add_runtime_dependency 'dragonfly_svg',                    ['~> 0.0.4']
         
     | 
| 
       28 
28 
     | 
    
         
             
              gem.add_runtime_dependency 'gutentag',                         ['~> 2.2', '>= 2.2.1']
         
     | 
| 
       29 
29 
     | 
    
         
             
              gem.add_runtime_dependency 'handlebars_assets',                ['~> 0.23']
         
     | 
| 
         @@ -30,7 +30,7 @@ td,th { 
     | 
|
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            .mce-object {
         
     | 
| 
       32 
32 
     | 
    
         
             
              border: 1px dotted #3a3a3a;
         
     | 
| 
       33 
     | 
    
         
            -
              background: #d5d5d5 url(img/object.gif) no-repeat center;
         
     | 
| 
      
 33 
     | 
    
         
            +
              background: #d5d5d5 url('tinymce/skins/alchemy/fonts/img/object.gif') no-repeat center;
         
     | 
| 
       34 
34 
     | 
    
         
             
            }
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            .mce-pagebreak {
         
     | 
| 
         @@ -55,7 +55,7 @@ td,th { 
     | 
|
| 
       55 
55 
     | 
    
         
             
              width: 9px!important;
         
     | 
| 
       56 
56 
     | 
    
         
             
              height: 9px!important;
         
     | 
| 
       57 
57 
     | 
    
         
             
              border: 1px dotted #3a3a3a;
         
     | 
| 
       58 
     | 
    
         
            -
              background: #d5d5d5 url(img/anchor.gif) no-repeat center;
         
     | 
| 
      
 58 
     | 
    
         
            +
              background: #d5d5d5 url('tinymce/skins/alchemy/fonts/img/anchor.gif') no-repeat center;
         
     | 
| 
       59 
59 
     | 
    
         
             
            }
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
61 
     | 
    
         
             
            .mce-nbsp {
         
     | 
| 
         @@ -77,7 +77,7 @@ hr { 
     | 
|
| 
       77 
77 
     | 
    
         
             
            }
         
     | 
| 
       78 
78 
     | 
    
         | 
| 
       79 
79 
     | 
    
         
             
            .mce-spellchecker-word {
         
     | 
| 
       80 
     | 
    
         
            -
              background: url(img/wline.gif) repeat-x bottom left;
         
     | 
| 
      
 80 
     | 
    
         
            +
              background: url('tinymce/skins/alchemy/fonts/img/wline.gif') repeat-x bottom left;
         
     | 
| 
       81 
81 
     | 
    
         
             
              cursor: default;
         
     | 
| 
       82 
82 
     | 
    
         
             
            }
         
     | 
| 
       83 
83 
     | 
    
         | 
| 
         @@ -1561,23 +1561,23 @@ i.mce-i-resize { 
     | 
|
| 
       1561 
1561 
     | 
    
         
             
              opacity: 0.6;
         
     | 
| 
       1562 
1562 
     | 
    
         
             
              filter: alpha(opacity=60);
         
     | 
| 
       1563 
1563 
     | 
    
         
             
              zoom: 1;
         
     | 
| 
       1564 
     | 
    
         
            -
              background: #fff url('img/loader.gif') no-repeat center center;
         
     | 
| 
      
 1564 
     | 
    
         
            +
              background: #fff url('tinymce/skins/alchemy/fonts/img/loader.gif') no-repeat center center;
         
     | 
| 
       1565 
1565 
     | 
    
         
             
            }
         
     | 
| 
       1566 
1566 
     | 
    
         | 
| 
       1567 
1567 
     | 
    
         
             
            @font-face {
         
     | 
| 
       1568 
1568 
     | 
    
         
             
              font-family: 'tinymce';
         
     | 
| 
       1569 
     | 
    
         
            -
              src: url('fonts/tinymce.woff') format('woff'),
         
     | 
| 
       1570 
     | 
    
         
            -
                   url('fonts/tinymce.ttf') format('truetype'),
         
     | 
| 
       1571 
     | 
    
         
            -
                   url('fonts/tinymce.svg#tinymce') format('svg');
         
     | 
| 
      
 1569 
     | 
    
         
            +
              src: url('tinymce/skins/alchemy/fonts/tinymce.woff') format('woff'),
         
     | 
| 
      
 1570 
     | 
    
         
            +
                   url('tinymce/skins/alchemy/fonts/tinymce.ttf') format('truetype'),
         
     | 
| 
      
 1571 
     | 
    
         
            +
                   url('tinymce/skins/alchemy/fonts/tinymce.svg#tinymce') format('svg');
         
     | 
| 
       1572 
1572 
     | 
    
         
             
              font-weight: normal;
         
     | 
| 
       1573 
1573 
     | 
    
         
             
              font-style: normal;
         
     | 
| 
       1574 
1574 
     | 
    
         
             
            }
         
     | 
| 
       1575 
1575 
     | 
    
         | 
| 
       1576 
1576 
     | 
    
         
             
            @font-face {
         
     | 
| 
       1577 
1577 
     | 
    
         
             
              font-family: 'tinymce-small';
         
     | 
| 
       1578 
     | 
    
         
            -
              src: url('fonts/tinymce-small.woff') format('woff'),
         
     | 
| 
       1579 
     | 
    
         
            -
                   url('fonts/tinymce-small.ttf') format('truetype'),
         
     | 
| 
       1580 
     | 
    
         
            -
                   url('fonts/tinymce-small.svg#tinymce') format('svg');
         
     | 
| 
      
 1578 
     | 
    
         
            +
              src: url('tinymce/skins/alchemy/fonts/tinymce-small.woff') format('woff'),
         
     | 
| 
      
 1579 
     | 
    
         
            +
                   url('tinymce/skins/alchemy/fonts/tinymce-small.ttf') format('truetype'),
         
     | 
| 
      
 1580 
     | 
    
         
            +
                   url('tinymce/skins/alchemy/fonts/tinymce-small.svg#tinymce') format('svg');
         
     | 
| 
       1581 
1581 
     | 
    
         
             
              font-weight: normal;
         
     | 
| 
       1582 
1582 
     | 
    
         
             
              font-style: normal;
         
     | 
| 
       1583 
1583 
     | 
    
         
             
            }
         
     | 
| 
         @@ -42,9 +42,7 @@ module Alchemy 
     | 
|
| 
       42 
42 
     | 
    
         
             
                  def exception_handler(error)
         
     | 
| 
       43 
43 
     | 
    
         
             
                    exception_logger(error)
         
     | 
| 
       44 
44 
     | 
    
         
             
                    show_error_notice(error)
         
     | 
| 
       45 
     | 
    
         
            -
                     
     | 
| 
       46 
     | 
    
         
            -
                      notify_airbrake(error) unless Rails.env.development? || Rails.env.test?
         
     | 
| 
       47 
     | 
    
         
            -
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                    notify_error_tracker(error)
         
     | 
| 
       48 
46 
     | 
    
         
             
                  end
         
     | 
| 
       49 
47 
     | 
    
         | 
| 
       50 
48 
     | 
    
         
             
                  # Displays an error notice in the Alchemy backend.
         
     | 
| 
         @@ -167,6 +165,14 @@ module Alchemy 
     | 
|
| 
       167 
165 
     | 
    
         
             
                      site
         
     | 
| 
       168 
166 
     | 
    
         
             
                    end
         
     | 
| 
       169 
167 
     | 
    
         
             
                  end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                  def notify_error_tracker(exception)
         
     | 
| 
      
 170 
     | 
    
         
            +
                    if ::Alchemy::ErrorTracking.notification_handler.respond_to?(:call)
         
     | 
| 
      
 171 
     | 
    
         
            +
                      ::Alchemy::ErrorTracking.notification_handler.call(exception)
         
     | 
| 
      
 172 
     | 
    
         
            +
                    else
         
     | 
| 
      
 173 
     | 
    
         
            +
                      Rails.logger.warn("To use the Alchemy::ErrorTracking.notification_handler, it must respond to #call.")
         
     | 
| 
      
 174 
     | 
    
         
            +
                    end
         
     | 
| 
      
 175 
     | 
    
         
            +
                  end
         
     | 
| 
       170 
176 
     | 
    
         
             
                end
         
     | 
| 
       171 
177 
     | 
    
         
             
              end
         
     | 
| 
       172 
178 
     | 
    
         
             
            end
         
     | 
| 
         @@ -28,7 +28,7 @@ module Alchemy 
     | 
|
| 
       28 
28 
     | 
    
         
             
                  after_assign { |f| write_attribute(:file_mime_type, f.mime_type) }
         
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                stampable stamper_class_name: Alchemy. 
     | 
| 
      
 31 
     | 
    
         
            +
                stampable stamper_class_name: Alchemy.user_class.name
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                has_many :essence_files, class_name: 'Alchemy::EssenceFile', foreign_key: 'attachment_id'
         
     | 
| 
       34 
34 
     | 
    
         
             
                has_many :contents, through: :essence_files
         
     | 
| 
         @@ -28,7 +28,7 @@ module Alchemy 
     | 
|
| 
       28 
28 
     | 
    
         
             
                belongs_to :element, touch: true, inverse_of: :contents
         
     | 
| 
       29 
29 
     | 
    
         
             
                has_one :page, through: :element
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                stampable stamper_class_name: Alchemy. 
     | 
| 
      
 31 
     | 
    
         
            +
                stampable stamper_class_name: Alchemy.user_class.name
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                acts_as_list scope: [:element_id]
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
         @@ -58,7 +58,7 @@ module Alchemy 
     | 
|
| 
       58 
58 
     | 
    
         
             
                #
         
     | 
| 
       59 
59 
     | 
    
         
             
                acts_as_list scope: [:page_id, :fixed, :parent_element_id]
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                stampable stamper_class_name: Alchemy. 
     | 
| 
      
 61 
     | 
    
         
            +
                stampable stamper_class_name: Alchemy.user_class.name
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
63 
     | 
    
         
             
                has_many :contents, -> { order(:position) }, dependent: :destroy, inverse_of: :element
         
     | 
| 
       64 
64 
     | 
    
         | 
    
        data/app/models/alchemy/node.rb
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ module Alchemy 
     | 
|
| 
       5 
5 
     | 
    
         
             
                VALID_URL_REGEX = /\A(\/|\D[a-z\+\d\.\-]+:)/
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                acts_as_nested_set scope: "language_id", touch: true
         
     | 
| 
       8 
     | 
    
         
            -
                stampable stamper_class_name: Alchemy. 
     | 
| 
      
 8 
     | 
    
         
            +
                stampable stamper_class_name: Alchemy.user_class.name
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                belongs_to :site, class_name: "Alchemy::Site"
         
     | 
| 
       11 
11 
     | 
    
         
             
                belongs_to :language, class_name: "Alchemy::Language"
         
     | 
    
        data/app/models/alchemy/page.rb
    CHANGED
    
    
| 
         @@ -74,7 +74,7 @@ module Alchemy 
     | 
|
| 
       74 
74 
     | 
    
         
             
                  case_sensitive: false,
         
     | 
| 
       75 
75 
     | 
    
         
             
                  message: Alchemy.t("not a valid image")
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
                stampable stamper_class_name: Alchemy. 
     | 
| 
      
 77 
     | 
    
         
            +
                stampable stamper_class_name: Alchemy.user_class.name
         
     | 
| 
       78 
78 
     | 
    
         | 
| 
       79 
79 
     | 
    
         
             
                scope :named, ->(name) {
         
     | 
| 
       80 
80 
     | 
    
         
             
                  where("#{table_name}.name LIKE ?", "%#{name}%")
         
     | 
    
        data/lib/alchemy/engine.rb
    CHANGED
    
    | 
         @@ -28,5 +28,12 @@ module Alchemy 
     | 
|
| 
       28 
28 
     | 
    
         
             
                config.after_initialize do
         
     | 
| 
       29 
29 
     | 
    
         
             
                  require_relative './userstamp'
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                initializer "alchemy.error_tracking" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  if defined?(Airbrake)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    require_relative "error_tracking/airbrake_handler"
         
     | 
| 
      
 35 
     | 
    
         
            +
                    Alchemy::ErrorTracking.notification_handler = Alchemy::ErrorTracking::AirbrakeHandler
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
       31 
38 
     | 
    
         
             
              end
         
     | 
| 
       32 
39 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Alchemy
         
     | 
| 
      
 4 
     | 
    
         
            +
              module ErrorTracking
         
     | 
| 
      
 5 
     | 
    
         
            +
                class BaseHandler
         
     | 
| 
      
 6 
     | 
    
         
            +
                  def self.call(exception)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    # implement your own notification method
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                mattr_accessor :notification_handler
         
     | 
| 
      
 12 
     | 
    
         
            +
                @@notification_handler = BaseHandler
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/alchemy/essence.rb
    CHANGED
    
    | 
         @@ -48,7 +48,7 @@ module Alchemy #:nodoc: 
     | 
|
| 
       48 
48 
     | 
    
         
             
                    class_eval <<-RUBY, __FILE__, __LINE__ + 1
         
     | 
| 
       49 
49 
     | 
    
         
             
                      attr_writer :validation_errors
         
     | 
| 
       50 
50 
     | 
    
         
             
                      include Alchemy::Essence::InstanceMethods
         
     | 
| 
       51 
     | 
    
         
            -
                      stampable stamper_class_name: Alchemy. 
     | 
| 
      
 51 
     | 
    
         
            +
                      stampable stamper_class_name: Alchemy.user_class.name
         
     | 
| 
       52 
52 
     | 
    
         
             
                      validate :validate_ingredient, on: :update, if: -> { validations.any? }
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                      has_one :content, as: :essence, class_name: "Alchemy::Content", inverse_of: :essence
         
     | 
| 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require_relative 'tasks/picture_gallery_upgrader'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require_relative 'tasks/picture_gallery_migration'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative 'tasks/fixed_element_name_finder'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require_relative 'tasks/cells_upgrader'
         
     | 
| 
       4 
5 
     | 
    
         
             
            require_relative 'tasks/cells_migration'
         
     | 
| 
       5 
6 
     | 
    
         
             
            require_relative 'tasks/element_partial_name_variable_updater'
         
     | 
| 
         @@ -8,6 +8,7 @@ module Alchemy::Upgrader::Tasks 
     | 
|
| 
       8 
8 
     | 
    
         
             
                def migrate_cells
         
     | 
| 
       9 
9 
     | 
    
         
             
                  if ActiveRecord::Base.connection.data_source_exists?('alchemy_cells')
         
     | 
| 
       10 
10 
     | 
    
         
             
                    cells = Cell.all
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @fixed_element_name_finder = FixedElementNameFinder.new
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                    if cells.any?
         
     | 
| 
       13 
14 
     | 
    
         
             
                      cells.each do |cell|
         
     | 
| 
         @@ -26,10 +27,11 @@ module Alchemy::Upgrader::Tasks 
     | 
|
| 
       26 
27 
     | 
    
         
             
                def migrate_cell!(cell)
         
     | 
| 
       27 
28 
     | 
    
         
             
                  # bust element definitions insta cache
         
     | 
| 
       28 
29 
     | 
    
         
             
                  Alchemy::Element.instance_variable_set('@definitions', nil)
         
     | 
| 
       29 
     | 
    
         
            -
                  fixed_element = Alchemy::Element.find_or_initialize_by(fixed: true, name: cell.name, page: cell.page)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  fixed_element = Alchemy::Element.find_or_initialize_by(fixed: true, name: @fixed_element_name_finder.call(cell.name), page: cell.page)
         
     | 
| 
       30 
31 
     | 
    
         
             
                  elements = Alchemy::Element.where(cell_id: cell.id).order(position: :asc)
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
       32 
33 
     | 
    
         
             
                  if fixed_element.new_record?
         
     | 
| 
      
 34 
     | 
    
         
            +
                    fixed_element.autogenerate_nested_elements = false
         
     | 
| 
       33 
35 
     | 
    
         
             
                    fixed_element.save!
         
     | 
| 
       34 
36 
     | 
    
         
             
                    Alchemy::Element.acts_as_list_no_update do
         
     | 
| 
       35 
37 
     | 
    
         
             
                      elements.update_all(parent_element_id: fixed_element.id)
         
     | 
| 
         @@ -72,12 +72,13 @@ module Alchemy::Upgrader::Tasks 
     | 
|
| 
       72 
72 
     | 
    
         | 
| 
       73 
73 
     | 
    
         
             
                def convert_cell_config
         
     | 
| 
       74 
74 
     | 
    
         
             
                  puts '-- Converting cells into unique fixed nestable elements.'
         
     | 
| 
      
 75 
     | 
    
         
            +
                  fixed_element_name_finder = FixedElementNameFinder.new
         
     | 
| 
       75 
76 
     | 
    
         | 
| 
       76 
77 
     | 
    
         
             
                  YAML.load_file(cells_config_file).each do |cell|
         
     | 
| 
       77 
78 
     | 
    
         
             
                    append_to_file Rails.root.join('config', 'alchemy', 'elements.yml') do
         
     | 
| 
       78 
79 
     | 
    
         
             
                      <<-CELL.strip_heredoc
         
     | 
| 
       79 
80 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
                        - name: #{cell['name']}
         
     | 
| 
      
 81 
     | 
    
         
            +
                        - name: #{fixed_element_name_finder.call(cell['name'])}
         
     | 
| 
       81 
82 
     | 
    
         
             
                          fixed: true
         
     | 
| 
       82 
83 
     | 
    
         
             
                          unique: true
         
     | 
| 
       83 
84 
     | 
    
         
             
                          nestable_elements: [#{cell['elements'].join(', ')}]
         
     | 
| 
         @@ -128,8 +129,25 @@ module Alchemy::Upgrader::Tasks 
     | 
|
| 
       128 
129 
     | 
    
         
             
                  puts "-- Update render_cell calls"
         
     | 
| 
       129 
130 
     | 
    
         
             
                  Dir.glob("#{alchemy_views_folder}/**/*").each do |view|
         
     | 
| 
       130 
131 
     | 
    
         
             
                    next if File.directory?(view)
         
     | 
| 
       131 
     | 
    
         
            -
                     
     | 
| 
       132 
     | 
    
         
            -
                     
     | 
| 
      
 132 
     | 
    
         
            +
                    # <%= render_cell 'test' %>
         
     | 
| 
      
 133 
     | 
    
         
            +
                    # <%= render_cell('test') %>
         
     | 
| 
      
 134 
     | 
    
         
            +
                    # <%= render_cell("test", options: true) %>
         
     | 
| 
      
 135 
     | 
    
         
            +
                    content = File.binread(view)
         
     | 
| 
      
 136 
     | 
    
         
            +
                    content.gsub!(/render_cell([\s(]+)(['":])(\w+)([^\w])(.*?)/) do
         
     | 
| 
      
 137 
     | 
    
         
            +
                      element_name = CellNameMigrator.call($3)
         
     | 
| 
      
 138 
     | 
    
         
            +
                      "render_elements#{$1}only: #{$2}#{element_name}#{$4}, fixed: true#{$5}"
         
     | 
| 
      
 139 
     | 
    
         
            +
                    end
         
     | 
| 
      
 140 
     | 
    
         
            +
                    
         
     | 
| 
      
 141 
     | 
    
         
            +
                    # <%= render_elements from_cell: 'page_intro' %>
         
     | 
| 
      
 142 
     | 
    
         
            +
                    # <%= render_elements testing: 'blubb',     from_cell: :page_intro %>
         
     | 
| 
      
 143 
     | 
    
         
            +
                    # <%= render_elements from_cell: "page_intro", testing: 'blubb' %>
         
     | 
| 
      
 144 
     | 
    
         
            +
                    # <%= render_elements(from_cell: "page_intro", testing: 'blubb') %>
         
     | 
| 
      
 145 
     | 
    
         
            +
                    # <%= render_elements(testing: 'blubb', from_cell: "page_intro") %>
         
     | 
| 
      
 146 
     | 
    
         
            +
                    content.gsub!(/render_elements(.*?)from_cell[:\s=>]+([:'"])(\w+)(['"]?)(.*)/) do
         
     | 
| 
      
 147 
     | 
    
         
            +
                      element_name = CellNameMigrator.call($3)
         
     | 
| 
      
 148 
     | 
    
         
            +
                      "render_elements#{$1}only: #{$2}#{element_name}#{$4}, fixed: true#{$5}"
         
     | 
| 
      
 149 
     | 
    
         
            +
                    end
         
     | 
| 
      
 150 
     | 
    
         
            +
                    File.open(view, "wb") { |file| file.write(content) }
         
     | 
| 
       133 
151 
     | 
    
         
             
                  end
         
     | 
| 
       134 
152 
     | 
    
         
             
                end
         
     | 
| 
       135 
153 
     | 
    
         | 
| 
         @@ -11,10 +11,14 @@ module Alchemy::Upgrader::Tasks 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    puts "-- Update element views local variable to partial name"
         
     | 
| 
       12 
12 
     | 
    
         
             
                    Dir.glob("#{elements_view_folder}/*_view.*").each do |view|
         
     | 
| 
       13 
13 
     | 
    
         
             
                      variable_name = File.basename(view).gsub(/^_([\w-]*)\..*$/, '\1')
         
     | 
| 
       14 
     | 
    
         
            -
                       
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
                      %w[
         
     | 
| 
      
 15 
     | 
    
         
            +
                        cache
         
     | 
| 
      
 16 
     | 
    
         
            +
                        render_essence_view_by_name
         
     | 
| 
      
 17 
     | 
    
         
            +
                        element_view_for
         
     | 
| 
      
 18 
     | 
    
         
            +
                      ].each do |method_name|
         
     | 
| 
      
 19 
     | 
    
         
            +
                        gsub_file(view, /#{method_name}([\s(]+)element([^\w])/, "#{method_name}\\1#{variable_name}\\2")
         
     | 
| 
      
 20 
     | 
    
         
            +
                      end
         
     | 
| 
      
 21 
     | 
    
         
            +
                      gsub_file(view, /([\s(%={]+)element([^\w:"'])/, "\\1#{variable_name}\\2")
         
     | 
| 
       18 
22 
     | 
    
         
             
                    end
         
     | 
| 
       19 
23 
     | 
    
         
             
                  end
         
     | 
| 
       20 
24 
     | 
    
         
             
                end
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Alchemy::Upgrader::Tasks
         
     | 
| 
      
 2 
     | 
    
         
            +
              class FixedElementNameFinder
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def call(cell_name)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  return cell_name if fixed_elements.include?(cell_name)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  return "#{cell_name}_elements" if unfixed_elements.include?(cell_name)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  cell_name
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                private
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def fixed_elements
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @_fixed_element_names ||= begin
         
     | 
| 
      
 14 
     | 
    
         
            +
                    definitions.select { |element| element['fixed'] }.map { |element| element['name'] }
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                def unfixed_elements
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @_unfixed_elements ||= begin
         
     | 
| 
      
 20 
     | 
    
         
            +
                    definitions.reject { |element| element['fixed'] }.map { |element| element['name'] }
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def definitions
         
     | 
| 
      
 25 
     | 
    
         
            +
                  @_definitions ||= begin
         
     | 
| 
      
 26 
     | 
    
         
            +
                    elements_file_path = Rails.root.join('config', 'alchemy', 'elements.yml')
         
     | 
| 
      
 27 
     | 
    
         
            +
                    YAML.load_file(elements_file_path)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/alchemy/userstamp.rb
    CHANGED
    
    
    
        data/lib/alchemy/version.rb
    CHANGED
    
    
    
        data/lib/alchemy_cms.rb
    CHANGED
    
    | 
         @@ -35,6 +35,7 @@ require_relative 'alchemy/configuration_methods' 
     | 
|
| 
       35 
35 
     | 
    
         
             
            require_relative 'alchemy/controller_actions'
         
     | 
| 
       36 
36 
     | 
    
         
             
            require_relative 'alchemy/deprecation'
         
     | 
| 
       37 
37 
     | 
    
         
             
            require_relative 'alchemy/elements_finder'
         
     | 
| 
      
 38 
     | 
    
         
            +
            require_relative 'alchemy/error_tracking'
         
     | 
| 
       38 
39 
     | 
    
         
             
            require_relative 'alchemy/errors'
         
     | 
| 
       39 
40 
     | 
    
         
             
            require_relative 'alchemy/essence'
         
     | 
| 
       40 
41 
     | 
    
         
             
            require_relative 'alchemy/filetypes'
         
     | 
    
        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.6. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 4.6.7
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Thomas von Deyen
         
     | 
| 
         @@ -10,10 +10,10 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            - Hendrik Mans
         
     | 
| 
       11 
11 
     | 
    
         
             
            - Carsten Fregin
         
     | 
| 
       12 
12 
     | 
    
         
             
            - Martin Meyerhoff
         
     | 
| 
       13 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 13 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       14 
14 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
15 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
     | 
    
         
            -
            date:  
     | 
| 
      
 16 
     | 
    
         
            +
            date: 2022-01-23 00:00:00.000000000 Z
         
     | 
| 
       17 
17 
     | 
    
         
             
            dependencies:
         
     | 
| 
       18 
18 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       19 
19 
     | 
    
         
             
              name: active_model_serializers
         
     | 
| 
         @@ -107,22 +107,22 @@ dependencies: 
     | 
|
| 
       107 
107 
     | 
    
         
             
              name: dragonfly
         
     | 
| 
       108 
108 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       109 
109 
     | 
    
         
             
                requirements:
         
     | 
| 
       110 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       111 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       112 
     | 
    
         
            -
                    version: '1.0'
         
     | 
| 
       113 
110 
     | 
    
         
             
                - - ">="
         
     | 
| 
       114 
111 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       115 
112 
     | 
    
         
             
                    version: 1.0.7
         
     | 
| 
      
 113 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 114 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 115 
     | 
    
         
            +
                    version: '1.4'
         
     | 
| 
       116 
116 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       117 
117 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       118 
118 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       119 
119 
     | 
    
         
             
                requirements:
         
     | 
| 
       120 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       121 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       122 
     | 
    
         
            -
                    version: '1.0'
         
     | 
| 
       123 
120 
     | 
    
         
             
                - - ">="
         
     | 
| 
       124 
121 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       125 
122 
     | 
    
         
             
                    version: 1.0.7
         
     | 
| 
      
 123 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 124 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 125 
     | 
    
         
            +
                    version: '1.4'
         
     | 
| 
       126 
126 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       127 
127 
     | 
    
         
             
              name: dragonfly_svg
         
     | 
| 
       128 
128 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -1056,6 +1056,8 @@ files: 
     | 
|
| 
       1056 
1056 
     | 
    
         
             
            - lib/alchemy/deprecation.rb
         
     | 
| 
       1057 
1057 
     | 
    
         
             
            - lib/alchemy/elements_finder.rb
         
     | 
| 
       1058 
1058 
     | 
    
         
             
            - lib/alchemy/engine.rb
         
     | 
| 
      
 1059 
     | 
    
         
            +
            - lib/alchemy/error_tracking.rb
         
     | 
| 
      
 1060 
     | 
    
         
            +
            - lib/alchemy/error_tracking/airbrake_handler.rb
         
     | 
| 
       1059 
1061 
     | 
    
         
             
            - lib/alchemy/errors.rb
         
     | 
| 
       1060 
1062 
     | 
    
         
             
            - lib/alchemy/essence.rb
         
     | 
| 
       1061 
1063 
     | 
    
         
             
            - lib/alchemy/filetypes.rb
         
     | 
| 
         @@ -1110,6 +1112,7 @@ files: 
     | 
|
| 
       1110 
1112 
     | 
    
         
             
            - lib/alchemy/upgrader/tasks/cells_upgrader.rb
         
     | 
| 
       1111 
1113 
     | 
    
         
             
            - lib/alchemy/upgrader/tasks/element_partial_name_variable_updater.rb
         
     | 
| 
       1112 
1114 
     | 
    
         
             
            - lib/alchemy/upgrader/tasks/element_views_updater.rb
         
     | 
| 
      
 1115 
     | 
    
         
            +
            - lib/alchemy/upgrader/tasks/fixed_element_name_finder.rb
         
     | 
| 
       1113 
1116 
     | 
    
         
             
            - lib/alchemy/upgrader/tasks/harden_acts_as_taggable_on_migrations.rb
         
     | 
| 
       1114 
1117 
     | 
    
         
             
            - lib/alchemy/upgrader/tasks/picture_gallery_migration.rb
         
     | 
| 
       1115 
1118 
     | 
    
         
             
            - lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb
         
     | 
| 
         @@ -1244,8 +1247,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       1244 
1247 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       1245 
1248 
     | 
    
         
             
            requirements:
         
     | 
| 
       1246 
1249 
     | 
    
         
             
            - ImageMagick (libmagick), v6.6 or greater.
         
     | 
| 
       1247 
     | 
    
         
            -
            rubygems_version: 3.1. 
     | 
| 
       1248 
     | 
    
         
            -
            signing_key: 
     | 
| 
      
 1250 
     | 
    
         
            +
            rubygems_version: 3.1.6
         
     | 
| 
      
 1251 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       1249 
1252 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       1250 
1253 
     | 
    
         
             
            summary: A powerful, userfriendly and flexible CMS for Rails 5
         
     | 
| 
       1251 
1254 
     | 
    
         
             
            test_files: []
         
     | 
| 
      
 1255 
     | 
    
         
            +
            ...
         
     |