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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ab8abb53948898989f3d8a8b597737a63da7e541ef5cd0de08a23d505fb7729
4
- data.tar.gz: ce85ac778f47134d757d46c9c4d56879d98cb456b32ebe3a1d8133f757643b8b
3
+ metadata.gz: fc42b823b465bcd27da5afbf252cfe85cca0067e909a41bdd62e11f26b19ddc9
4
+ data.tar.gz: d46785e2a9f7c6e6af086ad315d5e354c3db098530103ee6a94e5ef63802fff4
5
5
  SHA512:
6
- metadata.gz: e6e1a233177adbdac5ae8a61fae4653f392fe458938e1b87752dc3c1317ad881fd0e6270e8a612bb8f7b45e31430584f8bd27e018ec7d0fb702a6518483daf34
7
- data.tar.gz: 1effffc22e22464f9cf4cf0d1e22107746d93cbac01a2610f7e29707de7f25b186e3c87bc2527dfe820fbb611e4cf65c1dfb1c6d3ba062e0ae3cb7bc0224a0de
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
- .icon {
14
- margin: 0 $default-margin;
15
- fill: currentColor;
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--site-name {
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--page-urlname {
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 = /\A\/(?<locale>[a-z]{2})?(?<slash>\/)?(?<urlname>.*?)(?<trailing-slash>\/)?\z/
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, _, urlname, _ = uri.path.match(PAGE_URL_PATTERN)&.captures
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}
@@ -3,7 +3,6 @@
3
3
  module Alchemy
4
4
  class Api::BaseController < Alchemy::BaseController
5
5
  layout false
6
- respond_to :json
7
6
 
8
7
  rescue_from CanCan::AccessDenied, with: :render_not_authorized
9
8
  rescue_from ActiveRecord::RecordNotFound, with: :render_not_found
@@ -37,7 +37,7 @@ module Alchemy
37
37
  def show
38
38
  @element = Element.where(id: params[:id]).includes(*element_includes).first
39
39
  authorize! :show, @element
40
- respond_with @element
40
+ render json: @element, serializer: ElementSerializer
41
41
  end
42
42
 
43
43
  private
@@ -43,7 +43,7 @@ module Alchemy
43
43
  #
44
44
  def show
45
45
  authorize! :show, @page
46
- respond_with @page
46
+ render json: @page, serializer: PageSerializer
47
47
  end
48
48
 
49
49
  def move
@@ -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--page-urlname">${page.url_path}</span>
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--site-name">${page.site.name}</span>
52
- <span class="page-select--language-code">${page.language.name}</span>
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) => this._renderListEntry(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
  }
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Alchemy
4
+ class LanguageSerializer < ActiveModel::Serializer
5
+ attributes :id,
6
+ :name
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Alchemy
4
+ class SiteSerializer < ActiveModel::Serializer
5
+ attributes :id,
6
+ :name
7
+ end
8
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "7.2.0.rc2"
4
+ VERSION = "7.2.0"
5
5
 
6
6
  def self.version
7
7
  VERSION
data/lib/alchemy_cms.rb CHANGED
@@ -17,7 +17,6 @@ require "jquery-rails"
17
17
  require "kaminari"
18
18
  require "non_stupid_digest_assets"
19
19
  require "ransack"
20
- require "responders"
21
20
  require "sassc-rails"
22
21
  require "simple_form"
23
22
  require "turbo-rails"
@@ -396,6 +396,7 @@ html[dir="rtl"] .select2-results {
396
396
  .select2-results li em {
397
397
  background: #feffde;
398
398
  font-style: normal;
399
+ text-decoration: underline;
399
400
  }
400
401
 
401
402
  .select2-results .select2-highlighted em {
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.rc2
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-27 00:00:00.000000000 Z
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