diff --git a/userscript.js b/userscript.js index 7441521..a14d5f8 100644 --- a/userscript.js +++ b/userscript.js @@ -1,18 +1,77 @@ // ==UserScript== -// @name Joy: correcting nofollow domain -// @namespace http://tampermonkey.net/ -// @version 1.0 -// @description correcting nofollow domain -// @author You +// @name JRH: JoyReactor Helper +// @version 2.0 +// @author DmitriyMX // @match http://joy.reactor.cc/* // @grant none // @run-at document-end // ==/UserScript== -(function() { - 'use strict'; - +/** + * Исправляет ссылки-редиректы + */ +function fixNofollowLinks() { document.querySelectorAll('a[rel="nofollow"][href^="//reactor.cc"]').forEach((elm) => { elm.href = elm.href.replace('//reactor.cc', '//joy.reactor.cc'); }); -})(); \ No newline at end of file +} + +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() { + Array.from(document.querySelectorAll('div.comment')) + .filter(elm => { return elm.nextElementSibling.children.length > 0; }) + .forEach(elm => { + var listId = elm.nextElementSibling.id; + elm.querySelector('span.reply-link').appendChild(createTreeButton(listId)); + }); + // document.querySelectorAll('span.reply-link').forEach(elm => { elm.appendChild(createTreeButton()); }) +} + +function isPostPage() { + return document.URL.match(/http?:\/\/joy\.reactor\.cc\/post/) !== null +} + +(function() { + 'use strict'; + + fixNofollowLinks(); + if (isPostPage()) { + collapseTreeComments(); + } +})();