CSS Frameworkの Bulueprint をTextMateのBundleにしてみた。
Bundleの中にマスターのソースがあって
プロジェクト毎にコピーして使える。
CSS Frameworkっていうよりも、
常用スタイルをBundleの中に貯めていって
育てていく感じで使うと良いかもしれない。
CSS Blueprint.tmbundle
SWFUpload Plugin for symfony
探しても見つからなかったので、
SWFUpload を symfony に組込むプラグインを作ってみた。
画像ファイルのサムネイル生成は sfThumbnailPlugin を使った。
» mySWFUploadPlugin
2008-07-16 追記
公式に出たっぽい sfSWFUploadPlugin
インストールとテスト
適当なプロジェクトを作ってテストするまで。
-
プロジェクト作成。
mkdir myproj cd myproj symfony init-project myproj
-
プラグインをインストール。
サムネイル生成に必要なsfThumbnailPluginもインストール。symfony plugin-install http://src.metatype.jp/mySWFUploadPlugin symfony plugin-install http://plugins.symfony-project.com/sfThumbnailPlugin
-
サンプル用のappsとwebに入れ替える。
rm -R apps rm -R web mv plugins/mySWFUploadPlugin/sample/apps apps mv plugins/mySWFUploadPlugin/sample/web web
-
パーミッション修正とキャッシュクリア。
symfony fix-perms symfony cc
-
これでwebにブラウザからアクセスしてテストできる。
ファイルの配置はサンプルを見れば大体分かると思う。
使い方
詳しく説明すると大変そうだから、簡単なフローの説明。
-
SWFUploadのコンストラクタを使わずに、
設定名(name)を付けて、SWFUpload.addSetting(name, { SWFUpload Settings… });設定を定義しておく。
イベントハンドラを設定しないと、
web/mySWFUploadPlugin/handlers.js のデフォルトの挙動が適用される。
設定はテンプレートに直接書いても良いし、
外部JavaScriptにまとめておいてもOK。
-
テンプレートで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。
-
アップロードが実行される毎に、
現在のモジュールの executeSWFUpload がコールされる。
アップロード処理をサポートする mySWFUploadクラスを用意している。
mySWFUploadクラスを通すとセッションに保存されたファイルIDで、
アップロードファイルの情報を参照できる。メソッド 引数 説明 __construct $tmp_dir
$param$tmp_dir でアップロードファイルを一時的に移動するディレクトリを指定。 省略時は、システムのテンポラリディレクトリのまま。
$param はアップロードファイルのパラメータ名。
省略時は、Filedata になる、通常は指定なしでOK。createThumbnail $maxWidth
$maxHeight
$scale
$inflate
$quality
$adapterClass
$adapterOptionssfThumbnailPluginを使ってサムネイルを生成する。
引数は sfThumbnail コンストラクタと同じ。setResponse $data SWFUploadへのレスポンスを出力する。
$data にPHP変数を渡すとJSON形式で、
イベントハンドラ upload_success_handler で受け取れる。getFile $id staticメソッド。
$id にセッションに保存されたファイルIDを渡すと、
アップロードファイルの情報を返す。
-
イベントハンドラ upload_success_handler を設定してあれば、
executeSWFUpload からのレスポンスを受け取る。
this.getModuleURL() で現在のモジュールの正規のURLが取得できる。引数 説明 file SWFUploadが渡すファイルオブジェクト id executeSWFUpload からのレスポンス。
mySWFUpload->setResponse を使っていれば、
セッションに保存されたファイルIDを受け取る。data mySWFUpload->setResponse にPHP変数を渡していれば、
JSON形式で受け取る。
this.getSessionID() で現在のセッションIDが取得できる。
-
あとはイベントハンドラ側で表示処理をしたり、
モジュールのアクションに渡したりすれば良いのでは。
適当に作ったから、色々と足りない部分がありそう。
PHP GD Extension for Intel Mac (64-bit)
2月に買ったMacBook Airをずっと放置していて、
ようやくセッティングをしているのだけれど、
PHPのGD ExtensionでIntel Mac特有の問題に当たったのでメモしておこう。
Adding GD Library for Mac OS X Leopard を参考にしたので、
詳しいインストール手順はこちらをどうぞ。
必要なもの
X11 SDKが必要で、
Xcode Developer Toolsをインストールしておけば、
たぶん一緒に入っているはず。
MacPortsのライブラリを使わないでコンパイルする
GD Extensionはコンパイル時に
libjpeg、libpng、freetypeが必要になるけど、
PPC Macの場合はMacPortsからインストールしたものでOKだけど、
Intel Macの場合は駄目っぽいので、
使わないでコンパイルする。
libjpegのインストール
libjpegが足りないのでインストールしておく。
-
本家のlibjpegが落ちていたので、
MacPorts経由でソースを持ってきた。sudo port install jpeg sudo port uninstall jpeg cp /opt/local/var/macports/distfiles/jpeg/jpegsrc.v6b.tar.gz .
-
jpegsrc.v6b.tar.gzを解凍してディレクトリに移動。
cd jpeg-6b
-
/usr/share/libtool 以下の2つのファイルをコピーしておく。
cp /usr/share/libtool/config.sub . cp /usr/share/libtool/config.guess .
-
64-bit環境に設定。
MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --enable-shared
-
インストール先のディレクトリを作成。
mkdir -p /usr/local/include mkdir -p /usr/local/bin mkdir -p /usr/local/lib mkdir -p /usr/local/man/man1
-
libjpegをコンパイル・インストール。
make sudo make install
GD Extensionのインストール
Apple提供のDarwin Sourceを利用する。
-
PHPのソースをダウンロード。
新しいものがあるので、
http://www.opensource.apple.com/darwinsource/10.5.2/apache_mod_php-44/の、
php-5.2.5.tar.bz2を使ってみた。 -
php-5.2.5.tar.bz2を解凍してGDのディレクトリに移動。
cd php-5.2.5/ext/gd
-
64-bit環境に設定。
libjpegはインストールした /usr/local/lib を指定、
それ以外は /usr/X11R6 を指定。phpize MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
-
GDをコンパイル・インストール。
make sudo make install
PDO MySQL Extensionも入れたかったのだけど、
GDと同じ様に、MacPortsのMySQLでは駄目っぽくて、
面倒くさいので断念した。
