class TinyMCE::Rails::Configuration
def self.assets
def self.assets Rails.application.assets end
def self.available_languages
def self.available_languages assets.paths.map { |path| # Find all assets within tinymce/langs entries = assets.entries(File.join(path, "tinymce/langs")) entries.map { |entry| if assets.respond_to?(:attributes_for) assets.attributes_for(File.join(path, entry)) else assets.find_asset(File.join("tinymce/langs", entry)) end }.select { |asset| # Select only JavaScript files asset.logical_path =~ /\.js$/ }.map { |asset| # Strip path and extension asset.logical_path.sub(/^tinymce\/langs\//, "").sub(/\.js$/, "") } }.flatten.uniq end
def self.default_language
def self.default_language available_languages.include?(I18n.locale.to_s) ? I18n.locale.to_s : "en" end
def self.defaults
def self.defaults { "mode" => "specific_textareas", "editor_selector" => "tinymce", "theme" => "advanced" } end
def self.new_with_defaults(options={})
def self.new_with_defaults(options={}) config = new(defaults) config = config.merge(options) if options config end
def initialize(options)
def initialize(options) @options = options end
def merge(options)
def merge(options) self.class.new(self.options.merge(options)) end
def options_for_tinymce
def options_for_tinymce result = {} options.each do |key, value| if value.is_a?(Array) && value.all? { |v| v.is_a?(String) } result[key] = value.join(",") elsif value.to_s.starts_with?("function(") result[key] = Function.new(value) else result[key] = value end end result["language"] ||= self.class.default_language result end
def to_javascript
def to_javascript pairs = options_for_tinymce.inject([]) do |result, (k, v)| if v.respond_to?(:to_javascript) v = v.to_javascript elsif v.respond_to?(:to_json) v = v.to_json end result << [k, v].join(": ") end "{\n#{pairs.join(",\n")}\n}" end