Module: TinyMCE::Rails::Helper

Defined in:
lib/tinymce/rails/helper.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.tinymce(config = :default, options = {}) ⇒ Object

Initializes TinyMCE on the current page based on the global configuration.

Custom options can be set via the options hash, which will be passed to the TinyMCE init function.

By default, all textareas with a class of “tinymce” will have the TinyMCE editor applied. The current locale will also be used as the language when TinyMCE language files are available, falling back to English if not available. The :editor_selector and :language options can be used to override these defaults.

Examples:

<%= tinymce(selector: "editorClass", theme: "inlite") %>


18
19
20
21
22
23
24
25
26
27
28
# File 'lib/tinymce/rails/helper.rb', line 18

def tinymce(config=:default, options={})
  javascript_tag(nonce: true) do
    unless @_tinymce_configurations_added
      concat tinymce_configurations_javascript
      concat "\n"
      @_tinymce_configurations_added = true
    end

    concat tinymce_javascript(config, options)
  end
end

.tinymce_configuration(config = :default, options = {}) ⇒ Object

Returns the TinyMCE configuration object. It should be converted to JavaScript (via #to_javascript) for use within JavaScript.



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/tinymce/rails/helper.rb', line 52

def tinymce_configuration(config=:default, options={})
  options, config = config, :default if config.is_a?(Hash)
  options.stringify_keys!

  base_configuration = TinyMCE::Rails.configuration

  if base_configuration.is_a?(MultipleConfiguration)
    base_configuration = base_configuration.fetch(config)
  end

  base_configuration.merge(options)
end

.tinymce_configurations_javascript(options = {}) ⇒ Object

Returns the JavaScript code for initializing each configuration defined within tinymce.yml.



39
40
41
42
43
44
45
46
47
48
# File 'lib/tinymce/rails/helper.rb', line 39

def tinymce_configurations_javascript(options={})
  javascript = []

  TinyMCE::Rails.each_configuration do |name, config|
    config = config.merge(options) if options.present?
    javascript << "TinyMCERails.configuration.#{name} = #{config.to_javascript};".html_safe
  end

  safe_join(javascript, "\n")
end

.tinymce_javascript(config = :default, options = {}) ⇒ Object

Returns the JavaScript code required to initialize TinyMCE.



31
32
33
34
35
36
# File 'lib/tinymce/rails/helper.rb', line 31

def tinymce_javascript(config=:default, options={})
  options, config = config, :default if config.is_a?(Hash)
  options = Configuration.new(options)

  "TinyMCERails.initialize('#{config}', #{options.to_javascript});".html_safe
end

.tinymce_preinit(base = TinyMCE::Rails::Engine.base) ⇒ Object

Configures where dynamically loaded TinyMCE assets are located and named



79
80
81
82
# File 'lib/tinymce/rails/helper.rb', line 79

def tinymce_preinit(base=TinyMCE::Rails::Engine.base)
  js = "window.tinymce = window.tinymce || { base: '#{base}', suffix: '' };"
  javascript_tag(js, nonce: true)
end

Instance Method Details

#tinymce(config = :default, options = {}) ⇒ Object

Initializes TinyMCE on the current page based on the global configuration.

Custom options can be set via the options hash, which will be passed to the TinyMCE init function.

By default, all textareas with a class of “tinymce” will have the TinyMCE editor applied. The current locale will also be used as the language when TinyMCE language files are available, falling back to English if not available. The :editor_selector and :language options can be used to override these defaults.

Examples:

<%= tinymce(selector: "editorClass", theme: "inlite") %>


18
19
20
21
22
23
24
25
26
27
28
# File 'lib/tinymce/rails/helper.rb', line 18

def tinymce(config=:default, options={})
  javascript_tag(nonce: true) do
    unless @_tinymce_configurations_added
      concat tinymce_configurations_javascript
      concat "\n"
      @_tinymce_configurations_added = true
    end

    concat tinymce_javascript(config, options)
  end
end

#tinymce_assets(options = Rails.application.config.tinymce.default_script_attributes) ⇒ Object

Includes TinyMCE javascript assets via a script tag.



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/tinymce/rails/helper.rb', line 66

def tinymce_assets(options=Rails.application.config.tinymce.default_script_attributes)
  if defined?(Sprockets)
    javascript_include_tag("tinymce", options)
  else
    safe_join([
      tinymce_preinit,
      javascript_include_tag("tinymce/tinymce", options),
      javascript_include_tag("tinymce/rails", options)
    ], "\n")
  end
end

#tinymce_configuration(config = :default, options = {}) ⇒ Object

Returns the TinyMCE configuration object. It should be converted to JavaScript (via #to_javascript) for use within JavaScript.



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/tinymce/rails/helper.rb', line 52

def tinymce_configuration(config=:default, options={})
  options, config = config, :default if config.is_a?(Hash)
  options.stringify_keys!

  base_configuration = TinyMCE::Rails.configuration

  if base_configuration.is_a?(MultipleConfiguration)
    base_configuration = base_configuration.fetch(config)
  end

  base_configuration.merge(options)
end

#tinymce_configurations_javascript(options = {}) ⇒ Object

Returns the JavaScript code for initializing each configuration defined within tinymce.yml.



39
40
41
42
43
44
45
46
47
48
# File 'lib/tinymce/rails/helper.rb', line 39

def tinymce_configurations_javascript(options={})
  javascript = []

  TinyMCE::Rails.each_configuration do |name, config|
    config = config.merge(options) if options.present?
    javascript << "TinyMCERails.configuration.#{name} = #{config.to_javascript};".html_safe
  end

  safe_join(javascript, "\n")
end

#tinymce_javascript(config = :default, options = {}) ⇒ Object

Returns the JavaScript code required to initialize TinyMCE.



31
32
33
34
35
36
# File 'lib/tinymce/rails/helper.rb', line 31

def tinymce_javascript(config=:default, options={})
  options, config = config, :default if config.is_a?(Hash)
  options = Configuration.new(options)

  "TinyMCERails.initialize('#{config}', #{options.to_javascript});".html_safe
end

#tinymce_preinit(base = TinyMCE::Rails::Engine.base) ⇒ Object

Configures where dynamically loaded TinyMCE assets are located and named



79
80
81
82
# File 'lib/tinymce/rails/helper.rb', line 79

def tinymce_preinit(base=TinyMCE::Rails::Engine.base)
  js = "window.tinymce = window.tinymce || { base: '#{base}', suffix: '' };"
  javascript_tag(js, nonce: true)
end