4chan-x/src/Quotelinks/Upvotes.coffee
2016-03-28 02:16:23 -07:00

56 lines
1.5 KiB
CoffeeScript

Upvotes =
count: {}
text: '\u305D\u3046\u3060\u306D'
regexp: /(?:^>.*\n)+\s*(?:\u305D\u3046\u3060\u306D|this)/gmi
init: ->
return unless g.VIEW is 'thread' and Conf['Upvotes']
@textPosted = if g.BOARD.ID is 'r9k' then 'This.' else @text
Post.callbacks.push
name: 'Upvotes'
cb: @node
node: ->
return if @isFetchedQuote or @origin?.isFetchedQuote
if @isClone
@nodes.vote = $ '.upvote', @nodes.info
$.on @nodes.vote, 'click', Upvotes.vote
return
a = $.el 'a',
className: 'upvote'
href: 'javascript:;'
textContent: '+'
$.add @nodes.info, a
@nodes.vote = a
$.on a, 'click', Upvotes.vote
Upvotes.count[@fullID] = 0
quotes = {}
for context in @info.comment.match(Upvotes.regexp) or []
for quote in context.match(/>>\d+/g) or []
quotes[quote[2..]] = true
for quote of quotes
Upvotes.increment "#{g.BOARD}.#{quote}"
increment: (fullID) ->
return unless fullID of Upvotes.count
count = ++Upvotes.count[fullID]
post = g.posts[fullID]
for post in [post, post.clones...]
post.nodes.vote.textContent = "#{Upvotes.text}x#{count}"
return
vote: ->
return unless QR.postingIsEnabled
QR.quote.call @
{com} = QR.nodes
text = "#{Upvotes.textPosted}\n"
pos = com.selectionStart
com.value = com.value[..pos] + text + com.value[pos...]
pos += text.length
com.setSelectionRange pos, pos
$.event 'input', null, com