iEMB+

Makes the new iEMB more tolerable

当前为 2018-01-15 提交的版本,查看 最新版本

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