您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Быстрая установка АУ/АС и быстрое редактирование сообщений на форуме ГА.
- // ==UserScript==
- // @name GA quick edit & auto-hide
- // @namespace glav.su
- // @description Быстрая установка АУ/АС и быстрое редактирование сообщений на форуме ГА.
- // @include http://glav.su/*
- // @include https://glav.su/*
- // @version 1.1
- // @grant none
- // ==/UserScript==
- function addStyle(styleText) {
- var style = document.createElement('style');
- if (document.head) {
- document.head.appendChild(style);
- style.innerHTML = styleText;
- }
- }
- addStyle([
- '.qe_popup {',
- 'cursor: pointer;',
- 'display: none;',
- 'border: 1px solid #aaa;',
- 'padding: 5px 2px;',
- 'white-space: nowrap;',
- 'border-radius: 5px;',
- 'position: absolute;',
- 'box-shadow: 3px 3px 10px #444;',
- 'background-color: #fff;',
- '}',
- '.qe_option {',
- 'display: block;',
- 'text-decoration: none;',
- 'color: #000;',
- 'background-color: #fff;',
- 'padding: 2px 12px;',
- '}',
- '.qe_option:hover {',
- 'text-decoration: none;',
- 'color: #fff;',
- 'background-color: #369;',
- '}',
- '.qe_edit {',
- 'display: block;',
- 'color: #000;',
- 'background-color: #fff;',
- 'padding: 0px;',
- 'position: absolute;',
- '}',
- '.qe_edit_content {',
- 'margin: 2px 10px;',
- 'resize: none;',
- 'border: 1px solid #aaf;',
- '}',
- '.qe_quote {',
- 'display: block;',
- 'color: #000;',
- 'background-color: #fff;',
- 'padding: 0px;',
- 'position: absolute;',
- '}',
- '.qe_quote_content {',
- 'margin: 2px 10px;',
- 'resize: none;',
- 'border: 1px solid #aaf;',
- '}',
- '.icoLoading {',
- 'background-image: url(/files/messages/e2c6fce4a064ddfa31b8b49380206c88.gif);',
- '}',
- '.icoQuickAUAS {',
- 'background-image: url(/files/messages/2175f0127d70a9ed87c6f78a9b44ce98.gif);',
- '}',
- '.icoQuickEdit {',
- 'background-image: url(/files/messages/62084ab537f806e01833d9a9d417384b.png);',
- '}',
- '.icoQuote {',
- 'background-image: url(/files/messages/e482fdf83cd8dddd6712c23e9cc26e5a.png);',
- '}',
- ].join(''));
- var $sandbox = ((s=$("#sandbox")).length == 1)?
- s : $('<div id="sandbox" style="display: none;">').appendTo( $(document.body) );//песочница
- var $auas_box = $('<div id="auas_box" class="qe_popup">')
- .mouseenter(function(){ $auas_box.under_mouse = true; })
- .mouseleave(function(){ $auas_box.under_mouse = false; });
- $auas_box.under_mouse = false;
- var $edit_box = $('<div id="edit_box" class="qe_edit">')
- .append($('<div style="heigth: 24px; padding: 3px 15px; font-size: 14px;">')
- .append($('<a id="qe_save" class="cBlueButton" href="javascript: void(0);">Сохранить</a>')
- .click(function(){
- var button = $("#forumMessagesListMessage" + $edit_box.m_id + "QuickEditButton")[0];
- toggleElClass(button, ['icoQuickEdit', 'icoLoading'], 1);
- $(button).attr('state', "1");
- $edit_box.hide();
- $edit_box.post_data['content'] = $("#edit_box_content").val();
- $.ajax({
- method: 'POST',
- url: $edit_box.edit_url,
- data: $edit_box.post_data,
- dataType: 'html',
- success: function(res){
- toggleElClass(button, ['icoQuickEdit', 'icoLoading'], 0);
- $(button).attr('state', "0");
- $edit_box.detach();
- var mess = res.replace(mess_rg($edit_box.m_id), '$1');
- $('#forumMessagesListMessage'+$edit_box.m_id+'Content').html(mess);
- }
- })
- })
- )
- .append($('<a id="qe_cancel" class="cBlueButton" style="margin-left: 2px;" href="javascript: void(0);">Отменить</a>')
- .click(function(){
- var button = $("#forumMessagesListMessage" + $edit_box.m_id + "QuickEditButton")[0];
- toggleElClass(button, ['icoQuickEdit', 'icoLoading'], 0);
- $edit_box.hide();
- $(button).attr('state', "0");
- })
- )
- )
- .append('<textarea id="edit_box_content" class="qe_edit_content">');
- var $quote_box = $('<div id="quote_box" class="qe_quote">')
- .append($('<div style="heigth: 24px; padding: 3px 15px; font-size: 14px;">')
- .append($('<a id="qu_close" class="cBlueButton" style="margin-left: 2px;" href="javascript: void(0);">Закрыть</a>')
- .click(function(){
- var button = $("#forumMessagesListMessage" + $quote_box.m_id + "QuickQuoteButton")[0];
- toggleElClass(button, ['icoQuote', 'icoLoading'], 0);
- $quote_box.hide();
- $(button).attr('state', "0");
- })
- )
- )
- .append('<textarea id="quote_box_content" class="qe_quote_content">');
- $(document.body).click(function(){
- if(!$auas_box.under_mouse){
- $auas_box.hide().closest("td").find("a.cBlueButton").attr('state', "0");
- }
- });
- function toggleElClass(el, clss, val){
- val = +val;
- $(el).removeClass(clss[+(!val)]).addClass(clss[val]);
- }
- function mess_rg(m_id){
- return new RegExp('[\\s\\S]*<td id="forumMessagesListMessage'+m_id+'Content" class="fItem forumMessagesListMessageContent">([\\s\\S]+?)<\/td>[\n\r\\s\\t]*<\/tr>[\n\r\\s\\t]*<\/tbody>[\n\r\\s\\t]*<\/table>[\n\r\\s\\t]*<table class="f" width="100%">[\\s\\S]*', 'i');
- }
- $(".forumMessagesListMessageArchiveButton").each(function(bidx, b_archive){
- var m_id = $(b_archive).attr("id").replace(/forumMessagesListMessage(\d+)ArchiveButton/, '$1');
- if( $(b_archive).closest("tr").find(".forumMessagesListMessageEditButton").length === 1 ){
- var b_edit = $(b_archive).closest("tr").find(".forumMessagesListMessageEditButton")[0],
- edit_url = $(b_edit).find("a").attr("href");
- $(b_edit).closest("tr")
- .append($('<td class="fItem">')
- .append($('<a href="javascript: void(0);"> </a>')
- .attr('id', "forumMessagesListMessage" + m_id + "AutoHideButton")
- .attr('title', "Изменить АУ/АС")
- .attr('class', "cBlueButton icoButton icoQuickAUAS")
- .attr('state', "0")
- .click(function(){
- if( $(this).attr('state') == '0' ){
- if( $auas_box.is(":visible") ){
- var d_button = $auas_box.hide().closest("td").find("a.cBlueButton").attr('state', "0");
- toggleElClass(d_button, ['icoQuickAUAS', 'icoLoading'], 0);
- }
- toggleElClass(this, ['icoQuickAUAS', 'icoLoading'], 1);
- $(this).attr('state', "1");
- var _this = this;
- $.ajax({
- url: edit_url,
- dataType: 'html',
- success: function(data){
- if( $(_this).attr('state') !== '1' ) return true;
- var rg = /[\s\S]*(<form[\s\S]*?<\/form>)[\s\S]*/i;
- $sandbox.empty().html( data.toString().replace(rg, '$1') );
- $auas_box.empty().detach();
- var form_data = {};
- $("#sandbox").find(":input").each(function(ix, inp){
- if(typeof (key = $(inp).attr("name")) !== 'undefined'){
- form_data[key] = $(inp).val();
- }
- })
- var hide_opts;
- if(typeof form_data['isHidden'] !== 'undefined'){
- hide_opts = [{val: 0}, {val: 0}];
- delete form_data['isHidden'];
- }else if(typeof form_data['autoHide'] !== 'undefined'){
- hide_opts = $("#sandbox").find("select[name=autoHide] option");
- }
- $.each(hide_opts, function(ix, op){
- if(ix == 0) return true;
- var ah_v = (typeof op.val !== 'undefined')? op.val : $(op).val();
- var caption = (ah_v == 0)?
- 'Не скрывать' :
- ['Автоскрытие', 'Автоудаление'][+(ah_v<0)]+' через '+Math.abs(ah_v)+' ч.';
- $('<a class="qe_option" href="javascript: void(0);">'+caption+'</a>')
- .click(function(){
- toggleElClass(_this, ['icoQuickAUAS', 'icoLoading'], 1);
- $(_this).attr('state', "1");
- $auas_box.hide();
- var post_data = $.extend({}, form_data);
- post_data['autoHide'] = ah_v;
- $.ajax({
- method: 'POST',
- url: edit_url,
- data: post_data,
- dataType: 'html',
- success: function(res){
- toggleElClass(_this, ['icoQuickAUAS', 'icoLoading'], 0);
- $(_this).attr('state', "0");
- var mess = res.replace(mess_rg(m_id), '$1');
- $('#forumMessagesListMessage'+m_id+'Content').html(mess);
- }
- });
- })
- .appendTo($auas_box);
- });
- toggleElClass(_this, ['icoQuickAUAS', 'icoLoading'], 0);
- $(_this).attr('state', "2");
- $auas_box.appendTo($td=$(_this).closest("td"))
- .css({top: $td.offset().top + $td.outerHeight(),
- left: $td.offset().left - $auas_box.outerWidth() + $td.outerWidth()})
- .slideDown(100);
- }
- });
- }else if( $(this).attr('state') == '2' ){
- $auas_box.hide();
- $(this).attr('state', "0");
- }
- })
- .mouseenter(function(){ $auas_box.under_mouse = true; })
- .mouseleave(function(){ $auas_box.under_mouse = false; })
- )
- )
- .append($('<td class="fItem">')
- .append($('<a href="javascript: void(0);"> </a>')
- .attr('id', "forumMessagesListMessage" + m_id + "QuickEditButton")
- .attr('title', "Быстрое редактирование")
- .attr('class', "cBlueButton icoButton icoQuickEdit")
- .attr('state', "0")
- .click(function(){
- if( $(this).attr('state') == '0' ){
- if( $edit_box.is(":visible") ){
- var button = $("#forumMessagesListMessage" + $edit_box.m_id + "QuickEditButton")[0];
- toggleElClass(button, ['icoQuickEdit', 'icoLoading'], 0);
- $edit_box.hide();
- $(button).attr('state', "0");
- }
- toggleElClass(this, ['icoQuickEdit', 'icoLoading'], 1);
- $(this).attr('state', "1");
- var _this = this;
- $.ajax({
- url: edit_url,
- dataType: 'html',
- success: function(data){
- if( $(_this).attr('state') !== '1' ) return true;
- var rg = /[\s\S]*(<form[\s\S]*?<\/form>)[\s\S]*/i;
- $sandbox.empty().html( data.toString().replace(rg, '$1') );
- var form_data = {};
- $("#sandbox").find(":input").each(function(ix, inp){
- if(typeof (key = $(inp).attr("name")) !== 'undefined'){
- form_data[key] = $(inp).val();
- }
- })
- toggleElClass(_this, ['icoQuickEdit', 'icoLoading'], 0);
- $(_this).attr('state', "2");
- $edit_box.detach().appendTo($td=$('#forumMessagesListMessage'+m_id+'Content'))
- .css({top: $td.offset().top, left: $td.offset().left,
- width: $td.width(), height: $td.height()});
- $edit_box.m_id = m_id;
- $edit_box.edit_url = edit_url;
- $edit_box.post_data = $.extend({}, form_data);
- $("#edit_box_content")
- .css({height: $edit_box.height() - 44, width: $edit_box.width() - 20})
- .val($edit_box.post_data['content']);
- $edit_box.show();
- }
- });
- }else if( $(this).attr('state') == '2' ){
- $edit_box.hide();
- $(this).attr('state', "0");
- }
- })
- )
- );
- }
- var reply_url = $(b_archive).closest("td").prev("td").find("a").attr("href");
- $(b_archive).closest("tr")
- .append($('<td class="fItem">')
- .append($('<a href="javascript: void(0);"> </a>')
- .attr('id', "forumMessagesListMessage" + m_id + "QuickQuoteButton")
- .attr('title', "Цитировать пост")
- .attr('class', "cBlueButton icoButton icoQuote")
- .attr('state', "0")
- .click(function(){
- if( $(this).attr('state') == '0' ){
- if( $quote_box.is(":visible") ){
- var button = $("#forumMessagesListMessage" + $quote_box.m_id + "QuickQuoteButton")[0];
- toggleElClass(button, ['icoQuote', 'icoLoading'], 0);
- $quote_box.hide();
- $(button).attr('state', "0");
- }
- toggleElClass(this, ['icoQuote', 'icoLoading'], 1);
- $(this).attr('state', "1");
- var _this = this;
- $.ajax({
- url: reply_url,
- dataType: 'html',
- success: function(data){
- if( $(_this).attr('state') !== '1' ) return true;
- var rg = /[\s\S]*(<form[\s\S]*?<\/form>)[\s\S]*/i;
- $sandbox.empty().html( data.toString().replace(rg, '$1') );
- var form_data = {};
- $("#sandbox").find(":input").each(function(ix, inp){
- if(typeof (key = $(inp).attr("name")) !== 'undefined'){
- form_data[key] = $(inp).val();
- }
- })
- toggleElClass(_this, ['icoQuote', 'icoLoading'], 0);
- $(_this).attr('state', "2");
- $quote_box.detach().appendTo($td=$('#forumMessagesListMessage'+m_id+'Content'))
- .css({top: $td.offset().top, left: $td.offset().left,
- width: $td.width(), height: $td.height()});
- $quote_box.m_id = m_id;
- $quote_box.reply_url = reply_url;
- $quote_box.post_data = $.extend({}, form_data);
- $("#quote_box_content")
- .css({height: $quote_box.height() - 44, width: $quote_box.width() - 20})
- .val($quote_box.post_data['content']);
- $quote_box.show();
- }
- });
- }else if( $(this).attr('state') == '2' ){
- $quote_box.hide();
- $(this).attr('state', "0");
- }
- })
- )
- );
- });