J2さんとこのコメント欄でちょっと話に出てたMTへのトリップ機能の追加をさらさらっとやってみた。
テストコードはMovable Type 3.151-jaで検証。
多分他のバージョンでもいけるはず。
テスト完了。
ということでこのサイトではトリップが使えるようになりました。
投稿時、DBに格納する前にトリップを生成してますので、管理者にトリップが漏れることはありません。
とりあえずこのエントリあたりで鳥テストしてから使ってみてください。
追記:
プレビューで変換済のトリップが出る件
追記:
プレビューへの対応への注意点追記
6/3 追記:
2chのトリップと同一になるよう、trip()内でシードをShift-JISにエンコードするよう修正。
(trip()3行目と、use Jcode; の行を追加)
10/31 追記:
善さんがMT3.2での修正点をエントリにしてくれました。
MT3.2で導入する場合は先方のエントリを参照してくださいまし。
著::善ポコのタコ部屋::Movable Type 奮闘記::アップグレード 3.171→3.2(番外編::トリップ機能実装に関する備忘録)
{mt dir}/lib/MT/App/Comments.pmの400行目付近_make_comment()のmy $nick = $q->param('author');
の後の行に以下のブロックを追加
$nick =~ s/◆/◇/g;
if (index($nick,'#')!=-1){
my $i=index($nick,'#');
my $base=substr($nick,0,$i);
my $trip=trip(substr($nick,($i+1),length($nick)));
$nick = $base.' ◆'.$trip;
}
_make_comment()より前に以下の関数を追加
# make trip
sub trip($){
my $seed = shift;
$seed = jcode($seed)->sjis ;
my $salt = substr($seed, 1, 2);
$salt =~ tr/\x00-\x20\x7B-\xFF/./;
$salt =~ tr/\x3A-\x40\x5B-\x60/A-Ga-f/;
return(substr(crypt($seed, $salt), -10));
}
Jodeを使えるよう先頭(12行目付近)に宣言追加
use Jcode;
こんだけ。
$nick = $base.' ◆'.$trip;が2ch風になってるので適当に変更するもまたヨシ。
善さん指摘のプレビュー時のトリップ化対策
※MT3.151-jaだとうまくいくのにここだとうまくいかないので何か違うのかも
{mt dir}/lib/MT/App/Comments.pmの430行目付近_make_comment()の
$comment->author(remove_html($nick));
の後の行に以下の行を追加
$comment->nick(remove_html($q->param('author')));
{mt dir}/lib/MT/Template/Context.pmの1187行目付近_hdlr_comment_fields()の
$comment_author = encode_html($ctx->_hdlr_comment_author()) || "";
を以下の行に置換
my $nickdef = $ctx->stash('comment_preview')->nick;
$comment_author = encode_html($nickdef) || "";
MT3.151-jaで動作確認済
注意
この修正でプレビュー画面に反映させるためには、MTのテンプレート「コメント・プレビューのテンプレート」の中で、入力フィールドを次のタグで表示させる必要があります。
<MTIfCommentsAllowed>
<MTCommentFields preview="1" static="1">
</MTIfCommentsAllowed>
このMTCommentFieldsタグでしか、Context.pmの修正部分を通過しないため、修正が正常に反映されません。
和尚さん、はじめまして。
私も最近 MT を導入して、コメント欄にトリップ機能が欲しいと思っていたところでした。おおー、素晴らしい。
一応動作確認してみたのですが、「確認」ボタンをクリックして確認画面に遷移した場合、名前欄にトリップが生成された状態で初期表示されてしまいます。まずはご報告まで。
Posted by: 善 ◆eMpKZUOxUI : 2005年06月01日 14:14J2さん>
んー(*´( ) いただきます
なにこのウホッな展開w
善さん>
プレビュー画面のもそれっぽく直しました~。
ただ、このサイトだとプレビュー画面のi18Nコンバートが上手くいかないんですが。
OTZさん>
10桁トリッパーなら使えるはずー
教祖>
(m) ピコーン
|ミ|
. `´
(*´∀( ゚) Σ(´Д` ;)
.
.
.
.
(*´∀`) (((( ゚)´Д` ;) うわちょっ!おまっ!
.
.
.
.
(*´∀`) ( )゚:; ) ぐわああああwせdrf
.
.
.
.
(*´∀`) ( )`* ) んっ
10桁のトリッパーでやってますよ。
6月01日 23:20ので出来なかった理由は、10桁の文字列に半角カナがあるとだめぽなのかなと、推測してみるテスツ
OTZさん>
あー。半角カナはだめぽいなぁ。
cript()通す前にShift_JISに変換すれば何とか・・・
それでも全角~がまずいか。
うーむ。
初めましてPoPoといいます。
このBLOGを参考にトリップ機能を付けてみたんですが◆が??になってしまいます。
なぜでしょうか??
utf-8で保存しFTPでアップロードした結果成功しました。
本当にありがとうございます。
ちょこちょこニヤリに出現します(´∀`)ニヤリ
こんにちは。
このトリップ機能、mt-comments.cgi上で出来る方法ありませんか?
試しにmt-comments.cgiを自分で書き換えたのですが、エラーが出て上手くいかず・・・orz
書いてある通りにやったらうまく出来たんで、感謝のTB送ろうと思ったんですが何故かエラーが出てTB送れなかったっす、、、(´・ω・`)
Posted by: jod ◆vWv69x3vUs : 2006年04月12日 00:55