actiontext 7.1.3.2 → 7.2.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of actiontext might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -88
- data/app/assets/javascripts/actiontext.esm.js +3 -3
- data/app/assets/javascripts/actiontext.js +3 -3
- data/app/assets/javascripts/trix.js +92 -30
- data/app/assets/stylesheets/trix.css +3 -1
- data/app/helpers/action_text/content_helper.rb +2 -0
- data/app/helpers/action_text/tag_helper.rb +38 -28
- data/app/models/action_text/encrypted_rich_text.rb +2 -2
- data/app/models/action_text/record.rb +2 -0
- data/app/models/action_text/rich_text.rb +58 -26
- data/db/migrate/20180528164100_create_action_text_tables.rb +1 -1
- data/lib/action_text/attachable.rb +35 -33
- data/lib/action_text/attachables/content_attachment.rb +2 -0
- data/lib/action_text/attachables/missing_attachable.rb +2 -0
- data/lib/action_text/attachables/remote_image.rb +2 -0
- data/lib/action_text/attachment.rb +27 -25
- data/lib/action_text/attachment_gallery.rb +2 -0
- data/lib/action_text/attachments/caching.rb +2 -0
- data/lib/action_text/attachments/minification.rb +2 -0
- data/lib/action_text/attachments/trix_conversion.rb +2 -0
- data/lib/action_text/attribute.rb +36 -22
- data/lib/action_text/content.rb +46 -26
- data/lib/action_text/deprecator.rb +2 -0
- data/lib/action_text/encryption.rb +2 -0
- data/lib/action_text/engine.rb +2 -0
- data/lib/action_text/fixture_set.rb +34 -34
- data/lib/action_text/fragment.rb +4 -0
- data/lib/action_text/gem_version.rb +6 -4
- data/lib/action_text/html_conversion.rb +2 -0
- data/lib/action_text/plain_text_conversion.rb +2 -0
- data/lib/action_text/rendering.rb +2 -0
- data/lib/action_text/serialization.rb +2 -0
- data/lib/action_text/system_test_helper.rb +20 -17
- data/lib/action_text/trix_attachment.rb +2 -0
- data/lib/action_text/version.rb +3 -1
- data/lib/action_text.rb +1 -1
- data/lib/generators/action_text/install/install_generator.rb +10 -3
- data/lib/rails/generators/test_unit/install_generator.rb +2 -0
- data/package.json +1 -1
- metadata +15 -15
@@ -1,62 +1,62 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :markup: markdown
|
4
|
+
|
3
5
|
module ActionText
|
4
|
-
#
|
6
|
+
# # Action Text FixtureSet
|
5
7
|
#
|
6
|
-
# Fixtures are a way of organizing data that you want to test against; in
|
7
|
-
#
|
8
|
+
# Fixtures are a way of organizing data that you want to test against; in short,
|
9
|
+
# sample data.
|
8
10
|
#
|
9
11
|
# To learn more about fixtures, read the ActiveRecord::FixtureSet documentation.
|
10
12
|
#
|
11
|
-
#
|
13
|
+
# ### YAML
|
12
14
|
#
|
13
15
|
# Like other Active Record-backed models, ActionText::RichText records inherit
|
14
|
-
# from ActiveRecord::Base instances and can therefore be populated by
|
15
|
-
# fixtures.
|
16
|
+
# from ActiveRecord::Base instances and can therefore be populated by fixtures.
|
16
17
|
#
|
17
|
-
# Consider an
|
18
|
+
# Consider an `Article` class:
|
18
19
|
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
20
|
+
# class Article < ApplicationRecord
|
21
|
+
# has_rich_text :content
|
22
|
+
# end
|
22
23
|
#
|
23
|
-
# To declare fixture data for the related
|
24
|
-
#
|
24
|
+
# To declare fixture data for the related `content`, first declare fixture data
|
25
|
+
# for `Article` instances in `test/fixtures/articles.yml`:
|
25
26
|
#
|
26
|
-
#
|
27
|
-
#
|
27
|
+
# first:
|
28
|
+
# title: An Article
|
28
29
|
#
|
29
30
|
# Then declare the ActionText::RichText fixture data in
|
30
|
-
#
|
31
|
-
#
|
31
|
+
# `test/fixtures/action_text/rich_texts.yml`, making sure to declare each
|
32
|
+
# entry's `record:` key as a polymorphic relationship:
|
32
33
|
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
34
|
+
# first:
|
35
|
+
# record: first (Article)
|
36
|
+
# name: content
|
37
|
+
# body: <div>Hello, world.</div>
|
37
38
|
#
|
38
39
|
# When processed, Active Record will insert database records for each fixture
|
39
40
|
# entry and will ensure the Action Text relationship is intact.
|
40
41
|
class FixtureSet
|
41
|
-
# Fixtures support Action Text attachments as part of their
|
42
|
-
# HTML.
|
42
|
+
# Fixtures support Action Text attachments as part of their `body` HTML.
|
43
43
|
#
|
44
|
-
#
|
44
|
+
# ### Examples
|
45
45
|
#
|
46
|
-
# For example, consider a second
|
47
|
-
#
|
46
|
+
# For example, consider a second `Article` fixture declared in
|
47
|
+
# `test/fixtures/articles.yml`:
|
48
48
|
#
|
49
|
-
#
|
50
|
-
#
|
49
|
+
# second:
|
50
|
+
# title: Another Article
|
51
51
|
#
|
52
|
-
# You can attach a mention of
|
53
|
-
#
|
54
|
-
# in
|
52
|
+
# You can attach a mention of `articles(:first)` to `second`'s `content` by
|
53
|
+
# embedding a call to `ActionText::FixtureSet.attachment` in the `body:` value
|
54
|
+
# in `test/fixtures/action_text/rich_texts.yml`:
|
55
55
|
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
56
|
+
# second:
|
57
|
+
# record: second (Article)
|
58
|
+
# name: content
|
59
|
+
# body: <div>Hello, <%= ActionText::FixtureSet.attachment("articles", :first) %></div>
|
60
60
|
#
|
61
61
|
def self.attachment(fixture_set_name, label, column_type: :integer)
|
62
62
|
signed_global_id = ActiveRecord::FixtureSet.signed_global_id fixture_set_name, label,
|
data/lib/action_text/fragment.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :markup: markdown
|
4
|
+
|
3
5
|
module ActionText
|
4
6
|
class Fragment
|
5
7
|
class << self
|
@@ -21,6 +23,8 @@ module ActionText
|
|
21
23
|
|
22
24
|
attr_reader :source
|
23
25
|
|
26
|
+
delegate :deconstruct, to: "source.elements"
|
27
|
+
|
24
28
|
def initialize(source)
|
25
29
|
@source = source
|
26
30
|
end
|
@@ -1,16 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :markup: markdown
|
4
|
+
|
3
5
|
module ActionText
|
4
|
-
# Returns the currently loaded version of Action Text as a
|
6
|
+
# Returns the currently loaded version of Action Text as a `Gem::Version`.
|
5
7
|
def self.gem_version
|
6
8
|
Gem::Version.new VERSION::STRING
|
7
9
|
end
|
8
10
|
|
9
11
|
module VERSION
|
10
12
|
MAJOR = 7
|
11
|
-
MINOR =
|
12
|
-
TINY =
|
13
|
-
PRE = "
|
13
|
+
MINOR = 2
|
14
|
+
TINY = 0
|
15
|
+
PRE = "beta1"
|
14
16
|
|
15
17
|
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
|
16
18
|
end
|
@@ -1,34 +1,37 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :markup: markdown
|
4
|
+
|
3
5
|
module ActionText
|
4
6
|
module SystemTestHelper
|
5
7
|
# Locates a Trix editor and fills it in with the given HTML.
|
6
8
|
#
|
7
9
|
# The editor can be found by:
|
8
|
-
# *
|
9
|
-
# *
|
10
|
-
# *
|
11
|
-
# *
|
12
|
-
# *
|
10
|
+
# * its `id`
|
11
|
+
# * its `placeholder`
|
12
|
+
# * the text from its `label` element
|
13
|
+
# * its `aria-label`
|
14
|
+
# * the `name` of its input
|
15
|
+
#
|
13
16
|
#
|
14
17
|
# Examples:
|
15
18
|
#
|
16
|
-
#
|
17
|
-
#
|
19
|
+
# # <trix-editor id="message_content" ...></trix-editor>
|
20
|
+
# fill_in_rich_text_area "message_content", with: "Hello <em>world!</em>"
|
18
21
|
#
|
19
|
-
#
|
20
|
-
#
|
22
|
+
# # <trix-editor placeholder="Your message here" ...></trix-editor>
|
23
|
+
# fill_in_rich_text_area "Your message here", with: "Hello <em>world!</em>"
|
21
24
|
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
+
# # <label for="message_content">Message content</label>
|
26
|
+
# # <trix-editor id="message_content" ...></trix-editor>
|
27
|
+
# fill_in_rich_text_area "Message content", with: "Hello <em>world!</em>"
|
25
28
|
#
|
26
|
-
#
|
27
|
-
#
|
29
|
+
# # <trix-editor aria-label="Message content" ...></trix-editor>
|
30
|
+
# fill_in_rich_text_area "Message content", with: "Hello <em>world!</em>"
|
28
31
|
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
+
# # <input id="trix_input_1" name="message[content]" type="hidden">
|
33
|
+
# # <trix-editor input="trix_input_1"></trix-editor>
|
34
|
+
# fill_in_rich_text_area "message[content]", with: "Hello <em>world!</em>"
|
32
35
|
def fill_in_rich_text_area(locator = nil, with:)
|
33
36
|
find(:rich_text_area, locator).execute_script("this.editor.loadHTML(arguments[0])", with.to_s)
|
34
37
|
end
|
data/lib/action_text/version.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :markup: markdown
|
4
|
+
|
3
5
|
require_relative "gem_version"
|
4
6
|
|
5
7
|
module ActionText
|
6
|
-
# Returns the currently loaded version of Action Text as a
|
8
|
+
# Returns the currently loaded version of Action Text as a `Gem::Version`.
|
7
9
|
def self.version
|
8
10
|
gem_version
|
9
11
|
end
|
data/lib/action_text.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :markup: markdown
|
4
|
+
|
3
5
|
require "pathname"
|
4
6
|
require "json"
|
5
7
|
|
@@ -60,7 +62,12 @@ module ActionText
|
|
60
62
|
def enable_image_processing_gem
|
61
63
|
if (gemfile_path = Pathname(destination_root).join("Gemfile")).exist?
|
62
64
|
say "Ensure image_processing gem has been enabled so image uploads will work (remember to bundle!)"
|
63
|
-
|
65
|
+
image_processing_regex = /gem ["']image_processing["']/
|
66
|
+
if File.readlines(gemfile_path).grep(image_processing_regex).any?
|
67
|
+
uncomment_lines gemfile_path, image_processing_regex
|
68
|
+
else
|
69
|
+
run "bundle add --skip-install image_processing"
|
70
|
+
end
|
64
71
|
end
|
65
72
|
end
|
66
73
|
|
@@ -73,8 +80,8 @@ module ActionText
|
|
73
80
|
end
|
74
81
|
|
75
82
|
def using_bun?
|
76
|
-
# Cannot assume yarn.lock has been generated yet so we look for
|
77
|
-
#
|
83
|
+
# Cannot assume yarn.lock has been generated yet so we look for a file known to
|
84
|
+
# be generated by the jsbundling-rails gem
|
78
85
|
@using_bun ||= using_js_runtime? && Pathname(destination_root).join("bun.config.js").exist?
|
79
86
|
end
|
80
87
|
|
data/package.json
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actiontext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.2.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Javan Makhmali
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-05-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -18,56 +18,56 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 7.
|
21
|
+
version: 7.2.0.beta1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 7.
|
28
|
+
version: 7.2.0.beta1
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: activerecord
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - '='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 7.
|
35
|
+
version: 7.2.0.beta1
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - '='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 7.
|
42
|
+
version: 7.2.0.beta1
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: activestorage
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - '='
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 7.
|
49
|
+
version: 7.2.0.beta1
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - '='
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 7.
|
56
|
+
version: 7.2.0.beta1
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: actionpack
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - '='
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 7.
|
63
|
+
version: 7.2.0.beta1
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - '='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 7.
|
70
|
+
version: 7.2.0.beta1
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: nokogiri
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,10 +163,10 @@ licenses:
|
|
163
163
|
- MIT
|
164
164
|
metadata:
|
165
165
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
166
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.
|
167
|
-
documentation_uri: https://api.rubyonrails.org/v7.
|
166
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.2.0.beta1/actiontext/CHANGELOG.md
|
167
|
+
documentation_uri: https://api.rubyonrails.org/v7.2.0.beta1/
|
168
168
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
169
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.
|
169
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.2.0.beta1/actiontext
|
170
170
|
rubygems_mfa_required: 'true'
|
171
171
|
post_install_message:
|
172
172
|
rdoc_options: []
|
@@ -176,14 +176,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
176
|
requirements:
|
177
177
|
- - ">="
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version:
|
179
|
+
version: 3.1.0
|
180
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
181
|
requirements:
|
182
182
|
- - ">="
|
183
183
|
- !ruby/object:Gem::Version
|
184
184
|
version: '0'
|
185
185
|
requirements: []
|
186
|
-
rubygems_version: 3.5.
|
186
|
+
rubygems_version: 3.5.10
|
187
187
|
signing_key:
|
188
188
|
specification_version: 4
|
189
189
|
summary: Rich text framework.
|