1
0
mirror of https://github.com/vichan-devel/vichan.git synced 2024-11-13 18:40:49 +01:00
vichan/js/inline.js

73 lines
1.7 KiB
JavaScript
Raw Normal View History

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:32:41 +02:00
var targetOP = this.pathname.match(/(\d+).html/)[1]
var selector = targetNum === targetOP
2014-09-24 06:25:34 +02:00
? '.op .body'
2014-10-03 22:32:41 +02:00
: '#reply_' + targetNum
2014-09-24 06:25:34 +02:00
2014-09-25 19:11:33 +02:00
var node = this.className
2014-10-03 22:05:45 +02:00
? $root.find('> .intro')
2014-10-03 22:08:50 +02:00
: $(this)
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:28:52 +02:00
var srcOP = $root.closest('[id^=thread]').attr('id').match(/\d+/)[0]
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
})()