メモ。
"Yahoo! UIを管理画面で使うとか"で書いたNP_YUIImporterには問題があって上手く動かないことが発覚。
例えば
containerコンポーネントでパネルを作るとき、ドラッグ・ドロップで移動できるようにする機能を持たせたい場合、containerコンポーネントより前にdragdropコンポーネントを読み込ませる必要があります。もちろん、移動が不要な場合はdragdropコンポーネントも不要です。
現バージョンのNP_YUIImporterを使って、
- dragdropなしで、containerを使うプラグイン
- dragdropも、containerも使うプラグイン
の順でNP_YUIImporterのimportメソッドが呼ばれると、dragdropコンポーネントの読み込みはcontainerコンポーネントの読み込みより後になってしまうので、パネルの移動は不可能になってしまいます。
結局
で、これを解消するためには、すぐにscriptタグを出力せず、どのYUIコンポーネントを読み込むかがすべて出揃ってから、何らかの形で整えられた順序でscriptタグを出力するようにしないといけないわけで、どう考えてもNP_YUIImporterの仕様変更は必須。めんどくさいなあ。
読み込み順の制御方法・案
YUI Loader Utilityを使う
YUI側で用意されているYUI Loader Utility ( Yahoo! UI Library: YUI Loader Utility ) を使う。処理を丸投げできるのでNP_YUIImporter側では簡単、に見えてonSuccessイベントの処理とか面倒。
固定する
あらかじめ、なるべくトラブルがおきない読み込み順を調べて、ハードコーディングしてしまう。後はそれにそって各コンポーネントを読み込む。Loader程じゃないけどちょっと気持ち悪いかも。
配列で受け取ってソートする
各プラグインごとに、求められる読み込み順を配列として受け取って、なるべく矛盾しないように並べ替える。上手く行くかわからない。