ホーム > 未分類 > CakePHPで jQuery Star Rating Plugin を使う。

CakePHPで jQuery Star Rating Plugin を使う。

今回の記事は、CakePHPで jQuery Star Rating Plugin を使いたい人にしか役に立たない情報です。ニッチです。

いまCakePHPでWebアプリケーションを作ってて(趣味です)、スターレイティングを導入しようと思い、いくらか調べて、「jQuery Star Rating Plugin」が良さそうという結論に達した。

で、さっそく実装して試してみてたら、inputのnameがサンプルのままの「star」だと問題なく動作するんだけど、CakePHPのdata[モデル名][カラム名]の形式のnameにすると、表示もPOSTもうまくいかない。

調べてみると、jquery.rating.js は、inputのnameをもとにクラスやなんかを作るんだけど、そのさいに[ ]をエスケープしてる。

//99行目 var n = (this.name || 'unnamed-rating').replace(/\[|\]/, "_");

まずこのエスケープがまずくて、最初の一個めしか置換してくれないので、直す。

//gオプションを追加 var n = (this.name || 'unnamed-rating').replace(/\[|\]/g, "_");

で、値をPOSTするためにhiddenのinputを作ってる。

//111行目 $.rating.groups[n].valueElem = $('<input type="hidden" name="' + n + '" value=""' + (settings.readOnly ? ' disabled="disabled"' : '') + '/>');

ここはエスケープしちゃうとCakePHPで$this->dataでアクセスできないので、エスケープする前の名前にする。

//さっきのnの宣言部からエスケープ前の名前をもってくる $.rating.groups[n].valueElem = $('<input type="hidden" name="' + (this.name || 'unnamed-rating') + '" value=""' + (settings.readOnly ? ' disabled="disabled"' : '') + '/>');

これでテストしたら、表示・挙動・POSTデータいづれも問題なさそうだった。コードを熟読してないので問題あるかもだけど。

・・・とまあ、ここまで書いといて気づいたんだけど、jQuery Star Rating Plugin ってGPL(と MIT License)なんですね。フリーだと思い込んでたよ。Webアプリケーションのソース公開はセキュリティ上問題ありそうだしなあ。同じようなの作るのめんどくさいなあ・・・。Creative Commons や MIT License なんかに比べるとGPLやLGPLって制限厳しいくせに線引きがあいまいすぎて、どうも好きになれない。

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
http://penguinlab.jp/blog/post/195/trackback
トラックバックの送信元リスト
CakePHPで jQuery Star Rating Plugin を使う。 - 情報と音楽 より

ホーム > 未分類 > CakePHPで jQuery Star Rating Plugin を使う。

検索
フィード
メタ情報

ページの上部に戻る