TJ

thread navigation helper for TJ club

当前为 2015-07-31 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // (C) Paul Potseluev, Stepan Kiryushkin
  3. // @name TJ
  4. // @namespace TJ
  5. // @include https://tjournal.ru/*
  6. // @version 1
  7. // @grant none
  8. // @description thread navigation helper for TJ club
  9. // @description:ru Расширение упращяет навигацию в обсуждениях в клубе TJ
  10. TJComments = {
  11. d: $(document),
  12. b: $('html, body'),
  13.  
  14. init: function() {
  15. this.createAnchors();
  16.  
  17. $('.b-comment__up').click(function(e) {
  18. e.preventDefault();
  19.  
  20. var $this = $(this),
  21. $previous = $this.prev(),
  22. parent_item = $(this).parents(".b-comment__head"),
  23. parent_id = $(parent_item).find('.b-comment__datetime ').attr('data-parent-id');
  24. $parent = $('#commentBox' + parent_id),
  25. $children = $this.parents('.b-comment');
  26.  
  27. TJComments.scrollTo($parent);
  28. var ifHasChildId = $($parent).find('.b-comment__down').attr('data-children-id');
  29. if (ifHasChildId === undefined) {
  30. TJComments.createBack($parent, $children);
  31. }
  32. });
  33.  
  34. TJComments.d.on('click', '.b-comment__down', function(e) {
  35. e.preventDefault();
  36.  
  37. var $this = $(this),
  38. children_id = $this.data('children-id'),
  39. $children = $('#commentBox' + children_id);
  40.  
  41. $this.remove();
  42. TJComments.scrollTo($children);
  43. });
  44. },
  45.  
  46. scrollTo: function($element) {
  47. TJComments.b.animate({ scrollTop: $element.offset().top }, 500)
  48. $element.effect("highlight", { color: 'rgba(217,239,55,0.1)' }, 1500);
  49. },
  50. createAnchors: function() {
  51. var html = '<a href="#" class="b-comment__up">' +
  52. '&nbsp;&nbsp;<i class="icon-up-big" style="color: #999999"></i></a>';
  53. $('.b-comment__datetime.highlightParent').after(html);
  54. },
  55.  
  56. createBack: function($parent, $children) {
  57. var html = '<a href="#" class="b-comment__down" data-children-id="' + $children.data('id') + '">' +
  58. '&nbsp;&nbsp;<i class="icon-down-big" style="color: #999999"></i></a>';
  59.  
  60. $parent.find('.b-comment__datetime').after(html);
  61. }
  62. }
  63.  
  64. TJComments.d.ready(function() {
  65. TJComments.init();
  66. });
  67.  
  68. function illuminate($parentId) {
  69. var html = '<div class="b-illuminate" style="margin-left:6px;width:6px;height:6px;background:#ffb833;' +
  70. '-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;"></div>';
  71. $parentId = '#commentBox' + $parentId;
  72. $($parentId).find('.icon-star').append(html);
  73. $parentId = $($parentId).find('.b-comment__datetime ').attr('data-parent-id');
  74. if ($parentId != 0) {
  75. illuminate($parentId);
  76. }
  77. }
  78.  
  79. function hide() {
  80. $('div.b-illuminate').remove();
  81. }
  82.  
  83. function makeSignature () {
  84. var $parentId;
  85. var $parentIdValue;
  86. var $name;
  87. var html;
  88. var $commentsSecondLvl = $('.b-comment__up').parents(".b-comment__wrapper");
  89. $($commentsSecondLvl).each( function () {
  90. $parentIdValue = $(this).find('.b-comment__datetime ').attr('data-parent-id');
  91. $parentId = '#commentBox' + $parentIdValue;
  92. $name = $($parentId).find('.b-comment__user').find("span").get(0);
  93. $name = $($name).html();
  94. html = '<a data-commentid="' + $parentIdValue + '" style="color:#999;text-decoration:none" href="#comment'+ $parentIdValue + '"style="margin-left:-12px;">To ' + $name + ' </a>';
  95. $(this).find('.b-comment__datetime').prepend(html);
  96. });
  97. }
  98.  
  99. $(document).ready( function(){
  100. makeSignature();
  101. $('.b-comment__wrapper').mouseover( function(e) {
  102. var $parentId;
  103. var id;
  104. if(!($('div').is(".b-illuminate"))) {
  105. $parentId = $(this).find('.icon-star').attr('data-objectid');
  106. illuminate($parentId);
  107. }
  108. });
  109. $('.b-comment__wrapper').mouseleave( function(e) {
  110. hide();
  111. });
  112. $('a[href^="#comment"]').click( function(e){
  113. e.preventDefault();
  114. var scrollId = $(this).attr('data-commentid');
  115. var $scroll_el = $('#commentBox'+scrollId);
  116. TJComments.scrollTo($scroll_el);
  117. $('html, body').animate({ scrollTop: $element.offset().top }, 500);
  118. });
  119. });
  120.  
  121.  
  122. // ==/UserScript==
  123. // (C) Paul Potseluev, Stepan Kiryushkin