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