STagila post hider script

Скрывает определенные посты с форума.

当前为 2016-08-29 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name STagila post hider script
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Скрывает определенные посты с форума.
  6. // @author rondo.devil@gmail.com (eXponenta)
  7. // @match http://stagila.ru/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13. //Load
  14. // возвращает cookie с именем name, если есть, если нет, то undefined
  15. function getCookie(name) {
  16. var matches = document.cookie.match(new RegExp(
  17. "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  18. ));
  19. return matches ? decodeURIComponent(matches[1]) : undefined;
  20. }
  21. var replaceAll = function(str, sel, to){
  22. while(str.indexOf(sel)>-1){
  23. str=str.replace(sel,to);
  24. }
  25. return str;
  26. };
  27. var filter = Array.prototype.filter;
  28.  
  29. var preset = "<a id='ext_hide_click' href='javascript:document.ext_showPost(#postindex, true)' style='color:red;font-size:10pt; display:none'>Сообщение скрыто, показать? </a>" +
  30. "<a id='ext_show_click' style='color:red;font-size:10pt; display:none' href='javascript:document.ext_showPost(#postindex, false)'> Сообщение показано, скрыть? </a>"+
  31. "</span> <span style='float:right; display:inline'><input type='button' value='Скрывать' onclick='document.ext_filter(#postindex,true);' /> <input type='button' value='Не скрывать' onclick='document.ext_filter(#postindex,false);' />";
  32.  
  33. var blacklist = [];
  34. var n = getCookie("stagila_black_list");
  35. if(n !== undefined){
  36. blacklist = n.split(",");
  37. }
  38.  
  39. var posts = document.querySelectorAll(".post_block");
  40.  
  41. posts.forEach(function(e,ind,arr){
  42. var newSpan = document.createElement("div");
  43. newSpan.id = "ext_hided";
  44. newSpan.style = "display: inline;";
  45. newSpan.innerHTML = replaceAll(preset, "#postindex",ind);
  46. e.querySelector(".row2").appendChild(newSpan);
  47. });
  48.  
  49. document.ext_showPost = function(id, show) {
  50. var p = posts;
  51. p[id].querySelector(".post_body").style.display=show?'':'none';
  52. p[id].querySelector(".author_info").style.display = show?'':'none';
  53.  
  54. p[id].querySelector('#ext_show_click').style.display = show?'':'none';
  55. p[id].querySelector('#ext_hide_click').style.display = show?'none':'';
  56. };
  57. posts.forEach(function(e, ind, arr){
  58. var sp = e.querySelector("[itemprop=name] span");
  59. var name = e.querySelector("[itemprop=name]").innerHTML;
  60. if(sp !== null)
  61. name = sp.innerHTML;
  62. if( blacklist.indexOf(name) > -1)
  63. document.ext_showPost(ind,false);
  64. });
  65. document.ext_filter = function(id, add){
  66. var sp = posts[id].querySelector("[itemprop=name] span");
  67. var name = posts[id].querySelector("[itemprop=name]").innerHTML;
  68. if(sp !== null)
  69. name = sp.innerHTML;
  70. var b = blacklist;
  71. if(add){
  72. b.push(name);
  73. }
  74. else{
  75. var i = blacklist.indexOf(name);
  76. if(i > -1){
  77. b.splice(i, 1);
  78. }
  79. }
  80. var date = new Date();
  81. date.setDate(date.getDate() + 30);
  82. document.cookie = "stagila_black_list="+b.join(',') + "; expires=" + date.toUTCString() +";";
  83. window.location.reload();
  84. };
  85.  
  86.  
  87. })();