TJ

thread navigation helper for TJ club

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

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