Top > 開発ガイド > コンポーネント開発逆引きリファレンス > TinyMCEでテキストエリアをWYSIWYG化する
TinyMCEでテキストエリアをWYSIWYG化する
対象バージョン
当ドキュメントはRubricks-0.6.x向けです。
概要
TinyMCEはWYSIWYGを実現する優れたOSSのJavaScriptライブラリです。 RubricksではTinyMCEをある程度簡易に導入するためのヘルパを提供しています。
TinyMCE ホームページ http://tinymce.moxiecode.com/
イメージ
使い方
Rubricksは容易にTinyMCEの機能を利用するためにJavaScriptの関数と、それらを利用して更に使いやすくしたヘルパを準備しています。
全てのケースにおいてヘルパを用いることができるのが理想ですが、実際にはAjaxなどの利用が原因でうまく動かない場合があります。 その場合にはJavaScript関数を用いて問題を解決できる可能性があります。
したがって、まずはヘルパを用いて実装し、うまく動かない場合にはJavaScript関数を用いるという手順で適用してみてください。
基本的な使い方
方法1:Rubricksで提供するヘルパを使用する
- init_tiny_mceヘルパをページ上部に記述する
- WYSIWYG化したいテキストエリアを通常のtextareaとして記述する
- textareaのDOM要素IDを指定したフォームをtiny_mce_form_remote_tagもしくはtiny_mce_form_tagを用いて記述する
<%= init_tiny_mce %>
<%= tiny_mce_form_remote_tag(
:update => 'show_topics',
:url => {:controller=>'/bbs/bbs_topic', :action=>'create_topic'},
:textarea_id => 'create_topic_message',
:max_length => 5000) %>
<textarea id="create_topic_message" class="rubricks_general_window" name="create_topic[message]" style="height: 300px; width: 100%;"></textarea>
<%= end_form_tag %>
方法2:Javascript関数を使用する
- init_tiny_mceヘルパをページ上部に記述する
- WYSIWYG化したいテキストエリアを通常のtextareaとして記述する
- add_tiny_mce関数でtextareaをWYSIWYG化する
- 必要に応じてinit_textarea関数でWYSIWYGテキストエリアの表示内容を指定する
- WYSIWYGテキストエリアを含むformのonsubmitにsubmit_tiny_mce関数を記述する
応用的な使い方
SeleniumでTinyMCEを用いたページをテストする
IE上のSeleniumでTinyMCEを用いたページをテストした場合、画面レイアウトが崩れてテストの続行が困難になることがあります。 その場合、TinyMCEライブラリの下記の場所をコメントアウトすることで回避できる場合があります。
今後更新予定・・・
関連項目
API
ヘルパ
init_tiny_mce(options)
- TinyMCEのライブラリとRubricksで提供するJavaScript関数を読み込みます。
| 引数 | 必須 | 初期値 | 型 | 説明
|
| options | - | - | - | 下記「オプション」を参照してください。
|
オプション:
| キー |
必須 |
初期値 |
型 |
説明 |
| :height |
- |
- |
String |
エディタの高さ。 |
| :width |
- |
- |
String |
エディタの横幅。 |
| :content_css |
- |
- |
String |
エディタ内に適用するCSS。 |
| :plugins |
- |
- |
String |
プラグイン *TinyMCEの指定と同じ。 |
| :theme |
- |
- |
String |
テーマ *TinyMCEの指定と同じ。 |
| :theme_advanced_toolbar_location |
- |
- |
String |
ツールバーの上下の位置 *TinyMCEの指定と同じ。 |
| :theme_advanced_buttons1 |
- |
- |
String |
1列目に配置するボタン *TinyMCEの指定と同じ。 |
| :theme_advanced_buttons2 |
- |
- |
String |
2列目に配置するボタン *TinyMCEの指定と同じ。 |
| :theme_advanced_buttons3 |
- |
- |
String |
3列目に配置するボタン *TinyMCEの指定と同じ。 |
| :theme_advanced_toolbar_align |
- |
- |
String |
ツールバーの左右の位置 *TinyMCEの指定と同じ。 |
| :use_wysiwyg |
- |
- |
Boolean |
wysiwyg利用を必須とする場合はtrue。 |
- AjaxでWYSIWYGエリア混じりのフォームを送信したい場合に利用します。利用イメージはRailsのform_remote_tagと同様です。
| 引数 | 必須 | 初期値 | 型 | 説明
|
| options | ○ | - | Hash | 下記「オプション」を参照してください。
|
オプション:
| キー |
必須 |
初期値 |
型 |
説明 |
| :update |
- |
- |
String |
更新するDOM要素のID。 |
| :url |
- |
- |
Hash |
ポストするコントローラ及びアクション。 |
| :textarea_id |
- |
- |
String |
WYSIWYG化したいテキストエリアのID。 |
| :max_length |
- |
- |
Integer |
入力文字列長の上限値。 |
- WYSIWYGエリア混じりの通常フォームを送信したい場合に利用します(非Ajax)。
利用イメージはRailsのform_tagと同様です。(1.2系のようにブロックを利用する記述はできません)
| 引数 | 必須 | 初期値 | 型 | 説明
|
| options | ○ | - | Hash | 下記「オプション」を参照してください。
|
オプション:
| キー |
必須 |
初期値 |
型 |
説明 |
| :url |
- |
- |
Hash |
ポストするコントローラ及びアクション。 |
| :textarea_id |
- |
- |
String |
WYSIWYG化したいテキストエリアのID。 |
| :max_length |
- |
- |
Integer |
入力文字列長の上限値。 |
TinyMCE制御向けに提供するJavaScript関数タグ
add_tiny_mce(textarea_id)
| 引数 | 必須 | 初期値 | 型 | 説明
|
| textarea_id | ○ | - | String | WYSIWYG化したいテキストエリアのID。
|
remove_tiny_mce(textarea_id)
- WYSIWYG化されたテキストエリアを通常に戻します。
| 引数 | 必須 | 初期値 | 型 | 説明
|
| textarea_id | ○ | - | String | WYSIWYG化を解除したいテキストエリアのID。
|
resize_tiny_mce(textarea_id, width, height)
- WYSIWYGテキストエリアの大きさを指定します。
| 引数 | 必須 | 初期値 | 型 | 説明
|
| textarea_id | ○ | - | String | サイズを指定したいテキストエリアのID。
|
| width | ○ | - | Integer | テキストエリアの幅。
|
| height | ○ | - | Integer | テキストエリアの高さ。
|
init_textarea(textarea_id, message)
- WYSIWYGテキストエリアの表示内容を変更します。
| 引数 | 必須 | 初期値 | 型 | 説明
|
| textarea_id | ○ | - | String | WYSIWYG化したいテキストエリアのID。
|
| message | ○ | - | String | テキストエリアに表示させたいHTML文字列。
|
overflow_textarea(textarea_id, max_length)
- WYSIWYGテキストエリアが上限文字列長を超えていないかをチェックします。
| 引数 | 必須 | 初期値 | 型 | 説明
|
| textarea_id | ○ | - | String | WYSIWYG化したいテキストエリアのID。
|
| max_length | ○ | - | Integer | テキストエリアの最大文字列長。
|
戻り値
| テキストエリアの文字列長が指定内に収まっている | true
|
| テキストエリアの文字列長が指定内に収まっていない | false
|
submit_tiny_mce(form_id, textarea_id, max_length)
- WYSIWYGテキストエリアに記述された表示内容を本来のtextareaに転記します。通常formのonsubmitに記述します。
| 引数 | 必須 | 初期値 | 型 | 説明
|
| form_id | ○ | - | Formオブジェクト | サブミットしたいformのID。
|
| textarea_id | ○ | - | String | WYSIWYG化したいテキストエリアのID。
|
| max_length | ○ | - | Integer | テキストエリアの最大文字列長。
|
戻り値
| サブミット可能な状態 | true
|
| サブミット不可能な状態 | false
|