proclaim 0.2.4 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG +4 -0
- data/README.md +19 -2
- data/VERSION +1 -1
- data/app/models/proclaim/post.rb +12 -0
- data/lib/generators/proclaim/templates/initialize_proclaim.rb +14 -1
- data/lib/proclaim.rb +14 -1
- data/lib/proclaim/engine.rb +1 -0
- data/lib/proclaim/version.rb +1 -1
- data/proclaim.gemspec +1 -0
- data/test/controllers/proclaim/posts_controller_test.rb +3 -2
- data/test/integration/without_javascript/post_test.rb +2 -1
- data/test/mailers/proclaim/subscription_mailer_test.rb +1 -1
- data/test/models/proclaim/post_test.rb +7 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 499990491b4ea6af55296e35da87462bf821f3ab
|
4
|
+
data.tar.gz: 160b0d32c648e01aadd3aa630a0c4ae37e4178ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 488d2f108123f326b091a1fe98e5c75702cef2a5f9ae0b1f66b9183ae65b188793007b3a49f759dc9f2cddad67a8430bf8fc9f26cd13c250f2c6c6ac1408539a
|
7
|
+
data.tar.gz: 301cba906510fb9f2edc22eee6434ba821cbebacec2992ad816004e176e9c2be01f15087747d6f2158d4c1008e11ecff55fb10dd325183244fbf8326459e6e23
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -29,7 +29,7 @@ Proclaim 0.2 works with Rails 4.2 and on, with Ruby 1.9.3 and on. Add it to your
|
|
29
29
|
Gemfile with:
|
30
30
|
|
31
31
|
```ruby
|
32
|
-
gem 'proclaim', "~> 0.
|
32
|
+
gem 'proclaim', "~> 0.3.0"
|
33
33
|
```
|
34
34
|
|
35
35
|
Run `bundle install` to install it.
|
@@ -105,7 +105,16 @@ Proclaim.author_name_method = :name
|
|
105
105
|
Proclaim.current_author_method = :current_user
|
106
106
|
Proclaim.authentication_method = :authenticate_user!
|
107
107
|
Proclaim.excerpt_length = 500
|
108
|
-
Proclaim.editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor',
|
108
|
+
Proclaim.editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor',
|
109
|
+
'header1', 'header2', 'quote']
|
110
|
+
Proclaim.editor_whitelist_tags = %w(h1 h2 h3 h4 h5 h6
|
111
|
+
div p blockquote
|
112
|
+
ul ol li
|
113
|
+
a b strong i u
|
114
|
+
img figure
|
115
|
+
pre sup sub br)
|
116
|
+
Proclaim.editor_whitelist_attributes = %w(class id style href title src alt
|
117
|
+
align draggable)
|
109
118
|
Proclaim.mailer_sender = nil
|
110
119
|
```
|
111
120
|
|
@@ -141,6 +150,14 @@ Proclaim.mailer_sender = nil
|
|
141
150
|
The buttons to be displayed on the Medium Editor toolbar. For a full list of
|
142
151
|
options, see the README for [that project][1].
|
143
152
|
|
153
|
+
- **Proclaim.editor_whitelist_tags**
|
154
|
+
|
155
|
+
A list of all HTML tags that are allowed in the post body.
|
156
|
+
|
157
|
+
- **Proclaim.editor_whitelist_attributes**
|
158
|
+
|
159
|
+
A list of all HTML attributes that are allowed in the post body.
|
160
|
+
|
144
161
|
- **Proclaim.mailer_sender**
|
145
162
|
|
146
163
|
The email address to use in the "from" field of all emails from Proclaim. If
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/app/models/proclaim/post.rb
CHANGED
@@ -41,6 +41,7 @@ module Proclaim
|
|
41
41
|
validates_presence_of :title, :body, :author
|
42
42
|
validate :verifyBodyHtml
|
43
43
|
|
44
|
+
before_save :sanitizeBody
|
44
45
|
after_save :notifyBlogSubscribersIfPublished
|
45
46
|
|
46
47
|
attr_writer :excerpt_length
|
@@ -78,6 +79,17 @@ module Proclaim
|
|
78
79
|
end
|
79
80
|
end
|
80
81
|
|
82
|
+
def sanitizeBody
|
83
|
+
unless Proclaim.editor_whitelist_tags.blank? and
|
84
|
+
Proclaim.editor_whitelist_attributes.blank?
|
85
|
+
sanitizer = Rails::Html::WhiteListSanitizer.new
|
86
|
+
self.body = sanitizer.sanitize(
|
87
|
+
body,
|
88
|
+
tags: Proclaim.editor_whitelist_tags,
|
89
|
+
attributes: Proclaim.editor_whitelist_attributes)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
81
93
|
def takeExcerptOf(text)
|
82
94
|
if excerpt_length >= text.length
|
83
95
|
return text
|
@@ -21,7 +21,20 @@ Proclaim.setup do |config|
|
|
21
21
|
#config.excerpt_length = 500
|
22
22
|
|
23
23
|
# Buttons to display on post editor toolbar
|
24
|
-
#config.editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor',
|
24
|
+
#config.editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor',
|
25
|
+
# 'header1', 'header2', 'quote']
|
26
|
+
|
27
|
+
# Whitelist of HTML tags to be supported by the editor
|
28
|
+
#config.editor_whitelist_tags = %w(h1 h2 h3 h4 h5 h6
|
29
|
+
# div p blockquote
|
30
|
+
# ul ol li
|
31
|
+
# a b strong i u
|
32
|
+
# img figure
|
33
|
+
# pre sup sub br)
|
34
|
+
|
35
|
+
# Whitelist of HTML attributes to be supported by the editor
|
36
|
+
#config.editor_whitelist_attributes = %w(class id style href title src alt
|
37
|
+
# align draggable)
|
25
38
|
|
26
39
|
# Email address to use in the "from" field of all emails
|
27
40
|
#config.mailer_sender = '"My Blog" <blog@example.com>'
|
data/lib/proclaim.rb
CHANGED
@@ -17,7 +17,20 @@ module Proclaim
|
|
17
17
|
@@excerpt_length = 500 # 500 characters (won't interrupt words)
|
18
18
|
|
19
19
|
mattr_accessor :editor_toolbar_buttons
|
20
|
-
@@editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor',
|
20
|
+
@@editor_toolbar_buttons = ['bold', 'italic', 'underline', 'anchor',
|
21
|
+
'header1', 'header2', 'quote']
|
22
|
+
|
23
|
+
mattr_accessor :editor_whitelist_tags
|
24
|
+
@@editor_whitelist_tags = %w(h1 h2 h3 h4 h5 h6
|
25
|
+
div p blockquote
|
26
|
+
ul ol li
|
27
|
+
a b strong i u
|
28
|
+
img figure
|
29
|
+
pre sup sub br)
|
30
|
+
|
31
|
+
mattr_accessor :editor_whitelist_attributes
|
32
|
+
@@editor_whitelist_attributes = %w(class id style href title src alt align
|
33
|
+
draggable)
|
21
34
|
|
22
35
|
mattr_accessor :mailer_sender
|
23
36
|
@@mailer_sender = nil
|
data/lib/proclaim/engine.rb
CHANGED
data/lib/proclaim/version.rb
CHANGED
data/proclaim.gemspec
CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_dependency "coffee-rails", "~> 4.1"
|
27
27
|
s.add_dependency "sass-rails", "~> 5.0"
|
28
28
|
s.add_dependency "jquery-rails", "~> 4.0"
|
29
|
+
s.add_dependency "htmlentities", "~> 4.3"
|
29
30
|
s.add_dependency "nokogiri", "~> 1.6"
|
30
31
|
s.add_dependency "premailer", "~> 1.8"
|
31
32
|
s.add_dependency "closure_tree", "~> 5.2"
|
@@ -151,7 +151,7 @@ module Proclaim
|
|
151
151
|
|
152
152
|
document = Nokogiri::HTML.fragment(post.body)
|
153
153
|
image_tags = document.css("img")
|
154
|
-
assert_equal 1, image_tags.count
|
154
|
+
assert_equal 1, image_tags.count, "Post body should have one image tag"
|
155
155
|
|
156
156
|
# Note that, now that the image is saved, this URL is different than
|
157
157
|
# the one submitted to :create
|
@@ -288,7 +288,8 @@ module Proclaim
|
|
288
288
|
|
289
289
|
document = Nokogiri::HTML.fragment(post.body)
|
290
290
|
image_tags = document.css("img")
|
291
|
-
assert_equal 1, image_tags.count
|
291
|
+
assert_equal 1, image_tags.count,
|
292
|
+
"Post body should contain one image tag"
|
292
293
|
|
293
294
|
# Note that, now that the image is saved, this URL is different than
|
294
295
|
# the one submitted to :create
|
@@ -163,7 +163,8 @@ class PostTest < ActionDispatch::IntegrationTest
|
|
163
163
|
|
164
164
|
image_tags = Nokogiri::HTML.fragment(image.post.body).css("img")
|
165
165
|
|
166
|
-
assert_equal 1, image_tags.length
|
166
|
+
assert_equal 1, image_tags.length,
|
167
|
+
"Post body should contain one image tag"
|
167
168
|
refute_match root_url, image_tags[0].attribute("src"),
|
168
169
|
"Images should have relative paths"
|
169
170
|
end
|
@@ -69,7 +69,7 @@ module Proclaim
|
|
69
69
|
|
70
70
|
image_tags = Nokogiri::HTML(get_html_part(mail)).css("img")
|
71
71
|
|
72
|
-
assert_equal 1, image_tags.length
|
72
|
+
assert_equal 1, image_tags.length, "Email should have one image tag"
|
73
73
|
assert_match root_url, image_tags[0].attribute("src"),
|
74
74
|
"Images should have absolute URLs in emails"
|
75
75
|
end
|
@@ -123,5 +123,12 @@ module Proclaim
|
|
123
123
|
body: "This is outside.<p>This is inside.</p>")
|
124
124
|
assert_equal "This is outside.", post.excerpt
|
125
125
|
end
|
126
|
+
|
127
|
+
test "verify body sanitization" do
|
128
|
+
post = FactoryGirl.create(:post,
|
129
|
+
body: "foo <script>alert('bar');</script>")
|
130
|
+
|
131
|
+
assert_equal "foo alert('bar');", post.body
|
132
|
+
end
|
126
133
|
end
|
127
134
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proclaim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Fazzari
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '4.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: htmlentities
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '4.3'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4.3'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: nokogiri
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|