HideComment

скрипт ведения игнор-листа на ИноСМИ

  1. // ==UserScript==
  2. // @id InoSMI_HideComments
  3. // @name HideComment
  4. // @version 1.03
  5. // @namespace MIT
  6. // @author
  7. // @description скрипт ведения игнор-листа на ИноСМИ
  8. // @include http://inosmi.ru/*
  9. // @require http://code.jquery.com/jquery.min.js
  10. // @require https://greasyfork.org/scripts/8269-jq-dom-observer-function/code/JQ_DOM_observer_function.js?version=38428
  11. // @grant FUNCTION
  12. // ==/UserScript==
  13.  
  14. //прототип очистки массива
  15. Array.prototype.clean = function() {
  16. // сортировка массива
  17. this.sort();
  18. // очистка массива от пустых переменных
  19. for (var i = this.length - 1; i > 0; i--) {
  20. if (this[i] == "")
  21. this.splice( i, 1);
  22. }
  23. // очистка массива от повторяющихся элементов
  24. for (var i = this.length - 1; i > 0; i--) {
  25. if (this[i] == this[i-1])
  26. this.splice( i, 1);
  27. }
  28. return this;
  29. };
  30.  
  31. var to_hide = new Array();
  32. var anticlone = "false";
  33.  
  34. $(document).ready(function() {
  35. //инициируем и считываем массив игноров
  36. if (localStorage.getItem('to_hide')) {
  37. to_hide = localStorage.getItem('to_hide').split(",");
  38. }
  39. else {
  40. to_hide.push('u_193012875');
  41. to_hide.push('u_207772399');
  42. }
  43. to_hide.clean();
  44. //считываем значение переменной anticlone
  45. if (localStorage.getItem('anticlone')) {
  46. anticlone = localStorage.getItem('anticlone');
  47. }
  48. //добавляем ссылку управления антиклоном
  49. $("div.addComment").before('<div><center><a id="anticlone"></a></center></div><br>');
  50. if (anticlone=="true") {
  51. $("a[id='anticlone']").html('<b>Скрыть невидимые знаки в никах</b>');
  52. }
  53. else {
  54. $("a[id='anticlone']").html('<b>Показать невидимые знаки в никах</b>');
  55. }
  56. //отслеживаем событие управление антиклоном
  57. $("a[id='anticlone']").click(function() {
  58. if (anticlone=="true") {
  59. anticlone = "false";
  60. $(this).html('<b>Показать невидимые знаки в никах</b>');
  61. }
  62. else {
  63. anticlone = "true";
  64. $(this).html('<b>Скрыть невидимые знаки в никах</b>');
  65. }
  66. localStorage.setItem('anticlone', anticlone);
  67. DoHideComment();
  68. });
  69. //скрываем комментарии после загрузки страницы
  70. DoHideComment();
  71. //отслеживаем событие добавления нового контента (разворачивание веток)
  72. $("li[id*='comment']").observe("childlist", "ul li:first", function() {
  73. DoHideComment();
  74. });
  75. });
  76.  
  77. //функция скрытия комментариев
  78. function DoHideComment() {
  79. if (to_hide.length != 0) {
  80. $.each(to_hide, function() {
  81. var obj = $("span[id*="+this+"]").parent();
  82. obj.html('Комментарий "'+$("span[id*="+this+"]").html()+'" скрыт скриптом');
  83. obj.append('<br><a class="unhide" id="'+this+'">Снять игнор</a>');
  84. obj.next().hide();
  85. obj.next().next().hide();
  86. });
  87. }
  88. //показываем или скрываем плюсы в никах
  89. $("span.orang").each(function() {
  90. var nick = $(this).html();
  91. if (anticlone=="true") {
  92. nick = nick.replace(/\s/g,'+');
  93. }
  94. else {
  95. nick = nick.replace(/\+/g,' ');
  96. }
  97. $(this).html(nick);
  98. });
  99. //отслеживаем клик по нику для добавления в игнор
  100. $("span[id*='u_']").unbind("click").click(function() {
  101. var obj = $(this).attr("id").substr(0,11);
  102. if (confirm('Добавить пользователя ID='+obj+' в игнор-лист?')) {
  103. to_hide.push(obj);
  104. localStorage.setItem('to_hide', to_hide);
  105. DoHideComment();
  106. }
  107. });
  108. //остлеживаем событие снятия игнора
  109. $(".unhide").unbind("click").one("click", function() {
  110. var obj = $(this).attr("id");
  111. if (confirm('Вы действительно хотите снять игнор c пользователя?')) {
  112. to_hide.splice($.inArray(obj, to_hide), 1);
  113. localStorage.setItem('to_hide', to_hide);
  114. location.reload();
  115. }
  116. });
  117. }