iEMB+

Makes the new iEMB more tolerable

当前为 2017-11-09 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name iEMB+
  3. // @namespace http://yeoxingyee.ml/
  4. // @version 1.0.3
  5. // @description Makes the new iEMB more tolerable
  6. // @author YXY
  7. // @match *://iemb.hci.edu.sg/Board/BoardList*
  8. // @match *://iemb.hci.edu.sg/Board/Detail*
  9. // @match *://iemb.hci.edu.sg/Board/content*
  10. // @grant none
  11. // ==/UserScript==
  12. window.onload=function(){
  13. var link = document.createElement("link");
  14. link.href = "https://dl.dropboxusercontent.com/s/yed55pppaod34jd/iemb%2B.css";
  15. link.type = "text/css";
  16. link.rel = "stylesheet";
  17. link.id = "darkMode";
  18. var script = document.createElement("script");
  19. script.src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js";
  20. if(localStorage.getItem("iEMBDark") == "1") document.getElementsByTagName("head")[0].appendChild(link);
  21. document.getElementsByTagName("head")[0].appendChild(script);
  22. var firstTime = localStorage.getItem("iEMBFirst");
  23. if(!firstTime){
  24. window.alert("Welcome to iEMB+!\nThis is a mini tutorial on how to use this script!\n(Click OK to continue)");
  25. window.alert("Firstly, the read all button will read everything! (Refresh after the reload to make sure everything's read) \nTip: 1/3");
  26. window.alert("Next, you can toggle dark/light mode by clicking the button in the top menu! \nTip: 2/3");
  27. window.alert("Lastly, change your profile picture by clicking on it! \nTip: 3/3");
  28. window.alert("And... that's it! If you have any questions / feedback contact me at \"yeoxingyee30@gmail.com\" with the subject heading of \"iEMB+ Feedback!\"\nEnjoy!");
  29. localStorage.setItem("iEMBFirst", "1");
  30. }
  31. var dp = localStorage.getItem("profilePic");
  32. if(!dp){
  33. dp = window.prompt("Profile pic not set! \n Please enter a direct link to the image that you want for your profile picture!");
  34. $('.iemb_user_left>img').attr('src', dp);
  35. localStorage.setItem("profilePic", dp);
  36. }
  37. console.log("iEMB+: Initialising...");
  38. var verbose = document.createElement("div");
  39. verbose.id = "verbose";
  40. document.getElementsByTagName("body")[0].appendChild(verbose);
  41. $("#verbose").css("background","#000");
  42. $("#verbose").css("opacity", "0.6");
  43. $("#verbose").css("color", "white");
  44. $("#verbose").css("position", "fixed");
  45. $("#verbose").css("top", "0");
  46. $("#verbose").css("pointer-events", "none");
  47. var x = $('.messageboard').length;
  48. $("#allMsg a em").text(x);
  49. var reader = '<button id="reader" onClick="autoread()"><a style="text-decoration: none; font-weight: normal;" href="#">Read All</a></button>';
  50. $(".unread_mess_bg").append(reader);
  51. var scriptinject = document.createElement("script");
  52. scriptinject.innerHTML = ["var i = 0;",
  53. "var x = $('.messageboard').length;",
  54. "function autoread(){",
  55. " document.getElementById('verbose').innerHTML += 'iEMB+: Running checks...<br />';",
  56. " document.getElementById('verbose').innerHTML += 'iEMB+: '+ x + ' messages remaining to read.<br />';",
  57. " $('#reader a').text('Reading all messages...');",
  58. " if (x=='0'){",
  59. " $('#reader a').text('All Messages are already Read!');",
  60. " setTimeout(function() { $('#reader a').text('Read All'); }, 2000);",
  61. " return;",
  62. " }",
  63. " var iframeread;",
  64. " iframeread = document.createElement('iframe');",
  65. " document.body.appendChild(iframeread);",
  66. " iframeread.height = '0';",
  67. " iframeread.src = $('a.messageboard')[i].href;",
  68. " x--;",
  69. " i++;",
  70. " checkread();",
  71. "}",
  72. "function checkread(){",
  73. " if (!x){",
  74. " document.getElementById('verbose').innerHTML += 'Done!<br />';",
  75. " $('#reader a').text('Done!');",
  76. " location.reload();",
  77. " }",
  78. "else if(x) {",
  79. " document.getElementById('verbose').innerHTML += 'iEMB+: Not done yet! rerunning...<br />';",
  80. " autoread();",
  81. " }",
  82. "}",
  83. " function setDP(){",
  84. " var dp = localStorage.getItem('profilePic');",
  85. " $('.iemb_user_left>img').attr('src', dp);",
  86. " $('.iemb_user_left>img').css('border-radius', '100%');",
  87. "}",
  88. " function changeDP(){",
  89. " var newdp = window.prompt('Enter URL of new image for your profile picture!');",
  90. " if(newdp){localStorage.setItem('profilePic', newdp);",
  91. " setDP();}",
  92. "}",
  93.  
  94. ].join('\n');
  95. document.getElementsByTagName("head")[0].appendChild(scriptinject);
  96. var iframe = document.createElement("iframe");
  97. $('img[alt="Important"]').css("filter", "invert(0)");
  98. $('img[alt="Urgent"]').css("filter", "invert(0)");
  99. $('img[alt="Information"]').css("filter", "invert(0)");
  100. setDP();
  101. $('.iemb_user_left>img').click(function(){ changeDP();});
  102. $('.iemb_user_left>img').css("height", "40");
  103. $('.iemb_user_left>img').css("width", "40");
  104. $('.iemb_user_left>img').css("background-size", "cover");
  105. var toggleDark;
  106. if(localStorage.getItem("iEMBDark") == "0" || !localStorage.getItem("iEMBDark")){
  107. toggleDark = '<li style="text-align:center;"><a href="#" id="DarkToggle"><i class="fa fa-moon-o" aria-hidden="true"></i><br />Dark Mode</a></li>';
  108. }
  109. else if(localStorage.getItem("iEMBDark") == "1"){
  110. toggleDark = '<li style="text-align:center;"><a href="#" id="DarkToggle"><i class="fa fa-sun-o" aria-hidden="true"></i><br />Light Mode</a></li>';
  111. }
  112. $(toggleDark).insertBefore("#iemb_topnav .drop");
  113. console.log("iEMB+: Initialisation complete! All systems green!");
  114. $("#DarkToggle").click(function() {
  115. if($("#darkMode").length){
  116. $("#darkMode").remove();
  117. document.getElementById("DarkToggle").innerHTML = "<i class='fa fa-moon-o' aria-hidden='true'></i><br />Dark Mode";
  118. localStorage.setItem('iEMBDark', "0");
  119. return;
  120. }
  121. if(!$("#darkMode").length){
  122. document.getElementsByTagName("head")[0].appendChild(link);
  123. document.getElementById("DarkToggle").innerHTML = "<i class='fa fa-sun-o' aria-hidden='true'></i><br />Light Mode";
  124. localStorage.setItem('iEMBDark', "1");
  125. }
  126. });
  127. $(".iemb_sidebar").css("height", "auto");
  128. $(".iemb_sidebar").css("min-height", "100%");
  129. };