halfspin

LGM Comment Browser

Aug 30th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name       LGM Comment Browser
  3. // @namespace  http://niko.cat/
  4. // @version    0.1
  5. // @description  Browse nested LGM comments chronologically
  6. // @match      http://www.lawyersgunsmoneyblog.com/*
  7. // @copyright  2014+, You
  8. // ==/UserScript==
  9.  
  10. var comments = jQuery('li.comment');
  11.  
  12. // ids are formatted as 'comment-<id>'
  13. function parseId(id) {
  14.     return parseInt(id.substring(8));
  15. }
  16.  
  17. var ids = comments.map(function() { return parseId(this.id); }).get();
  18. var sortedIds = ids.slice();
  19. sortedIds.sort(function(a, b) { return a - b; });
  20. var sortedPos = {};
  21. for (var i = 0; i < sortedIds.length; ++i) {
  22.     sortedPos[sortedIds[i]] = i;
  23. }
  24.  
  25. var hoverbox = jQuery('<span id="hoverbox" style="position:relative; float:right">' +
  26.                       '<span style="position:absolute">' +
  27.                       '\xa0<a class="prev-link" href="#">☜︎</a>' +
  28.                       '\xa0<a class="up-link" href="#">☝︎︎</a>' +
  29.                       '\xa0<a class="next-link" href="#">☞︎︎</a>' +
  30.                       '</span>' +
  31.                       '</span>');
  32.  
  33. function hover() {
  34.     jQuery('#hoverbox').remove();
  35.     var body = jQuery(this).closest('.comment-body');
  36.     var chain = jQuery(this).parents('li.comment');
  37.     var comment = chain.first();
  38.     var depth = chain.length;
  39.     var id = parseId(comment[0].id);
  40.     var index = sortedPos[id];
  41.     var prev = sortedIds[((index === 0) ? (sortedIds.length) : (index)) - 1];
  42.     var next = sortedIds[(index + 1) % sortedIds.length];
  43.     var up = comment.parent().closest('li.comment');
  44.     up = (up.length) ? parseId(up[0].id) : id;
  45.     jQuery(hoverbox)
  46.     .children().css('right', ((8 - depth) * 16) + 'px').end()
  47.     .find('a.prev-link').attr('href', '#comment-' + prev).end()
  48.     .find('a.up-link').attr('href', '#comment-' + up).end()
  49.     .find('a.next-link').attr('href', '#comment-' + next).end();
  50.     body.find('div.comment-author').append(hoverbox);
  51. }
  52.  
  53. function unhover() {
  54.     jQuery('#hoverbox').remove();
  55. }
  56.  
  57. jQuery(document).delegate('.comment-body', 'mouseenter', hover);
  58. jQuery(document).delegate('.comment-body', 'mouseleave', unhover);
Advertisement
Add Comment
Please, Sign In to add comment