Migrate custom board titles to a DataBoard so that exporting and importing works for them.
This commit is contained in:
parent
da816661b5
commit
893eb114ef
@ -1,5 +1,5 @@
|
|||||||
class DataBoard
|
class DataBoard
|
||||||
@keys = ['hiddenThreads', 'hiddenPosts', 'lastReadPosts', 'yourPosts', 'watchedThreads']
|
@keys = ['hiddenThreads', 'hiddenPosts', 'lastReadPosts', 'yourPosts', 'watchedThreads', 'customTitles']
|
||||||
|
|
||||||
constructor: (@key, sync, dontClean) ->
|
constructor: (@key, sync, dontClean) ->
|
||||||
@data = Conf[key]
|
@data = Conf[key]
|
||||||
|
|||||||
@ -2,6 +2,9 @@ Banner =
|
|||||||
banners: `<%= JSON.stringify(grunt.file.readJSON('src/Miscellaneous/banners.json')) %>`
|
banners: `<%= JSON.stringify(grunt.file.readJSON('src/Miscellaneous/banners.json')) %>`
|
||||||
|
|
||||||
init: ->
|
init: ->
|
||||||
|
if Conf['Custom Board Titles']
|
||||||
|
@db = new DataBoard 'customTitles', null, true
|
||||||
|
|
||||||
$.asap (-> d.body), ->
|
$.asap (-> d.body), ->
|
||||||
$.asap (-> $ 'hr'), Banner.ready
|
$.asap (-> $ 'hr'), Banner.ready
|
||||||
|
|
||||||
@ -47,12 +50,8 @@ Banner =
|
|||||||
$('img', @parentNode).src = "//s.4cdn.org/image/title/#{banner}"
|
$('img', @parentNode).src = "//s.4cdn.org/image/title/#{banner}"
|
||||||
|
|
||||||
click: (e) ->
|
click: (e) ->
|
||||||
return unless (e.ctrlKey or e.metaKey) and @className in ['boardTitle', 'boardSubtitle']
|
return unless (e.ctrlKey or e.metaKey)
|
||||||
|
Banner.original[@className] ?= @cloneNode true
|
||||||
unless Banner.original[@className]
|
|
||||||
Banner.original[@className] = @cloneNode true
|
|
||||||
$.set "#{g.BOARD}.#{@className}.orig", @textContent
|
|
||||||
|
|
||||||
@contentEditable = true
|
@contentEditable = true
|
||||||
$.replace br, $.tn('\n') for br in $$ 'br', @
|
$.replace br, $.tn('\n') for br in $$ 'br', @
|
||||||
@focus()
|
@focus()
|
||||||
@ -62,41 +61,48 @@ Banner =
|
|||||||
return @blur() if !e.shiftKey and e.keyCode is 13
|
return @blur() if !e.shiftKey and e.keyCode is 13
|
||||||
|
|
||||||
blur: ->
|
blur: ->
|
||||||
return unless @className in ['boardTitle', 'boardSubtitle']
|
|
||||||
|
|
||||||
if @textContent
|
if @textContent
|
||||||
@contentEditable = false
|
@contentEditable = false
|
||||||
$.set "#{g.BOARD}.#{@className}", @textContent
|
Banner.db.set
|
||||||
|
boardID: g.BOARD.ID
|
||||||
|
threadID: @className
|
||||||
|
val:
|
||||||
|
title: @textContent
|
||||||
|
orig: Banner.original[@className].textContent
|
||||||
else
|
else
|
||||||
$.rmAll @
|
$.rmAll @
|
||||||
$.add @, [Banner.original[@className].cloneNode(true).childNodes...]
|
$.add @, [Banner.original[@className].cloneNode(true).childNodes...]
|
||||||
$.delete "#{g.BOARD}.#{@className}"
|
Banner.db.delete
|
||||||
|
boardID: g.BOARD.ID
|
||||||
|
threadID: @className
|
||||||
|
|
||||||
original: {}
|
original: {}
|
||||||
|
|
||||||
custom: (child) ->
|
custom: (child) ->
|
||||||
{className} = child
|
{className} = child
|
||||||
return unless className in ['boardTitle', 'boardSubtitle']
|
|
||||||
|
|
||||||
child.title = "Ctrl/\u2318+click to edit board #{className[5..].toLowerCase()}"
|
child.title = "Ctrl/\u2318+click to edit board #{className[5..].toLowerCase()}"
|
||||||
child.spellcheck = false
|
child.spellcheck = false
|
||||||
|
|
||||||
for event in ['click', 'keydown', 'blur']
|
for event in ['click', 'keydown', 'blur']
|
||||||
$.on child, event, Banner.cb[event]
|
$.on child, event, Banner.cb[event]
|
||||||
|
|
||||||
cachedTest = child.textContent
|
# XXX Migrate old settings.
|
||||||
string = "#{g.BOARD}.#{className}"
|
string = "#{g.BOARD}.#{className}"
|
||||||
|
string2 = "#{string}.orig"
|
||||||
|
items = {}
|
||||||
|
items[string] = ''
|
||||||
|
items[string2] = child.textContent
|
||||||
|
$.get items, (items) ->
|
||||||
|
if items[string]
|
||||||
|
Banner.db.set
|
||||||
|
boardID: g.BOARD.ID
|
||||||
|
threadID: className
|
||||||
|
val: {title: items[string], orig: items[string2]}
|
||||||
|
$.delete [string, string2]
|
||||||
|
|
||||||
$.get string, '', (item) ->
|
if data = Banner.db.get {boardID: g.BOARD.ID, threadID: className}
|
||||||
return unless title = item[string]
|
if Conf['Persistent Custom Board Titles'] or data.orig is child.textContent
|
||||||
Banner.original[className] ?= child.cloneNode true
|
Banner.original[className] = child.cloneNode true
|
||||||
return child.textContent = title if Conf['Persistent Custom Board Titles']
|
child.textContent = data.title
|
||||||
|
else
|
||||||
string2 = "#{string}.orig"
|
Banner.db.delete {boardID: g.BOARD.ID, threadID: className}
|
||||||
|
|
||||||
$.get string2, cachedTest, (itemb) ->
|
|
||||||
if cachedTest is itemb[string2]
|
|
||||||
child.textContent = title
|
|
||||||
else
|
|
||||||
$.delete string
|
|
||||||
$.set string2, cachedTest
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user