tinyMCEで画像挿入の際に一覧表示させるためのPHPスクリプト
tinyMCEでは画像を挿入することができるが、そのダイアログで一覧を表示させるために、tinyMCEの呼び出しで、
external_image_list_url : "tinyMCEImageList.php" /* index.html からの相対パスならOK */
のように指定する必要がある。そこで、
http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/external_image_list_url
を参考にしてPHPスクリプト(tinyMCEImageList.php)を書いてみた。
仕様
1. 基底クラス tinyMCEList を作成。
2. 各リスト用クラスはこの基底クラスを継承する。
3. そのクラスでは、 tinyMCEList#target() と tinyMCEList#set_listname() をオーバーライトする。
4. target() では該当ディレクトリで対象するファイル名であればTrueを返すこと。
5. set_listname() では、tinyMCEが使用するjavascript配列変数名を該当リスト用の名前に設定すること。
6. インスタンス生成後、HTTP header情報を出力して、tinyMCEList#javascript_list()を呼び出し出力する。
PHPスクリプト例(tinyMCEImageList.php)
<?php define('DIR', './images'); define('ABSOLUTE_PATH', '/~foo/jquery-tinymce/images'); $l = new tinyMCEImageList(ABSOLUTE_PATH, DIR); header('Content-type: text/javascript'); print $l->javascript_list(); /** * tinyMCEList class */ class tinyMCEList { var $ap; var $dir; var $h; var $js_list; function __construct($ap, $d) { $this->ap = $ap; $this->dir = $d; $this->h = opendir($this->dir); $this->js_list = array(); } function __destruct() { closedir($this->h); } function target($f) { return ($f != '.' && $f != '..' && is_file("$this->dir/$f")); } function set_listname() { $this->js_list[] = 'var tinyMCEList = new Array('; } function make_list() { $this->js_list = array(); $this->set_listname(); $d = array(); while ($f = readdir($this->h)) { if ($this->target($f)) { $d[] = ' ["' . utf8_encode($f) . '", "' . utf8_encode("$this->ap/$f") . '"]'; } } $this->js_list[] = implode(",\n", $d); $this->js_list[] = ');'; } function javascript_list() { $this->make_list(); return implode("\n", $this->js_list); } } /** * tinyMCEImageList class * * inheritance tinyMCEList class. */ class tinyMCEImageList extends tinyMCEList { function target($f) { return (eregi("(\.jpe?g|\.gif|.png|\.bmp)$", $f) && is_file("$this->dir/$f")); } function set_listname() { $this->js_list[] = 'var tinyMCEImageList = new Array('; } } ?>