- // ==UserScript==
- // @name iks: virtonomica форум
- // @namespace virtonomica
- // @description Добавление кнопки ответить как прочитанные на верх страницы. Так-же скрывает сообщения, подпись и информацию пользователя под spoiler, в зависимости от ваших настроек.
- // @include http*://*virtonomic*.*/*/forum/forum_new/*/view*
- // @include http*://*virtonomic*.*/*/forum/forum_new/*/topic/*/view*
- // @version 1.33
- // @grant none
- // ==/UserScript==
-
- var run = function() {
- $("div#content > table").each(function() {
- if($(this).html().indexOf('Создать тему') + 1 )
- $(this).append( $('div#content > table.pagingContainer > tbody > tr').html() );
- });
- },
-
- strCss = '.forumIks_exit { background: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' width=\'10\' height=\'10\'><path fill=\'none\' stroke=\'rgb(142,143,143)\' stroke-width=\'2\' d=\'M0,0 L10,10 M0,10 L10,0\' /></svg>") no-repeat;'
- +' position: absolute; top:-5px; right:0; margin:0; padding:0; width:10px; height:10px; border: 4px solid gray; border-radius:50%; font-size:18px; color:darkred; cursor:pointer}'
- +' .forumIks_but { width:50%; margin-top:10px; cursor:pointer; color:white; border:1px solid #708090; border-radius: 10px; background: #708090;'
- +' background: linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
- +' background: -webkit-linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
- +' background: -moz-linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
- +' background: -ms-linear-gradient(top, #e1e1e1, #708090, #e1e1e1);'
- +' background: -o-linear-gradient(top, #e1e1e1, #708090, #e1e1e1) }',
- str = '<div id="forumSettings" style="position:fixed; margin:0 auto; padding:0; display:none; background: #EEE none repeat;'
- +' border: 2px solid #b4b4b4; box-shadow: 0 0 0 2px #708090, 0 0 0 4px #b4b4b4; border-radius:11px;"><div style="position:relative; margin:0; padding:0">'
- +'<h1 style="width:100%; text-align:center">Настройки форума</h1><table style="margin:5px">'
- +'<tr><td>Скрывать большие сообщения в форуме:</td><td>'
- +'<select name="topic">'
- +'<option value=0>Не скрывать</option>'
- +'<option value=1>Только первое</option>'
- +'<option value=2>По всему форуму</option>'
- +'</select>'
- +'</td></tr>'
- +'<tr name="topic"><td>Сколько символов скрывать:</td><td>'
- +'<input type="text" name="topic1" size="4" value="250" style="width:95%; border:2px solid #708090; border-radius:3px; background:#e1e1e1; text-align:right">'
- +'</td></tr>'
- +'<tr><td>Скрывать информацию об авторе:</td><td>'
- +'<select name="user">'
- +'<option value=0>Не скрывать</option>'
- +'<option value=1>Только первое</option>'
- +'<option value=2>По всему форуму</option>'
- +'</select>'
- +'</td></tr>'
- +'<tr name="user"><td>Как скрывать информацию об авторе:</td><td>'
- +'<select name="user1" style="width:100%">'
- +'<option value=0>С аватором</option>'
- +'<option value=1>Ниже аватора</option>'
- +'</select>'
- +'</td></tr>'
- +'<tr><td>Подпись:</td><td>'
- +'<select name="signature" style="width:100%">'
- +'<option value=0>Не скрывать</option>'
- +'<option value=1>Скрывать</option>'
- +'<option value=2>Удалять</option>'
- +'</select>'
- +'</td></tr>'
- +'</td></tr>'
- +'<tr><td align="center" colspan="2"><input type="button" value="Сохранить" class="forumIks_but"></td></tr>'
- +'</table>'
- +'<div id="forumExitBloc" title="Закрыть" class="forumIks_exit"></div>'
- +'</div></div>',
-
- topic = function(){
- var str, str1,
- o = { 'top': '5px', 'left': '5px', 'topic': 1, 'topic1': 250, 'user': 2, 'user1': 1, 'signature': 0 },
- workTopic = function(id, p) {
- str = $(id).html();
- if(str.length > o['topic1']) {
- $(id).html( '<div class="bbSpoiler" style="padding:0; border:none"><div class="bbSpoilerTitle">'
- +'<a href="#" onclick="return xbbSpoiler(this)" style="text-decoration:none"><span><strong><u>[+] Развернуть</u></strong>'
- +'<p style="color:#000; font-weight:normal">' + str.replace(/<[^>]+>/g,'').replace(/\[\+\] spoiler/g,'').replace(/\[-\] spoiler/g,' ').substring(0, o['topic1']) + '...</p>'
- +'</span><span style="display:none"><strong><u>[-] Свернуть</u></strong></span></a></div>'
- +'<div class="bbSpoilerText" style="display: none"><hr>'+ str + '</div></div>');
- }
- },
- work = function(id, p) {
- str = '';
- $(id).find('script').remove();
- $(id).parent().css('width','170');
- if(o['user1']==1 && p) {
- str = '<table width="164" cellspacing="0" cellpadding="0" border="0" style="margin-left:4px;margin-bottom:5px;">' + $(id).find('table:first').html() + '</table>';
- $(id).find('table:first').remove();
- }
- $(id).html( str +'<div class="bbSpoiler" style="padding:0; border:none"><div class="bbSpoilerTitle">'
- +'<a href="#" onclick="return xbbSpoiler(this)" style="text-decoration:none"><span><small><u>[+] Показать</u></small>'
- +'</span><span style="display:none"><small><u>[-] Скрыть</u></small></span></a></div>'
- +'<div class="bbSpoilerText" style="padding:0; display: none;">' + $(id).html() + '</div></div>' );
- };
-
- if( window.localStorage.getItem('forumSettings') ) {
- o = JSON.parse( window.localStorage.getItem('forumSettings') );
- if(!o.signature) o.signature = 0;
- }
-
- // Сообщения
- switch ( o['topic'] ) {
- case '1':
- workTopic( $('table.message_color2:first tr:nth-child(3) > td[id]'), true );
- break;
- case '2':
- $('table.message_color2 tr:nth-child(3) > td[id]').each(function(){
- workTopic( $(this), true );
- });
- break;
- default:
- }
- // Автор соообщения
- switch ( o['user'] ) {
- case '1':
- work( $('table.message_color2:first tr:nth-child(2) > td:nth-child(1) > noindex'), true );
- break;
- case '2':
- $('table.message_color2 tr:nth-child(2) > td:nth-child(1) > noindex').each(function() {
- work( $(this), true );
- });
- break;
- default:
- }
- // Подпись
- switch ( o['signature'] ) {
- case '1':
- $('table.message_color2 tr:nth-child(4) > td.signature').each(function(){
- work( $(this), false );
- });
- break;
- case '2':
- $('table.message_color2 tr:nth-child(4)').remove();
- break;
- default:
- }
-
- /* Настройки */
- $('#forumSettings').css({'top': ($('body').height()/2-$('#forumSettings').height()/2-5) + 'px',
- 'left': ($('body').width()/2-$('#forumSettings').width()/2-5) + 'px',
- 'display':'none'});
- $('#forumSettings select[name="topic"]').val(o['topic']).change();
- $('#forumSettings input[name="topic1"]').val(o['topic1']);
- $('#forumSettings select[name="user"]').val(o['user']).change();
- $('#forumSettings select[name="user1"]').val(o['user1']).change();
- $('#forumSettings select[name="signature"]').val(o['signature']).change();
- if( $('#forumSettings select[name="topic"]').val() == 0 ) $('#forumSettings tr[name="topic"]').css('display', 'none');
- if( $('#forumSettings select[name="user"]').val() == 0 ) $('#forumSettings tr[name="user"]').css('display', 'none');
-
- // Показать/Скрыть
- $('div.forumIks_exit').click( function() {
- $('#forumSettings').css('display', 'none');
- });
- $('#forumLinkSettings').click( function() {
- if( $('#forumSettings').css('display') == 'block' ) $('#forumSettings').css('display', 'none');
- else $('#forumSettings').css('display', 'block');
- });
- // Только цифры
- $('#forumSettings inputnput[name]').bind("change keyup input click", function() {
- $(this).val( parseInt( $(this).val().replace(/[^0-9]/g, '') ) | 0 );
- });
- // Отследим выбор select
- $('#forumSettings select').change(function() {
- switch ( $(this).attr('name') ) {
- case 'topic':
- if( $(this).val() > 0 ) $('#forumSettings tr[name="topic"]').removeAttr('style');
- else $('#forumSettings tr[name="topic"]').css('display', 'none');
- break;
- case 'user':
- if( $(this).val() > 0 ) $('#forumSettings tr[name="user"]').removeAttr('style');
- else $('#forumSettings tr[name="user"]').css('display', 'none');
- break;
- case 'signature':
- if( $(this).val() > 0 ) $('#forumSettings tr[name="signature"]').removeAttr('style');
- else $('#forumSettings tr[name="signature"]').css('display', 'none');
- break;
- default:
- }
- });
- // Сохранить
- $('#forumSettings input.forumIks_but').click( function() {
- window.localStorage.setItem('forumSettings',
- JSON.stringify( {'top': $('#forumSettings').css('top') + 'px',
- 'left': $('#forumSettings').css('left') + 'px',
- 'topic': $('#forumSettings select[name="topic"]').val(),
- 'topic1': $('#forumSettings input[name]').val(),
- 'user': $('#forumSettings select[name="user"]').val(),
- 'user1': $('#forumSettings select[name="user1"]').val(),
- 'signature': $('#forumSettings select[name="signature"]').val()
- } ));
- $('#forumSettings').css('display', 'none');
- location.reload();
- });
- }
-
- if(window.top == window) {
- if( window.location.href.indexOf('/topic') + 1 ) {
- $( '<style/>', {text: strCss } ).appendTo('head');
- $('#user_info.relams.user > div.floatright > span.menu').append('<span class="linka"><a id="forumLinkSettings" href="#">Настройки форума</a></span>');
- $('body').append( str );
- $( '<script/>', { text: '(' + topic.toString() + ')()' } ).appendTo('head');
- } else
- $( '<script/>', { text: '(' + run.toString() + ')()' } ).appendTo('head');
- }