fckeditor(obj, method, options={}, configs={})
FCKeditor を標準のWYSIWYGエディタとして採用。TinyMCEでもいいんだけれど、以前Rails用サーバーブラウザを作ったことがあるので、それを再利用したい、という動機。
こんな感じでかけば、Helperになります。
# FCKeditor helper def fckeditor(obj, method, options ={ }, configs={ }) options_default = { "BasePath" => "/javascripts/fckeditor/", # fckeditor.js のあるディレクトリ "Width" => "100%", "Height" => "300" }.update(options) configs_default = { "CustomConfigurationsPath" => "/javascripts/webjourney/fckconfig.js", # 設定ファイルを独自指定 "StylesXmlPath" => "/javascripts/webjourney/fckstyles.xml" # 設定ファイルを独自指定 }.update(configs) instance = "#{obj}_#{method}" script = [] script << "var #{instance} = new FCKeditor('#{obj}[#{method}]');" # options append options_default.each do |k,v| script << "#{instance}.#{k} = #{v.to_json};" end # configs append configs_default.each do |k, v| script << "#{instance}.Config['#{k}'] = #{v.to_json};" end script << "#{instance}.ReplaceTextarea();" text_area_tag = text_area(obj, method) text_area_tag + javascript_tag(script.join("\n")) end
ちなみに、form_widget_tag(Widget内フォーム)で使う場合は、
<%= submit_widget_tag _("save"), :onclick => "$('entry_content').value = FCKeditorAPI.GetInstance('entry[content]').GetHTML();" %>
こんな感じで、エディタの内容をtextareaにフィードバックしないとだめ。これように、fckeditor_form_widget_tag とかいって作ろうと思ったけれど、名前が長いので却下。ついでに、Rails用のpluginも見つけたが、依存関係が多かったので却下して独自で。