tinymce_helper.rb 1.83 KB
module TinymceHelper
  include MacrosHelper

  def tinymce_js
    output = ''
    output += javascript_include_tag 'tinymce/js/tinymce/tinymce.min.js'
    output += javascript_include_tag 'tinymce/js/tinymce/jquery.tinymce.min.js'
    output += javascript_include_tag 'tinymce.js'
    output += include_macro_js_files.to_s
    output
  end

  def tinymce_init_js options = {}
    options.merge! :document_base_url => top_url,
      :content_css => "/stylesheets/tinymce.css,#{macro_css_files}",
      :plugins => %w[compat3x advlist autolink lists link image charmap print preview hr anchor pagebreak
        searchreplace wordcount visualblocks visualchars code fullscreen
        insertdatetime media nonbreaking save table contextmenu directionality
        emoticons template paste textcolor colorpicker textpattern],
      :language => tinymce_language

    options[:toolbar1] = "insertfile undo redo | copy paste | bold italic underline | styleselect fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
    if options[:mode] == 'simple'
      options[:menubar] = false
    else
      options[:menubar] = 'edit insert view tools'
      options[:toolbar2] = 'print preview code media | table'

      options[:toolbar2] += ' | macros'
      macros_with_buttons.each do |macro|
        options[:toolbar2] += " #{macro.identifier}"
      end
    end

    options[:macros_setup] = macros_with_buttons.map do |macro|
      <<-EOS
        ed.addButton('#{macro.identifier}', {
          title: #{macro_title(macro).to_json},
          onclick: #{generate_macro_config_dialog macro},
          image : '#{macro.configuration[:icon_path]}'
        });
      EOS
    end

    #cleanup non tinymce options
    options = options.except :mode

    "noosfero.tinymce.init(#{options.to_json})"
  end

end