0

Update userscript.js

This commit is contained in:
2019-09-29 01:15:06 +00:00
parent 4cfc54e801
commit 5675a8d5bd

149
jrh.user.js Normal file
View File

@@ -0,0 +1,149 @@
// ==UserScript==
// @name JRH: JoyReactor Helper
// @description Улучшаем JoyReactor
// @version 2.2.2
// @author DmitriyMX
// @namespace https://gitlab.com/DmitriyMX/joyreactor-helper
// @downloadURL https://gitlab.com/DmitriyMX/joyreactor-helper/raw/master/jrh.user.js
// @updateURL https://gitlab.com/DmitriyMX/joyreactor-helper/raw/master/jrh.user.js
// @match http://joy.reactor.cc/*
// @grant none
// @run-at document-end
// ==/UserScript==
const reactorDomain = 'joy.reactor.cc';
function getKnownReactorDomains() {
return ['reactor.cc', 'joyreactor.cc'];
}
/**
* Исправляет внутренние ссылки "реактора"
*/
function fixReactorLinks() {
getKnownReactorDomains().forEach(domain => {
document.querySelectorAll('a[href^="http://' + domain + '/"]').forEach(elm => {
elm.href = elm.href.replace('http://' + domain + '/', 'http://' + reactorDomain + '/');
});
document.querySelectorAll('a[href^="//' + domain + '/"]').forEach(elm => {
elm.href = elm.href.replace('//' + domain + '/', '//' + reactorDomain + '/');
});
});
}
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();
fixReactorLinks();
if (isPostPage()) {
removeExcessElementsInPost();
collapseTreeComments();
unNewComments();
}
})();