log.metatype

Archive for the "lib" Tag

CSS Blueprint.tmbundle

  • Jun 25, 2008, 13:08
  • Tags: mac, lib

CSS Frameworkの Bulueprint をTextMateのBundleにしてみた。

Bundleの中にマスターのソースがあって
プロジェクト毎にコピーして使える。
CSS Frameworkっていうよりも、
常用スタイルをBundleの中に貯めていって
育てていく感じで使うと良いかもしれない。

» CSS Blueprint.tmbundle

JsLoad released on Google App Engine

SWFUpload Plugin for symfony

  • May 12, 2008, 20:47
  • Tags: php, lib

探しても見つからなかったので、
SWFUploadsymfony に組込むプラグインを作ってみた。
画像ファイルのサムネイル生成は sfThumbnailPlugin を使った。

» mySWFUploadPlugin

2008-07-16 追記
公式に出たっぽい sfSWFUploadPlugin


インストールとテスト

適当なプロジェクトを作ってテストするまで。

  1. プロジェクト作成。
    mkdir myproj
    cd myproj
    symfony init-project myproj
  2. プラグインをインストール。
    サムネイル生成に必要なsfThumbnailPluginもインストール。
    symfony plugin-install http://src.metatype.jp/mySWFUploadPlugin
    symfony plugin-install http://plugins.symfony-project.com/sfThumbnailPlugin
  3. サンプル用のappsとwebに入れ替える。
    rm -R apps
    rm -R web
    mv plugins/mySWFUploadPlugin/sample/apps apps
    mv plugins/mySWFUploadPlugin/sample/web web
  4. パーミッション修正とキャッシュクリア。
    symfony fix-perms
    symfony cc
  5. これでwebにブラウザからアクセスしてテストできる。
    ファイルの配置はサンプルを見れば大体分かると思う。

使い方

詳しく説明すると大変そうだから、簡単なフローの説明。

  1. SWFUploadのコンストラクタを使わずに、
    設定名(name)を付けて、
    SWFUpload.addSetting(name, {
    	SWFUpload Settings…
    });
    設定を定義しておく。
    イベントハンドラを設定しないと、
    web/mySWFUploadPlugin/handlers.js のデフォルトの挙動が適用される。
    設定はテンプレートに直接書いても良いし、
    外部JavaScriptにまとめておいてもOK。

  2. テンプレートでSWFUploadヘルパを有効。
    <?php use_helper('SWFUpload') ?>
    ヘルパを使ってSWFUploadを起動する。
    <?php echo swfupload($name, $id, $js, $version) ?>
    引数 省略時 説明
    $name string 必須 SWFUploadの設定名
    $id string|array 必須 アップロード開始トリガーになる要素のID
    $js string|array 読込まない SWFUploadの設定や使いたい外部JavaScriptなど。
    use_javascriptヘルパを使って読込まれるので、
    web/js/ からファイル名までのパスでOK。
    $version int 9 Flashのバージョン、通常は指定なしでOK。


  3. アップロードが実行される毎に、
    現在のモジュールの executeSWFUpload がコールされる。

    アップロード処理をサポートする mySWFUploadクラスを用意している。
    mySWFUploadクラスを通すとセッションに保存されたファイルIDで、
    アップロードファイルの情報を参照できる。
    メソッド 引数 説明
    __construct $tmp_dir
    $param
    $tmp_dir でアップロードファイルを一時的に移動するディレクトリを指定。 省略時は、システムのテンポラリディレクトリのまま。

    $param はアップロードファイルのパラメータ名。
    省略時は、Filedata になる、通常は指定なしでOK。
    createThumbnail $maxWidth
    $maxHeight
    $scale
    $inflate
    $quality
    $adapterClass
    $adapterOptions
    sfThumbnailPluginを使ってサムネイルを生成する。
    引数は sfThumbnail コンストラクタと同じ。
    setResponse $data SWFUploadへのレスポンスを出力する。
    $data にPHP変数を渡すとJSON形式で、
    イベントハンドラ upload_success_handler で受け取れる。
    getFile $id staticメソッド。
    $id にセッションに保存されたファイルIDを渡すと、
    アップロードファイルの情報を返す。


  4. イベントハンドラ upload_success_handler を設定してあれば、
    executeSWFUpload からのレスポンスを受け取る。
    引数 説明
    file SWFUploadが渡すファイルオブジェクト
    id executeSWFUpload からのレスポンス。
    mySWFUpload->setResponse を使っていれば、
    セッションに保存されたファイルIDを受け取る。
    data mySWFUpload->setResponse にPHP変数を渡していれば、
    JSON形式で受け取る。
    this.getModuleURL() で現在のモジュールの正規のURLが取得できる。
    this.getSessionID() で現在のセッションIDが取得できる。

  5. あとはイベントハンドラ側で表示処理をしたり、
    モジュールのアクションに渡したりすれば良いのでは。

適当に作ったから、色々と足りない部分がありそう。

jQuery.drawer

リクエストをもらったので、
jQueryプラグイン形式のライブラリを作ってみた。
jQueryは便利。

» jQuery.drawer
» Download

im.port (bugfix)

im.portのbugfix。
よく考えたら、Internet Explorerの確認をしていなかった。

» im.port
» Download


動作確認してみたリスト

  • Mac Safari 3.0.4
  • Mac Firefox 2.0.0.11
  • Mac Opera 9.24
  • Windows Internet Explorer 7.0
  • Windows Internet Explorer 6.0
  • Windows Internet Explorer 5.5
  • Windows Internet Explorer 5.01
  • Windows Firefox 2.0.0.9
  • Windows Firefox 1.5.0.8
  • Windows Opera 9.20

でも、やっぱりいまいちだ。