89 lines
2.0 KiB
CoffeeScript
89 lines
2.0 KiB
CoffeeScript
Banner =
|
|
init: ->
|
|
$.asap (-> d.body), ->
|
|
$.asap (-> $ 'hr'), Banner.ready
|
|
|
|
ready: ->
|
|
banner = $ ".boardBanner"
|
|
{children} = banner
|
|
|
|
i = 0
|
|
while child = children[i++]
|
|
if i is 1
|
|
child.title = "Click to change"
|
|
$.on child, 'click', Banner.cb.toggle
|
|
|
|
continue
|
|
|
|
if Conf['Custom Board Titles']
|
|
Banner.custom(child).title = "Ctrl+click to edit board #{if i is 3
|
|
'sub'
|
|
else
|
|
''}title"
|
|
child.spellcheck = false
|
|
|
|
return
|
|
|
|
cb:
|
|
toggle: do ->
|
|
types =
|
|
jpg: 227
|
|
png: 270
|
|
gif: 253
|
|
|
|
->
|
|
type = Object.keys(types)[Math.floor 3 * Math.random()]
|
|
num = Math.floor types[type] * Math.random()
|
|
$('img', @parentNode).src = "//s.4cdn.org/image/title/#{num}.#{type}"
|
|
|
|
click: (e) ->
|
|
if e.ctrlKey
|
|
@contentEditable = true
|
|
@focus()
|
|
|
|
keydown: (e) ->
|
|
e.stopPropagation()
|
|
return @blur() if !e.shiftKey and e.keyCode is 13
|
|
|
|
focus: ->
|
|
@textContent = @innerHTML
|
|
|
|
string = "#{g.BOARD}.#{@className}"
|
|
string2 = "#{string}.orig"
|
|
|
|
items = {title: @innerHTML}
|
|
items[string] = ''
|
|
items[string2] = false
|
|
|
|
$.get items, (items) ->
|
|
unless items[string2] and items.title is items[string]
|
|
$.set string2, items.title
|
|
|
|
return
|
|
|
|
blur: ->
|
|
@innerHTML = @textContent
|
|
@contentEditable = false
|
|
$.set "#{g.BOARD}.#{@className}", @textContent
|
|
|
|
custom: (child) ->
|
|
cachedTest = child.innerHTML
|
|
string = "#{g.BOARD}.#{child.className}"
|
|
|
|
$.on child, 'click keydown focus blur', (e) -> Banner.cb[e.type].apply @, [e]
|
|
|
|
$.get string, cachedTest, (item) ->
|
|
return unless title = item[string]
|
|
return child.innerHTML = title if Conf['Persistent Custom Board Titles']
|
|
|
|
string2 = "#{string}.orig"
|
|
|
|
$.get string2, cachedTest, (itemb) ->
|
|
if cachedTest is itemb[string2]
|
|
child.innerHTML = title
|
|
else
|
|
$.set string, cachedTest
|
|
$.set string2, cachedTest
|
|
|
|
child
|