Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.48 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Blokowanie na DW
  3. // @include http://darkwarez.pl*
  4. // @include https://darkwarez.pl*
  5. // @description Kappa
  6. // @exclude
  7. // @version 0.0.1.20141026205507
  8. // ==/UserScript==
  9.  
  10. (function() {
  11. // Get stored hidden users from cookie
  12. var kappa = "Użytkownik";
  13. var users = [];
  14. var cookieName = "phpUserHide";
  15. for (var i = 0; i < document.cookie.split('; ').length; i++) {
  16. var oneCookie = document.cookie.split('; ')[i].split('=');
  17. if (oneCookie[0] == cookieName) {
  18. users = oneCookie[1].split(', ');
  19. break;
  20. }
  21. }
  22.  
  23. // Cursor functions
  24. var curPointer = function(event) {
  25. event.target.style.cursor = 'pointer';
  26. event.preventDefault();
  27. };
  28. var curDefault = function(event) {
  29. event.target.style.cursor = 'default';
  30. event.preventDefault();
  31. };
  32.  
  33. // Add or remove a user from the cookie
  34. var addRemoveUser = function(event) {
  35. // Parse current cookie
  36. for(j = 0; j < document.cookie.split('; ').length; j++ ) {
  37. var oneCookie = document.cookie.split('; ')[j].split('=');
  38. if (oneCookie[0] == cookieName) {
  39. users = oneCookie[1].split(', ');
  40. break;
  41. }
  42. }
  43. var user = escape(event.target.nextSibling.innerHTML)
  44. notFound = true;
  45. for (var j = 0; j < users.length; j++) {
  46. if (users[j] == user) {
  47. users.splice(j, 1);
  48. notFound = false;
  49. }
  50. }
  51. if (notFound)
  52. users.push(user);
  53. if (users.length > 0) {
  54. var date = new Date();
  55. var days = 365;
  56. date.setTime(date.getTime() + (days*24*60*60*1000));
  57. var expires = '; expires=' + date.toGMTString();
  58. var value = users.join(', ');
  59. document.cookie = cookieName + '=' + value + expires + '; path=/';
  60. } else {
  61. document.cookie = cookieName + '=;expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/';
  62. }
  63. window.alert(unescape(kappa) + ' został ' + (notFound ? 'zablokowany.' : 'odblokowany.')
  64. + '\nOdśwież stronę.');
  65. event.preventDefault();
  66. };
  67. // Toggle display of user's post
  68. var togglePost = function(event) {
  69. var displayState = event.target.getAttribute('displaystate');
  70. if (displayState == 'none')
  71. displayState = '';
  72. else
  73. displayState = 'none';
  74. event.target.setAttribute('displaystate', displayState);
  75.  
  76. containingRow = event.target.parentNode.parentNode;
  77. var innerTags = containingRow.getElementsByTagName('*');
  78. for (var i = 0; i < innerTags.length; i++) {
  79. var tagClass = innerTags[i].getAttribute('class');
  80. if (tagClass == 'postbody' || tagClass == 'postsig'
  81. || tagClass == 'postdetails' || innerTags[i].tagName == 'TABLE')
  82. innerTags[i].style.display = displayState;
  83. }
  84. event.preventDefault();
  85. };
  86. // Toggle display of user's quote
  87. var toggleQuote = function(event) {
  88. var displayState = event.target.getAttribute('displaystate');
  89. if (displayState == 'none')
  90. displayState = 'table-row';
  91. else
  92. displayState = 'none';
  93. event.target.setAttribute('displaystate', displayState);
  94.  
  95. // Jump to parent row
  96. var containingRow = event.target.parentNode.parentNode.parentNode.parentNode.nextSibling;
  97. // Find containing row
  98. while (containingRow.nodeType != 1)
  99. containingRow = containingRow.nextSibling;
  100. containingRow.style.display = displayState;
  101.  
  102. event.preventDefault();
  103. };
  104.  
  105. // Find all the usernames in the page
  106. var results = document.evaluate("//span[@class='name']/b|//span[@class='name']/strong", document, null,
  107. XPathResult.ANY_TYPE, null);
  108. var resultNodes = [];
  109. var aResult;
  110. while (aResult = results.iterateNext())
  111. resultNodes.push(aResult);
  112.  
  113. // Loop through every user post on the page
  114. for (var i in resultNodes) {
  115. var containingRow = resultNodes[i].parentNode.parentNode.parentNode;
  116. // Format whitespace
  117. var user = escape(resultNodes[i].innerHTML);
  118.  
  119. // Flag whether the user is in our hide list
  120. var notFound = true;
  121. for (var j = 0; j < users.length; j++) {
  122. if (users[j] == user) {
  123. notFound = false;
  124. }
  125. }
  126.  
  127. // Add relevant event handlers to user's name and a toggler node
  128. var toggler = document.createElement('span');
  129. toggler.setAttribute('title', "Kliknij aby zablokować/odblokować.");
  130. toggler.appendChild(document.createTextNode('[X] '));
  131. toggler.style.fontSize = "7pt";
  132. toggler.addEventListener('mouseover', curPointer, true);
  133. toggler.addEventListener('mouseout', curDefault, true);
  134. toggler.addEventListener('click', addRemoveUser, true);
  135.  
  136. resultNodes[i].parentNode.insertBefore(toggler, resultNodes[i]);
  137.  
  138. // If this user isn't in our hide list, skip to the next user
  139. if (notFound)
  140. continue;
  141.  
  142. // Find the first element node (td) in the containing row
  143. var elem = containingRow.firstChild;
  144. while (elem.nodeType != 1)
  145. elem = elem.nextSibling;
  146.  
  147. // Create a span to control toggling
  148. var span = document.createElement('span');
  149. span.appendChild(document.createTextNode('Pokaż/Ukryj'));
  150. span.appendChild(document.createElement('br'));
  151. span.style.fontSize = "10pt";
  152. span.setAttribute('class', 'gensmallbold');
  153. span.style.textDecoration = 'underline';
  154. span.setAttribute('displaystate', 'none');
  155. span.addEventListener('mouseover', curPointer, true);
  156. span.addEventListener('mouseout', curDefault, true);
  157. span.addEventListener('click', togglePost, true);
  158.  
  159. // Insert the span after the username and before the <br>
  160. elem.insertBefore(span, elem.firstChild.nextSibling.nextSibling);
  161. // Insert a <br> after the username and before the span
  162. elem.insertBefore(document.createElement('br'), elem.firstChild.nextSibling.nextSibling);
  163.  
  164. var innerTags = containingRow.getElementsByTagName('*');
  165. for (var i = 0; i < innerTags.length; i++) {
  166. var tagClass = innerTags[i].getAttribute('class');
  167. if (tagClass == 'postbody' || tagClass == 'postsig'
  168. || tagClass == 'postdetails' || innerTags[i].tagName == 'TABLE')
  169. innerTags[i].style.display = 'none';
  170. }
  171. }
  172.  
  173. // Find all the usernames quoted in the page
  174. var results = document.evaluate("//td[@class='quote']/parent::*/preceding-sibling::*/td/span/b|"
  175. + "//td[@class='quote']/parent::*/preceding-sibling::*/td/span/strong", document, null,
  176. XPathResult.ANY_TYPE, null);
  177. var resultNodes = [];
  178. var aResult;
  179. while (aResult = results.iterateNext())
  180. resultNodes.push(aResult);
  181.  
  182. // Loop through every user quote on the page
  183. for (var i in resultNodes) {
  184. var containingRow = resultNodes[i].parentNode.parentNode.parentNode.nextSibling;
  185. while (containingRow.nodeType != 1)
  186. containingRow = containingRow.nextSibling;
  187.  
  188. // Find username
  189. var usermatch = resultNodes[i].innerHTML.match(/(.*) wrote:$/);
  190. if (usermatch)
  191. var user = escape(usermatch[1]);
  192. else
  193. continue;
  194.  
  195. // Flag whether the user is in our hide list
  196. var notFound = true;
  197. for (var j = 0; j < users.length; j++) {
  198. if (users[j] == user) {
  199. notFound = false;
  200. }
  201. }
  202.  
  203. // If this user isn't in our hide list, skip to the next user
  204. if (notFound)
  205. continue;
  206.  
  207. // Create a span to control toggling
  208. var span = document.createElement('span');
  209. span.appendChild(document.createElement('br'));
  210. span.appendChild(document.createTextNode('Pokaż/Ukryj'));
  211. span.style.fontSize = "10pt";
  212. span.setAttribute('class', 'gensmallbold');
  213. span.style.textDecoration = 'underline';
  214. span.setAttribute('displaystate', 'none');
  215. span.addEventListener('mouseover', curPointer, true);
  216. span.addEventListener('mouseout', curDefault, true);
  217. span.addEventListener('click', toggleQuote, true);
  218.  
  219. resultNodes[i].appendChild(span);
  220.  
  221. // Hide the quote
  222. containingRow.style.display = 'none';
  223. }
  224.  
  225. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement