Raw Source
id_doom / Games.cz: Antitroll

// ==UserScript==
// @name        Games.cz: Antitroll
// @description Skryje vlákna založená lidmi s určitými jmény (v poli trolove, obalené apostrofy nebo uvozovkami a oddělené čárkami) - TŘEBA UPRAVIT PODLE CHUTI!
// @include     http://diskuse.tiscali.cz/games/*
// @downloadURL https://openuserjs.org/install/id_doom/gamescz/Games.cz_Antitroll.user.js
// @updateURL   https://openuserjs.org/install/id_doom/gamescz/Games.cz_Antitroll.user.js
// @icon        http://games.tiscali.cz/img/logo-games.png
// @namespace   gamescz
// @version     1.7
// @grant       none
// ==/UserScript==
var skrytAnonymy = false; //Pro skrytí všech anonymů a odpovědí na ně změnit false na true
var skrytInkognita = false; //Pro skrytí všech (inkognito) a a odpovědí na ně změnit false na true

var prispevky = []; //Pole příspěků (globální)
function skryj(i) {
  prispevky[i].style.display = 'none';
}
if (document.getElementsByClassName('box-std box-comments') != null){ //Zkontroluje, jestli se na stránce nachází diskuze v očekávané formě
  //ZDE MŮŽETE PŘIDÁVAT TROLLY; Pro skrytí nepřihlášených slouží proměnné nahoře
  var trolove = new Array('veskoslav', 'Jack1947', 'TheGGG');
  var D = document.getElementsByClassName('box-std box-comments')[0]; //Element obalující celou diskuzi - jako první člen pole
  var jmena = []; //Deklarace pole obsahující jména
  prispevky = D.getElementsByTagName('li'); //Pole příspěků (globální)
  
  for (var i = 0; i < prispevky.length; i++){
    jmena[i] = prispevky[i].getElementsByTagName('strong')[0].innerHTML; //Jméno diskutéra je někde v tagu STRONG
    var stopka = document.createElement('a');
    stopka.href = 'javascript:void(0)'; //Aby to byl odkaz-neodkaz
    stopka.innerHTML = " Skrýt";
    stopka.cislo = i; //Číslo elementu li, který se bude skrývat
    stopka.onclick = function(){skryj(this.cislo)};
    prispevky[i].getElementsByClassName('hd')[0].appendChild(stopka);
  }

  for (var i = 0; i < prispevky.length; i++) { // pro všechny příspěvky
    if(prispevky[i].getElementsByClassName('hd')[0].getElementsByClassName('role').length > 0){ //pokud má anonyma nebo inkognito
      if(skrytAnonymy || skrytInkognita){ //Pokud se filtrují i role
        if(skrytAnonymy && skrytInkognita){ //Pokud obě
          regExpRole = new RegExp('\\s*\\((anonym|inkognito)\\)\\s*', 'i');
        }
        else{ //A když ne obě
          if (skrytAnonymy){ //Jen anonym
            regExpRole = new RegExp('\\s*\\(anonym\\)\\s*', 'i');
          }
          if (skrytInkognita){ // Jen iknognito
            regExpRole = new RegExp('\\s*\\(inkognito\\)\\s*', 'i');
          }
        }
        if(regExpRole.test(prispevky[i].getElementsByClassName('role')[0].innerHTML)){
          skryj(i); //Pokud odpovídá reg. výrazu, skryje
        }
      }
    }
    else{
      //Pokud se anon a inko nefiltrují, nebo nejsou nalezeny, tak se hledá troll
      for (var j = 0; j < trolove.length; j++) { //pro všechny jména v poli trolove
        var regExp = new RegExp('\\s+'+trolove[j]+'\\s+', 'i'); //Regulární výraz pro "vyseknutí jména z innerHTML"
        if (regExp.test(jmena[i])){ //Otestuje shodu jména s troly
          skryj(i) //Pokud je shoda, skryje část diskuze
          break; //přeruší cyklus, pokud je příspěvek skryt
        }
      }
    }
  }
}