古いspamコメント/トラバの削除を支援するGMスクリプト2008年04月23日 03時51分27秒

しつこくアサブロ管理画面向けのGMスクリプトを載せてみたり。

コメント一覧/トラックバック一覧で状態が「spam」の項目に自動的にチェックをつけます。以下のスクリプトを「http://www.asablo.jp/app*」で動作するようにしてください。

※:なんかうまく動かなくなったので、修正入れました。詳しくはこちら。(09.09.04)

// 指定要素を含むtrを取得する
function findRow(el) {
  if( el == document.body ) return null;
  
  var row = el.parentNode;
  if( /^tr$/i.test( row.tagName ) ) {
    // 「状態」を取得するメソッドを追加
    row.getStatus = function() {
      var sel = this.getElementsByTagName("select")[0];
      if( sel ) {
        return sel.options[ sel.selectedIndex ].innerHTML;
      }
      return null;
    };
    // 日付を取得するメソッドを追加
    row.getDate = function() {
       var cells = this.getElementsByTagName("td"), i = 0;
       while( i < cells.length ) {
         var cell = cells[i++];
         if( /\d{4}((\-\d{2}){2})\s\d{2}((:\d{2}){2})/.test( cell.innerHTML ) ) {
           return new Date(
             cell.innerHTML.replace(/\-/g, "/").replace( /\s\d{2}(:\d{2}){2}/, "" )
           );
         }
       }
       return null;
    };
    return row;
  }
  
  // elの親がtrじゃないのでさらに上位に遡る
  return arguments.callee( row );
}

// [状態の変更/~の削除]ボタンを検出する
function getSubmit() {
  var list = window.document.getElementsByTagName("input")
  for(var i = 0, l = list.length; i < l; i++) {
    if( list[i].type == "submit" && /状態の変更/.test( list[i].value ) ) {
      return list[i];
    }
  }
  return null;
}

// チェックボックスのリスト → リストの取得方法変更(09.09.04)
//var list = document.getElementsByTagName("input");
var list = document.getElementsByName("delmsg");
// チェックボックスをチェックした数
var checked = 0;
// 現在日よりこの日数以上古いデータは削除対象にする
var days = 5;

// 削除対象のコメント/トラバをチェック
for(var i = 0, l = list.length; i < l; i++) {
  var input = list[i++];
  if( input.type != "checkbox" || input.name != "delmsg" ) continue;
  
  new function() {
    var row = findRow(input);
    var d = row.getDate();
    var limit = new Date( new Date() - ( 86400000 * days ) );
    if( row.getStatus() == "spam" && d <= limit ) {
      input.checked = true;
      checked++;
    }
  }();
}

// ボタンをハイライト
var btn = getSubmit();
if( checked && btn ) {
  btn.style.color = "red";
  btn.style.fontWeight = "bold";
  btn.focus();
  document.documentElement.scrollTop = document.documentElement.scrollHeight;
}

ノードの抽出だとかDOM操作はちょっとグダグダしてるが勘弁。

コード中の下線部の「var days = 5」の数字は、削除対象にする日数で、例えば本日(2008年4月23日)だと、4月19日よりも前のspamトラバ/コメントにチェックがつきます。「5日も待てねぇ。さっさと削除してぇ。」とかいった場合はここを変更すると。

また、チェックをつけた項目があったページでは[状態の変更/~の削除]ボタンを強調表示し、そこまで画面をスクロールさせてます。

あくまでチェックをつけるだけなので、実際の削除は[状態の変更/~の削除]を自分でクリックしてください。

うーん、またあんまり需要がないスクリプトを書いてしまった。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://dara-j.asablo.jp/blog/2008/04/23/3258785/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。