yuiが外部サイトから画像を取得する

今のプロジェクトではyuiYahoo! User Interface Library)を使用している。


Yahoo! UI Library - http://developer.yahoo.com/yui/index.html


dojoなんかも使っているけど、どちらかというとdojoよりもyuiの方が軽くでサンプルが豊富で拡張しやすいから好き。
そんなyuiなんだけど、いくつかのコンポーネントを使うと、下記URI辺りから画像データを取得してしまう。


http://us.i1.yimg.com/us.yimg.com/i/


例えばカレンダー(http://developer.yahoo.com/yui/examples/calendar/default/index.html)だったら、
こんな画像を取ってきている。


http://us.i1.yimg.com/us.yimg.com/i/us/tr/callt.gif
http://us.i1.yimg.com/us.yimg.com/i/us/tr/calrt.gif


えーと、なんで元からlibに入ってないのかな?ww


このままでは、インターネットに繋がっていない環境では該当コンポーネントが使用できないことになってしまう。それはあまりにも悲しい。
仮にインターネットに繋がっていたとしても、出来れば外部サーバーには依存したく無い。


じゃあどこで設定を変更するのかと言うと…わかりませんw
多分、変更することを想定してないんだな。

そんなわけで、yuiのライセンスがBSD licenseなのを確認し、泣く泣くソース直接改変。うへぇ、yuiのバージョンアップが怖い。まあどっちみちcssには手を入れまくってるから、怖いのは元からだけど。
yuiJavaScriptファイルを「IMG_ROOT」で検索して、片っ端から変更。httpsで接続することを考えている場合は「IMG_ROOT_SSL」も同様に。


取り敢えずこんだけ見つかった。

  • calendar
    • calendar.js
    • calendar-min.js
  • container
    • container_core.js
    • container_core-min.js
    • container.js
    • container-min.js
  • menu
    • menu.js
    • menu-min.js


そいで、必要な画像データをサーバーに保存する。
どんな画像が必要なのかはieHTTPHeaders等でGETのリクエストから確認して、変更した「IMG_ROOT」(及び「IMG_ROOT_SSL」)とパスが合うように画像を配置する。
あ、この画像のライセンスは…わからんな。yuiの一部だからBSD licenseと思っておこう。


みんな、同じことをやってるんだろうか。なんか良い方法があるような気がしてならない。
どなたか良い方法を知っていたら、教えてください(これが一番言いたかった) m(__)m