##// END OF EJS Templates
Optimized one query, removed debug code from settings so that it is run only...
Optimized one query, removed debug code from settings so that it is run only in debug mode

File last commit:

r422:4120940a default
r472:df52a056 default
Show More
refpopup.js
99 lines | 2.8 KiB | application/javascript | JavascriptLexer
neko259
Added post preview popups
r352 function $X(path, root) {
return document.evaluate(path, root || document, null, 6, null);
}
function $x(path, root) {
return document.evaluate(path, root || document, null, 8, null).singleNodeValue;
}
function $del(el) {
if(el) el.parentNode.removeChild(el);
}
function $each(list, fn) {
if(!list) return;
var i = list.snapshotLength;
if(i > 0) while(i--) fn(list.snapshotItem(i), i);
}
function addRefLinkPreview(node) {
$each($X('.//a[starts-with(text(),">>")]', node || document), function(link) {
link.addEventListener('mouseover', showPostPreview, false);
link.addEventListener('mouseout', delPostPreview, false);
});
}
function showPostPreview(e) {
var doc = document;
//ref id
var pNum = $(this).text().match(/\d+/);
neko259
Fixed NPE in reflink previews
r376 if (pNum == null || pNum.length == 0) {
neko259
Added thread autoupdate. Currently has some bugs, not ready for merge with the main branch
r361 return;
neko259
Fixed reply links on page that trigger ajax
r355 }
neko259
Added post preview popups
r352 //position
//var x = e.clientX + (doc.documentElement.scrollLeft || doc.body.scrollLeft) - doc.documentElement.clientLeft + 1;
//var y = e.clientY + (doc.documentElement.scrollTop || doc.body.scrollTop) - doc.documentElement.clientTop;
var x = e.clientX + (doc.documentElement.scrollLeft || doc.body.scrollLeft) + 2;
var y = e.clientY + (doc.documentElement.scrollTop || doc.body.scrollTop);
var cln = doc.createElement('div');
cln.id = 'pstprev_' + pNum;
neko259
Fixed refmaps and bumplimited style in post previews
r359 cln.className = 'post_preview';
neko259
Added post preview popups
r352
cln.style.cssText = 'top:' + y + 'px;' + (x < doc.body.clientWidth/2 ? 'left:' + x + 'px' : 'right:' + parseInt(doc.body.clientWidth - x + 1) + 'px');
cln.addEventListener('mouseout', delPostPreview, false);
var mkPreview = function(cln, html) {
cln.innerHTML = html;
addRefLinkPreview(cln);
};
neko259
Truncate posts in reflink popups
r368 cln.innerHTML = "<div class=\"post\">" + gettext('Loading...') + "</div>";
neko259
Added post preview popups
r352
if($('div[id='+pNum+']').length > 0) {
neko259
Fixed refmaps and bumplimited style in post previews
r359 var postdata = $('div[id='+pNum+']').wrap("<div/>").parent().html();
neko259
Added post preview popups
r352
mkPreview(cln, postdata);
neko259
Added animation to post previews
r421 } else {
neko259
Load reflink previews of posts that are not present on the current page
r354 $.ajax({
neko259
Truncate posts in reflink popups
r368 url: '/api/post/' + pNum + '/?truncated'
neko259
Added thread autoupdate. Currently has some bugs, not ready for merge with the main branch
r361 })
.success(function(data) {
var postdata = $(data).wrap("<div/>").parent().html();
neko259
Load reflink previews of posts that are not present on the current page
r354
neko259
Added thread autoupdate. Currently has some bugs, not ready for merge with the main branch
r361 //make preview
mkPreview(cln, postdata);
neko259
Load reflink previews of posts that are not present on the current page
r354
neko259
Added thread autoupdate. Currently has some bugs, not ready for merge with the main branch
r361 })
.error(function() {
neko259
Truncate posts in reflink popups
r368 cln.innerHTML = "<div class=\"post\">"
+ gettext('Post not found') + "</div>";
neko259
Added thread autoupdate. Currently has some bugs, not ready for merge with the main branch
r361 });
neko259
Load reflink previews of posts that are not present on the current page
r354 }
neko259
Added post preview popups
r352
$del(doc.getElementById(cln.id));
neko259
Load reflink previews of posts that are not present on the current page
r354 //add preview
neko259
Speed up reflink popup animation
r422 $(cln).fadeIn(200);
neko259
Load reflink previews of posts that are not present on the current page
r354 $('body').append(cln);
neko259
Added post preview popups
r352 }
function delPostPreview(e) {
var el = $x('ancestor-or-self::*[starts-with(@id,"pstprev")]', e.relatedTarget);
if(!el) $each($X('.//div[starts-with(@id,"pstprev")]'), function(clone) {
$del(clone)
});
else while(el.nextSibling) $del(el.nextSibling);
}
function addPreview() {
$('.post').find('a').each(function() {
showPostPreview($(this));
});
}