Wikidot PM shortcut

Script that adds a small envelope icon next to usernames for a Wikidot PM shortcut

  1. /*
  2. * Wikidot PM Shortcut
  3. * Modified from https://scp-wiki.wdfiles.com/local--files/usertools/scpwiki-pm-shortcut.user.js
  4. */
  5.  
  6. // ==UserScript==
  7. // @name Wikidot PM shortcut
  8. // @namespace https://xtexx.eu.org/
  9. // @version 1.0.0
  10. // @description Script that adds a small envelope icon next to usernames for a Wikidot PM shortcut
  11. // @author xtex
  12. // @match *://www.scp-wiki.net/*
  13. // @match *://*.wikidot.com/*
  14. // @license MIT
  15. // @grant none
  16. // ==/UserScript==
  17.  
  18. (function() {
  19. 'use strict';
  20. var loginStatus = document.getElementById('login-status');
  21. var myAccount = document.getElementById('my-account');
  22.  
  23. function addCheckSpan()
  24. {
  25. var span = document.createElement('span');
  26. span.id = "checkEnvelope";
  27. span.style.display = "none";
  28. // document.getElementById('recent-posts-container').appendChild(span);
  29. document.body.appendChild(span);
  30. }
  31.  
  32. function addEnvelopes()
  33. {
  34. // console.log('Doing addEnvelopes');
  35. if (!document.getElementById('checkEnvelope'))
  36. {
  37. // console.log('Checkspan not found.');
  38. var container = document.getElementById('content-wrap');
  39. var spans = container.getElementsByTagName('span');
  40. var userNumber;
  41.  
  42. for (let x in spans)
  43. {
  44. const span = spans[x];
  45. if (span.innerHTML && span.innerHTML.indexOf("user:info") != -1 && span.innerHTML.indexOf("messages#/new/") == -1)
  46. {
  47. // console.log("Found a user");
  48. userNumber = span.innerHTML.substring(span.innerHTML.indexOf('userInfo(') + 9, span.innerHTML.indexOf(');'));
  49. span.innerHTML += "<a href=\"http://www.wikidot.com/account/messages#/new/" + userNumber + "\" target=\"_blank\"><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAICAIAAABChommAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEVSURBVHjaVJDNSsNAFIVnkslkTH8oUjSk0GQRYuLKQKXPoD6BG0HBJ3PlqroQulLjRrtRuxJ8AqEGIvlrMpMZJyKIl7O697v3HC6c7gfnp0eqhgRlAIK/EkDB2jpfX1zO0dnJwa5vh6FHCBaMgV9QQE3L83K5fD9mh0qv37EdazaL4lWSpmWSpFJZVq4+4uurB9cdGx1VoVVtjYbhnnt7/yyEMAzd2CCMNnfRy3Tib20PaM2QvM6r2hmbvOE380WvS6RZmpeTcGdkDXlFIQRItqAQRVE5tokQ+oy/ZKrAdyxzsyhrHbcAwroO+91BywIvsD1VaXMzziklRI4MTDCKHl+TjDVVJv49APxsAZXgp8XbtwADAHq0bNwCmPgUAAAAAElFTkSuQmCC\" style=\"margin-left: 5px; margin-right: 5px;\"></a>";
  50.  
  51. if (!document.getElementById('checkEnvelope'))
  52. {
  53. // console.log('Adding checkspan at ' + x);
  54. addCheckSpan();
  55. }
  56. }
  57. }
  58. }
  59. }
  60.  
  61. if (myAccount)
  62. {
  63. setTimeout(addEnvelopes, 500);
  64. setInterval(addEnvelopes, 5000);
  65. }
  66. })();