StickyNotes

Заметки для юзеров Lolzteam

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         StickyNotes
// @namespace    StickyNotes
// @version      v2
// @description  Заметки для юзеров Lolzteam
// @author       https://zelenka.guru/lays (openresty)
// @match        https://zelenka.guru/*
// @grant        GM.setValue
// @grant        GM.getValue
// @grant        unsafeWindow
// @run-at       document-body
// @license MIT
// ==/UserScript==

let notices;

(async function() {
    notices     = await GM.getValue("notices") ? GM.getValue("notices") : `{"users": {}}`;
    window.addEventListener("DOMContentLoaded",(event) => {
    profileRender();
    });
    renderFunctions();
})();

async function shortcutCall() {
    let returnit = `[exceptids=${await shortcut}]
    
    [/exceptids]`
    document.querySelector(".fr-element.fr-view.fr-element-scroll-visible p").innerHTML = await returnit;
}


function setShortcut(e) {
    GM.setValue("adblock", e)
    adblock = e;
    XenForo.alert('AdBlock настроен', 1, 10000)
}


async function profileRender() {
  if (!document.querySelector(".avatarScaler")) {return false;}
  notices = await JSON.parse(await notices);
  nick_val = document.querySelector("h1.username span").innerHTML.replace(/ <i.*?>.*?<\/i>/ig,'')
  let noticer = document.querySelector(".insuranceDeposit");
  if (!notices.users[nick_val]) {
    notices.users[nick_val] = {
      'text': 'заметка не установлена'
    }
    notice = await notices.users[nick_val]
  }else {
     notice = await notices.users[nick_val]
  }
  let notice_render = `
  <br>
  <div class="section insuranceDeposit">
      <div class="secondaryContent">
          <h3>
                  Заметка для ${nick_val}
          </h3>

          <h3 style="margin-bottom: 0px; font-size: 18px !important;" class="amount">
          ${await notice.text}
          </h3>
          <div style="margin-top: 15px;  display: flex; gap: 5px;">
              <a class="button leftButton primary" onclick="noteSet(nick_val)">Изменить заметку</a>
          </div>
      </div>
  </div>`;
  // <a class="button leftButton primary" onclick="voteTrust(${blzt_trust_val})">Изменить рейтинг👍👎</a>
  let notice_block = document.createElement("div");
  notice_block.innerHTML = notice_render;

  noticer.append(notice_block);
}

function noteSet(trust) {
  nick_val = document.querySelector("h1.username span").innerHTML.replace(/ <i.*?>.*?<\/i>/ig,'')
  let html = `
  <i>Введите комментарий,>
  <input id="commentt" style=" padding: 6px;border-radius: 6px;height: 20px;background: #303030;color: white;border: 1px solid rgb(54, 54, 54); placeholder="Заметка">
  <div style="margin-top: 15px;  display: flex; gap: 5px;">
  <a class="button leftButton primary" onclick="commitNote('${nick_val}')">Сохранить</a>
  `;
  XenForo.alert(html, "Изменить заметку");
}

async function commitNote(nick_val) {
  console.log(await notices)
  notices = await JSON.parse(await notices);
  let comment = document.querySelector("#commentt").value;
  if (!comment)  {
      return XenForo.alert("Укажите комментарий!", 1, 10000)
  }
  if (!notices.users[nick_val]) {
    notices.users[nick_val] = {
      'text': comment
    }
  }else {
      notices.users[nick_val].text = comment;
  }
 
  setCache(JSON.stringify(notices))
  location.reload()
}

async function setCache(e) {
  return await GM.setValue('notices', e);
}

function renderFunctions() {
    unsafeWindow.notices = notices;
    unsafeWindow.setShortcut = e => setShortcut(e);
    let torender = [dialogWin, commitNote, noteSet, profileRender];
    unsafeWindow.setCache = e => setCache(e);
    let funcs = torender.map(e => e.toString());
    let script = document.createElement('script');
    script.appendChild(document.createTextNode(funcs.join("")));
    document.head.appendChild(script);
}

async function dialogWin() {
    nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim().replace(/<[^>]*>/g, ' ').replace(/\s{2,}/g, ' ').trim().replace(" Premium", "").trim();

    let htmlall = `
    <div id="settings1-content" class="settings-content">
      <h2>FuckMouse</h2>
   
      <label>
        <span>ID Юзеров (через запятую)</span><br>
        <input id="secretph" placeholder="123, 1234, и т.д..." style="margin-top: 4px;">
        <a onclick="setShortcut(document.querySelector('#secretph').value)">Сохранить</a>
      </label>
    </div>



    <style>
    .errorOverlay>.baseHtml {
        padding: 0px;
    }
    .xenOverlay .errorOverlay .errorDetails {
        padding: 0px;
        white-space: normal;
    }
    .errorDetails {
      white-space: normal;
      padding: 0;
      margin: 0;
      font-family: sans-serif;
      background-color: #303030;
      color: white;
    }
    input {
        padding: 4px;
        border-radius: 6px;
        height: 20px;
        background: #303030;
        color: white;
        border: 1px solid rgb(0, 186, 120);
    }
    .settings-content {
      padding: 20px;
      /* border: 1px solid #ccc; */
      transition: 0.5s;
    }
    button {
      color: #fff;
      border: 0;
      background: 0;
      padding: 0 0 5px;
      margin-left: 7px;
      font-size: 15px;
      transition: 0.5s;
    }
    .customicon {
      background-color:#424141;
      padding: 10px;
      transition: .1s;
    }
    .customicon:hover {
      background-color:#242424;
    }
    .available {
      border-top: 1px solid rgb(0, 186, 120);
    }
    .onlyprem {
      border-top: 1px solid rgb(177, 0, 9);
    }
    </style>
    <script>
    var elements = document.querySelectorAll('button');

    for (var i = 0; i < elements.length; i++) {
        elements[i].addEventListener('click', function(e) {
            for (let index = 1; index < 50; index++) {
                try {
                    document.getElementById('settings' + index + '-content').style.display = 'none';
                    document.getElementById('settings' + index).style.boxShadow = 'none';
                } catch{}
            }

            e.target.style = "box-shadow: inset 0px -2px 0px 0px rgb(0, 186, 120);";
            document.getElementById(e.target.id + '-content').style.display = 'block';
        });
    }
    </script>

    `
    let html_prem = `
    ${htmlall}
    `;
    return  XenForo.alert(
        `${html_prem}`, 'Настройки FuckMouse.'
    )
}