StickyNotes

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

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

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

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

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.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==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.'
    )
}