summaryrefslogtreecommitdiff
path: root/js/post-hover.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/post-hover.js')
-rw-r--r--js/post-hover.js65
1 files changed, 50 insertions, 15 deletions
diff --git a/js/post-hover.js b/js/post-hover.js
index 48f0ed96..040b6a73 100644
--- a/js/post-hover.js
+++ b/js/post-hover.js
@@ -17,13 +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').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;
@@ -32,28 +47,34 @@ 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)
.addClass('post-hover')
.css('position', 'absolute')
.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 = $('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 {
@@ -68,13 +89,27 @@ onready(function(){
url: url,
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'));
+ 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 = $('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);
}
@@ -87,14 +122,14 @@ 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) {
if(!$post)
return;
- var $hover = $('#post-hover-' + id);
+ var $hover = $('#post-hover-' + id + '[data-board="' + board + '"]');
if($hover.length == 0)
return;