Extensions Manager

Сделай свой жизнь на LolzTeam проще!

  1. // ==UserScript==
  2. // @name Extensions Manager
  3. // @namespace Openresty
  4. // @version v1.0.0
  5. // @description Сделай свой жизнь на LolzTeam проще!
  6. // @author https://zelenka.guru/lays (openresty)
  7. // @match https://zelenka.guru/*
  8. // @grant GM_xmlhttpRequest
  9. // @grant GM.setValue
  10. // @grant GM.getValue
  11. // @grant unsafeWindow
  12. // @connect lzt.hasanbek.ru
  13. // @run-at document-body
  14. // @license MIT
  15. // ==/UserScript==
  16.  
  17. const
  18. ext_version = "1.0.0"
  19.  
  20. let nickname,
  21. userid;
  22.  
  23. (async function() {
  24. window.addEventListener("DOMContentLoaded",async (event) => {
  25. renderSettings();
  26. userid = document.querySelector("input[name=_xfToken").value.split(",")[0];
  27. nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
  28. })
  29. renderFunctions();
  30. })();
  31.  
  32.  
  33. function request(url) {
  34. return new Promise((resolve, reject) => GM_xmlhttpRequest({
  35. method: "GET",
  36. url: url,
  37. onload: response => resolve(response.responseText),
  38. onerror: error => resolve(error)
  39. }));
  40. }
  41.  
  42. function getUID() {
  43. return document.querySelector("input[name=_xfToken").value.split(",")[0];
  44. }
  45.  
  46.  
  47. function renderSettings() {
  48. if (document.querySelector(".secondaryContent a.button.block[href='account/personal-details']")) {
  49. let profileeditbtn = document.createElement('a')
  50. profileeditbtn.classList.add('block');
  51. profileeditbtn.classList.add('button');
  52. profileeditbtn.onclick = function () {
  53. dialogWindow();
  54. };
  55. profileeditbtn.innerHTML = 'Магазин расширений';
  56. document.querySelector(".topblock .secondaryContent").append(profileeditbtn)
  57. }
  58. }
  59.  
  60. function renderFunctions() {
  61. unsafeWindow.nickname = nickname;
  62. unsafeWindow.ext_version = ext_version;
  63. unsafeWindow.request = request;
  64. unsafeWindow.extmanager = true;
  65. let torender = [dialogWindow];
  66. let funcs = torender.map(e => e.toString());
  67. let script = document.createElement('script');
  68. script.appendChild(document.createTextNode(funcs.join("")));
  69. document.head.appendChild(script);
  70. }
  71.  
  72. async function dialogWindow() {
  73. nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim().replace(/<[^>]*>/g, ' ').replace(/\s{2,}/g, ' ').trim().replace(" Premium", "").trim();
  74.  
  75. let htmlall = `
  76. <iframe src='https://lzt.hasanbek.ru/extmanager/index.html' frameborder='0' width='100%' height='100%' id='areaext'>
  77. <script>
  78. window.addEventListener('message', function(event) {
  79. if (event.data == 'auth') {
  80. iframe = document.querySelectorAll('#areaext');
  81. iframe.forEach(function (e){
  82. e.contentWindow.postMessage(XenForo.visitor.user_id, "*");
  83. })
  84. }else {
  85.  
  86. }
  87. });
  88. </script>
  89. <style>
  90. .errorOverlay>.baseHtml {
  91. padding: 0px;
  92. height: 350px;
  93. }
  94. .xenOverlay .errorOverlay .errorDetails {
  95. padding: 0px;
  96. white-space: normal
  97. }
  98. </style>
  99. `
  100. let html_prem = `
  101. ${htmlall}
  102. `;
  103. return XenForo.alert(
  104. `${html_prem}`, 'Менеджер расширений'
  105. )
  106. }