2005年06月01日

[MT関連] MTにトリップ機能を

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));
}



trip()はこちらから拝借。


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の修正部分を通過しないため、修正が正常に反映されません。


投稿者 和尚 : 2005年06月01日 10:09 | トラックバック
コメント

名前欄に◆を入れると◇に置換されます。
これでトリップ偽装も回避できるかな。

Posted by: 和尚 ◆V/GlGMVfX. : 2005年06月01日 10:53

すげーーーーー(・∀・)
仕事はえーーー(・∀・)
キスさせてけろ(*´3`)

Posted by: J2 ◆.CzKQna1OU : 2005年06月01日 13:45

トリップ偽装テスト。
ちなみに今回のトリップは捨てでーす

Posted by: J2 ◇.CzKQna1OU : 2005年06月01日 13:50

和尚さん、はじめまして。

私も最近 MT を導入して、コメント欄にトリップ機能が欲しいと思っていたところでした。おおー、素晴らしい。

一応動作確認してみたのですが、「確認」ボタンをクリックして確認画面に遷移した場合、名前欄にトリップが生成された状態で初期表示されてしまいます。まずはご報告まで。

Posted by: 善 ◆eMpKZUOxUI : 2005年06月01日 14:14

J2さん>
んー(*´(   ) いただきます

なにこのウホッな展開w

善さん>
プレビュー画面のもそれっぽく直しました~。
ただ、このサイトだとプレビュー画面のi18Nコンバートが上手くいかないんですが。

Posted by: 和尚 ◆V/GlGMVfX. : 2005年06月01日 19:07

私もテストー!
わくわく♪

Posted by: cio ◆ndENfp83t2 : 2005年06月01日 23:05

2ちゃんのトリッパーは通用せん(´・ω・`)、って当たり前か(ワラ

Posted by: OTZ ◆PoKFVc1/zg : 2005年06月01日 23:20

すいません、テストさせていただきます_| ̄|○

Posted by: BB 名前の欄 = $1 . "◇" . &trip($2) ; : 2005年06月02日 01:42

あ、やっとわかりました。
お邪魔いたしました_| ̄|○

Posted by: BB#BABYSBREATH : 2005年06月02日 01:59

何でですかー(T△T)

Posted by: BB ◆h0GnzY2Rlw : 2005年06月02日 02:16

あ、できてる…
ほんとお邪魔しました_| ̄|○

Posted by: BB ◆h0GnzY2Rlw : 2005年06月02日 02:16

テスツ

Posted by: OTZ ◆orz7Hcs.IM : 2005年06月02日 02:52

おもしろいことしてるなぁw

(*´(   )   (´Д` ;) 
 ↑
おもしろいこと

Posted by: plummet ◆gzsfwNkc3c : 2005年06月02日 02:52

OTZさん>
10桁トリッパーなら使えるはずー

教祖>

     (m) ピコーン
      |ミ|
.      `´       
(*´∀(   ゚)   Σ(´Д` ;) 
.
.
.
.
(*´∀`)   ((((   ゚)´Д` ;) うわちょっ!おまっ!
.
.
.
.
(*´∀`)     (    )゚:; ) ぐわああああwせdrf
.
.
.
.
(*´∀`)     (    )`* ) んっ

Posted by: 和尚 ◆V/GlGMVfX. : 2005年06月02日 13:09

10桁のトリッパーでやってますよ。
6月01日 23:20ので出来なかった理由は、10桁の文字列に半角カナがあるとだめぽなのかなと、推測してみるテスツ

Posted by: OTZ ◆orzR8.5.ak : 2005年06月02日 13:15

OTZさん>
あー。半角カナはだめぽいなぁ。
cript()通す前にShift_JISに変換すれば何とか・・・
それでも全角~がまずいか。
うーむ。

Posted by: 和尚 ◆V/GlGMVfX. : 2005年06月02日 14:34


 ペロペロ (*´(    )`* ) ムチュチュパ


 いかん_| ̄|○ 自分にまでダメージが 

Posted by: plummet : 2005年06月03日 01:16

_| ̄|○ 俺も地味にダメージうけてるのは内緒だ

Posted by: 和尚 ◆V/GlGMVfX. : 2005年06月03日 11:47

初めましてPoPoといいます。
このBLOGを参考にトリップ機能を付けてみたんですが◆が??になってしまいます。
なぜでしょうか??

Posted by: PoPo ◆iSVGF/.auI : 2005年06月18日 16:10

はじめまして。

恐らく、Comments.pmをUTF-8で保存するといけるんじゃないかと思います。


Posted by: 和尚 : 2005年06月19日 12:37

utf-8で保存しFTPでアップロードした結果成功しました。
本当にありがとうございます。
ちょこちょこニヤリに出現します(´∀`)ニヤリ

Posted by: PoPo ◆iSVGF/.auI : 2005年06月19日 14:18

テスト

Posted by: A ◆.CzKQna1OU : 2005年08月23日 01:36

テスト

Posted by: A ◇.CzKQna1OU : 2005年08月23日 01:37

テスト

Posted by: A ◆vrHzFYVWg6 : 2005年08月23日 01:51

テスト

Posted by: A ◆7e4gMz7QcI : 2005年08月23日 01:53

テスト

Posted by:   ◆OiPxwjtqjY : 2005年08月23日 01:59

こんにちは。
このトリップ機能、mt-comments.cgi上で出来る方法ありませんか?
試しにmt-comments.cgiを自分で書き換えたのですが、エラーが出て上手くいかず・・・orz

Posted by: テスト ◆Q3F88HDBmA : 2005年10月28日 23:31

ためさせてもらいます

Posted by: aki ◆.CzKQna1OU : 2005年11月17日 15:53

テスト

Posted by: OTZ◇、;lぽいぬ : 2005年12月03日 00:18

てst

Posted by: ◆BAKASU9Oxg : 2006年03月01日 22:38

書いてある通りにやったらうまく出来たんで、感謝のTB送ろうと思ったんですが何故かエラーが出てTB送れなかったっす、、、(´・ω・`)

Posted by: jod ◆vWv69x3vUs : 2006年04月12日 00:55

トリップテストさせてください

Posted by: 岸 ◆KiSHIDAN5Q : 2006年04月12日 02:00
コメントする









名前、アドレスを登録しますか?