🏠 Home 

factornewsHelper

Gives options on Factornews website (remove users comments...)


Install this script?
  1. // ==UserScript==
  2. // @name factornewsHelper
  3. // @version 0.3
  4. // @description Gives options on Factornews website (remove users comments...)
  5. // @include /^http(|s)://www\.factornews\.com/(actualites|article|preview|test|enbref)/.*\.html$/
  6. // @grant none
  7. // @author iceman94
  8. // @copyright 2014+, iceman94
  9. // @namespace 30bffff65b7330aeec839b096aa3d2ab
  10. // ==/UserScript==
  11. //=======================================================================================================
  12. // Cross-browsers load function
  13. // Tests in this order :
  14. // -support for jQuery API
  15. // |-uses $(window).load method if available
  16. // |-uses $(window).ready method if available
  17. // -support for DOMContentLoaded event (compatible only with the following browsers :
  18. // Chrome >= 0.2; Firefox >= 1.0; IE >= 9.0; Opera >= 9.0; Safari >= 3.1)
  19. // -support for document.attachEvent
  20. // -uses setTimeout w/ 5000ms delay
  21. //=======================================================================================================
  22. function XBLoad(func, verbose)
  23. {
  24. verbose = verbose || false;
  25. if (window.jQuery)
  26. {
  27. if ($(window).load)
  28. {
  29. if (verbose == true) { console.log('Javascript loaded using $(window).load method'); };
  30. return $(window).load(function() { func(); });
  31. }
  32. else if ($(window).ready)
  33. {
  34. if (verbose == true) { console.log('Javascript loaded using $(window).ready method'); };
  35. return $(window).ready(function() { func(); });
  36. };
  37. }
  38. else if (document.addEventListener)
  39. {
  40. if (verbose == true) { console.log('Javascript loaded using document.addEventListener method'); };
  41. document.addEventListener('DOMContentLoaded', function(event)
  42. {
  43. return func();
  44. });
  45. }
  46. else if (document.attachEvent)
  47. {
  48. if (verbose == true) { console.log('Javascript loaded using document.attachEvent method'); };
  49. document.attachEvent('load', function()
  50. {
  51. return func();
  52. });
  53. }
  54. else
  55. {
  56. if (verbose == true) { console.log('Javascript loaded using setTimeout method'); };
  57. return setTimeout(function() { func(); }, 5000);
  58. };
  59. };
  60. //=======================================================================================================
  61. // Setting up functions
  62. //=======================================================================================================
  63. // Retrieves all comments for a given user
  64. function getComBlocks(user)
  65. {
  66. var coll = document.getElementsByTagName('div');
  67. var l = coll.length;
  68. var resArr = new Array;
  69. for (var i=0; i<l; i++)
  70. {
  71. if(coll[i].className == 'comsItemPseudo' && coll[i].textContent == user)
  72. {
  73. resArr.push(coll[i]);
  74. };
  75. };
  76. return resArr;
  77. };
  78. // Replaces all comments by a custom message
  79. function remComBlocks(comBlocks, msg)
  80. {
  81. var coll = comBlocks;
  82. var l = coll.length;
  83. for (var i=0; i<l; i++)
  84. {
  85. var tgt = coll[i].parentNode.parentNode.getElementsByClassName('comsItemContent')[0];
  86. tgt.innerHTML = '<i>' + msg + '</i>';
  87. };
  88. };
  89. // Wrapper for getComBlocks and remComBlocks for a collection of users
  90. function manageUsers(usersColl, msg)
  91. {
  92. var l = usersColl.length;
  93. for (var i=0; i<l; i++)
  94. {
  95. remComBlocks(getComBlocks(usersColl[i]), msg);
  96. };
  97. };
  98. // Displays dialog to add users to ban and, if modifications occurs, reloads the page
  99. function askWhomToBan()
  100. {
  101. if (localStorage.getItem('usersToBan'))
  102. {
  103. var users = window.prompt('Enter comma-separated users to ban:', localStorage.getItem('usersToBan'));
  104. }
  105. else
  106. {
  107. var users = window.prompt('Enter comma-separated users to ban:', 'user1,user2,user3');
  108. };
  109. if (users !== null)
  110. {
  111. localStorage.setItem('usersToBan', users);
  112. if (localStorage.getItem('usersToBan'))
  113. {
  114. location.reload();
  115. manageUsers(strToArr(localStorage.getItem('usersToBan')), 'MESSAGE REDACTED');
  116. };
  117. };
  118. };
  119. // Converts comma-separated string to array
  120. function strToArr(input)
  121. {
  122. if (input)
  123. {
  124. return input.split(',');
  125. };
  126. };
  127. // Adds tag to page to run askWhomToBan
  128. function addTag(tag)
  129. {
  130. var newTag = document.createElement('a');
  131. newTag.id = 'banTag';
  132. newTag.className = 'factorNavBarBtn';
  133. newTag.textContent = ' ';
  134. newTag.href = 'javascript:void(0);';
  135. newTag.onclick = function() { askWhomToBan(); };
  136. tag.appendChild(newTag);
  137. };
  138. //=======================================================================================================
  139. // Showtime !
  140. //=======================================================================================================
  141. XBLoad(addTag(document.getElementById('userPanel')));
  142. if (localStorage.getItem('usersToBan'))
  143. {
  144. XBLoad(manageUsers(strToArr(localStorage.getItem('usersToBan')), 'MESSAGE REDACTED'));
  145. };