yvandal / troll++

// ==UserScript==
// @name        troll++
// @namespace   https://eksisozluk.com/biri/yvandal
// @description degisik degisik sekillerde trollere eklemece
// @include     https://eksisozluk.com*
// @include     http://eksisozluk.com*
// @grant       none
// @run-at      document-end
// @version     1.1
// ==/UserScript==
var tppUrl = 'https://eksisozluk.com/biri/eksisozluk/togglerelation?r=blocked&id=';
var tppAddUrl = 'https://eksisozluk.com/biri/eksisozluk/addrelation?r=blocked&id=';
var tppRmUrl = 'https://eksisozluk.com/biri/eksisozluk/removerelation?r=blocked&id=';
var fav = [
];
var dotsImg = 'http://i.hizliresim.com/aEmvz5.gif';
if (ek$i.loggedIn) {
  if ($('#entry-list').length) {
    $('#entry-list').find('.info').each(function () {
      var _e = $(this);
      var _a = _e.find('.entry-author').text();
      var _u = _e.find('.entry-author').attr('href');
      var _i = _e.closest('li').attr('data-id');
      _e.append('<a style="margin-right: 5px; color: #666; font-size: 0.8em; opacity: 0.5;" class="tpp-quick" title="' + _a + ' kişisini troll\'lere ekle">engelle</a>');
      _e.find('.dropdown-menu').append('<li><a style="">favorileyenleri engelle</a></li>');
      _e.parent().find('.feedback').append('<span style="display:inline-block; float: right;" class=""><a data-entry="' + _i + '" class="tpp-fav" style="font-size: 0.8em;" title="bu entry\'yi favorileyenleri engelle">fav\'ları engelle</a></span>');
    });
    $('.sub-title-menu').append('<div class="dropdown"><a id="tpp-menu" class="">troll++</a><ul id="tpp-menu-ul" class="dropdown-menu"><li><a id="tpp-topic">başlığa yazan tüm yazarları engelle</a></li><li class="separated"><a id="tpp-today">başlığa bugün yazanları engelle</a></li><li class="separated"><a id="tpp-this">başlığın bu halindeki yazarları engelle</a></li></ul></div>');
    $('#content-body').append('<form id="tpp-topic-form" class="entry-menu-form modal" style="display:none;"> <fieldset class="vertical"> <legend>başlıktakileri engelle</legend><div> <label>bu başlıkta entry\'si bulunan tüm yazarları engellemek istediğinize emin misiniz?</label> <p class="summary"><b>uyarı:</b> bu işlemin geri dönüşü yoktur.</p> </div> <div class="actions"> <button class="primary" type="button" id="tpp-topic-sure">eminim</button> <button class="cancel-button tpp-cancel" type="button">vazgeçtim</button> </div> </fieldset> </form>');
    $('#content-body').append('<form id="tpp-today-form" class="entry-menu-form modal" style="display:none;"> <fieldset class="vertical"> <legend>bugün yazanları engelle</legend><div> <label>bu başlığa bugün entry giren tüm yazarları engellemek istediğinize emin misiniz?</label> <p class="summary"><b>uyarı:</b> bu işlemin geri dönüşü yoktur.</p> </div> <div class="actions"> <button class="primary" type="button" id="tpp-today-sure">eminim</button> <button class="cancel-button tpp-cancel" type="button">vazgeçtim</button> </div> </fieldset> </form>');
    $('#content-body').append('<form id="tpp-this-form" class="entry-menu-form modal" style="display:none;"> <fieldset class="vertical"> <legend>bu haldeki yazarları engelle</legend><div> <label>başlığın mevcut kriterlerdeki (seçili tarih aralığı, başlık içi arama vs.) halinde entry\'si bulunan tüm yazarları engellemek istediğinize emin misiniz?</label> <p class="summary"><b>uyarı:</b> bu işlemin geri dönüşü yoktur.</p> </div> <div class="actions"> <button class="primary" type="button" id="tpp-this-sure">eminim</button> <button class="cancel-button tpp-cancel" type="button">vazgeçtim</button> </div> </fieldset> </form>');
    $('#content-body').append('<form id="tpp-fav-confirm" class="entry-menu-form modal" style="display:none;"> <fieldset class="vertical"> <legend>favorileyenleri engelle</legend><div> <label>bu entry\'yi favorileyen (çaylak olmayan) <span id="tpp-fav-author-count"></span> yazarı engellemek istediğinize emin misiniz?</label> <p class="summary"><b>uyarı:</b> bu işlemin geri dönüşü yoktur.</p> </div> <div class="actions"> <button class="primary" type="button" id="tpp-fav-sure">eminim</button> <button class="cancel-button tpp-cancel" type="button">vazgeçtim</button> </div> </fieldset> </form>');
    $('.tpp-quick').on('click', function () {
      var _t = $(this);
      var _e = _t.closest('footer').parent();
      var _aid = _e.attr('data-author-id');
      var _a = _e.attr('data-author');
      if (_t.attr('data-action') == 'untroll') {
        $.post(tppRmUrl + _aid, function (d) {
          _e.find('.content').css('text-decoration', 'none');
          _e.find('.entry-author').css('text-decoration', 'none');
          _t.text('engelle');
          _t.removeAttr('data-action');
          ek$i.success(_a + ' troll\'lerden çıkarıldı.');
        });
        /*
        $.post(tppUrl + _aid, function (d) {
          var success = d.Code;
          if (d.IsBlocked) {
            $.post(tppUrl + _aid);
          }
          if (success) {
            _e.find('.content').css('text-decoration', 'none');
            _e.find('.entry-author').css('text-decoration', 'none');
            _t.text('engelle');
            _t.removeAttr('data-action');
            ek$i.success(_a + ' troll\'lerden çıkarıldı.');
          } else {
            ek$i.error('troll\'lerden çıkarırken sıkıntılar çıktı, daha sonra deneyin.');
          }
        });
        */
      } else {
        $.post(tppAddUrl + _aid, function (d) {
          _e.find('.content').css('text-decoration', 'line-through');
          _e.find('.entry-author').css('text-decoration', 'line-through');
          _t.text('engellemeyi bırak');
          _t.attr('data-action', 'untroll');
          ek$i.success(_a + ' başarıyla troll\'lere eklendi.');
        });
        /*
        $.post(tppUrl + _aid, function (d) {
          var success = d.Code;
          if (!d.IsBlocked) {
            $.post(tppUrl + _aid);
          }
          if (success) {
            _e.find('.content').css('text-decoration', 'line-through');
            _e.find('.entry-author').css('text-decoration', 'line-through');
            _t.text('engellemeyi bırak');
            _t.attr('data-action', 'untroll');
            ek$i.success(_a + ' başarıyla troll\'lere eklendi.');
          } else {
            ek$i.error('troll\'lere eklemede sıkıntılar çıktı, daha sonra deneyin.');
          }
        });
        */
      }
    });
    $(document).click(function (event) {
      if (!$(event.target).closest('#tpp-menu-ul').length && !$(event.target).closest('#tpp-menu').length) {
        if ($('#tpp-menu-ul').is(':visible')) {
          $('#tpp-menu-ul').removeClass('open');
        }
      }
    });
    $('#tpp-menu').on('click', function () {
      $('#tpp-menu-ul').addClass('open');
    });
    $('#tpp-topic').on('click', function () {
      ek$i.modal.show('#tpp-topic-form');
    });
    $('#tpp-today').on('click', function () {
      ek$i.modal.show('#tpp-today-form');
    });
    $('#tpp-this').on('click', function () {
      ek$i.modal.show('#tpp-this-form');
    });
    $('.tpp-cancel').on('click', function () {
      ek$i.modal.hide();
    });
    $('#tpp-topic-sure').on('click', function () {
      $('#tpp-topic-form').find('button').css('display', 'none');
      $('#tpp-progress').remove();
      $('#tpp-topic-form').find('fieldset').append('<div id="tpp-progress">başlıktaki yazarlar tespit ediliyor <img src="' + dotsImg + '" /></div>');
      var aa = [
      ];
      var p = 1;
      var u = $('h1#title').find('a:first').attr('href');
      for (var i = 1; i <= p; i++) {
        $.ajax({
          url: u + '?p=' + i,
          success: function (d) {
            if (i == 1) {
              p = parseInt($(d).find('.pager').first().attr('data-pagecount')) || 1;
              $('#tpp-progress').append('<br/>' + p + ' sayfa bulundu.<br/><span id="tpp-progress-detail"></span>');
            }
            $('#tpp-progress-detail').text(i + '. sayfa inceleniyor.');
            var a = $(d).find('#entry-list>li');
            a.each(function () {
              aa.push($(this).attr('data-author-id'));
            });
          },
          async: false
        });
        var ua = aa.reduce(function (p, c) {
          if (p.indexOf(c) < 0) p.push(c);
          return p;
        }, [
        ]);
      }
      var ua = aa.reduce(function (p, c) {
        if (p.indexOf(c) < 0)
        p.push(c);
        return p;
      }, [
      ]);
      $('#tpp-progress').append('<br/>başlıkta entry\'si bulunan ' + ua.length + ' yazar engelleniyor <img src="' + dotsImg + '" />');
      var c = 0;
      for (var i = 0; i < ua.length; i++) {
        var _w = ua[i];
        $.post(tppAddUrl + _w, function (d) {
          /*
          if (!d.IsBlocked) {
            $.post(tppUrl + _w);
          }
          */
          if (++c == ua.length) {
            ek$i.modal.hide();
            ek$i.success(ua.length + ' kişi troll\'lere eklendi.');
            $('#tpp-progress').remove();
            $('#tpp-topic-form').find('button').css('display', '');
            ua = [
            ];
          }
        });
      }
    });
    $('#tpp-today-sure').on('click', function () {
      $('#tpp-today-form').find('button').css('display', 'none');
      $('#tpp-progress').remove();
      $('#tpp-today-form').find('fieldset').append('<div id="tpp-progress">başlığa bugün entry giren yazarlar tespit ediliyor <img src="' + dotsImg + '" /></div>');
      var aa = [
      ];
      var p = 1;
      var u;
      $('#in-topic-search-options').find('a').each(function () {
        var _t = $(this);
        if ('bugün' == _t.text()) {
          u = _t.attr('href');
          return false;
        }
      });
      for (var i = 1; i <= p; i++) {
        $.ajax({
          url: u + '&p=' + i,
          success: function (d) {
            if (i == 1) {
              p = parseInt($(d).find('.pager').first().attr('data-pagecount')) || 1;
              $('#tpp-progress').append('<br/>' + p + ' sayfa bulundu.<br/><span id="tpp-progress-detail"></span>');
            }
            $('#tpp-progress-detail').text(i + '. sayfa inceleniyor.');
            var a = $(d).find('#entry-list>li');
            a.each(function () {
              aa.push($(this).attr('data-author-id'));
            });
          },
          async: false
        });
        var ua = aa.reduce(function (p, c) {
          if (p.indexOf(c) < 0) p.push(c);
          return p;
        }, [
        ]);
      }
      var ua = aa.reduce(function (p, c) {
        if (p.indexOf(c) < 0)
        p.push(c);
        return p;
      }, [
      ]);
      $('#tpp-progress').append('<br/>başlıkta entry\'si bulunan ' + ua.length + ' yazar engelleniyor <img src="' + dotsImg + '" />');
      if (ua.length) {
        var c = 0;
        for (var i = 0; i < ua.length; i++) {
          var _w = ua[i];
          $.post(tppAddUrl + _w, function (d) {
            /*
            if (!d.IsBlocked) {
              $.post(tppUrl + _w);
            }
            */
            if (++c == ua.length) {
              ek$i.modal.hide();
              ek$i.success(ua.length + ' kişi troll\'lere eklendi.');
              $('#tpp-progress').remove();
              $('#tpp-today-form').find('button').css('display', '');
              ua = [
              ];
            }
          });
        }
      } else {
        ek$i.modal.hide();
        ek$i.error('başlığa bugün yazan olmamış ki?');
        $('#tpp-progress').remove();
        $('#tpp-today-form').find('button').css('display', '');
      }
    });
    $('#tpp-this-sure').on('click', function () {
      $('#tpp-this-form').find('button').css('display', 'none');
      $('#tpp-progress').remove();
      $('#tpp-this-form').find('fieldset').append('<div id="tpp-progress">başlığa mevcut kriterlerle entry giren yazarlar tespit ediliyor <img src="' + dotsImg + '" /></div>');
      var aa = [
      ];
      var p = 1;
      var u = window.location.href.split('?') [0];
      var q = decodeURIComponent(window.location.search.substring(1));
      if (q.length) {
        q = q.split('&');
        u += '?';
        for (var i = 0; i < q.length; i++) {
          var k = q[i].split('=') [0];
          var v = q[i].split('=') [1];
          if (k != 'p') {
            u += k + '=' + v + '&';
          }
        }
      } else {
        u = $('h1#title').find('a:first').attr('href') + '?';
      }
      for (var i = 1; i <= p; i++) {
        $.ajax({
          url: u + 'p=' + i,
          success: function (d) {
            if (i == 1) {
              p = parseInt($(d).find('.pager').first().attr('data-pagecount')) || 1;
              $('#tpp-progress').append('<br/>' + p + ' sayfa bulundu.<br/><span id="tpp-progress-detail"></span>');
            }
            $('#tpp-progress-detail').text(i + '. sayfa inceleniyor.');
            var a = $(d).find('#entry-list>li');
            a.each(function () {
              aa.push($(this).attr('data-author-id'));
            });
          },
          async: false
        });
        var ua = aa.reduce(function (p, c) {
          if (p.indexOf(c) < 0) p.push(c);
          return p;
        }, [
        ]);
      }
      var ua = aa.reduce(function (p, c) {
        if (p.indexOf(c) < 0)
        p.push(c);
        return p;
      }, [
      ]);
      $('#tpp-progress').append('<br/>başlığın bu halinde entry\'si bulunan ' + ua.length + ' yazar engelleniyor <img src="' + dotsImg + '" />');
      if (ua.length) {
        var c = 0;
        for (var i = 0; i < ua.length; i++) {
          var _w = ua[i];
          $.post(tppAddUrl + _w, function (d) {
            /*
            if (!d.IsBlocked) {
              $.post(tppUrl + _w);
            }
            */
            if (++c == ua.length) {
              ek$i.modal.hide();
              ek$i.success(ua.length + ' kişi troll\'lere eklendi.');
              $('#tpp-progress').remove();
              $('#tpp-this-form').find('button').css('display', '');
              ua = [
              ];
            }
          });
        }
      } else {
        ek$i.modal.hide();
        ek$i.error('başlığa bu kriterlerle yazan olmamış ki?');
        $('#tpp-progress').remove();
        $('#tpp-this-form').find('button').css('display', '');
      }
    });
    $('.tpp-fav').on('click', function () {
      var _i = parseInt($(this).attr('data-entry'));
      $.get('/entry/favorileyenler', {
        entryId: _i
      }).done(function (n) {
        fav = [
        ];
        $(n).find('a:not("#show-caylak-favs-link")').each(function () {
          fav.push($(this).text());
        });
        if (fav.length) {
          $('#tpp-fav-author-count').text(fav.length);
          ek$i.modal.show('#tpp-fav-confirm');
        } else if ($(n).find('#show-caylak-favs-link').length) {
          ek$i.error('entry\'yi sadece çaylaklar favorilemiş');
        } else {
          ek$i.error('entry\'yi favorileyen yok ki?');
        }
      });
    });
    $('#tpp-fav-sure').on('click', function () {
      var c = 0;
      if (fav.length) {
        $('#tpp-fav-confirm').find('button').css('display', 'none');
        $('#tpp-progress').remove();
        $('#tpp-fav-confirm').find('fieldset').append('<div id="tpp-progress">' + fav.length + ' kişi engelleniyor, lütfen bekleyin <img src="' + dotsImg + '" /></div>');
      }
      for (var i = 0; i < fav.length; i++) {
        var au = fav[i].replace(/ /g, '-').substring(1);
        $.get('/biri/' + au).done(function (h) {
          var _w = $(h).find('#who').val();
          $.post(tppAddUrl + _w, function (d) {
            /*
            if (!d.IsBlocked) {
              $.post(tppUrl + _w);
            }
            */
            if (++c == fav.length) {
              ek$i.modal.hide();
              ek$i.success(fav.length + ' kişi troll\'lere eklendi.');
              $('#tpp-progress').remove();
              $('#tpp-fav-confirm').find('button').css('display', '');
              fav = [
              ];
            }
          });
        });
      }
    });
  }
}