2014-09-24 04:52:06 +02:00
|
|
|
;(function() {
|
2014-09-24 21:49:18 +02:00
|
|
|
var cache = {}
|
|
|
|
|
2014-09-24 06:25:34 +02:00
|
|
|
var inline = function(e) {
|
|
|
|
e.preventDefault()
|
|
|
|
|
2014-09-25 19:11:33 +02:00
|
|
|
var $root = $(this).closest('.post')
|
2014-10-03 22:32:41 +02:00
|
|
|
var targetNum = this.textContent.slice(2)
|
2014-09-24 06:25:34 +02:00
|
|
|
|
2014-10-03 22:32:41 +02:00
|
|
|
var $clone = $root.find('#inline_' + targetNum)
|
2014-09-24 06:25:34 +02:00
|
|
|
if ($clone.length)
|
|
|
|
return $clone.remove()
|
|
|
|
|
2014-10-03 22:40:05 +02:00
|
|
|
var srcOP = $root.closest('[id^=thread]').attr('id').match(/\d+/)[0]
|
2014-09-24 06:25:34 +02:00
|
|
|
|
2014-10-03 22:40:05 +02:00
|
|
|
var node, targetOP
|
|
|
|
if (this.className) {// backlink
|
|
|
|
node = $root.find('> .intro')
|
|
|
|
targetOP = srcOP
|
|
|
|
} else {
|
|
|
|
node = $(this)
|
|
|
|
targetOP = this.pathname.match(/(\d+).html/)[1]
|
|
|
|
}
|
2014-09-25 19:11:33 +02:00
|
|
|
|
2014-09-24 06:25:34 +02:00
|
|
|
var link = {
|
2014-09-25 19:11:33 +02:00
|
|
|
node: node,
|
2014-10-03 22:32:41 +02:00
|
|
|
targetNum: targetNum
|
2014-09-24 06:25:34 +02:00
|
|
|
}
|
2014-09-24 21:17:30 +02:00
|
|
|
|
2014-10-03 22:40:05 +02:00
|
|
|
var selector = targetNum === targetOP
|
|
|
|
? '.op .body'
|
|
|
|
: '#reply_' + targetNum
|
|
|
|
|
2014-10-03 22:32:41 +02:00
|
|
|
if (srcOP === targetOP) {
|
2014-10-03 18:17:19 +02:00
|
|
|
// XXX post hover adds fetched threads to the DOM
|
2014-10-03 22:28:52 +02:00
|
|
|
selector = '#thread_' + srcOP + ' ' + selector
|
2014-10-03 22:08:50 +02:00
|
|
|
// XXX bypass the `(OP)` text
|
|
|
|
link.node = link.node.next()
|
2014-10-03 22:28:52 +02:00
|
|
|
|
2014-09-24 21:17:30 +02:00
|
|
|
var $target = $(selector)
|
2014-10-03 22:28:52 +02:00
|
|
|
if ($target.length)
|
|
|
|
return add(link, $target)
|
2014-09-24 21:49:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
var url = this.pathname
|
|
|
|
var data = cache[url]
|
|
|
|
if (data) {
|
|
|
|
var $target = $(data).find(selector)
|
|
|
|
return add(link, $target)
|
2014-09-24 21:17:30 +02:00
|
|
|
}
|
2014-09-24 21:49:18 +02:00
|
|
|
|
|
|
|
$.get(url, function(data) {
|
|
|
|
cache[url] = data
|
|
|
|
var $target = $(data).find(selector)
|
|
|
|
add(link, $target)
|
|
|
|
})
|
2014-09-24 06:25:34 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
var add = function(link, $target) {
|
|
|
|
var $clone = $target.clone(true)
|
|
|
|
$clone.attr({
|
2014-10-03 18:53:11 +02:00
|
|
|
"class": 'inline post',
|
2014-10-03 22:32:41 +02:00
|
|
|
id: 'inline_' + link.targetNum,
|
2014-10-03 22:28:52 +02:00
|
|
|
style: null// XXX remove post hover styling
|
2014-09-24 06:25:34 +02:00
|
|
|
})
|
2014-10-03 22:05:45 +02:00
|
|
|
$clone.insertAfter(link.node)
|
2014-09-24 06:25:34 +02:00
|
|
|
}
|
2014-09-24 04:52:06 +02:00
|
|
|
|
|
|
|
$('head').append(
|
|
|
|
'<style>' +
|
2014-10-03 19:03:31 +02:00
|
|
|
'.inline { border: 1px dashed black; white-space: normal }' +
|
2014-09-24 04:52:06 +02:00
|
|
|
'</style>')
|
|
|
|
|
2014-09-25 19:11:33 +02:00
|
|
|
$('.body a, .mentioned a')
|
2014-10-03 18:17:19 +02:00
|
|
|
.attr('onclick', null)// XXX disable highlightReply
|
2014-09-25 18:58:44 +02:00
|
|
|
.click(inline)
|
2014-09-24 06:25:34 +02:00
|
|
|
})()
|