adding new default group users
[boxroom-stian.git] / lib / tiny_mce_helper.rb
blob472fe6ad95ae769b490c32273dd19fc511274c3d
1 module TinyMCEHelper
2   class InvalidOption < Exception    
3   end
4   
5   def using_tiny_mce?
6     !@uses_tiny_mce.nil?
7   end
8   
9   def tiny_mce_init(options = @tiny_mce_options)
10     options ||= {}
11     default_options = {:mode => 'textareas',
12                        :theme => 'simple'}
13     options = default_options.merge(options)
14     TinyMCE::OptionValidator.plugins = options[:plugins]
15     tinymce_js = "tinyMCE.init({\n"
16     i = 0    
17     options.stringify_keys.sort.each do |pair|
18       key, value = pair[0], pair[1]
19       raise InvalidOption.new("Invalid option #{key} passed to tinymce") unless TinyMCE::OptionValidator.valid?(key)
20       tinymce_js += "#{key} : "
21       case value
22       when String, Symbol, Fixnum
23         tinymce_js += "'#{value}'"
24       when Array
25         tinymce_js += '"' + value.join(',') + '"'
26       when TrueClass
27         tinymce_js += 'true'
28       when FalseClass
29         tinymce_js += 'false'
30       else
31         raise InvalidOption.new("Invalid value of type #{value.class} passed for TinyMCE option #{key}")
32       end
33       (i < options.size - 1) ? tinymce_js += ",\n" : "\n"
34       i += 1
35     end
36     tinymce_js += "\n});"
37     javascript_tag tinymce_js
38   end
39   alias tiny_mce tiny_mce_init
40   
41   def javascript_include_tiny_mce
42     javascript_include_tag RAILS_ENV == 'development' ? "tiny_mce/tiny_mce_src" : "tiny_mce/tiny_mce"
43   end
44   
45   def javascript_include_tiny_mce_if_used
46     javascript_include_tiny_mce if @uses_tiny_mce
47   end
48 end