NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name 2ch buttons fix
// @version 0.1.1
// @license MIT
// @description Заменяет стрелочку на обычный сет кнопок (2ch)
// @inject-into content
// @run-at document-start
// @grant GM_xmlhttpRequest
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.deleteValue
// @grant GM.xmlHttpRequest
// @grant unsafeWindow
// @include https://2ch.*/*
// ==/UserScript==
/* eslint-disable */
function calculateGlobalXOffset(el){
var a = 0;
while(el){
a += el.offsetLeft;
el = el.offsetParent;
}
return a;
}
function calculateGlobalYOffset(el){
var a = 0;
while(el){
a += el.offsetTop;
el = el.offsetParent;
}
return a;
}
function hide_post(post, store){
if(post.isThread()){
post._renderHideThread(null);
}else{
var hidePost = document.getElementById('post-body-' + post.num);
if(!hidePost)
return;
var newPost = hidePost.cloneNode(true);
newPost.classList.add('post_type_hidden');
hidePost.parentNode.insertBefore(newPost, hidePost);
hidePost.parentNode.removeChild(hidePost);
}
if(store)
post._storeHide();
}
document.addEventListener('DOMContentLoaded', main);
function main(){
if(window.location.href.indexOf('2ch.') == -1 || window.location.href.indexOf('arch') != -1)
return;
var e, a;
window.board = window.location.href.split("2ch")[1].split("/")[1];
if(!window.board || window.board == '')
return;
//alert(window.board);
if(document.getElementsByClassName("post__number").length == 0){
e = document.getElementsByClassName("postbtn-reply-href post__reflink");
for(a = 0; a < e.length; a++){
if(!e[a].appendedButtons){
b = e[a].getAttribute("data-num");
//e[a].parentNode.className = 'post_btn';
e[a].insertAdjacentHTML('afterend', " " + (e[a].parentNode.parentNode.parentNode.className == "post post_type_oppost" ? "<svg aria-hidden='true' focusable='false' data-num='" + b + "' data-prefix='far' data-icon='star' class='postbtn-fav svg-inline--fa fa-star fa-w-18' title='Добавить в избранное' style='position: relative; top: 2px; cursor: pointer; height: 14px; width: 14px;' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'><path fill='"
+ (Favorites.isFavorited(b) ? "rgb(255, 102, 0)" : "currentColor") + "' d='"
+ (Favorites.isFavorited(b) ? "M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" : "M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z") + "'></path></svg> <a class='postbtn-expand' data-num='" + b + "' style='background: url(data:image/gif;base64,R0lGODlhDgAOAJEAAPDw8IyMjP///wAAACH5BAEAAAIALAAAAAAOAA4AQAIcVI55pgDanIS0Imfvy3LnH3QfNnpUR1YpwmRCAQA7) no-repeat; display: inline-block; width: 14px; height: 14px; cursor: pointer; position: relative; top: 2px;'></a> " : " ") + "<a class=\"postbtn-hide\" data-num=\"" + b + "\" style=\"cursor: pointer; background: url(data:image/gif;base64,R0lGODlhDgAOAJEAAPDw8IyMjP///wAAACH5BAEAAAIALAAAAAAOAA4AQAIUVI55pu0Pozyg2jqz3u9evjGRUAAAOw==); display: inline-block; width: 14px; height: 14px; position: relative; top: 2px\"></a> <a class=\"postbtn-report\" style=\"background: url(data:image/gif;base64,R0lGODlhDgAOAKECAIyMjPDw8P///////yH5BAEKAAIALAAAAAAOAA4AAAIZFI55pu0QwktxomqhzNj2+WXc5pGiwlhCAQA7); display: inline-block; width: 14px; height: 14px; cursor: pointer; position: relative; top: 2px\"></a> <a class=\"postbtn-options\" data-num=\"" + b + "\" style=\"background: url(data:image/gif;base64,R0lGODlhDgAOAJEAAPDw8IyMjP///wAAACH5BAEAAAIALAAAAAAOAA4AQAIaVI55huCvGoy0WvoyBrcr52XgJpKcRzGXUAAAOw==); display: inline-block; width: 14px; height: 14px; cursor: pointer; position: relative; top: 2px\"></a>");
//e[a].parentNode.parentNode.removeChild(e[a].parentNode.nextSibling.nextSibling);
e[a].parentNode.nextSibling.nextSibling.style.display = "none";
e[a].appendedButtons = true;
}
}
}else{
e = document.querySelectorAll("[class=post__number]");
for(a = 0; a < e.length; a++){
if(!e[a].appendedButtons){
b = e[a].previousSibling.getAttribute("data-num");
e[a].insertAdjacentHTML('afterend', " " + (e[a].parentNode.parentNode.parentNode.className == "post post_type_oppost" ? "<svg aria-hidden='true' focusable='false' data-num='" + b + "' data-prefix='far' data-icon='star' class='postbtn-fav svg-inline--fa fa-star fa-w-18' title='Добавить в избранное' style='position: relative; top: 2px; cursor: pointer; height: 14px; width: 14px;' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'><path fill='"
+ (Favorites.isFavorited(b) ? "rgb(255, 102, 0)" : "currentColor") + "' d='"
+ (Favorites.isFavorited(b) ? "M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" : "M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z") + "'></path></svg> <a class='postbtn-expand' data-num='" + b + "' style='background: url(data:image/gif;base64,R0lGODlhDgAOAJEAAPDw8IyMjP///wAAACH5BAEAAAIALAAAAAAOAA4AQAIcVI55pgDanIS0Imfvy3LnH3QfNnpUR1YpwmRCAQA7) no-repeat; display: inline-block; width: 14px; height: 14px; cursor: pointer; position: relative; top: 2px;'></a> " : " ") + "<a class=\"postbtn-hide\" data-num=\"" + b + "\" style=\"cursor: pointer; background: url(data:image/gif;base64,R0lGODlhDgAOAJEAAPDw8IyMjP///wAAACH5BAEAAAIALAAAAAAOAA4AQAIUVI55pu0Pozyg2jqz3u9evjGRUAAAOw==); display: inline-block; width: 14px; height: 14px; position: relative; top: 2px\"></a> <a class=\"postbtn-report\" style=\"background: url(data:image/gif;base64,R0lGODlhDgAOAKECAIyMjPDw8P///////yH5BAEKAAIALAAAAAAOAA4AAAIZFI55pu0QwktxomqhzNj2+WXc5pGiwlhCAQA7); display: inline-block; width: 14px; height: 14px; cursor: pointer; position: relative; top: 2px\"></a> <a class=\"postbtn-options\" data-num=\"" + b + "\" style=\"background: url(data:image/gif;base64,R0lGODlhDgAOAJEAAPDw8IyMjP///wAAACH5BAEAAAIALAAAAAAOAA4AQAIaVI55huCvGoy0WvoyBrcr52XgJpKcRzGXUAAAOw==); display: inline-block; width: 14px; height: 14px; cursor: pointer; position: relative; top: 2px\"></a>");
//e[a].parentNode.parentNode.removeChild(e[a].parentNode.nextSibling.nextSibling);
e[a].parentNode.nextSibling.nextSibling.style.display = "none";
e[a].appendedButtons = true;
}
}
}
e = document.getElementsByClassName("postbtn-fav");
for(a = 0; a < e.length; a++){
e[a].addEventListener('mouseup', function(){Favorites.add(this.getAttribute('data-num')); this.children[0].setAttribute('fill', (Favorites.isFavorited(this.getAttribute('data-num')) ? 'rgb(255, 102, 0)' : 'currentColor')); this.children[0].setAttribute('d', Favorites.isFavorited(this.getAttribute('data-num')) ? 'M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z' : 'M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z');});
}
e = document.getElementsByClassName("postbtn-hide");
for(a = 0; a < e.length; a++){
if(e[a].processed)
continue;
e[a].dataNum = e[a].getAttribute("data-num");
e[a].addEventListener('mouseup', function(){var post = Post(this.dataNum); hide_post(post, true);});
e[a].processed = true;
}
e = document.getElementsByClassName("postbtn-expand");
for(a = 0; a < e.length; a++){
if(e[a].processed)
continue;
e[a].dataNum = e[a].getAttribute('data-num');
e[a].addEventListener('mouseup', function(){PostF.expandThread(this.dataNum);});
}
var abu_select_menu = document.createElement("span");
abu_select_menu.setAttribute("id", "ABU-select");
abu_select_menu.setAttribute("class", "modal");
document.body.appendChild(abu_select_menu);
var b = document.createElement("a");
//b.href = "#";
b.innerHTML = "Ответить";
b.addEventListener('mouseup', function(){document.getElementById(this.parentNode.dataNum).nextSibling.click(); window.AbuSelectOpen = false; this.parentNode.style.display = "none";});
abu_select_menu.appendChild(b);
b = document.createElement("a");
//b.href = "#";
b.innerHTML = "Скрыть";
b.addEventListener('mouseup', function(){hide_post(Post(this.parentNode.dataNum), true); window.AbuSelectOpen = false; this.parentNode.style.display = "none";});
abu_select_menu.appendChild(b);
b = document.createElement("a");
//b.href = "#";
b.innerHTML = "Пожаловаться";
b.addEventListener('mouseup', function(){
var post = Post(this.parentNode.dataNum);
this.parentNode.style.display = "none";
var comment = prompt("Введите причину");
if(comment == null){
window.AbuSelectOpen = false;
this.parentNode.parentNode.removeChild(this.parentNode);
return;
}
var formData = new FormData();
var data = {'board': window.board, 'thread': post.getThread(), 'posts': this.parentNode.dataNum, 'comment': comment, 'task': 'report',};
for(var key in data){
formData.append(key, data[key]);
}
$alert( "Работаем..." );
$.ajax({
method: "POST",
url:'/makaba/makaba.fcgi?json=1',
data: formData,
success: function() {
$alert( "Накляузничано." );
},
contentType: false,
processData: false
})
window.AbuSelectOpen = false;
this.parentNode.style.display = "none";});
abu_select_menu.appendChild(b);
abu_select_menu.style.position = "absolute";
abu_select_menu.style.border = "1px solid #808080";
abu_select_menu.style.display = "none";
abu_select_menu.style.top = "0px";
abu_select_menu.style.left = "0px";
e = document.getElementsByClassName("postbtn-options");
for(a = 0; a < e.length; a++){
if(e[a].processed) // adding AbuSelect callback
continue;
e[a].addEventListener('mouseup', function(){
if(!window.AbuSelectOpen){
abu_select_menu.style.left = (calculateGlobalXOffset(this) + this.clientWidth).toString() + "px";
abu_select_menu.style.top = calculateGlobalYOffset(this).toString() + "px";
abu_select_menu.style.display = "inline-block";
abu_select_menu.dataNum = this.getAttribute("data-num");
window.AbuSelectOpen = true;
}else{
abu_select_menu.style.display = "none";
window.AbuSelectOpen = false;
}
});
e[a].processed = true;
}
}
function hidePost(num, store){ // custom storage, currently unneeded
e = document.querySelectorAll('[id="post-' + num + '"]');
var isOP = false;
if(!e)
return;
if(e[0].className.indexOf("oppost") != -1){
e = e[0].parentNode;
isOP = true;
}else{
e = e[0];
}
e.style.display = "none";
if(isOP){
//alert(e.children[0].children[0].children[0]);
var title = e.children[0].children[0].children[0].children[1].innerHTML;
title = title.replace(/ /g, '');
title = title.replace(/\n/g, '');
if(title[title.length-1] == ' ')
title = title.substring(0, title.length-1);
e.insertAdjacentHTML('afterend', '<div id="hidden-thread-' + num + '-wrapper"><div id="hidden-thread-' + num + '" style="display: inline-block; margin-left: 10px; height: 20px; background: #DDDDDD; box-shadow: 0px 0px 0px 2px #7F7F7F; cursor: pointer; margin-top: 5px; margin-bottom: 5px;" data-num="' + num + '" class="thread thread_hidden">Скрытый тред <span style="font-weight: bold">№' + num + '</span> <span style="font-style: italic">(' + title + ')</span></div></div>');
}else{
alert(e.getAttribute('id'));
var title = e.children[0].children[0].children[1].innerHTML + ' ' + e.children[0].children[0].children[2].innerHTML + ' ' + e.children[0].children[0].children[3].innerHTML;
e.insertAdjacentHTML('afterend', '<div id="hidden-post-' + num + '-wrapper"><div id="hidden-post-' + num + '" style="display: inline-block; margin-left: 10px; height: 20px; background: #DDDDDD; box-shadow: 0px 0px 0px 2px #7F7F7F; cursor: pointer; margin-top: 5px; margin-bottom: 5px;" data-num="' + num + '" class="post post_hidden">' + title + '</div></div>');
}
if(store){
var hidden = Store.get('board.' + window.board + '.hidden', []);
if(hidden.constructor != Array){
hidden = new Array();
Store.set('board.' + window.board + '.hidden', hidden);
}
var inHiddenList = false;
for(var a = 0; a < hidden.length; a++){
if(hidden[a].num == num){
inHiddenList = true;
break;
}
}
if(!inHiddenList){
var list_entry = {"num": num, "time_added": getTimeInDays()};
hidden.push(list_entry);
Store.set('board.' + window.board + '.hidden', hidden);
}
}
var c = document.querySelectorAll('[id="hidden-' + (isOP ? 'thread' : 'post') + '-' + num + '-wrapper"]');
if(c.length < 1)
return;
c[0].addEventListener('mouseup', function(){unhidePost(this.children[0].getAttribute('data-num')); this.parentNode.removeChild(this);});
return;
}
function unhidePost(num){
e = document.querySelectorAll('[id="hidden-post-' + num + '-wrapper"]');
var isOP, isStoreHidden = false;
if(e.length == 0){
e = document.querySelectorAll('[id="hidden-thread-' + num + '-wrapper"]');
if(e.length > 0)
isOP = true;
else
return;
}
e[0].previousSibling.style.display = 'block';
var hidden = Store.get('board.' + window.board + '.hidden', []);
for(var a = 0; a < hidden.length; a++){
if(hidden[a].num == num){
//isStoreHidden = true;
hidden.splice(a, 1);
Store.set('board.' + window.board + '.hidden', hidden);
break;
}
}
}
function getTimeInDays() {
return Math.ceil((+new Date)/1000/60/60/24);
}