pages_core 3.10.2 → 3.11.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,15 +6,21 @@ module PagesCore
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  def humanized_param(slug)
9
- return id.to_s unless slug&.present?
9
+ safe_slug = safe_humanized_param(slug)
10
+ return id.to_s if safe_slug.blank?
10
11
 
11
- "#{id}-" + transliterate(slug)
12
- .downcase
13
- .gsub(/[\[{]/, "(")
14
- .gsub(/}\]/, ")")
15
- .gsub(/[^[[:alnum:]]()-]+/, "-")
16
- .gsub(/-{2,}/, "-")
17
- .gsub(/(^-|-$)/, "")
12
+ "#{id}-#{safe_slug}"
13
+ end
14
+
15
+ private
16
+
17
+ def safe_humanized_param(str)
18
+ transliterate(str.to_s).downcase
19
+ .gsub(/[\[{]/, "(")
20
+ .gsub(/}\]/, ")")
21
+ .gsub(/[^[[:alnum:]]()-]+/, "-")
22
+ .gsub(/-{2,}/, "-")
23
+ .gsub(/(^-|-$)/, "")
18
24
  end
19
25
  end
20
26
  end
@@ -24,7 +24,7 @@ module PagesCore
24
24
  end
25
25
 
26
26
  def ensure_path_segment
27
- return if deleted? || path_segment? || !name?
27
+ return if deleted? || path_segment? || generated_path_segment.blank?
28
28
 
29
29
  segment = generated_path_segment
30
30
  segment = "#{segment}-#{id}" if path_collision?(segment)
@@ -59,11 +59,8 @@ module PagesCore
59
59
  end
60
60
 
61
61
  def generated_path_segment
62
- transliterated_name.gsub(/[^[[:alnum:]]-_]+/, "-")
63
- .gsub(/-{2,}/, "-")
64
- .gsub(/(^-|-$)/, "")
65
- .mb_chars
66
- .downcase
62
+ safe_path_segment(transliterated_name).presence ||
63
+ safe_path_segment(unique_name)
67
64
  end
68
65
 
69
66
  def page_path_matches_routes?(page_path)
@@ -98,6 +95,15 @@ module PagesCore
98
95
  false
99
96
  end
100
97
 
98
+ def safe_path_segment(str)
99
+ str.to_s
100
+ .gsub(/[^[[:alnum:]]-_]+/, "-")
101
+ .gsub(/-{2,}/, "-")
102
+ .gsub(/(^-|-$)/, "")
103
+ .mb_chars
104
+ .downcase
105
+ end
106
+
101
107
  def sibling_path_segments
102
108
  siblings = if parent
103
109
  parent.children
@@ -1,4 +1,4 @@
1
1
  <%= react_component("PageFiles",
2
2
  locale: @locale,
3
- locales: PagesCore.config.locales,
3
+ locales: locales_with_dir,
4
4
  records: @page.files.map { |pf| Admin::PageFileResource.new(pf).to_hash }) %>
@@ -1,4 +1,4 @@
1
1
  <%= react_component("PageImages",
2
2
  locale: @locale,
3
- locales: PagesCore.config.locales,
3
+ locales: locales_with_dir,
4
4
  records: @page.page_images.map { |pi| Admin::PageImageResource.new(pi).to_hash }) %>
@@ -1,6 +1,6 @@
1
1
  <div class="field">
2
2
  <% if f.object.pathable? %>
3
- <%= labelled_field(f.text_field(:path_segment),
3
+ <%= labelled_field(f.text_field(:path_segment, dir: "ltr", lang: nil),
4
4
  "Path segment",
5
5
  description: "Only alpanumeric characters and dashes " \
6
6
  "are allowed.") %>
@@ -16,6 +16,7 @@
16
16
  "PageTree", {
17
17
  pages: @pages.map { |p| page_json(p) },
18
18
  locale: @locale,
19
+ dir: locale_direction(@locale),
19
20
  permissions: [(:create if policy(Page).create?)] }
20
21
  ) %>
21
22
  <% end %>
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pages_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.2
4
+ version: 3.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-08 00:00:00.000000000 Z
11
+ date: 2022-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.32'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.32'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: factory_bot
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.11.0
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.11.0
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pg
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.2.3
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.2.3
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rails-controller-testing
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec_junit_formatter
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 3.8.1
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 3.8.1
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: semantic
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -602,6 +602,8 @@ files:
602
602
  - app/helpers/pages_core/admin/form_builder.rb
603
603
  - app/helpers/pages_core/admin/image_uploads_helper.rb
604
604
  - app/helpers/pages_core/admin/labelled_field_helper.rb
605
+ - app/helpers/pages_core/admin/locales_helper.rb
606
+ - app/helpers/pages_core/admin/localized_form_builder.rb
605
607
  - app/helpers/pages_core/admin/page_blocks_helper.rb
606
608
  - app/helpers/pages_core/admin/page_json_helper.rb
607
609
  - app/helpers/pages_core/admin/tag_editor_helper.rb
@@ -611,6 +613,7 @@ files:
611
613
  - app/helpers/pages_core/frontend_helper.rb
612
614
  - app/helpers/pages_core/head_tags_helper.rb
613
615
  - app/helpers/pages_core/images_helper.rb
616
+ - app/helpers/pages_core/labelled_form_builder.rb
614
617
  - app/helpers/pages_core/meta_tags_helper.rb
615
618
  - app/helpers/pages_core/open_graph_tags_helper.rb
616
619
  - app/helpers/pages_core/page_path_helper.rb
@@ -860,7 +863,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
860
863
  - !ruby/object:Gem::Version
861
864
  version: '0'
862
865
  requirements: []
863
- rubygems_version: 3.3.11
866
+ rubygems_version: 3.3.22
864
867
  signing_key:
865
868
  specification_version: 4
866
869
  summary: Pages Core