From 71db41720629a25110f69097bf149f96c71c29ef Mon Sep 17 00:00:00 2001 From: czaks Date: Sun, 4 Aug 2013 06:08:10 -0400 Subject: post-hover.js: ukko fix --- js/post-hover.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'js/post-hover.js') diff --git a/js/post-hover.js b/js/post-hover.js index 48f0ed96..1d0c2902 100644 --- a/js/post-hover.js +++ b/js/post-hover.js @@ -23,7 +23,14 @@ onready(function(){ } else { return; } - + + var board = $(this); + while (board.data('board') === undefined) { + board = board.parent(); + } + var threadid = board.attr('id'); + board = board.data('board'); + var $post = false; var hovering = false; var hovered_at; @@ -43,6 +50,7 @@ onready(function(){ $newPost.find('span.mentioned').remove(); $newPost .attr('id', 'post-hover-' + id) + .attr('data-board', board) .addClass('post-hover') .css('position', 'absolute') .css('border-style', 'solid') @@ -53,7 +61,7 @@ onready(function(){ } }; - $post = $('div.post#reply_' + id); + $post = $('[data-board="' + board + '"] div.post#reply_' + id); if($post.length > 0) { start_hover($(this)); } else { @@ -69,12 +77,12 @@ onready(function(){ context: document.body, success: function(data) { $(data).find('div.post.reply').each(function() { - if($('#' + $(this).attr('id')).length == 0) - $('div.post:first').prepend($(this).css('display', 'none').addClass('hidden')); + if($('[data-board="' + board + '"] #' + $(this).attr('id')).length == 0) + $('[data-board="' + board + '"]#' + threadid + " .post.reply:first").before($(this).css('display', 'none').addClass('hidden')); }); - $post = $('div.post#reply_' + id); + $post = $('[data-board="' + board + '"] div.post#reply_' + id); if(hovering && $post.length > 0) { start_hover($link); } @@ -94,7 +102,7 @@ onready(function(){ if(!$post) return; - var $hover = $('#post-hover-' + id); + var $hover = $('#post-hover-' + id + '[data-board="' + board + '"]'); if($hover.length == 0) return; -- cgit v1.3 From 185e68de47210b9886d87196832d166ff85dc72c Mon Sep 17 00:00:00 2001 From: czaks Date: Mon, 5 Aug 2013 00:18:25 -0400 Subject: post-hover.js: allow working between threads and boards (ukko patchset required!) --- js/post-hover.js | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) (limited to 'js/post-hover.js') diff --git a/js/post-hover.js b/js/post-hover.js index 1d0c2902..8d726003 100644 --- a/js/post-hover.js +++ b/js/post-hover.js @@ -17,20 +17,28 @@ onready(function(){ var $link = $(this); var id; - - if(id = $link.text().match(/^>>(\d+)$/)) { - id = id[1]; + var matches; + + if(matches = $link.text().match(/^>>(?:>\/([^\/]+)\/)?(\d+)$/)) { + id = matches[2]; } else { return; } - + var board = $(this); while (board.data('board') === undefined) { board = board.parent(); } - var threadid = board.attr('id'); + var threadid = board.attr('id').replace("thread_", ""); board = board.data('board'); + var parentboard = board; + + if (matches[1] !== undefined) { + board = matches[1]; + } + + var $post = false; var hovering = false; var hovered_at; @@ -76,11 +84,25 @@ onready(function(){ url: url, context: document.body, success: function(data) { - $(data).find('div.post.reply').each(function() { - if($('[data-board="' + board + '"] #' + $(this).attr('id')).length == 0) - $('[data-board="' + board + '"]#' + threadid + " .post.reply:first").before($(this).css('display', 'none').addClass('hidden')); + var mythreadid = $(data).find('div[id^="thread_"]').attr('id').replace("thread_", ""); - }); + if (mythreadid == threadid && parentboard == board) { + $(data).find('div.post.reply').each(function() { + if($('[data-board="' + board + '"] #' + $(this).attr('id')).length == 0) { + $('[data-board="' + board + '"]#thread_' + threadid + " .post.reply:first").before($(this).hide().addClass('hidden')); + } + }); + } + else if ($('[data-board="' + board + '"]#thread_'+mythreadid).length > 0) { + $(data).find('div.post.reply').each(function() { + if($('[data-board="' + board + '"] #' + $(this).attr('id')).length == 0) { + $('[data-board="' + board + '"]#thread_' + mythreadid + " .post.reply:first").before($(this).hide().addClass('hidden')); + } + }); + } + else { + $(data).find('div[id^="thread_"]').hide().attr('data-cached', 'yes').prependTo('form[name="postcontrols"]'); + } $post = $('[data-board="' + board + '"] div.post#reply_' + id); if(hovering && $post.length > 0) { -- cgit v1.3 From b438fb294ba15881dd5bb4bc4d2e6432e74ec47d Mon Sep 17 00:00:00 2001 From: czaks Date: Mon, 5 Aug 2013 01:00:25 -0400 Subject: post-hover.js: support linking to OPs (requires ukko patchset!) --- js/post-hover.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'js/post-hover.js') diff --git a/js/post-hover.js b/js/post-hover.js index 8d726003..040b6a73 100644 --- a/js/post-hover.js +++ b/js/post-hover.js @@ -47,15 +47,19 @@ onready(function(){ hovered_at = {'x': e.pageX, 'y': e.pageY}; var start_hover = function($link) { - if($post.is(':visible') && + if($.contains($post[0], $link[0])) { + // link links to itself or to op; ignore + } + else if($post.is(':visible') && $post.offset().top + $post.height() >= $(window).scrollTop() && - $post.offset().top <= $(window).scrollTop() + $(window).height() - ) { + $post.offset().top <= $(window).scrollTop() + $(window).height()) { // post is in view $post.attr('style', 'border-style: none dashed dashed none; background: ' + $post.css('border-right-color')); } else { var $newPost = $post.clone(); + $newPost.find('>.reply, >br').remove(); $newPost.find('span.mentioned').remove(); + $newPost .attr('id', 'post-hover-' + id) .attr('data-board', board) @@ -64,12 +68,13 @@ onready(function(){ .css('border-style', 'solid') .css('box-shadow', '1px 1px 1px #999') .css('display', 'block') - .insertAfter($link.parent()); + .addClass('reply').addClass('post') + .insertAfter($link.parent()) $link.trigger('mousemove'); } }; - $post = $('[data-board="' + board + '"] div.post#reply_' + id); + $post = $('[data-board="' + board + '"] div.post#reply_' + id + ', [data-board="' + board + '"]div#thread_' + id); if($post.length > 0) { start_hover($(this)); } else { @@ -104,7 +109,7 @@ onready(function(){ $(data).find('div[id^="thread_"]').hide().attr('data-cached', 'yes').prependTo('form[name="postcontrols"]'); } - $post = $('[data-board="' + board + '"] div.post#reply_' + id); + $post = $('[data-board="' + board + '"] div.post#reply_' + id + ', [data-board="' + board + '"]div#thread_' + id); if(hovering && $post.length > 0) { start_hover($link); } @@ -117,7 +122,7 @@ onready(function(){ return; $post.attr('style', ''); - if($post.hasClass('hidden')) + if($post.hasClass('hidden') || $post.data('cached') == 'yes') $post.css('display', 'none'); $('.post-hover').remove(); }).mousemove(function(e) { -- cgit v1.3