alchemy_cms 7.2.0.rc2 → 7.2.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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +8 -0
 - data/alchemy_cms.gemspec +0 -1
 - data/app/assets/stylesheets/alchemy/page-select.scss +12 -7
 - data/app/components/alchemy/admin/link_dialog/internal_tab.rb +2 -2
 - data/app/controllers/alchemy/api/base_controller.rb +0 -1
 - data/app/controllers/alchemy/api/elements_controller.rb +1 -1
 - data/app/controllers/alchemy/api/pages_controller.rb +1 -1
 - data/app/javascript/alchemy_admin/components/attachment_select.js +3 -2
 - data/app/javascript/alchemy_admin/components/node_select.js +3 -2
 - data/app/javascript/alchemy_admin/components/page_select.js +6 -5
 - data/app/javascript/alchemy_admin/components/remote_select.js +14 -1
 - data/app/serializers/alchemy/language_serializer.rb +8 -0
 - data/app/serializers/alchemy/site_serializer.rb +8 -0
 - data/lib/alchemy/version.rb +1 -1
 - data/lib/alchemy_cms.rb +0 -1
 - data/vendor/assets/stylesheets/alchemy_admin/select2.scss +1 -0
 - metadata +4 -22
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: fc42b823b465bcd27da5afbf252cfe85cca0067e909a41bdd62e11f26b19ddc9
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d46785e2a9f7c6e6af086ad315d5e354c3db098530103ee6a94e5ef63802fff4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7e931bc107d3ed406e7d718c6a56c1a09a3ed78548b2d30415d0ffb31ce5838a4abfd08f641961889b66813989d25254f0235de5ceeb3fe9e7656d812086cd11
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c6bcdbbacadbfdc5ca9ac22b66fdf0d5d99403a2c99add0877e537053afacd53343d0e9534184ede0bdb07976c4eadaa6aa82be51eb520d96c5a59d6bc42c067
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,5 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Changelog
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## 7.2.0 (2024-05-28)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            - Remove responders gem [#2901](https://github.com/AlchemyCMS/alchemy_cms/pull/2901) ([tvdeyen](https://github.com/tvdeyen))
         
     | 
| 
      
 6 
     | 
    
         
            +
            - Add Language and Site serializers [#2900](https://github.com/AlchemyCMS/alchemy_cms/pull/2900) ([tvdeyen](https://github.com/tvdeyen))
         
     | 
| 
      
 7 
     | 
    
         
            +
            - PageSelect: Move URL to bottom [#2899](https://github.com/AlchemyCMS/alchemy_cms/pull/2899) ([tvdeyen](https://github.com/tvdeyen))
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Highlight search terms in RemoteSelect [#2898](https://github.com/AlchemyCMS/alchemy_cms/pull/2898) ([tvdeyen](https://github.com/tvdeyen))
         
     | 
| 
      
 9 
     | 
    
         
            +
            - fix(InternalTab): Fix for urls with trailing slash and no locale [#2897](https://github.com/AlchemyCMS/alchemy_cms/pull/2897) ([tvdeyen](https://github.com/tvdeyen))
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       3 
11 
     | 
    
         
             
            ## 7.2.0.rc2 (2024-05-27)
         
     | 
| 
       4 
12 
     | 
    
         | 
| 
       5 
13 
     | 
    
         
             
            - Harden specs [#2896](https://github.com/AlchemyCMS/alchemy_cms/pull/2896) ([tvdeyen](https://github.com/tvdeyen))
         
     | 
    
        data/alchemy_cms.gemspec
    CHANGED
    
    | 
         @@ -46,7 +46,6 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       46 
46 
     | 
    
         
             
              gem.add_runtime_dependency "kaminari", ["~> 1.1"]
         
     | 
| 
       47 
47 
     | 
    
         
             
              gem.add_runtime_dependency "originator", ["~> 3.1"]
         
     | 
| 
       48 
48 
     | 
    
         
             
              gem.add_runtime_dependency "ransack", [">= 1.8", "< 5.0"]
         
     | 
| 
       49 
     | 
    
         
            -
              gem.add_runtime_dependency "responders", [">= 2.0", "< 4.0"]
         
     | 
| 
       50 
49 
     | 
    
         
             
              gem.add_runtime_dependency "sassc-rails", ["~> 2.1"]
         
     | 
| 
       51 
50 
     | 
    
         
             
              gem.add_runtime_dependency "simple_form", [">= 4.0", "< 6"]
         
     | 
| 
       52 
51 
     | 
    
         
             
              gem.add_runtime_dependency "sprockets", [">= 3.0", "< 5"]
         
     | 
| 
         @@ -10,9 +10,12 @@ 
     | 
|
| 
       10 
10 
     | 
    
         
             
              display: flex;
         
     | 
| 
       11 
11 
     | 
    
         
             
              flex-direction: column;
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
               
     | 
| 
       14 
     | 
    
         
            -
                margin:  
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
              alchemy-icon {
         
     | 
| 
      
 14 
     | 
    
         
            +
                margin-right: $default-margin;
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                .icon {
         
     | 
| 
      
 17 
     | 
    
         
            +
                  fill: currentColor;
         
     | 
| 
      
 18 
     | 
    
         
            +
                }
         
     | 
| 
       16 
19 
     | 
    
         
             
              }
         
     | 
| 
       17 
20 
     | 
    
         
             
            }
         
     | 
| 
       18 
21 
     | 
    
         | 
| 
         @@ -25,11 +28,12 @@ 
     | 
|
| 
       25 
28 
     | 
    
         | 
| 
       26 
29 
     | 
    
         
             
            .page-select--bottom {
         
     | 
| 
       27 
30 
     | 
    
         
             
              font-size: $small-font-size;
         
     | 
| 
       28 
     | 
    
         
            -
              padding-left: $default-padding;
         
     | 
| 
      
 31 
     | 
    
         
            +
              padding-left: $default-padding / 2;
         
     | 
| 
       29 
32 
     | 
    
         
             
            }
         
     | 
| 
       30 
33 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
            .page-select-- 
     | 
| 
      
 34 
     | 
    
         
            +
            .page-select--page-urlname {
         
     | 
| 
       32 
35 
     | 
    
         
             
              color: $muted-text-color;
         
     | 
| 
      
 36 
     | 
    
         
            +
              padding-right: $default-padding;
         
     | 
| 
       33 
37 
     | 
    
         | 
| 
       34 
38 
     | 
    
         
             
              .select2-highlighted & {
         
     | 
| 
       35 
39 
     | 
    
         
             
                color: $medium-gray;
         
     | 
| 
         @@ -42,6 +46,7 @@ 
     | 
|
| 
       42 
46 
     | 
    
         
             
              margin-left: auto;
         
     | 
| 
       43 
47 
     | 
    
         
             
              border-radius: $default-border-radius;
         
     | 
| 
       44 
48 
     | 
    
         
             
              padding: $default-padding / 2 $default-padding;
         
     | 
| 
      
 49 
     | 
    
         
            +
              text-transform: uppercase;
         
     | 
| 
       45 
50 
     | 
    
         | 
| 
       46 
51 
     | 
    
         
             
              .select2-highlighted & {
         
     | 
| 
       47 
52 
     | 
    
         
             
                color: $select-hover-bg-color;
         
     | 
| 
         @@ -49,9 +54,9 @@ 
     | 
|
| 
       49 
54 
     | 
    
         
             
              }
         
     | 
| 
       50 
55 
     | 
    
         
             
            }
         
     | 
| 
       51 
56 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
            .page-select-- 
     | 
| 
      
 57 
     | 
    
         
            +
            .page-select--site-name {
         
     | 
| 
       53 
58 
     | 
    
         
             
              margin-left: auto;
         
     | 
| 
       54 
     | 
    
         
            -
              padding: $default-padding 2 * $default-padding;
         
     | 
| 
      
 59 
     | 
    
         
            +
              padding: $default-padding 0 $default-padding 2 * $default-padding;
         
     | 
| 
       55 
60 
     | 
    
         
             
              color: $dark-gray;
         
     | 
| 
       56 
61 
     | 
    
         
             
              font-size: $small-font-size;
         
     | 
| 
       57 
62 
     | 
    
         | 
| 
         @@ -4,7 +4,7 @@ module Alchemy 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Admin
         
     | 
| 
       5 
5 
     | 
    
         
             
                module LinkDialog
         
     | 
| 
       6 
6 
     | 
    
         
             
                  class InternalTab < BaseTab
         
     | 
| 
       7 
     | 
    
         
            -
                    PAGE_URL_PATTERN =  
     | 
| 
      
 7 
     | 
    
         
            +
                    PAGE_URL_PATTERN = /^\/(?:(?<locale>[a-z]{2})(?:\/|$))?(?<urlname>.*?)(?:\/|$)?(?:#(?<fragment>.*))?$/
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                    def title
         
     | 
| 
       10 
10 
     | 
    
         
             
                      Alchemy.t("link_overlay_tab_label.internal")
         
     | 
| 
         @@ -49,7 +49,7 @@ module Alchemy 
     | 
|
| 
       49 
49 
     | 
    
         
             
                    end
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
51 
     | 
    
         
             
                    def page_attributes
         
     | 
| 
       52 
     | 
    
         
            -
                      locale,  
     | 
| 
      
 52 
     | 
    
         
            +
                      locale, urlname, _fragment = uri.path.match(PAGE_URL_PATTERN)&.captures
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                      if locale && urlname.present?
         
     | 
| 
       55 
55 
     | 
    
         
             
                        {language_code: locale, urlname: urlname}
         
     | 
| 
         @@ -8,14 +8,15 @@ class AttachmentSelect extends RemoteSelect { 
     | 
|
| 
       8 
8 
     | 
    
         
             
              /**
         
     | 
| 
       9 
9 
     | 
    
         
             
               * html template for each list entry
         
     | 
| 
       10 
10 
     | 
    
         
             
               * @param {object} page
         
     | 
| 
      
 11 
     | 
    
         
            +
               * @param {string} term
         
     | 
| 
       11 
12 
     | 
    
         
             
               * @returns {string}
         
     | 
| 
       12 
13 
     | 
    
         
             
               * @private
         
     | 
| 
       13 
14 
     | 
    
         
             
               */
         
     | 
| 
       14 
     | 
    
         
            -
              _renderListEntry(attachment) {
         
     | 
| 
      
 15 
     | 
    
         
            +
              _renderListEntry(attachment, term) {
         
     | 
| 
       15 
16 
     | 
    
         
             
                return `
         
     | 
| 
       16 
17 
     | 
    
         
             
                  <div class="attachment-select--attachment">
         
     | 
| 
       17 
18 
     | 
    
         
             
                    <alchemy-icon name="${attachment.icon_css_class}"></alchemy-icon>
         
     | 
| 
       18 
     | 
    
         
            -
                    <span class="attachment-select--attachment-name">${attachment.name}</span>
         
     | 
| 
      
 19 
     | 
    
         
            +
                    <span class="attachment-select--attachment-name">${this._hightlightTerm(attachment.name, term)}</span>
         
     | 
| 
       19 
20 
     | 
    
         
             
                  </div>
         
     | 
| 
       20 
21 
     | 
    
         
             
                `
         
     | 
| 
       21 
22 
     | 
    
         
             
              }
         
     | 
| 
         @@ -18,10 +18,11 @@ class NodeSelect extends RemoteSelect { 
     | 
|
| 
       18 
18 
     | 
    
         
             
              /**
         
     | 
| 
       19 
19 
     | 
    
         
             
               * html template for each list entry
         
     | 
| 
       20 
20 
     | 
    
         
             
               * @param {object} node
         
     | 
| 
      
 21 
     | 
    
         
            +
               * @param {string} term
         
     | 
| 
       21 
22 
     | 
    
         
             
               * @returns {string}
         
     | 
| 
       22 
23 
     | 
    
         
             
               * @private
         
     | 
| 
       23 
24 
     | 
    
         
             
               */
         
     | 
| 
       24 
     | 
    
         
            -
              _renderListEntry(node) {
         
     | 
| 
      
 25 
     | 
    
         
            +
              _renderListEntry(node, term) {
         
     | 
| 
       25 
26 
     | 
    
         
             
                const ancestors = node.ancestors.map((a) => a.name)
         
     | 
| 
       26 
27 
     | 
    
         
             
                const seperator = `<alchemy-icon name="arrow-right-s"></alchemy-icon>`
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
         @@ -33,7 +34,7 @@ class NodeSelect extends RemoteSelect { 
     | 
|
| 
       33 
34 
     | 
    
         
             
                        ${ancestors.length > 0 ? ancestors.join(seperator) + seperator : ""}
         
     | 
| 
       34 
35 
     | 
    
         
             
                      </span>
         
     | 
| 
       35 
36 
     | 
    
         
             
                      <span class="node-select--node-name">
         
     | 
| 
       36 
     | 
    
         
            -
                        ${node.name}
         
     | 
| 
      
 37 
     | 
    
         
            +
                        ${this._hightlightTerm(node.name, term)}
         
     | 
| 
       37 
38 
     | 
    
         
             
                      </span>
         
     | 
| 
       38 
39 
     | 
    
         
             
                    </div>
         
     | 
| 
       39 
40 
     | 
    
         
             
                    <div class="node-select--node-url">
         
     | 
| 
         @@ -36,20 +36,21 @@ class PageSelect extends RemoteSelect { 
     | 
|
| 
       36 
36 
     | 
    
         
             
              /**
         
     | 
| 
       37 
37 
     | 
    
         
             
               * html template for each list entry
         
     | 
| 
       38 
38 
     | 
    
         
             
               * @param {object} page
         
     | 
| 
      
 39 
     | 
    
         
            +
               * @param {string} term
         
     | 
| 
       39 
40 
     | 
    
         
             
               * @returns {string}
         
     | 
| 
       40 
41 
     | 
    
         
             
               * @private
         
     | 
| 
       41 
42 
     | 
    
         
             
               */
         
     | 
| 
       42 
     | 
    
         
            -
              _renderListEntry(page) {
         
     | 
| 
      
 43 
     | 
    
         
            +
              _renderListEntry(page, term) {
         
     | 
| 
       43 
44 
     | 
    
         
             
                return `
         
     | 
| 
       44 
45 
     | 
    
         
             
                  <div class="page-select--page">
         
     | 
| 
       45 
46 
     | 
    
         
             
                    <div class="page-select--top">
         
     | 
| 
       46 
47 
     | 
    
         
             
                      <alchemy-icon name="file-3"></alchemy-icon>
         
     | 
| 
       47 
     | 
    
         
            -
                      <span class="page-select--page-name">${page.name}</span>
         
     | 
| 
       48 
     | 
    
         
            -
                      <span class="page-select-- 
     | 
| 
      
 48 
     | 
    
         
            +
                      <span class="page-select--page-name">${this._hightlightTerm(page.name, term)}</span>
         
     | 
| 
      
 49 
     | 
    
         
            +
                      <span class="page-select--site-name">${page.site.name}</span>
         
     | 
| 
       49 
50 
     | 
    
         
             
                    </div>
         
     | 
| 
       50 
51 
     | 
    
         
             
                    <div class="page-select--bottom">
         
     | 
| 
       51 
     | 
    
         
            -
                      <span class="page-select-- 
     | 
| 
       52 
     | 
    
         
            -
                      <span class="page-select--language-code">${page. 
     | 
| 
      
 52 
     | 
    
         
            +
                      <span class="page-select--page-urlname">${page.url_path}</span>
         
     | 
| 
      
 53 
     | 
    
         
            +
                      <span class="page-select--language-code">${page.language_code}</span>
         
     | 
| 
       53 
54 
     | 
    
         
             
                    </div>
         
     | 
| 
       54 
55 
     | 
    
         
             
                  </div>
         
     | 
| 
       55 
56 
     | 
    
         
             
                `
         
     | 
| 
         @@ -62,7 +62,8 @@ export class RemoteSelect extends AlchemyHTMLElement { 
     | 
|
| 
       62 
62 
     | 
    
         
             
                  },
         
     | 
| 
       63 
63 
     | 
    
         
             
                  ajax: this.ajaxConfig,
         
     | 
| 
       64 
64 
     | 
    
         
             
                  formatSelection: (item) => this._renderResult(item),
         
     | 
| 
       65 
     | 
    
         
            -
                  formatResult: (item) => 
     | 
| 
      
 65 
     | 
    
         
            +
                  formatResult: (item, _el, query) =>
         
     | 
| 
      
 66 
     | 
    
         
            +
                    this._renderListEntry(item, query.term)
         
     | 
| 
       66 
67 
     | 
    
         
             
                }
         
     | 
| 
       67 
68 
     | 
    
         
             
              }
         
     | 
| 
       68 
69 
     | 
    
         | 
| 
         @@ -126,6 +127,7 @@ export class RemoteSelect extends AlchemyHTMLElement { 
     | 
|
| 
       126 
127 
     | 
    
         
             
              /**
         
     | 
| 
       127 
128 
     | 
    
         
             
               * html template for each list entry
         
     | 
| 
       128 
129 
     | 
    
         
             
               * @param {object} item
         
     | 
| 
      
 130 
     | 
    
         
            +
               * @param {string} term
         
     | 
| 
       129 
131 
     | 
    
         
             
               * @returns {string}
         
     | 
| 
       130 
132 
     | 
    
         
             
               * @private
         
     | 
| 
       131 
133 
     | 
    
         
             
               */
         
     | 
| 
         @@ -134,4 +136,15 @@ export class RemoteSelect extends AlchemyHTMLElement { 
     | 
|
| 
       134 
136 
     | 
    
         
             
                  "You need to define a _renderListEntry function on your sub class!"
         
     | 
| 
       135 
137 
     | 
    
         
             
                )
         
     | 
| 
       136 
138 
     | 
    
         
             
              }
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
              /**
         
     | 
| 
      
 141 
     | 
    
         
            +
               * hightlighted search term
         
     | 
| 
      
 142 
     | 
    
         
            +
               * @param {string} name
         
     | 
| 
      
 143 
     | 
    
         
            +
               * @param {string} term
         
     | 
| 
      
 144 
     | 
    
         
            +
               * @returns {string}
         
     | 
| 
      
 145 
     | 
    
         
            +
               * @private
         
     | 
| 
      
 146 
     | 
    
         
            +
               */
         
     | 
| 
      
 147 
     | 
    
         
            +
              _hightlightTerm(name, term) {
         
     | 
| 
      
 148 
     | 
    
         
            +
                return name.replace(new RegExp(term, "gi"), (match) => `<em>${match}</em>`)
         
     | 
| 
      
 149 
     | 
    
         
            +
              }
         
     | 
| 
       137 
150 
     | 
    
         
             
            }
         
     | 
    
        data/lib/alchemy/version.rb
    CHANGED
    
    
    
        data/lib/alchemy_cms.rb
    CHANGED
    
    
    
        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: 7.2.0 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 7.2.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: 2024-05- 
     | 
| 
      
 16 
     | 
    
         
            +
            date: 2024-05-28 00:00:00.000000000 Z
         
     | 
| 
       17 
17 
     | 
    
         
             
            dependencies:
         
     | 
| 
       18 
18 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       19 
19 
     | 
    
         
             
              name: actionmailer
         
     | 
| 
         @@ -413,26 +413,6 @@ dependencies: 
     | 
|
| 
       413 
413 
     | 
    
         
             
                - - "<"
         
     | 
| 
       414 
414 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       415 
415 
     | 
    
         
             
                    version: '5.0'
         
     | 
| 
       416 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       417 
     | 
    
         
            -
              name: responders
         
     | 
| 
       418 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       419 
     | 
    
         
            -
                requirements:
         
     | 
| 
       420 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       421 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       422 
     | 
    
         
            -
                    version: '2.0'
         
     | 
| 
       423 
     | 
    
         
            -
                - - "<"
         
     | 
| 
       424 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       425 
     | 
    
         
            -
                    version: '4.0'
         
     | 
| 
       426 
     | 
    
         
            -
              type: :runtime
         
     | 
| 
       427 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       428 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       429 
     | 
    
         
            -
                requirements:
         
     | 
| 
       430 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       431 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       432 
     | 
    
         
            -
                    version: '2.0'
         
     | 
| 
       433 
     | 
    
         
            -
                - - "<"
         
     | 
| 
       434 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       435 
     | 
    
         
            -
                    version: '4.0'
         
     | 
| 
       436 
416 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       437 
417 
     | 
    
         
             
              name: sassc-rails
         
     | 
| 
       438 
418 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -1015,11 +995,13 @@ files: 
     | 
|
| 
       1015 
995 
     | 
    
         
             
            - app/serializers/alchemy/base_serializer.rb
         
     | 
| 
       1016 
996 
     | 
    
         
             
            - app/serializers/alchemy/element_serializer.rb
         
     | 
| 
       1017 
997 
     | 
    
         
             
            - app/serializers/alchemy/ingredient_serializer.rb
         
     | 
| 
      
 998 
     | 
    
         
            +
            - app/serializers/alchemy/language_serializer.rb
         
     | 
| 
       1018 
999 
     | 
    
         
             
            - app/serializers/alchemy/node_serializer.rb
         
     | 
| 
       1019 
1000 
     | 
    
         
             
            - app/serializers/alchemy/page_node_serializer.rb
         
     | 
| 
       1020 
1001 
     | 
    
         
             
            - app/serializers/alchemy/page_serializer.rb
         
     | 
| 
       1021 
1002 
     | 
    
         
             
            - app/serializers/alchemy/page_tree_serializer.rb
         
     | 
| 
       1022 
1003 
     | 
    
         
             
            - app/serializers/alchemy/picture_serializer.rb
         
     | 
| 
      
 1004 
     | 
    
         
            +
            - app/serializers/alchemy/site_serializer.rb
         
     | 
| 
       1023 
1005 
     | 
    
         
             
            - app/services/alchemy/copy_page.rb
         
     | 
| 
       1024 
1006 
     | 
    
         
             
            - app/services/alchemy/delete_elements.rb
         
     | 
| 
       1025 
1007 
     | 
    
         
             
            - app/services/alchemy/duplicate_element.rb
         
     |