FCKeditor-3
2006年2月21日
現在の状態は、次のスクリーンショットの通り。 拡大
Nucleusオリジナルのメディアマネージャの使用については、editor/dialog/common/fck_dialog_common.jsに有る、OpenFileBrowser()関数に手を加えることで上手くいった。これで、editor/filemanager/フォルダにあるツールは一切不要である。
ルートディレクトリにあるfckconfig.jsには、様々な設定が記述されている。これを変更することで、FCKeditorの機能の有無を制御することができる。
FCKConfig.LinkUpload = false;
FCKConfig.ImageUpload = false;
FCKConfig.FlashUpload = false;
を設定し、FCKeditorのダイアログによるファイルアップロード機能をオフにした。また、
FCKConfig.CustomConfigurationsPath = '../config.php' ;
を指定し、config.phpの中で細かな設定、例えばFCKConfig.FlashBrowserURL等の設定や、プラグインオプションに由来する設定などができるようにした。
現在の不都合は、<%image(image.jpg|64|48|alt)%>やプラグインに関連したタグの表記などが全てコメント(<!-- -->)に変換されてしまうことである。これを何とかしなければならない(追記:ProtectedSourceの設定で対応)。また、プラグイン関連のタグはそれっぽく表示されるようにした方が、格好いいだろうな(追記:FCKeditor用のプラグイン作成で対応)。
それと、FCKeditor自身はUTF-8 でコードされている。EUC対応についても考えなければならない。FCKeditor自身は、Nucleusとは別のフレームの中にHTMLが作成されていて、従ってEUCとUTF-8の混在が可能だが、編集した記事が全てUTF-8になってしまう。これについては、FCKeditorそのものをEUCに書き換えてしまう方法と、event_PreAddItem/event_PreUpdateItemでUTF-8 → EUC変換する方法の二つが考えられそうだが、後者の方法をとる可能性が高いと思っている。
追記
UTF-8 ←→ EUC 変換は、エンコードの異なる2つのフレーム間でデータのやりとりをする時に自動的にされるようである。従って、PHPでこの変換をする必要は無いらしい。
現時点での変更点のまとめ
_XXXX stuffs: deleted
skins/office, silver: deleted
lang/*.js: deleted
FCKLanguageManager.AvailableLanguages を en と jp のみに設定
editor/fckeditor.original.html: deleted
fcktemplates.xml: deleted
conntectors/xxx/ (except for php), test.html: deleted
uploads/xxx/ (except for php), test.html: deleted
filemanager/: deleted
fckconfig.js:
dialog/common/fck_dialog_common.js の変更
dialog/fck_link.htmlの変更
また、FCKeditorでのプラグインはすべて消去し、nucleusという名のプラグインを追加した。ここには、<% %>タグをNucleusのタグと解釈し、小さなNucleusアイコンを表示させるようなルーチンが書かれている。
Nucleusオリジナルのメディアマネージャの使用については、editor/dialog/common/fck_dialog_common.jsに有る、OpenFileBrowser()関数に手を加えることで上手くいった。これで、editor/filemanager/フォルダにあるツールは一切不要である。
ルートディレクトリにあるfckconfig.jsには、様々な設定が記述されている。これを変更することで、FCKeditorの機能の有無を制御することができる。
FCKConfig.LinkUpload = false;
FCKConfig.ImageUpload = false;
FCKConfig.FlashUpload = false;
を設定し、FCKeditorのダイアログによるファイルアップロード機能をオフにした。また、
FCKConfig.CustomConfigurationsPath = '../config.php' ;
を指定し、config.phpの中で細かな設定、例えばFCKConfig.FlashBrowserURL等の設定や、プラグインオプションに由来する設定などができるようにした。
現在の不都合は、<%image(image.jpg|64|48|alt)%>やプラグインに関連したタグの表記などが全てコメント(<!-- -->)に変換されてしまうことである。これを何とかしなければならない(追記:ProtectedSourceの設定で対応)。また、プラグイン関連のタグはそれっぽく表示されるようにした方が、格好いいだろうな(追記:FCKeditor用のプラグイン作成で対応)。
それと、FCKeditor自身はUTF-8 でコードされている。EUC対応についても考えなければならない。FCKeditor自身は、Nucleusとは別のフレームの中にHTMLが作成されていて、従ってEUCとUTF-8の混在が可能だが、編集した記事が全てUTF-8になってしまう。これについては、FCKeditorそのものをEUCに書き換えてしまう方法と、event_PreAddItem/event_PreUpdateItemでUTF-8 → EUC変換する方法の二つが考えられそうだが、後者の方法をとる可能性が高いと思っている。
追記
UTF-8 ←→ EUC 変換は、エンコードの異なる2つのフレーム間でデータのやりとりをする時に自動的にされるようである。従って、PHPでこの変換をする必要は無いらしい。
現時点での変更点のまとめ
_XXXX stuffs: deleted
skins/office, silver: deleted
lang/*.js: deleted
FCKLanguageManager.AvailableLanguages を en と jp のみに設定
editor/fckeditor.original.html: deleted
fcktemplates.xml: deleted
conntectors/xxx/ (except for php), test.html: deleted
uploads/xxx/ (except for php), test.html: deleted
filemanager/: deleted
fckconfig.js:
FCKConfig.UseBROnCarriageReturn = true ; // IE only. //FCKConfig.TemplatesXmlPath = FCKConfig.EditorPath + 'fcktemplates.xml' ; FCKConfig.LinkUpload = false ;//Changed for Nucleus FCKConfig.ImageUpload = false ;//Changed for Nucleus FCKConfig.FlashUpload = false ;//Changed for Nucleus FCKConfig.LinkBrowser = true ; FCKConfig.LinkBrowserWindowWidth = NucleusMediaWindowWidth ; FCKConfig.LinkBrowserWindowHeight = NucleusMediaWindowHeight ; FCKConfig.LinkBrowserURL= NucleusMediaWindowURL ; FCKConfig.ImageBrowser = true ; FCKConfig.ImageBrowserWindowWidth = NucleusMediaWindowWidth ; FCKConfig.ImageBrowserWindowHeight = NucleusMediaWindowHeight ; FCKConfig.ImageBrowserURL= NucleusMediaWindowURL; FCKConfig.FlashBrowser = true ; FCKConfig.FlashBrowserWindowWidth = NucleusMediaWindowWidth ; FCKConfig.FlashBrowserWindowHeight = NucleusMediaWindowHeight ; FCKConfig.FlashBrowserURL= NucleusMediaWindowURL;
dialog/common/fck_dialog_common.js の変更
else { var oWindow =window.open( url, 'FCKBrowseWindow', sOptions ) ; } if ( oWindow ) oWindow.window.opener.includeImage=function(collection,filename,type,width,height) { if (this.GetE('txtUrl')) this.GetE('txtUrl').value=FCKConfig.NucleusMediaDir+collection+'/'+filename; if (this.GetE('txtWidth')) this.GetE('txtWidth').value=width; if (this.GetE('txtWidth')) this.GetE('txtHeight').value=height; //if (this.GetE('txtAttTitle')) this.GetE('txtAttTitle').value=filename; };
dialog/fck_link.htmlの変更
<option value="" fckLang="DlgLnkProtoOther" selected><other></option>
また、FCKeditorでのプラグインはすべて消去し、nucleusという名のプラグインを追加した。ここには、<% %>タグをNucleusのタグと解釈し、小さなNucleusアイコンを表示させるようなルーチンが書かれている。