From 9edade6f3c0f35192e100478f0c0a55f0579c04b Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Tue, 23 Apr 2013 22:18:50 +0200 Subject: [PATCH] Make the Custom Board Nav setting toggle-able and syncing. --- src/config.coffee | 9 ++--- src/features.coffee | 83 ++++++++++++++++++++++++++------------------- 2 files changed, 54 insertions(+), 38 deletions(-) diff --git a/src/config.coffee b/src/config.coffee index 713982f9c..1e69eb096 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -2,7 +2,6 @@ Config = main: 'Miscellaneous': '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.'] '404 Redirect': [true, 'Redirect dead threads and images.'] 'Keybinds': [true, 'Bind actions to keyboard shortcuts.'] @@ -141,9 +140,11 @@ Config = '#//archive.installgentoo.net/%board/image/%MD5;text:View same on installgentoo /%board/' ].join '\n' 'Custom CSS': false - 'Bottom header': false - 'Header auto-hide': false - 'Header catalog links': false + Header: + 'Header catalog links': false + 'Header auto-hide': false + 'Bottom header': false + 'Custom Board Navigation': true boardnav: '[current-title / toggle-all]' time: '%m/%d/%y(%a)%H:%M:%S' backlink: '>>%id' diff --git a/src/features.coffee b/src/features.coffee index 7a19b85a8..9ac2880b2 100644 --- a/src/features.coffee +++ b/src/features.coffee @@ -24,20 +24,24 @@ Header = $.on window, 'load hashchange', Header.hashScroll $.on d, 'CreateNotification', @createNotification - catalogToggler = $.el 'label', - innerHTML: ' Use catalog board links' headerToggler = $.el 'label', innerHTML: ' Auto-hide header' barPositionToggler = $.el 'label', innerHTML: ' Bottom header' + catalogToggler = $.el 'label', + innerHTML: ' Use catalog board links' + customNavToggler = $.el 'label', + innerHTML: ' Custom board navigation' - @catalogToggler = catalogToggler.firstElementChild @headerToggler = headerToggler.firstElementChild @barPositionToggler = barPositionToggler.firstElementChild + @catalogToggler = catalogToggler.firstElementChild + @customNavToggler = customNavToggler.firstElementChild - $.on @catalogToggler, 'change', @toggleCatalogLinks $.on @headerToggler, 'change', @toggleBarVisibility $.on @barPositionToggler, 'change', @toggleBarPosition + $.on @catalogToggler, 'change', @toggleCatalogLinks + $.on @customNavToggler, 'change', @toggleCustomNav @setBarVisibility Conf['Header auto-hide'] @setBarPosition Conf['Bottom header'] @@ -50,9 +54,10 @@ Header = el: $.el 'span', textContent: 'Header' order: 105 subEntries: [ - {el: catalogToggler} {el: headerToggler} {el: barPositionToggler} + {el: catalogToggler} + {el: customNavToggler} ] $.asap (-> d.body), -> @@ -67,27 +72,24 @@ Header = if a = $ "a[href*='/#{g.BOARD}/']", nav a.className = 'current' 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: ' - ' + $.on btn, 'click', Header.toggleBoardList + $.add fullBoardList, btn - if Conf['Custom Board Navigation'] - Header.generateBoardList Conf['boardnav'] - $.sync 'boardnav', Header.generateBoardList - btn = $.el 'span', - className: 'hide-board-list-button brackets-wrap' - innerHTML: ' - ' - $.on btn, 'click', Header.toggleBoardList - $.add fullBoardList, btn - else - $.rm $ '#custom-board-list', Header.bar - fullBoardList.hidden = false + Header.setCatalogLinks Conf['Header catalog links'] + Header.setCustomNav Conf['Custom Board Navigation'] + Header.generateBoardList Conf['boardnav'] - 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) -> - unless list = $ '#custom-board-list', Header.bar - # init'd with the custom board list disabled. - return + list = $ '#custom-board-list', Header.bar $.rmAll list return unless text as = $$('#full-board-list a', Header.bar)[0...-2] # ignore the Settings and Home links @@ -136,18 +138,6 @@ Header = custom.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) -> Header.headerToggler.checked = hide $.event 'CloseMenu' @@ -182,6 +172,31 @@ Header = $.cb.checked.call @ 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: -> return unless post = $.id @location.hash[1..] return if (Get.postFromRoot post).isHidden