sanitize configuration 機能追加。
Rails 2.0 になって sanitize メソッドがホワイトリスト方式になったわけですが、これに付加機能としてユーザーのロールごとに使用可能なタグ(および属性)を設定できるようにしました。
例えば、administrators に対してHTMLウィジェットでFlashの動画を埋め込めるようにするには、ロールの設定で、
- 許可するタグ : object,param,embed
- 許可する属性 : value,type
とすればいいわけです。デフォルトの設定は、 RailsのActionView::Base.sanitized_allowed_[tags|attributes] で、これがサイト全体の設定になっています。これに"追加"で、ロールごとに設定できるようにしました。
というわけで、最近始めた iKnow ウィジェットを張ってみます。
しかし、これを貼り付けるにはテクニック(?)が必要で、元のウィジェットのソースでは
<embed src="http://www.iknow.co.jp/widgets/iknow_public_badge.swf" FlashVars="lang=ja&username=yssk22&color_bg=blue" ...
だったわけで、このまま貼り付けると、FlashVars内の &が & になってしまうわけですが、これだと正しくパラメータが伝わらないようです。で、
<embed src="http://www.iknow.co.jp/widgets/iknow_public_badge.swf?lang=ja&username=yssk22&color_bg=blue" ...
というように、FlashVarsを使わない方法だとどういうわけかうまくいくのでした(Firebugsで見る限り& => &になって返ってきているのでブラウザの挙動のせいだと思う)。
いやこれやりたかっただけに10分程度で実装しました(そのせいで、++migration してしまったけど)。