Beamdog forums ignore script

Blocks specified users on the Beamdog forums

目前為 2016-08-07 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Beamdog forums ignore script
// @namespace   https://greasyfork.org
// @description Blocks specified users on the Beamdog forums
// @include     https://forums.beamdog.com/*
// @version     1
// @grant       none
// @run-at      document-ready
// ==/UserScript==
/*This script is based on the Achaea forums ignore script.
Permission from original author, Ephemeralis, has been granted.*/


//add a person to this list, enclosing their name with "" and ending with ,
var userlist = [
   "Shandyr", 
];

var reactionsToDelete = document.querySelectorAll(".UserReactionWrap");
var leaderBoxesToDelete = document.querySelectorAll(".Leaderboard-User");
var threadsToDelete = document.querySelectorAll(".FirstUser");
var mostRecentToDelete = document.querySelectorAll(".LastUser");
var postsToDelete = document.querySelectorAll(".AuthorWrap");
var quotesToHide = document.querySelectorAll(".QuoteAuthor");
var onlineUsersToHide = document.querySelectorAll(".OnlineUserWrap");
var activityWallPostToDelete = document.querySelectorAll(".Activity-WallPost");
var activityStatusToDelete = document.querySelectorAll(".Activity-Status,.ActivityComment");
var picChangeToDelete = document.querySelectorAll(".Activity-PictureChange");
var bestofToDelete = document.querySelectorAll(".Tile");
var messagesToDelete = document.querySelectorAll(".Conversation,.ConversationMessage");
var badgesToDelete = document.querySelectorAll(".Activity-Badge,.Activity-Registration");

var url = window.location.href;
var sub1 = "activity";
var sub2 = "profile";
var sub3 = "discussion";
var sub4 = "categories";
var sub5 = "bestof";
var sub6 = "messages";


//no URL check here
   //delete user reactions
   for (var i=0; i < reactionsToDelete.length; i++)
   {
     if (userlist.indexOf(reactionsToDelete[i].querySelector(".ProfilePhoto").getAttribute("alt")) > -1)
      {
       reactionsToDelete[i].style.display = 'none';
      }
   }

   //delete from leaderboards
   for (var i=0; i < leaderBoxesToDelete.length; i++)
   {
     if (userlist.indexOf(leaderBoxesToDelete[i].querySelector(".Username").textContent) > -1 )
      {
       leaderBoxesToDelete[i].parentNode.parentNode.style.display = 'none';
      }
   }
    

//case URL contains "discussion" or "categories"
if (url.indexOf(sub3) !== -1 || url.indexOf(sub4) !== -1){
    
    //delete threads 
    //important to start with i=1 here; first element needs to be skipped; it's just the header for the "started by" column
    for (var i=1; i < threadsToDelete.length; i++)
    {
      if (userlist.indexOf(threadsToDelete[i].querySelector(".BlockTitle").textContent) > -1)
         {
           threadsToDelete[i].parentNode.style.display = 'none';
         }
    }   
    
    //delete most recent panel for a thread in discussion board if most recent poster is on ignore
    //start with i=1; same reason as above
    for (var i=1; i < mostRecentToDelete.length; i++)
    {
      if (userlist.indexOf(mostRecentToDelete[i].querySelector(".BlockTitle").textContent) > -1)
         {
           mostRecentToDelete[i].querySelector(".Block").style.display = 'none';
         }
    }  
    
    //delete comments
    for (var i=0; i < postsToDelete.length; i++)
    {
       if (userlist.indexOf(postsToDelete[i].querySelector(".Username").textContent) > -1)
       {
           postsToDelete[i].parentNode.parentNode.parentNode.style.display = 'none';
       }
    } 
    
    //delete quotes; needs to be worked on for nested quotes
    for (var i=0; i < quotesToHide.length; i++)
    {
       if (userlist.indexOf(quotesToHide[i].firstChild.textContent) > -1)
       {
        quotesToHide[i].parentNode.style.display = 'none';
       }
    }  

    //delete user name in "Who's online" box and decrease counter
    // substring: to remove the "+" in front of the number
    var guestCounter = parseInt(document.querySelector(".GuestCount").textContent.substring(1),10);
    var counter = onlineUsersToHide.length + guestCounter;
    
    for (var i=0; i < onlineUsersToHide.length; i++)
    {
      if (userlist.indexOf(onlineUsersToHide[i].textContent) > -1)
       {
        onlineUsersToHide[i].style.display = 'none';
        counter -= 1;
        document.querySelector(".WhosOnline").querySelector(".Count").innerHTML = counter; 
        }
    }
}

//case URL contains "activity" or "profile"
if (url.indexOf(sub1) !== -1 || url.indexOf(sub2) !== -1 ){

    //delete wall post to or from an ignored user
    for (var i=0; i < activityWallPostToDelete.length; i++)
    {
       //[0] for the case that ignored member is addresser; [1] for the case they are recipient
       if (userlist.indexOf(activityWallPostToDelete[i].querySelectorAll(".Name")[0].textContent) > -1 ||
           userlist.indexOf(activityWallPostToDelete[i].querySelectorAll(".Name")[1].textContent) > -1)
       {
           activityWallPostToDelete[i].style.display = 'none';
       }
    }

    //delete post on own wall
    for (var i=0; i < activityStatusToDelete.length; i++)
    {
      if (userlist.indexOf(activityStatusToDelete[i].querySelector(".Title").textContent) > -1 )
       {
          activityStatusToDelete[i].style.display = 'none';
       }
    }
    
    //delete picture change message
    for (var i=0; i < picChangeToDelete.length; i++)
    {
       if (userlist.indexOf(picChangeToDelete[i].querySelector(".PhotoWrap").getAttribute("href").substring(9)) > -1 )     
       {
          picChangeToDelete[i].style.display = 'none';
       }
    }
    
    //delete badge activity and registration messages
    for (var i=0; i < badgesToDelete.length; i++)
    {
      for (var j=0; j < userlist.length; j++)
      {
         if (badgesToDelete[i].textContent.indexOf(userlist[j]) > -1)
         {
          badgesToDelete[i].style.display = 'none';
         break; 
         }
      }
    }
}


//case URL contains "bestof"
if (url.indexOf(sub5) !== -1) {
    
    //delete from best of
     for (var i=0; i < bestofToDelete.length; i++)
    {
       if (userlist.indexOf(bestofToDelete[i].querySelector(".PhotoWrap").getAttribute("title")) > -1 )
       {
          bestofToDelete[i].style.display = 'none';
       }
    }   
}


//case URL contains "messages"
if (url.indexOf(sub6) !== -1 ){
     //delete private messages
    for (var i=0; i < messagesToDelete.length; i++)
    {
       if (userlist.indexOf(messagesToDelete[i].querySelector(".PhotoWrap").getAttribute("title")) > -1)
       {
           messagesToDelete[i].parentNode.style.display = 'none';
       }
    }
}