Advertisement
Guest User

LOR Classic v14

a guest
Sep 18th, 2013
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        LOR Classic
  3. // @namespace   http://www.linux.org.ru/*
  4. // @include     *linux.org.ru/*
  5. // @require     http://code.jquery.com/jquery-1.8.1.min.js
  6. // @version     14
  7. // @author      Sadler
  8. // @grant       none
  9. // ==/UserScript==
  10.  
  11. //////////////////////////// НАСТРОЙКИ ////////////////////////
  12.  
  13. // без иконок "В избранное" и "Отслеживать"
  14. noFavorites = false;
  15.  
  16. // решётки и заголовки у всех сообщений
  17. gridLinks = true;
  18.  
  19. // перенести аватарки из футера
  20. moveAvatar = true;
  21.  
  22. // старый вид навигации
  23. oldNav = true;
  24.  
  25. // старый вид тегов
  26. oldTags = true;
  27.  
  28. // старый вид даты заглавного сообщения (в скобках, без переноса на новую строку)
  29. oldDate = true;
  30.  
  31. // теги после текста сообщения
  32. tagsDown = true;
  33.  
  34. // обратная замена ёлочек
  35. oldQuotation = true;
  36.  
  37. // показывать секунды в timestamp тем и комментариев
  38. secondsInTimestamp = true;
  39. // использовать UTC? Иначе используем локальное время
  40. useUTC = true;
  41. // сдвиг времени от UTC
  42. UTCOffset = 4;
  43.  
  44. // отключить Gravatar
  45. noGravatar = false;
  46.  
  47. // debug - режим (пока не работает)
  48. _debug = true;
  49.  
  50. //////////////////////////////////////////////////////////////
  51.  
  52. function dateFormat(comDate)
  53. {  
  54.     if (useUTC)
  55.     {
  56.         //да, оно работает
  57.         comDate.setHours(comDate.getHours()+UTCOffset);
  58.        
  59.  
  60.         var dt = ''+(comDate.getUTCFullYear()%100);
  61.         if (dt.length<2) dt = '0'+dt;
  62.         dt = '.'+dt;
  63.         dt = (comDate.getUTCMonth()+1)+dt;
  64.         if (dt.length<5) dt = '0'+dt;
  65.         dt = '.'+dt;
  66.         dt = comDate.getUTCDate()+dt;
  67.         if (dt.length<8) dt = '0'+dt;
  68.  
  69.         var dtstr = dt;
  70.  
  71.         var dt = ''+comDate.getUTCSeconds();
  72.         if (dt.length<2) dt = '0'+dt;
  73.         dt = ':'+dt;
  74.         dt = (comDate.getUTCMinutes())+dt;
  75.         if (dt.length<5) dt = '0'+dt;
  76.         dt = ':'+dt;
  77.         dt = comDate.getUTCHours()+dt;
  78.         if (dt.length<8) dt = '0'+dt;
  79.  
  80.         dtstr += ' '+dt;
  81.         return dtstr;
  82.     }
  83.     else
  84.     {
  85.         var dt = ''+(comDate.getFullYear()%100);
  86.         if (dt.length<2) dt = '0'+dt;
  87.         dt = '.'+dt;
  88.         dt = (comDate.getMonth()+1)+dt;
  89.         if (dt.length<5) dt = '0'+dt;
  90.         dt = '.'+dt;
  91.         dt = comDate.getDate()+dt;
  92.         if (dt.length<8) dt = '0'+dt;
  93.  
  94.         var dtstr = dt;
  95.  
  96.         var dt = ''+(comDate.getSeconds());
  97.         if (dt.length<2) dt = '0'+dt;
  98.         dt = ':'+dt;
  99.         dt = (comDate.getMinutes())+dt;
  100.         if (dt.length<5) dt = '0'+dt;
  101.         dt = ':'+dt;
  102.         dt = comDate.getHours()+dt;
  103.         if (dt.length<8) dt = '0'+dt;
  104.  
  105.         dtstr += ' '+dt;
  106.         return dtstr;
  107.     }
  108. }
  109.  
  110.  
  111. if (window.location.hostname.indexOf('linux.org.ru') != -1) {
  112.  
  113.     $ = window.$;
  114.     if (noFavorites) $('.fav-buttons').hide();
  115.  
  116.     isTango = false;   
  117.  
  118.     if ($('#sitetitle').first().text() == 'LINUX.ORG.RU') isTango = true;
  119.  
  120.     if (moveAvatar || $('.userpic').length == 0) $('.sign').css('margin-left','0');
  121.     $('.msg').css('padding','0');
  122.     $('.msg-container').css('margin-left','5px');
  123.     $('.msg-container').css('padding-bottom','7px');
  124.  
  125.     $('body').css('max-width','100%');
  126.     $('body').css('padding','0 3px 0 2px');
  127.  
  128.     $('#bd').css('margin','0');
  129.     $('#bd').css('padding','0');
  130.    
  131.     if (isTango) {
  132.         $('#bd').css('padding','0 10px 0 5px');
  133.     }
  134.  
  135.     $('footer').css('border-top','0');
  136.     $('footer').css('border-bottom','0');
  137.     $('footer').css('padding-top','0');
  138.     $('footer').css('padding-bottom','0');
  139.     $('footer').css('margin-bottom','0');
  140.  
  141.     $('.msg h1').css('font-size','x-large');
  142.     $('.msg h1').css('padding-left','10px');
  143.     $('.msg h1').css('margin-top','0');
  144.     $('.msg h1').css('margin-bottom','0');
  145.  
  146.     $('header').css('margin-bottom','0');
  147.  
  148.  
  149.     $('.msg_body').css('margin-left','5px');
  150.  
  151.     $('.tags-section-info').css('border-top','0');
  152.     $('.tags-section-info').css('border-bottom','0');
  153.     $('.tags-section-info').css('padding-top','0');
  154.     $('.tags-section-info').css('padding-bottom','0');
  155.     $('.tags-section-info').css('padding-left','8px');
  156.  
  157. //  $('.fav-buttons a').css('font-size','100%');
  158.  
  159.     $('div[itemprop="articleBody"]').css('padding-bottom','0');
  160.  
  161.     $('.title').css('padding-left','5px');
  162.  
  163.     var navPath = "";
  164.  
  165.  
  166. //////////////////////////// Отключение Gravatar ///////////////////////////////////////////
  167.  
  168. if (noGravatar) {  
  169.     $('.userpic').each(function() {
  170.         photo = $(this).children('.photo');
  171.         src = photo.attr('src');
  172.         if (src.indexOf('https://secure.gravatar.com/avatar/') != -1)
  173.         photo.attr('src','');
  174.         $(this).height(150);
  175.     });
  176. }
  177.  
  178. //////////////////////////// Изменение формата даты ////////////////////////////////////////
  179.  
  180. if (secondsInTimestamp) {
  181.     $('time[itemprop="commentTime"]').each(function() {
  182.         var comDate = new Date(Date.parse($(this).attr('datetime')));              
  183.         $(this).text(dateFormat(comDate));
  184.     });
  185.  
  186.     $('time[itemprop="dateCreated"]').each(function() {
  187.         var comDate = new Date(Date.parse($(this).attr('datetime')));              
  188.         $(this).text(dateFormat(comDate));
  189.     });
  190.  
  191.     $('time[itemprop="false"]').each(function() {
  192.         var comDate = new Date(Date.parse($(this).attr('datetime')));              
  193.         $(this).text(dateFormat(comDate));
  194.     });
  195.  
  196.  
  197. }
  198.  
  199.  
  200. //////////////////////////// Замена "ёлочек" ///////////////////////////////////////////////
  201.  
  202. if (oldQuotation) {
  203.     $('.msg_body p').each(function(){
  204.         msgtext = $(this).html();
  205.         msgtext = msgtext.split('«').join('"');
  206.         msgtext = msgtext.split('»').join('"');
  207.         $(this).html(msgtext);
  208.     });
  209. }
  210.  
  211. ////////////////////////////////////////////////////////////////////////////////////////////
  212.  
  213.     $('.msg').each(function() {
  214.  
  215.         var message = $(this);
  216.         var title = message.children('.title');
  217.         var container = message.children('.msg-container');
  218.         var messagebody = container.children('.msg_body');
  219.         var msgfooter = messagebody.children('footer');
  220.         var msgsign = msgfooter.children('.sign');
  221.  
  222.         var reply = messagebody.children('.reply').children('ul');
  223.         var tags = message.children('header').children('.tags');
  224.         var navs = message.children('header').children('.msg-top-header').children('span[itemprop="articleSection"]');
  225.  
  226. //////////////////////////// Переносим кнопку ответа из футера ////////////////////////////
  227.  
  228.         if (msgfooter.length > 0)
  229.         {
  230.             messagebody.children('.reply').appendTo(msgfooter);
  231.         }
  232.  
  233. /////////////////////////// Скроллим до target-а //////////////////////////////////////////
  234.  
  235. /*      var msgtarget = $(".messages .msg:target");
  236.         if (msgtarget.length > 0)
  237.         {
  238.             $(window).scrollTop(msgtarget.position().top+msgtarget.height()/2-$(window).height()/2);
  239.         }
  240. */
  241. //////////////////////////// Старый формат даты //////////////////////////////////////////
  242.  
  243. if (oldDate) {
  244.         if (msgsign.children('br').length > 0)
  245.         {
  246.             msgsign.children('br').remove();
  247.             msgsign.children('time').prepend(' (');
  248.             msgsign.children('time').append(')');
  249.         }
  250. }
  251.  
  252. //////////////////////////// FAV-ки в заголовок ///////////////////////////////////////////
  253. /*  favText = container.children('.fav-buttons').html();
  254.     if (favText !== undefined)
  255.     {
  256.         titleButtons = $('<div style="float: right;"></div>').addClass('fav-buttons');
  257.         titleButtons.appendTo(title);
  258.  
  259.         $('#favs_button').appendTo(titleButtons);
  260.         $('#favs_count').appendTo(titleButtons);
  261.         $('<span> </span>').appendTo(titleButtons);
  262.         $('#memories_button').appendTo(titleButtons);
  263.         $('#memories_count').appendTo(titleButtons);
  264.  
  265.     }
  266. */
  267. /////////////////////////// ИЩЕМ ССЫЛКИ И ПРЕВРАЩАЕМ ИХ В РЕШЁТКИ //////////////////////
  268.  
  269. if (gridLinks) {
  270.         msg_link = "";
  271.  
  272.         reply.children('li').each(function() {
  273.             msg_link = $(this).children('a').attr('href');
  274.             if ($(this).children('a').text() == "Ссылка") $(this).hide();
  275.         });
  276.  
  277.         oldTitle = title.html();
  278.         title.html('[<a href="'+msg_link+'">#</a>] '+oldTitle);
  279. }
  280. else
  281. {
  282.         if (isTango && tags.length == 0) container.css('padding-top','7px');
  283. }
  284.  
  285. ///////////////////////// Старый вид тегов /////////////////////////////////////////////
  286.  
  287.         if ((tags !== undefined) && (tags != null) && oldTags)
  288.         {
  289.             tagsText = '<i class="icon-tag"></i> ';
  290.  
  291.             tagList = tags.children('.tag');
  292.             if (tagList.length==0) tagsText = '';            
  293.    
  294.             tagList.each( function(index) {
  295.                 if (index>0) tagsText += ', ';
  296.                 tagName = $(this).html();
  297.                 tagsText += '<a class="tag" href="/tag/'+tagName+'" rel="tag">'+tagName+'</a>';
  298.             });
  299.          
  300. if (tagsDown) {
  301.             tags.appendTo(messagebody.children('div[itemprop="articleBody"]'));
  302.             msgfooter.css('margin-top','7px');
  303.  
  304. }
  305.  
  306.             tags.css('font-size','13px');
  307.             tags.html(tagsText);
  308.         }
  309.  
  310.  
  311.  
  312. ///////////////////////// ПЕРЕНОСИМ НАВИГАЦИЮ НАВЕРХ //////////////////////////////////
  313.  
  314.         if ((navs !== undefined) && (navs != null) && oldNav)
  315.         {
  316.             navPath2 = navs.html();
  317.          
  318.             if (navPath2 !== undefined && (navPath2 != null))
  319.             {
  320.                 navPath = navPath2;
  321.                 navPath2 = navPath.split('<i class="icon-tag">')[0];
  322.                 if (navPath2.length > 0) navPath = navPath2;
  323.             }
  324.  
  325.         }
  326.  
  327. //////////////////////// ИЩЕМ АВАТАРКУ НЕ НА МЕСТЕ ////////////////////////////////////
  328.  
  329. if (moveAvatar) {
  330.         msgfooter.children('.userpic').each(function() {
  331.             messagebody.children('div[itemprop="articleBody"]').css('padding-left','170px');
  332.  
  333.             messagebody.children('footer').css('margin-left','170px');
  334.             messagebody.children('.reply').css('margin-left','170px');
  335.  
  336.             userpic = $(this);
  337.  
  338.             userpic.css('padding-top','5px');
  339.             userpic.css('margin-right','10px');
  340.  
  341.             userpic.prependTo(messagebody);
  342.         });
  343. }
  344.     });
  345.  
  346. //////////////////////// Восстанавливаем навигацию ////////////////////////////////////
  347.  
  348.  
  349.     if (oldNav && $('#navPath').length == 0 && navPath.length > 0)
  350.     {
  351.         navPath = navPath.replace('Форум -','<a href="/forum/">Форум</a> -');
  352.         $('#bd').prepend('<div class="nav"><div id="navPath">'+navPath+'</div></div>');
  353.         $('.msg-top-header').hide();
  354.     }
  355.  
  356.  
  357. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement