MZ Spoiler

Spoilers for MZ

  1. // ==UserScript==
  2. // @name MZ Spoiler
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Spoilers for MZ
  6. // @author Murder
  7. // @match https://www.managerzone.com/?p=forum&sub=topic*
  8. // @icon https://www.google.com/s2/favicons?domain=lsue.edu
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. var template = `<div class="spoiler" style="border: 1px solid #ddd; padding: 3px;">
  16. <input type="button" class="btnSpoiler" value="Mostrar/Esconder Spoiler" style="background-color: palegreen">
  17. <div class="inner" style="display: none; border: 1px solid #eee;padding: 3px; margin: 3px;">
  18. ###text###
  19. </div>
  20. </div>`;
  21.  
  22. replaceSpoilers();
  23. //addMarkItUpEvent();
  24.  
  25. function replaceSpoilers() {
  26. let posts = document.getElementsByClassName('forum-post-content');
  27. let parsedMsg = '';
  28. for(let i = 0; i < posts.length; i++) {
  29. let text = posts[i].children[0].defaultValue;
  30. let exit = false;
  31. while(!exit) {
  32. if(posts[i].innerHTML.indexOf("[spoiler]") !== -1 && posts[i].innerHTML.indexOf("[/spoiler]") !== -1 &&
  33. posts[i].innerHTML.indexOf("[spoiler]") < posts[i].innerHTML.indexOf("[/spoiler]")) {
  34. let spoiler = posts[i].innerHTML.substring(posts[i].innerHTML.indexOf("[spoiler]"), posts[i].innerHTML.indexOf("[/spoiler]") + 10);
  35. let spoilerText = posts[i].innerHTML.substring(posts[i].innerHTML.indexOf("[spoiler]") + 9, posts[i].innerHTML.indexOf("[/spoiler]"));
  36. let readyTemplate = template.replace('###text###', spoilerText)
  37. posts[i].innerHTML = posts[i].innerHTML.replace(spoiler, readyTemplate);
  38. }
  39. else {
  40. exit = true;
  41. }
  42. }
  43.  
  44. let btn = document.getElementsByClassName('btnSpoiler');
  45. for(let i = 0; i < btn.length; i++) {
  46. btn[i].addEventListener('click', showSpoiler, false);
  47. }
  48. }
  49. }
  50.  
  51. function addMarkItUpEvent() {
  52. let markBtn = document.getElementsByClassName('markItUpButton markItUpButton12 preview')[0];
  53. markBtn.addEventListener('click', replaceMarkItUp, false);
  54. }
  55.  
  56. function replaceMarkItUp(obj) {
  57. var iframe = document.getElementsByClassName("markItUpPreviewFrame")[0];
  58. var checkExist = setInterval(function() {
  59. if (iframe) {
  60. let text = iframe.contentWindow.document.getElementsByTagName("div")[0].innerHTML;
  61. if(text.indexOf("[spoiler]") !== -1 && text.indexOf("[/spoiler]") !== -1 &&
  62. text.indexOf("[spoiler]") < text.indexOf("[/spoiler]")) {
  63. let spoiler = text.substring(text.indexOf("[spoiler]"), text.indexOf("[/spoiler]") + 10);
  64. let spoilerText = text.substring(text.indexOf("[spoiler]") + 9, text.indexOf("[/spoiler]"));
  65. let readyTemplate = template.replace('###text###', spoilerText)
  66. iframe.contentWindow.document.getElementsByTagName("div")[0].innerHTML = iframe.contentWindow.document.getElementsByTagName("div")[0].innerHTML.replace(spoiler, readyTemplate);
  67.  
  68. let btn = iframe.contentWindow.document.getElementsByClassName('btnSpoiler');
  69.  
  70. for(let i = 0; i < btn.length; i++) {
  71. btn[i].addEventListener('click', showSpoiler, false);
  72. }
  73. }
  74. clearInterval(checkExist);
  75. }
  76. }, 1000);
  77. }
  78.  
  79. function showSpoiler(obj) {
  80. var inner = obj.currentTarget.parentNode.getElementsByTagName("div")[0];
  81. if (inner.style.display == "none") {
  82. inner.style.display = "";
  83. }
  84. else {
  85. inner.style.display = "none";
  86. }
  87. }
  88.  
  89. })();