Make the Custom Board Nav setting toggle-able and syncing.
This commit is contained in:
parent
21224b4f18
commit
9edade6f3c
@ -2,7 +2,6 @@ Config =
|
|||||||
main:
|
main:
|
||||||
'Miscellaneous':
|
'Miscellaneous':
|
||||||
'Enable 4chan\'s Extension': [false, 'Compatibility between <%= meta.name %> and 4chan\'s inline extension is NOT guaranteed.']
|
'Enable 4chan\'s Extension': [false, 'Compatibility between <%= meta.name %> and 4chan\'s inline extension is NOT guaranteed.']
|
||||||
'Custom Board Navigation': [true, 'Show custom links instead of the full board list']
|
|
||||||
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.']
|
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.']
|
||||||
'404 Redirect': [true, 'Redirect dead threads and images.']
|
'404 Redirect': [true, 'Redirect dead threads and images.']
|
||||||
'Keybinds': [true, 'Bind actions to keyboard shortcuts.']
|
'Keybinds': [true, 'Bind actions to keyboard shortcuts.']
|
||||||
@ -141,9 +140,11 @@ Config =
|
|||||||
'#//archive.installgentoo.net/%board/image/%MD5;text:View same on installgentoo /%board/'
|
'#//archive.installgentoo.net/%board/image/%MD5;text:View same on installgentoo /%board/'
|
||||||
].join '\n'
|
].join '\n'
|
||||||
'Custom CSS': false
|
'Custom CSS': false
|
||||||
'Bottom header': false
|
Header:
|
||||||
'Header auto-hide': false
|
'Header catalog links': false
|
||||||
'Header catalog links': false
|
'Header auto-hide': false
|
||||||
|
'Bottom header': false
|
||||||
|
'Custom Board Navigation': true
|
||||||
boardnav: '[current-title / toggle-all]'
|
boardnav: '[current-title / toggle-all]'
|
||||||
time: '%m/%d/%y(%a)%H:%M:%S'
|
time: '%m/%d/%y(%a)%H:%M:%S'
|
||||||
backlink: '>>%id'
|
backlink: '>>%id'
|
||||||
|
|||||||
@ -24,20 +24,24 @@ Header =
|
|||||||
$.on window, 'load hashchange', Header.hashScroll
|
$.on window, 'load hashchange', Header.hashScroll
|
||||||
$.on d, 'CreateNotification', @createNotification
|
$.on d, 'CreateNotification', @createNotification
|
||||||
|
|
||||||
catalogToggler = $.el 'label',
|
|
||||||
innerHTML: '<input type=checkbox name="Header catalog links"> Use catalog board links'
|
|
||||||
headerToggler = $.el 'label',
|
headerToggler = $.el 'label',
|
||||||
innerHTML: '<input type=checkbox name="Header auto-hide"> Auto-hide header'
|
innerHTML: '<input type=checkbox name="Header auto-hide"> Auto-hide header'
|
||||||
barPositionToggler = $.el 'label',
|
barPositionToggler = $.el 'label',
|
||||||
innerHTML: '<input type=checkbox name="Bottom header"> Bottom header'
|
innerHTML: '<input type=checkbox name="Bottom header"> Bottom header'
|
||||||
|
catalogToggler = $.el 'label',
|
||||||
|
innerHTML: '<input type=checkbox name="Header catalog links"> Use catalog board links'
|
||||||
|
customNavToggler = $.el 'label',
|
||||||
|
innerHTML: '<input type=checkbox name="Custom Board Navigation"> Custom board navigation'
|
||||||
|
|
||||||
@catalogToggler = catalogToggler.firstElementChild
|
|
||||||
@headerToggler = headerToggler.firstElementChild
|
@headerToggler = headerToggler.firstElementChild
|
||||||
@barPositionToggler = barPositionToggler.firstElementChild
|
@barPositionToggler = barPositionToggler.firstElementChild
|
||||||
|
@catalogToggler = catalogToggler.firstElementChild
|
||||||
|
@customNavToggler = customNavToggler.firstElementChild
|
||||||
|
|
||||||
$.on @catalogToggler, 'change', @toggleCatalogLinks
|
|
||||||
$.on @headerToggler, 'change', @toggleBarVisibility
|
$.on @headerToggler, 'change', @toggleBarVisibility
|
||||||
$.on @barPositionToggler, 'change', @toggleBarPosition
|
$.on @barPositionToggler, 'change', @toggleBarPosition
|
||||||
|
$.on @catalogToggler, 'change', @toggleCatalogLinks
|
||||||
|
$.on @customNavToggler, 'change', @toggleCustomNav
|
||||||
|
|
||||||
@setBarVisibility Conf['Header auto-hide']
|
@setBarVisibility Conf['Header auto-hide']
|
||||||
@setBarPosition Conf['Bottom header']
|
@setBarPosition Conf['Bottom header']
|
||||||
@ -50,9 +54,10 @@ Header =
|
|||||||
el: $.el 'span', textContent: 'Header'
|
el: $.el 'span', textContent: 'Header'
|
||||||
order: 105
|
order: 105
|
||||||
subEntries: [
|
subEntries: [
|
||||||
{el: catalogToggler}
|
|
||||||
{el: headerToggler}
|
{el: headerToggler}
|
||||||
{el: barPositionToggler}
|
{el: barPositionToggler}
|
||||||
|
{el: catalogToggler}
|
||||||
|
{el: customNavToggler}
|
||||||
]
|
]
|
||||||
|
|
||||||
$.asap (-> d.body), ->
|
$.asap (-> d.body), ->
|
||||||
@ -67,27 +72,24 @@ Header =
|
|||||||
if a = $ "a[href*='/#{g.BOARD}/']", nav
|
if a = $ "a[href*='/#{g.BOARD}/']", nav
|
||||||
a.className = 'current'
|
a.className = 'current'
|
||||||
fullBoardList = $ '#full-board-list', Header.bar
|
fullBoardList = $ '#full-board-list', Header.bar
|
||||||
$.add fullBoardList, [nav.childNodes...]
|
fullBoardList.innerHTML = nav.innerHTML
|
||||||
|
$.rm $ '#navtopright', fullBoardList
|
||||||
|
btn = $.el 'span',
|
||||||
|
className: 'hide-board-list-button brackets-wrap'
|
||||||
|
innerHTML: '<a href=javascript:;> - </a>'
|
||||||
|
$.on btn, 'click', Header.toggleBoardList
|
||||||
|
$.add fullBoardList, btn
|
||||||
|
|
||||||
if Conf['Custom Board Navigation']
|
Header.setCatalogLinks Conf['Header catalog links']
|
||||||
Header.generateBoardList Conf['boardnav']
|
Header.setCustomNav Conf['Custom Board Navigation']
|
||||||
$.sync 'boardnav', Header.generateBoardList
|
Header.generateBoardList Conf['boardnav']
|
||||||
btn = $.el 'span',
|
|
||||||
className: 'hide-board-list-button brackets-wrap'
|
|
||||||
innerHTML: '<a href=javascript:;> - </a>'
|
|
||||||
$.on btn, 'click', Header.toggleBoardList
|
|
||||||
$.add fullBoardList, btn
|
|
||||||
else
|
|
||||||
$.rm $ '#custom-board-list', Header.bar
|
|
||||||
fullBoardList.hidden = false
|
|
||||||
|
|
||||||
Header.setCatalogLinks Conf['Header catalog links']
|
$.sync 'Header catalog links', Header.setCatalogLinks
|
||||||
$.sync 'Header catalog links', Header.setCatalogLinks
|
$.sync 'Custom Board Navigation', Header.setCustomNav
|
||||||
|
$.sync 'boardnav', Header.generateBoardList
|
||||||
|
|
||||||
generateBoardList: (text) ->
|
generateBoardList: (text) ->
|
||||||
unless list = $ '#custom-board-list', Header.bar
|
list = $ '#custom-board-list', Header.bar
|
||||||
# init'd with the custom board list disabled.
|
|
||||||
return
|
|
||||||
$.rmAll list
|
$.rmAll list
|
||||||
return unless text
|
return unless text
|
||||||
as = $$('#full-board-list a', Header.bar)[0...-2] # ignore the Settings and Home links
|
as = $$('#full-board-list a', Header.bar)[0...-2] # ignore the Settings and Home links
|
||||||
@ -136,18 +138,6 @@ Header =
|
|||||||
custom.hidden = !showBoardList
|
custom.hidden = !showBoardList
|
||||||
full.hidden = showBoardList
|
full.hidden = showBoardList
|
||||||
|
|
||||||
setCatalogLinks: (useCatalog) ->
|
|
||||||
Header.catalogToggler.checked = useCatalog
|
|
||||||
as = $$ '#board-list a[href*="boards.4chan.org"]', Header.bar
|
|
||||||
path = if useCatalog then 'catalog' else ''
|
|
||||||
for a in as
|
|
||||||
continue if a.dataset.only
|
|
||||||
a.pathname = "/#{a.pathname.split('/')[1]}/#{path}"
|
|
||||||
return
|
|
||||||
toggleCatalogLinks: ->
|
|
||||||
$.cb.checked.call @
|
|
||||||
Header.setCatalogLinks @checked
|
|
||||||
|
|
||||||
setBarVisibility: (hide) ->
|
setBarVisibility: (hide) ->
|
||||||
Header.headerToggler.checked = hide
|
Header.headerToggler.checked = hide
|
||||||
$.event 'CloseMenu'
|
$.event 'CloseMenu'
|
||||||
@ -182,6 +172,31 @@ Header =
|
|||||||
$.cb.checked.call @
|
$.cb.checked.call @
|
||||||
Header.setBarPosition @checked
|
Header.setBarPosition @checked
|
||||||
|
|
||||||
|
setCatalogLinks: (useCatalog) ->
|
||||||
|
Header.catalogToggler.checked = useCatalog
|
||||||
|
as = $$ '#board-list a[href*="boards.4chan.org"]', Header.bar
|
||||||
|
path = if useCatalog then 'catalog' else ''
|
||||||
|
for a in as
|
||||||
|
continue if a.dataset.only
|
||||||
|
a.pathname = "/#{a.pathname.split('/')[1]}/#{path}"
|
||||||
|
return
|
||||||
|
toggleCatalogLinks: ->
|
||||||
|
$.cb.checked.call @
|
||||||
|
Header.setCatalogLinks @checked
|
||||||
|
|
||||||
|
setCustomNav: (show) ->
|
||||||
|
Header.customNavToggler.checked = show
|
||||||
|
cust = $ '#custom-board-list', Header.bar
|
||||||
|
full = $ '#full-board-list', Header.bar
|
||||||
|
btn = $ '.hide-board-list-button', full
|
||||||
|
[cust.hidden, full.hidden, btn.hidden] = if show
|
||||||
|
[false, true, false]
|
||||||
|
else
|
||||||
|
[true, false, true]
|
||||||
|
toggleCustomNav: ->
|
||||||
|
$.cb.checked.call @
|
||||||
|
Header.setCustomNav @checked
|
||||||
|
|
||||||
hashScroll: ->
|
hashScroll: ->
|
||||||
return unless post = $.id @location.hash[1..]
|
return unless post = $.id @location.hash[1..]
|
||||||
return if (Get.postFromRoot post).isHidden
|
return if (Get.postFromRoot post).isHidden
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user