// ==UserScript== // @name JRH: JoyReactor Helper // @version 2.1 // @author DmitriyMX // @match http://joy.reactor.cc/* // @grant none // @run-at document-end // ==/UserScript== /** * Исправляет ссылки-редиректы */ function fixNofollowLinks() { document.querySelectorAll('a[rel="nofollow"][href^="//reactor.cc"]').forEach((elm) => { elm.href = elm.href.replace('//reactor.cc', '//joy.reactor.cc'); }); } function createTreeButton(listId) { var aTag = document.createElement('a'); aTag.href = "#"; aTag.classList.toggle('collapse-comments'); aTag.text = '[-]'; aTag.dataset.listid = listId; aTag.style.fontWeight = 'bold'; aTag.style.color = '#656464'; aTag.style.lineHeight = '31px'; aTag.style.textDecoration = 'none'; aTag.style.margin = '0 10px'; aTag.style.padding = '0 10px'; aTag.style.borderRadius = '15px'; aTag.style.background = '#dfdfdf'; aTag.onclick = function() { var listId = this.dataset.listid; var commentListElement = document.getElementById(listId); if (commentListElement.style.display === 'none') { commentListElement.style.display = ''; this.text = '[-]'; } else { commentListElement.style.display = 'none'; this.text = '[+]'; } return false; }; return aTag; } /** * Добавляем кнопку сворачивания комментариев */ function collapseTreeComments() { var blocks = document.getElementsByClassName('post_comment_list'); var commentBlock = blocks.length === 2 ? blocks[1] : blocks[0]; Array.from(commentBlock.querySelectorAll('div.comment')) .filter(elm => { return elm.nextElementSibling !== null; }) .filter(elm => { return elm.nextElementSibling.children.length > 0; }) .forEach(elm => { var listId = elm.nextElementSibling.id; elm.querySelector('span.reply-link').appendChild(createTreeButton(listId)); }); } function isPostPage() { return document.URL.match(/http?:\/\/joy\.reactor\.cc\/post/) !== null } /** * Удаляем лишние элементы с сайта */ function removeExcessElements() { // Удаляем пункты меню "Люди" и "О проекте" Array.from(document.querySelectorAll('#navlist li')) .filter(elm => { return elm.querySelector('a').text === "Люди" || elm.querySelector('a').text === "О проекте" }) .forEach(elm => { elm.remove() }); // Удаляем правую колонку document.getElementById('sidebar').remove(); // Косметические исправления var width = '930px'; document.getElementById('header').style.width = width; document.getElementById('page').style.width = width; document.getElementById('topbar').children[0].style.width = width; document.getElementById('container').style.minWidth = '0'; // Переключатель языков Array.from(document.getElementsByClassName('lang_select')).forEach(elm => { elm.remove() }); } /** * Удаляем лишние элементы из поста */ function removeExcessElementsInPost() { // Удаляем "Тренды" и "Фэндомы" var elements = document.getElementsByClassName('additional_info'); if (elements.length === 1) { elements[0].remove(); } // Удаляем "Похожие посты" elements = Array.from(document.getElementsByClassName('mainheader')) .filter(elm => { return elm.innerText === "Похожие посты" }); if (elements.length === 1) { elements[0].nextElementSibling.remove(); elements[0].remove(); } } /** * Все "новые комментарии" перестают подсвечиваться */ function unNewComments() { document.querySelectorAll('.new').forEach(elm => { elm.classList.toggle('new') }); } (function() { 'use strict'; removeExcessElements(); fixNofollowLinks(); if (isPostPage()) { removeExcessElementsInPost(); collapseTreeComments(); unNewComments(); } })();