唉呀!多按一次!!

避免重複按下送出而造成多個迴響的造成

緣起:本來是在Zonble’s Blog上面要留言,卻發現自己不小心留了好幾個迴響,於是回到自己最近很常去的一個MT技術網站MTExtension找一下相關的檔案,裡面有講到一個避免的方法,就是修改一下MT的一些程式碼

詳細狀況,請看詳細敘述

 

 

  • 若是一般方式請修改MT目錄下的 lib/MT/App/Comments.pm

  • 若是有安裝MT-Blacklist的話請修改 exlib/jayallen/MTBIPost.pm

請貼以下的程式碼在 $comment->save; 之前

BEGIN HACK Avoid Duplicate Comments

## http://www.nonplus.net/software/mt/AvoidingDuplicateComments.htm
if(my @existing_comments = MT::Comment->load({
              blog_id => $comment->blog_id,
              entry_id => $comment->entry_id})) {

  foreach my $c (@existing_comments) {
      next unless (($c->author||'') eq ($comment->author||'')
              && ($c->email||'') eq ($comment->email||'')
              && ($c->text||'') eq ($comment->text||''));

      my $link_url;
      if (!$q->param('static')) {
          my $url = $app->base . $app->uri;
          $url .= '?entry_id=' . $q->param('entry_id');
          $link_url = $url;
      } else {
          my $static = $q->param('static');
          if ($static == 1) {
              $link_url = $entry->permalink;
          } else {
              $link_url = $static . '#' . $c->id;
          }
      }
      return $app->redirect($link_url);
  }
}
## END HACK Avoid Duplicate Comments

Evan

Attitude is everything