Module: Tinymce::Hammer::ViewHelpers

Defined in:
lib/tinymce/hammer/view_helpers.rb

Instance Method Summary collapse

Instance Method Details

#append_class_name(options, class_name) ⇒ Object

:nodoc:



91
92
93
94
95
96
97
# File 'lib/tinymce/hammer/view_helpers.rb', line 91

def append_class_name options, class_name #:nodoc:
  key = options.has_key?('class') ? 'class' : :class 
  unless options[key].to_s =~ /(^|\s+)#{class_name}(\s+|$)/
    options[key] = "#{options[key]} #{class_name}".strip
  end
  options
end

#init_tinymce(classname = "tinymce") ⇒ Object

Returns the TinymceHammer initializer javascript only. Very handy for AJAX calls and on-demand initializing. You can pass a classname for the textarea you want to initialize, or an array of classnames you want to be initialized.



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/tinymce/hammer/view_helpers.rb', line 55

def init_tinymce(classname="tinymce")
  init = Tinymce::Hammer.init.collect{|key,value|
    "#{key} : #{value.to_json}"
  }.join(', ')
  selector = classname.is_a?(Array) ? classname.join(",") : classname.to_s
  setup = "init.setup = #{Tinymce::Hammer.setup};" if Tinymce::Hammer.setup
  init = "    <script type=\"text/javascript\">\n      TinymceHammer = {\n        init : function() {\n          var init = { \#{init} };\n          init.mode = 'specific_textareas';\n          init.editor_selector = '\#{selector}';\n          init.plugins = '\#{Tinymce::Hammer.plugins.join(',')}';\n          init.language = '\#{Tinymce::Hammer.languages.first}';\n          \#{setup}\n          tinyMCE.init(init);\n        }\n      };\n      TinymceHammer.init();\n    </script>\n  JS\nend\n"

#init_tinymce_hammerObject



13
14
15
# File 'lib/tinymce/hammer/view_helpers.rb', line 13

def init_tinymce_hammer
  tinymce_hammer_javascript_tags
end

#init_tinymce_hammer_if_requiredObject

If you call this method in your document head two script tags will be inserted when tinymce is required, otherwise nothing will be inserted.



5
6
7
8
9
10
11
# File 'lib/tinymce/hammer/view_helpers.rb', line 5

def init_tinymce_hammer_if_required
  if tinymce_hammer_required?
    tinymce_hammer_javascript_tags
  else
    nil
  end
end

#tinymce(object_name, method, options = {}) ⇒ Object



85
86
87
88
89
# File 'lib/tinymce/hammer/view_helpers.rb', line 85

def tinymce object_name, method, options = {}
  require_tinymce_hammer
  append_class_name(options, 'tinymce')
  text_area(object_name, method, options)
end

#tinymce_hammer_javascript_tagsObject

Returns two script tags. The first loads the combined javascript file containing tinymce. The second tag initializes tiny mce.



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
# File 'lib/tinymce/hammer/view_helpers.rb', line 19

def tinymce_hammer_javascript_tags

  init = ::Tinymce::Hammer.init
  if init.is_a?(Hash)
    init = HashWithIndifferentAccess.new(init)
    init = init.keys.sort.collect(&:to_s).sort.collect{|key|
      [key, init[key]]
    }
  end
  init = init.collect {|key,value| "#{key} : #{value.to_json}" }.join(', ')

  setup = "init.setup = #{Tinymce::Hammer.setup};" if Tinymce::Hammer.setup

  return "
<script src='#{tinymce_hammer_js_path}' type='text/javascript'></script>
<script type='text/javascript'>
TinymceHammer = {
  init : function() {
    var init = { #{init} };
    init.mode = 'specific_textareas';
    init.editor_selector = 'tinymce';
    init.plugins = '#{Tinymce::Hammer.plugins.join(',')}';
    init.language = '#{I18n.locale}';
    #{setup}
    tinyMCE.init(init);
  },
  addEditor : function(dom_id) {
    tinyMCE.execCommand('mceAddControl', true, dom_id);
  }
}
DomReady.ready(TinymceHammer.init);
</script>".html_safe
end

#tinymce_tag(name, content = '', options = {}) ⇒ Object



79
80
81
82
83
# File 'lib/tinymce/hammer/view_helpers.rb', line 79

def tinymce_tag name, content = '', options = {}
  require_tinymce_hammer
  append_class_name(options, 'tinymce')
  text_area_tag(name, content, options)
end