Module: Domternal::TagHelper

Defined in:
app/helpers/domternal/tag_helper.rb

Instance Method Summary collapse

Instance Method Details

#domternal_area_tag(name, value = nil, options = {}, &block) ⇒ Object

Renders a hidden field plus a custom element that mounts the editor and keeps the hidden field's value in sync on every change — the same shape as ActionText's rich_textarea_tag/ pair.

Options

  • :extensions - symbolic extension names (see Rails::Domternal::ExtensionRegistry). Defaults to the attribute's has_rich_domternal declaration, or Rails::Domternal.configuration.default_extensions.
  • :toolbar - :full, :minimal, :notion, or false. Same defaulting as :extensions.
  • [:data][:direct_upload_url] - defaults to rails_direct_uploads_url.
  • [:data][:blob_url_template] - defaults to rails_service_blob_url(":signed_id", ":filename").


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'app/helpers/domternal/tag_helper.rb', line 21

def domternal_area_tag(name, value = nil, options = {}, &block)
  value = capture(&block) if value.nil? && block_given?
  options = options.symbolize_keys
  form = options.delete(:form)
  extensions = Array(options.delete(:extensions) || Rails::Domternal.configuration.default_extensions)
  toolbar = options.key?(:toolbar) ? options.delete(:toolbar) : Rails::Domternal.configuration.toolbar

  options[:input] ||= "domternal_input_#{Domternal::TagHelper.id += 1}"
  options[:class] ||= "domternal-content"

  options[:data] ||= {}
  options[:data][:direct_upload_url] ||= main_app.rails_direct_uploads_url
  options[:data][:blob_url_template] ||= main_app.rails_service_blob_url(":signed_id", ":filename")
  options[:data][:extensions] ||= extensions.join(" ")
  options[:data][:toolbar] ||= toolbar.to_s
  options[:data][:theme] ||= Rails::Domternal.configuration.theme.to_s
  options[:data][:max_file_size] ||= Rails::Domternal.configuration.max_file_size
  options[:data][:allowed_mime_types] ||= Rails::Domternal.configuration.allowed_mime_types.join(" ")

  editor_tag = ("domternal-editor", "", options)
  input_tag = hidden_field_tag(name, value.to_s, id: options[:input], form: form)

  input_tag + editor_tag
end

#domternal_content(value) ⇒ Object



46
47
48
# File 'app/helpers/domternal/tag_helper.rb', line 46

def domternal_content(value)
  (:div, value.to_s.html_safe, class: "domternal-content") # rubocop:disable Rails/OutputSafety -- sanitized by Domternal::RichText before persistence
end