56 lines
1.5 KiB
CoffeeScript
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
|