-
-
Notifications
You must be signed in to change notification settings - Fork 317
/
Copy pathrichtext.rb
57 lines (47 loc) · 1.12 KB
/
richtext.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# frozen_string_literal: true
module Alchemy
module Ingredients
# A blob of richtext
#
class Richtext < Alchemy::Ingredient
store_accessor :data,
:stripped_body,
:sanitized_body
allow_settings %i[
plain_text
sanitizer
tinymce
]
before_save :strip_content
before_save :sanitize_content
# The first 30 characters of the stripped_body
#
# Used by the Element#preview_text method.
#
# @param [Integer] max_length (30)
#
def preview_text(max_length = 30)
stripped_body.to_s[0..max_length - 1]
end
def has_tinymce?
true
end
def custom_tinymce_config
settings[:tinymce] || {}
end
private
def strip_content
self.stripped_body = Rails::Html::FullSanitizer.new.sanitize(value)
end
def sanitize_content
self.sanitized_body = Rails::Html::SafeListSanitizer.new.sanitize(
value,
sanitizer_settings
)
end
def sanitizer_settings
settings[:sanitizer] || {}
end
end
end
end