[Ckeditor-project] customConfigによる設定

Back to archive index

天野 卓 taku****@petma*****
2009年 11月 15日 (日) 10:48:02 JST


天野です。

山本さん、ご返答ありがとうございます。


>アドバイスありがとうございます。ツールバーまわりは当プロジェクトとは
>関係ないので分けておきたいなあと思っていたのですが、こういうふうに
>書くと分かりやすい・・というのもありそうですね。
>処理の順序の関係で問題が起きる可能性があるとの件、了解しました。
意図を理解していただきありがたく存じます。
あえて言うまでもないですが、プラグインには各々考え方があると思いますので、
「こうするべき」ということではなく、一つの見解です。


>CKEditorの場合TinyMCEと違って、基礎的な部分までプラグインで
>面倒見てますよね。普通とは処理の順番がちょっと違うだろうとは思って
>ましたが、なんとなく予想外な感じです。最初のほうでプラグインを
>ひととおり読み込むのではないかな?と思ってたので。
CKEditorは本当に細かく分かれていて、
ただそれで遅くなったりしないようにckeditor.jsにパックしてしまうとか、
なかなかモダンな感じにうまいことやってますよね。

ただこのパッケージ作成内容の違いでグローバル変数の初期化の順序が変わるのは、
設計ミスじゃないかと思わなくもないですが。

初期化の順序は「_source/core/editor.js」の中を以下のようにたどるようで、
Pluginは結構後のようなのです。
1. CKEDITOR.editor.prototype._init (339行目)
2. initConfig (71行目) <- この中で CKEDITOR.editorConfig が呼ばれる
3. loadLang (135行目)
4. loadPlugins (149行目)
そして、ckeditor.js にパックされているときはこの1より前ですでに読み込まれていると。

日本語のローカライズについて、
私はプラグインにまとめられるものならそうした方がいいんじゃないかと思っていたのですが、
CKEditorにはこのような特性があるため、
「プラグインで他のプラグインの初期値を書き換える」ということを汎用的に行うことができず、
断念しました。

ちょっと余談でした。


私もこのプロジェクトは有益なものだと思いますので、
今後も横断的な交流の場として利用できればありがたく思います。

よろしくお願いいたします。


On Sun, 15 Nov 2009 09:58:00 +0900
山本昌範 <yamam****@kyms*****> wrote:

>天野さん
>
>出張が入っており、返事が遅くなりました
>
>
>> 説明の前に先に内容を書いておくと、
>> 以下のような書き方だと場合によっては問題が起きることがあり、
>> -----------------------------------------
>> CKEDITOR.config.toolbar = 'MODx';
>> CKEDITOR.config.toolbar_MODx =
>> [
>> -----------------------------------------
>> 以下のようにしておいた方がよいのではと思いました。
>> -----------------------------------------
>> CKEDITOR.editorConfig = function(config) {
>>    config.toolbar = 'MODx';
>>    config.toolbar_MODx =
>>    [
>> -----------------------------------------
>
>アドバイスありがとうございます。ツールバーまわりは当プロジェクトとは
>関係ないので分けておきたいなあと思っていたのですが、こういうふうに
>書くと分かりやすい・・というのもありそうですね。
>処理の順序の関係で問題が起きる可能性があるとの件、了解しました。
>
>> 1. ckeditor.jsの読み込み
>> 2. CKEDITOR.replaceの呼び出し
>> 3. エディタインスタンスの初期化
>> 4. custom_config.phpの読み込み
>> 5. CKEDITOR.editorConfig が関数である場合は呼び出し
>> 6. プラグインファイルの読み込み (グローバルの設定値を設定)
>> 7. (グローバルの設定値をインスタンス毎に上書きした設定値で更新したもので、)
>> プラグインを初期化
>
>5番目以降を理解してなかったです。4番目までも推測ですが。
>
>CKEditorの場合TinyMCEと違って、基礎的な部分までプラグインで
>面倒見てますよね。普通とは処理の順番がちょっと違うだろうとは思って
>ましたが、なんとなく予想外な感じです。最初のほうでプラグインを
>ひととおり読み込むのではないかな?と思ってたので。
>
>余談になりますが、当プロジェクトは有益だと思います。TinyMCEもFCKeditorも
>CMSごとに独自に実装の道を探っていますが、コミュニティごとにスキル傾向が
>全く違うし、この種のライブラリの利用に関してはスキル横断的に作者間の交流が
>あるとよいなと思ってました。
>
>
>************************************************
>山本 昌範  yamam****@kyms*****
>*************************************************
>
>
>
>
>2009年11月11日15:43 天野 卓 <taku****@toi-p*****>:
>> 山本さん、天野です。
>>
>> MODx用のCKEditorのリリースお疲れさまです。
>> CKEditorを使うためにMODxではどのようにやっているのかなと思いダウンロードしてみました。
>> あまり内容まで詳しく読み込んでいない中で恐縮ですが、
>> custom_config.phpでの設定の方法が気になったので、念のため指摘をさせてください。
>>
>>
>> 説明の前に先に内容を書いておくと、
>> 以下のような書き方だと場合によっては問題が起きることがあり、
>> -----------------------------------------
>> CKEDITOR.config.toolbar = 'MODx';
>> CKEDITOR.config.toolbar_MODx =
>> [
>> -----------------------------------------
>> 以下のようにしておいた方がよいのではと思いました。
>> -----------------------------------------
>> CKEDITOR.editorConfig = function(config) {
>>    config.toolbar = 'MODx';
>>    config.toolbar_MODx =
>>    [
>> -----------------------------------------
>>
>>
>> 以下説明です。
>>
>> 「custom_config.php」ファイルは、
>> 「CKEDITOR.replace」の際に指定しているものと思うのですが、
>> この際、初期化の過程(端折ってですが)は以下のようになるようです。
>>
>> 1. ckeditor.jsの読み込み
>> 2. CKEDITOR.replaceの呼び出し
>> 3. エディタインスタンスの初期化
>> 4. custom_config.phpの読み込み
>> 5. CKEDITOR.editorConfig が関数である場合は呼び出し
>> 6. プラグインファイルの読み込み (グローバルの設定値を設定)
>> 7. (グローバルの設定値をインスタンス毎に上書きした設定値で更新したもので、)
>> プラグインを初期化
>>
>> ただここで配付版のCKEDitorのckeditor.jsでは、
>> デフォルトのプラグインがすべて含まれている(詰め込まれている)ため、
>> 実際には上記の(6)は行われず、(1)の時点で読み込まれています。
>> つまり、グローバルの設定値も設定されているのです。
>>
>> ここがCKEditorのよくない所だとも思うのですが、
>> この配付版の状態だと、1の時点で既にグローバルの設定値が定義されているので、
>> 4で設定値を上書きすることができるのですが、
>> 例えば外部のプラグインを後から追加した場合には、
>> 4の後の6でグローバルの設定値が設定されるので、
>> 4で設定した内容が上書きされてしまいます。
>>
>>
>> ckeditor.jsを差し替えない限り現在の方法で問題が起きることはないと思うのですが、
>> もしもご存じなければと思いまして、念のための指摘です。
>>
>> いかがでしょうか。
>>
>> --
>> ToI企画
>> 天野 卓(あまの たく)
>> Mail:taku****@toi-p*****
>> Tel(FAX):0267-67-8230
>> Address:長野県佐久市岩村田2215−21
>>
>> _______________________________________________
>> Ckeditor-project mailing list
>> Ckedi****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/ckeditor-project
>>
>
>_______________________________________________
>Ckeditor-project mailing list
>Ckedi****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/ckeditor-project
>


-- 
Taku Amano
taku****@baker*****




Ckeditor-project メーリングリストの案内
Back to archive index