// ==UserScript== // @name LOLZ_Fast_Delete_el9in // @namespace LOLZ_Fast_Delete_el9in // @version 0.2 // @description Fast Threads Delete from My Threads of forum LOLZ // @author el9in // @match https://zelenka.guru/?tab=mythreads* // @match https://lolz.guru/?tab=mythreads* // @icon https://www.google.com/s2/favicons?sz=64&domain=zelenka.guru // @grant none // @license el9in // @downloadURL none // ==/UserScript== (function() { 'use strict'; const inputElement = document.querySelector('input[type="hidden"][name="_xfToken"]'); const xfTokenValue = inputElement.value; const checker = {}; const times = 2; function check(threadId) { if(!checker[threadId]) { checker[threadId] = 1; return false; } checker[threadId] ++; if(checker[threadId] >= times) return true; } function init() { if(xfTokenValue) { const elements_threads = document.querySelectorAll('[id*="thread-"]'); elements_threads.forEach(function(element) { const idValue = element.getAttribute('id'); const parts = idValue.split('thread-'); if (parts.length > 1) { const thread_id = parts[1]; const Tooltip = element.querySelector('a.StarContent.threadControl.far.fa-star.Tooltip'); if(Tooltip) { const copyElement = Tooltip.cloneNode(true); copyElement.classList.remove('fa-star'); copyElement.classList.add('fa-trash'); copyElement.removeAttribute('href'); Tooltip.parentNode.insertBefore(copyElement, Tooltip); copyElement.addEventListener('click', function(event) { event.preventDefault(); if(!check(thread_id)) { XenForo.alert('Нажмите ещё раз для удаления темы.', "Предупреждение", 2000); return; } var formData = new FormData(); formData.append('reason', ''); formData.append('hard_delete', '0'); formData.append('_xfConfirm', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfRequestUri', `/threads/${thread_id}/`); formData.append('_xfNoRedirect', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfResponseType', 'json'); fetch(`https://zelenka.guru/threads/${thread_id}/delete`, { "body": formData, "method": "POST", "mode": "cors", "credentials": "include" }); element.remove(); }); } } }); } } async function ones(element) { if(xfTokenValue) { try { const idValue = element.getAttribute('id'); if(idValue) { const parts = idValue.split('thread-'); if (parts.length > 1) { const thread_id = parts[1]; const Tooltip = element.querySelector('a.StarContent.threadControl.far.fa-star.Tooltip'); if(Tooltip) { const copyElement = Tooltip.cloneNode(true); copyElement.classList.remove('fa-star'); copyElement.classList.add('fa-trash'); copyElement.removeAttribute('href'); Tooltip.parentNode.insertBefore(copyElement, Tooltip); copyElement.addEventListener('click', function(event) { if(!check(thread_id)) { XenForo.alert('Нажмите ещё раз для удаления темы.', "Предупреждение", 2000); return; } event.preventDefault(); var formData = new FormData(); formData.append('reason', ''); formData.append('hard_delete', '0'); formData.append('_xfConfirm', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfRequestUri', `/threads/${thread_id}/`); formData.append('_xfNoRedirect', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfResponseType', 'json'); fetch(`https://zelenka.guru/threads/${thread_id}/delete`, { "body": formData, "method": "POST", "mode": "cors", "credentials": "include" }); element.remove(); }); } } } } catch(error) {}; } } const observer = new MutationObserver((mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach(addedNode => { if (addedNode.nodeType === Node.ELEMENT_NODE) { ones(addedNode); } }); } } }); const config = { childList: true, subtree: true }; observer.observe(document.body, config); init(); })();