スウェーデンにあるMoxiecode Systems AB
が、LGPL ライセンスで公開している
WYSIWYG エンジンで、
JavaScript だけで書かれています。
そのため、ブラウザに別途コンポーネントをインストールするなどの手間が一切無く、
ブラウザ上で Microsoft Word 並の表現を持った WYSIWYG 編集が可能となっています。TinyMCE 自体のバグはご愛嬌(^^;
JavaScript で書かれた WYSIWYG エンジンは、他にも FCKeditorや htmlAreaなどがありますが、 TinyMCE はその拡張性や汎用性の面で、 そして何よりも使って見た中で一番動作が軽かったなどの利点が挙げられます。
<html>
<head>
<title>Installation Example 00</title>
<script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init ({
mode : "textareas",
theme : "simple"
});
</script>
</head>
<body>
<textarea name="content" cols="50" rows="15">
This is some content that will be editable with TinyMCE.
&/textarea>
</body>
</html>
MovableType で TinyMCE を使えるようにした TinyMCEforMT プラグインでも、
その実質は上のコードと殆んど変わりません。
TinyMCE をエントリ編集画面に組み込むにしても、これまた先人による
BigPAPI
プラグインを使用しています。
そのため、TinyMCEforMT プラグイン中で私が書いたコードと云えば、
前回の WYSIWYG 編集状態を復元するための Cookie 操作部分くらいですから、
機能的に見ればほんの一部に過ぎません。
このような少量の開発で誰もがアイディアを実現でき、そして非常に大きなメリットを期待できるのは、
先人達による多くのオープンソースプロジェクトのお陰と言えるでしょう。
tinyMCE.init({
theme : "advanced",
plugins : "table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime",
theme_advanced_blockformats : "p,div,pre,h1,h2,h3,h4,h5,h6",
theme_advanced_buttons1_add : "fontsizeselect",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add : "emotions,iespell,flash",
theme_advanced_resize_horizontal : false,
theme_advanced_resizing : true,
convert_urls : false,
convert_fonts_to_spans : true,
convert_newlines_to_brs : false,
force_p_newlines : true,
force_br_newlines : false,
relative_urls : false,
apply_source_formatting : false,
width : "577",
cleanup_callback : "TinyMCEforMT_CallbackOnCleanup",
onpageload : "TinyMCEforMT_CallbackOnPageLoad",
oninit : "TinyMCEforMT_CallbackOnInit"
});
特にコールバック処理という形で、自前で用意した処理を TinyMCE から呼び出せるのは開発側としては嬉しい仕様です。
TinyMCEforMT プラグインではこれらコールバック機能を使用して、
テキストエリアのサイズを復元したり、TinyMCE が書き出す HTML を必要に応じて整形するなどの処理を行っています。
TinyMCE のドキュメントがしっかりしているので、英語さえ読めれば特に難しい部分はないでしょう。
TinyMCEforMT プラグインの開発でも、こういったドキュメントの存在が大きな助けになりました。
欲しいと思った機能や、動作を変更したいと思ったら、大方、それをサポートするオプションが用意されているので、
ドキュメント通りに書けばそれで事足りることが多いです。
ユーザからの要求仕様に合わせながら、TinyMCE の初期化オプションの追加・変更が度々行われましたが、
それ以外のコードについてはβ1から殆んど変更されておらず、私が開発に関係したのも実質的にはこの部分のみ。
それだけ TinyMCE の設計がライブラリとして優れていることの証とも言えますね。
乗用車が欲しいアナタに「時代はコンパクトカーだ」という理由で軽自動車を買わせようとするディーラーみたいな。
WYSIWYG という"判りやすいプレゼンテーション(Presentation)" によって、 "そこに隠蔽された本質(Specification)" をユーザは忘れがちになります。 未だに "What You See is What You Want" を実現できていない以上、 その機能を過信せずに適材適所、上手にお使いくださいね、と云うことでm(_ _)m