Board Formatting

Adds formatting for the code board

目前為 2015-08-06 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Board Formatting
  3. // @namespace http://www.hacker-project.com/
  4. // @version 1.1
  5. // @description Adds formatting for the code board
  6. // @author Kevin Mitnick
  7. // @match http://www.hacker-project.com/index.php?action=group*
  8. // @match http://hacker-project.com/index.php?action=group*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. function main() {
  13. // DEFINE YOUR NICKNAMES HERE
  14. var nns = [
  15. // FOR MASS NOTIFICATION, DO NOT CHANGE
  16. "all",
  17. // YOUR OWN NICKNAMES
  18. "your",
  19. "nicknames",
  20. "here"
  21. ];
  22. var username;
  23. var servers = document.getElementsByName("g_id")[0].getElementsByTagName("option");
  24. var firsttext = servers[0].innerHTML;
  25. var ind = firsttext.indexOf("'s");
  26. if (ind>-1) username=firsttext.substring(0, ind);
  27. var alltd = document.getElementsByTagName("fieldset")[0];
  28. if (new String(document.location.href).indexOf("&a2=leader")<0) process(alltd);
  29. var numMessages;
  30. var as = document.getElementsByTagName("a");
  31. for (var i = 0; i < as.length; i++) if (as[i].href.indexOf("index.php?action=group")>-1) {
  32. if (as[i].innerHTML.indexOf("(")>-1) {
  33. numMessages = parseInt(as[i].innerHTML.substring(as[i].innerHTML.indexOf("(")+4, as[i].innerHTML.indexOf(")")-3));
  34. break;
  35. }
  36. else {
  37. numMessages = 0;
  38. break;
  39. }
  40. }
  41. if (new String(document.location.href).indexOf("&a3=new_post")>-1) numMessages++;
  42. for (var x = 0; x < document.getElementsByClassName("emi8").length; x++) {
  43. var msgtd = document.getElementsByClassName("emi8")[x];
  44. if (x<numMessages) msgtd.style.backgroundColor="#4C4C00";
  45. for (var nni = 0; nni < nns.length; nni++) {
  46. var nn = nns[nni];
  47. if (msgtd.innerHTML.indexOf("@"+nn)>-1) msgtd.style.backgroundColor="#4C4C00";
  48. }
  49. if (username !== null && msgtd.innerHTML.indexOf(username)>-1) msgtd.style.backgroundColor="#4C4C00";
  50. }
  51. }
  52. function process(el) {
  53. var val = el.innerHTML;
  54. // XSS
  55. while (val.indexOf("[[")>-1) val = val.replace("[[", "<");
  56. while (val.indexOf("]]")>-1) val = val.replace("]]", ">");
  57. while (val.indexOf("blocked")>-1) val = val.replace("blocked", "script");
  58. el.innerHTML = val;
  59. var startingPoint = 0;
  60. while (val.indexOf("http", startingPoint)>-1) {
  61. startingPoint = val.indexOf("http", startingPoint);
  62. if (val.substring(startingPoint-2, startingPoint)=="l:") {
  63. var nextSpaceIndex = Math.min(val.indexOf("<", startingPoint), val.indexOf(" ", startingPoint));
  64. var href = val.substring(startingPoint, nextSpaceIndex);
  65. console.log(href);
  66. var first = val.substring(0, startingPoint), last = val.substring(nextSpaceIndex, val.length);
  67. var link = "<a href='"+href+"' target='_blank'>"+href+"</a>";
  68. console.log(link);
  69. el.innerHTML = first.substring(0, first.length-2)+link+last;
  70. val = el.innerHTML;
  71. startingPoint = val.indexOf(link)+link.length;
  72. }
  73. else startingPoint++;
  74. }
  75. var sar = [
  76. [":)", "http://goo.gl/QKRt2U"],
  77. ["xd", "http://goo.gl/21TUiI"]
  78. ];
  79. for (var sari = 0; sari < sar.length; sari++) {
  80. var sa = sar[sari];
  81. var s = sa[0];
  82. var addr = sa[1];
  83. while (val.toLowerCase().indexOf(s)>-1) {
  84. var first2 = val.substring(0, val.toLowerCase().indexOf(s));
  85. var last2 = val.substring(val.toLowerCase().indexOf(s)+s.length, val.length);
  86. el.innerHTML = first2+"<img src='"+addr+"' width='16px'/>"+last2;
  87. val = el.innerHTML;
  88. }
  89. }
  90. }
  91.  
  92. main();