您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
userscript для АБФ
// ==UserScript== // @name antiwomen // @namespace antiwomen // @include *antiwomen.ru/ff/* // @version 0.9.2 // @grant none // @description userscript для АБФ // @description:ru userscript для АБФ // ==/UserScript== document.querySelectorAll('td.bodyline table:first-child td:first-child')[0].style.display = 'none'; document.querySelectorAll('td.bodyline table:first-child .gen')[0].style.display = 'none'; function addJQuery(callback) { var script = document.createElement("script"); script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"); script.addEventListener('load', function() { var script = document.createElement("script"); script.textContent = "window.jQ=jQuery.noConflict(true);(" + callback.toString() + ")();"; document.body.appendChild(script); }, false); document.body.appendChild(script); } function main() { var data = new CreateData(JSON.parse(localStorage.getItem('USAWData'))), settings = new SettingsHendler(); initUI(); function initUI(){ //Тема if (/\/viewtopic\.php/.test(location.href)){ jQ('table.forumline tbody > tr').each(function(){ var $spanName = jQ(this).find('td:first > span.name'), b = $spanName.children('b:first'); if (b.size()){ b.css({ 'cursor' : 'pointer', 'color' : typeof data.userColors[b.text()] == 'undefined' ? 'inherit' : data.userColors[b.text()] }).click(function(){ var setColor = prompt('Укажите цвет в HEX формате. Если сомневаетесь, оставьте поле как есть (будет красный).', data.userColors[b.text()] ? data.userColors[b.text()] : '#FF0000'); if (setColor == null || !/^#(?:[0-9a-f]{3}){1,2}$/i.test(setColor)){ jQ('table.forumline tbody > tr').each(function(){ var $b = jQ(this).find('td:first > span.name').children('b:first'); if ($b.size() && $b.text() == b.text()) $b.css('color', 'inherit'); }); data.userColors[b.text()] = undefined; } else { jQ('table.forumline tbody > tr').each(function(){ var $b = jQ(this).find('td:first > span.name').children('b:first'); if ($b.size() && $b.text() == b.text()) $b.css('color', setColor); }); data.userColors[b.text()] = setColor; } SaveDate() }) $spanName.prepend('<a href="javascript:void(0);" style="font-size:14px; text-decoration:none" onclick="USAWAuthorHide(this)" title="Скрыть сообщения">☒</a> <a href="javascript:void(0)" class="usaw-add-favorite" onclick="addFavorites(\''+b.text()+'\')" style="font-size:14px; text-decoration:none" title="Выделять сообщения пользователя">☆</a> '); if (data.authorHiddens.indexOf(b.text())+1) hiddenMessage(jQ(this), b.text(), jQ(this).children('td:first').attr('class')); if (typeof data.favorites[b.text()] != 'undefined') allocatePostsFavorites(jQ(this), data.favorites[b.text()]) } }); if (settings.get('show-popup-hidden')){ jQ(document).on('mouseenter', 'td.usaw-hidden-user-post', function(){ var $this = jQ(this); if ($this.find('.postbody').size() == 0){ var postbody = $this.prev().find('.postbody:first').parent(), $popup = jQ('<div class="usaw-popup-post">'+postbody.html()+'</div>'); $popup.css({ position : 'absolute', background : '#EFEFEF', padding: '12px', border : '#585858 1px solid', textAlign : 'left', marginTop : '7px', width : '80%', zIndex : 1000, boxShadow : '3px 3px 2px #000' }) $popup.mouseenter(function(){ jQ(this).remove() }) $this.append($popup) } }); jQ(document).on('mouseleave', 'td.usaw-hidden-user-post', function(){ jQ(this).find('.usaw-popup-post').remove() }); } if (settings.get('font-big')){ jQ('td.quote').css('font-size','14px'); jQ('span.postbody').css('font-size','14px'); } jQ('span.postbody br').css('margin-bottom','7px'); } else //Главная if (/(ff\/|index\.php)$/.test(location.href)){ jQ('td.rowpic').each(function(){ var $td = jQ(this); if (data.hideForums[$td.closest('tr').index()]){ hideForums($td) } else { showForums($td) } }); } else //Ответ if (/\/posting\.php\?mode=quote/.test(location.href)){ if (settings.get('delete-double-quotation')) deleteDoubleQuotation(); } //Редактирование заголовка jQ('span.maintitle:first').css('cursor','pointer').click(function(){ var newTitle = prompt('Укажите новый заголовок', data.title ? data.title : jQ(this).text()); if (newTitle == null) return; setTitle(newTitle); data.title = newTitle; SaveDate() }); if (data.title) setTitle(data.title); } window.USAWHideForums = function(divClick){ var $td = jQ(divClick).closest('td'); hideForums($td); data.hideForums[$td.closest('tr').index()] = true; SaveDate(); } window.USAWShowForums = function(divClick){ var $td = jQ(divClick).closest('td'); showForums($td); data.hideForums[$td.closest('tr').index()] = false; SaveDate(); } function hideForums($td){ $td.html('<div onclick="USAWShowForums(this)" style="float: right;width: 20px;text-align: center;border: 1px solid black; cursor:pointer">+</div>'); var $tr = $td.closest('tr'), $next = $tr.next(); while($next.size() && ($next.children('td:first').hasClass('row1') || $next.children('td:first').hasClass('row2'))){ $next.hide(); $next = $next.next(); } } function showForums($td){ $td.html('<div onclick="USAWHideForums(this)" style="float: right;width: 20px;text-align: center;border: 1px solid black;cursor:pointer">-</div>'); var $tr = $td.closest('tr'), $next = $tr.next(); while($next.size() && ($next.children('td:first').hasClass('row1') || $next.children('td:first').hasClass('row2'))){ $next.show(); $next = $next.next(); } } window.USAWAuthorHide = function(link){ var name = jQ(link).closest('span').find('b:first').text(); if (data.authorHiddens.indexOf(name)+1 == 0){ data.authorHiddens.push(name); data.authorHiddensReasons[name] = prompt('Укажите причину скрытия сообщений данного пользователя', typeof data.authorHiddensReasons[name] != 'undefined' ? data.authorHiddensReasons[name] : ''); } jQ('table.forumline tr td span.name b').each(function(){ if (jQ(this).text() == name) hiddenMessage(jQ(this).closest('tr'), name, jQ(link).closest('tr').children('td:first').attr('class')); }); SaveDate(); return false; } window.USAWAuthorShow = function(link, name){ var newHiddensData = []; data.authorHiddens.forEach(function(oName){ if (oName == name) return; newHiddensData.push(oName); }); data.authorHiddens = newHiddensData; SaveDate(); jQ('table.forumline tr td span.name b').each(function(){ if (jQ(this).text() == name){ jQ(this).closest('tr').children('td').show(); jQ(this).closest('tr').next().children('td').show(); jQ(this).closest('tr').children('td:last').remove() } }); } window.addFavorites = function(userName){ if (typeof data.favorites[userName] == 'undefined'){ data.favorites[userName] = prompt('Укажите цвет в HEX формате. Если сомневаетесь, оставьте поле как есть.', '#FFFAF0'); jQ('table.forumline tr td span.name b').each(function(){ if (jQ(this).text() == userName){ allocatePostsFavorites(jQ(this).closest('tr'), data.favorites[userName]); } }); } else { data.favorites[userName] = undefined; jQ('table.forumline tr td span.name b').each(function(){ if (jQ(this).text() == userName){ deallocatePostsFavorites(jQ(this).closest('tr')); } }); } SaveDate() } function allocatePostsFavorites($tr, color){ $tr.children('td').css('background-color', /^#(?:[0-9a-f]{3}){1,2}$/i.test(color) ? color : $tr.children('td:first').hasClass('row1') ? '#FFFAF0' : '#FAEBD7'); $tr.find('a.usaw-add-favorite').html('★') } function deallocatePostsFavorites($tr){ $tr.children('td').css('background-color', '') $tr.find('a.usaw-add-favorite').html('☆') } function hiddenMessage($tr, userName, setRowClass){ $tr.children('td').hide(); $tr.next().children('td').hide(); $tr.append('<td class="'+setRowClass+' usaw-hidden-user-post" colspan="2" style="font-size:11px; text-align:right"><b class="name" style="color:#ccc">'+userName+'</b> <i style="color:#ccc">'+data.authorHiddensReasons[userName]+'</i> <a style="color:#ccc" href="javascript:void(0);" onclick="USAWAuthorShow(this, \''+userName+'\')">Отображать сообщения</a></td>'); } function setTitle(title){ jQ('head title').text(jQ('head title').text().replace(/[^:]*(.*)/i,title + ' $1')); jQ('span.maintitle:first').text(title); } function SaveDate(){ localStorage.setItem('USAWData', JSON.stringify(data)) } function CreateData(json){ return { authorHiddens : json === null ? [] : json.authorHiddens, authorHiddensReasons : json === null ? {} : json.authorHiddensReasons ? json.authorHiddensReasons : {}, favorites : json === null ? {} : json.favorites ? json.favorites : {}, userColors : json === null ? {} : json.userColors ? json.userColors : {}, hideForums : json === null ? {} : json.hideForums ? json.hideForums : {}, title : json === null ? false : json.title } } function deleteDoubleQuotation(){ var $textarea = jQ('textarea.post'), clearText = $textarea.val(), startM = clearText.match(/^(\[quote="[\wа-яё\.\s]+?"\])/i), i = 0; clearText = clearText.replace(startM[1], ''); while(/(?:\[quote(?:="[\wа-яё\.\s]+?")?\])(?!(?:\[quote))(?:[\s\S]*?)\[\/quote\]/gi.test(clearText)){ clearText = clearText.replace(/(?:\[quote(?:="[\wа-яё\.\s]+?")?\])(?!(?:\[quote))(?:[\s\S]*?)\[\/quote\]/gi,'') //Защита от багованой регулярки if (i > 10) break; i++; } $textarea.val(startM[1] + clearText) } function SettingsHendler(){ var methods = {}, $button = jQ('<div style="position: absolute;right: 15px;font-size: 28px;"><a style="text-decoration: none;" href="#">⚙</a></div>'), $settings; methods.showButton = function(){ jQ('body:first').prepend($button) } methods.showSettings = function(){ if (jQ.type($settings) == 'undefined'){ $settings = jQ('<div style="position: absolute;right: 10px;background: white;padding: 5px;border: 1px solid black;z-index: 10;width: 370px;"><b>Настройки UserScript АБФ</b><a href="#" style="text-decoration: none;text-decoration: none;float: right;border: 3px outset;width: 22px;text-align: center;" class="usa-close">❌</a>'+ '<div><label><input type="checkbox" name="show-popup-hidden" '+(methods.get('show-popup-hidden') ? 'checked' : '')+'/> Отображать содержимое постов скрытых авторов при наведение.</label></div>'+ '<div><label><input type="checkbox" name="font-big"'+(methods.get('font-big') ? 'checked' : '')+'/> Увеличить шрифт.</label></div>'+ '<div><label><input type="checkbox" name="delete-double-quotation"'+(methods.get('delete-double-quotation') ? 'checked' : '')+'/> Удалять двойное цитирование при ответе.</label></div>'+ '</div>'); jQ('body:first').prepend($settings); jQ('a.usa-close',$settings).click(function(){$settings.hide();return false;}) jQ('input[type="checkbox"]',$settings).change(function(){ var $this = jQ(this); methods.set($this.attr('name'),$this.is(":checked")); }) } $settings.show(); } methods.get = function(key){ var result = localStorage.getItem('USAWS-'+key); return (result && result == '1' || jQ.type(result) === 'null') ? true : false; } methods.set = function(key, value){ localStorage.setItem('USAWS-'+key, value ? '1' : '0'); } methods.showButton(); jQ('a', $button).click(function(){ methods.showSettings(); return false; }); return methods; } } addJQuery(main);