diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 83090ae43..433af2b54 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -129,6 +129,7 @@ Config = { main: { 'Miscellaneous': { + 'JSON Navigation': [true, 'Use JSON for loading the Board Index and Threads. Also allows searching and sorting the board index and infinite scolling.'], 'Catalog Links': [true, 'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.'], 'External Catalog': [false, 'Link to external catalog instead of the internal one.'], 'QR Shortcut': [false, 'Adds a small [QR] link in the header.'], @@ -1775,10 +1776,12 @@ $.ready(function() { var a, cs, footer, _i, _len, _ref; _this.footer = footer = $.id('boardNavDesktopFoot'); - _ref = $$('a', footer); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - a = _ref[_i]; - $.on(a, 'click', Navigate.navigate); + if (Conf['JSON Navigation']) { + _ref = $$('a', footer); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + a = _ref[_i]; + $.on(a, 'click', Navigate.navigate); + } } if (a = $("a[href*='/" + g.BOARD + "/']", footer)) { a.className = 'current'; @@ -1825,7 +1828,9 @@ _ref = $$('a', boardList); for (_i = 0, _len = _ref.length; _i < _len; _i++) { a = _ref[_i]; - $.on(a, 'click', Navigate.navigate); + if (Conf['JSON Navigation']) { + $.on(a, 'click', Navigate.navigate); + } if (a.pathname.split('/')[1] === g.BOARD.ID) { a.className = 'current'; } @@ -1876,7 +1881,9 @@ a = as[_i]; if (a.textContent === board) { a = a.cloneNode(true); - $.on(a, 'click', Navigate.navigate); + if (Conf['JSON Navigation']) { + $.on(a, 'click', Navigate.navigate); + } a.textContent = /-title/.test(t) || /-replace/.test(t) && $.hasClass(a, 'current') ? a.title : /-full/.test(t) ? "/" + board + "/ - " + a.title : (m = t.match(/-text:"(.+)"/)) ? m[1] : a.textContent; if (m = t.match(/-(index|catalog)/)) { a.dataset.only = m[1]; @@ -2150,7 +2157,7 @@ Index = { init: function() { var anchorEntry, input, label, modeEntry, name, refNavEntry, repliesEntry, sortEntry, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2; - if (g.BOARD.ID === 'f' || g.VIEW === 'catalog') { + if (g.BOARD.ID === 'f' || g.VIEW === 'catalog' || !Conf['JSON Navigation']) { return; } this.button = $.el('a', { @@ -11877,7 +11884,7 @@ Navigate = { path: window.location.pathname, init: function() { - if (g.VIEW === 'catalog' || g.BOARD.ID === 'f') { + if (g.VIEW === 'catalog' || g.BOARD.ID === 'f' || !Conf['JSON Navigation']) { return; } $.ready(function() { diff --git a/builds/crx/script.js b/builds/crx/script.js index 2612a9ae6..eb9650742 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -107,6 +107,7 @@ Config = { main: { 'Miscellaneous': { + 'JSON Navigation': [true, 'Use JSON for loading the Board Index and Threads. Also allows searching and sorting the board index and infinite scolling.'], 'Catalog Links': [true, 'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.'], 'External Catalog': [false, 'Link to external catalog instead of the internal one.'], 'QR Shortcut': [false, 'Adds a small [QR] link in the header.'], @@ -1785,10 +1786,12 @@ $.ready(function() { var a, cs, footer, _i, _len, _ref; _this.footer = footer = $.id('boardNavDesktopFoot'); - _ref = $$('a', footer); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - a = _ref[_i]; - $.on(a, 'click', Navigate.navigate); + if (Conf['JSON Navigation']) { + _ref = $$('a', footer); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + a = _ref[_i]; + $.on(a, 'click', Navigate.navigate); + } } if (a = $("a[href*='/" + g.BOARD + "/']", footer)) { a.className = 'current'; @@ -1835,7 +1838,9 @@ _ref = $$('a', boardList); for (_i = 0, _len = _ref.length; _i < _len; _i++) { a = _ref[_i]; - $.on(a, 'click', Navigate.navigate); + if (Conf['JSON Navigation']) { + $.on(a, 'click', Navigate.navigate); + } if (a.pathname.split('/')[1] === g.BOARD.ID) { a.className = 'current'; } @@ -1886,7 +1891,9 @@ a = as[_i]; if (a.textContent === board) { a = a.cloneNode(true); - $.on(a, 'click', Navigate.navigate); + if (Conf['JSON Navigation']) { + $.on(a, 'click', Navigate.navigate); + } a.textContent = /-title/.test(t) || /-replace/.test(t) && $.hasClass(a, 'current') ? a.title : /-full/.test(t) ? "/" + board + "/ - " + a.title : (m = t.match(/-text:"(.+)"/)) ? m[1] : a.textContent; if (m = t.match(/-(index|catalog)/)) { a.dataset.only = m[1]; @@ -2160,7 +2167,7 @@ Index = { init: function() { var anchorEntry, input, label, modeEntry, name, refNavEntry, repliesEntry, sortEntry, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2; - if (g.BOARD.ID === 'f' || g.VIEW === 'catalog') { + if (g.BOARD.ID === 'f' || g.VIEW === 'catalog' || !Conf['JSON Navigation']) { return; } this.button = $.el('a', { @@ -11866,7 +11873,7 @@ Navigate = { path: window.location.pathname, init: function() { - if (g.VIEW === 'catalog' || g.BOARD.ID === 'f') { + if (g.VIEW === 'catalog' || g.BOARD.ID === 'f' || !Conf['JSON Navigation']) { return; } $.ready(function() { diff --git a/src/General/Config.coffee b/src/General/Config.coffee index d9691c4ec..bd6ac89c9 100755 --- a/src/General/Config.coffee +++ b/src/General/Config.coffee @@ -1,6 +1,10 @@ Config = main: 'Miscellaneous': + 'JSON Navigation' : [ + true + 'Use JSON for loading the Board Index and Threads. Also allows searching and sorting the board index and infinite scolling.' + ] 'Catalog Links': [ true 'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.' diff --git a/src/General/Header.coffee b/src/General/Header.coffee index 929dbba3c..90ac8205c 100755 --- a/src/General/Header.coffee +++ b/src/General/Header.coffee @@ -102,7 +102,8 @@ Header = $.ready => @footer = footer = $.id 'boardNavDesktopFoot' - $.on a, 'click', Navigate.navigate for a in $$ 'a', footer + if Conf['JSON Navigation'] + $.on a, 'click', Navigate.navigate for a in $$ 'a', footer if a = $ "a[href*='/#{g.BOARD}/']", footer a.className = 'current' @@ -143,7 +144,8 @@ Header = id: 'board-list' innerHTML: "" for a in $$ 'a', boardList - $.on a, 'click', Navigate.navigate + if Conf['JSON Navigation'] + $.on a, 'click', Navigate.navigate if a.pathname.split('/')[1] is g.BOARD.ID a.className = 'current' fullBoardList = $ '#full-board-list', boardList @@ -189,7 +191,8 @@ Header = if a.textContent is board a = a.cloneNode true - $.on a, 'click', Navigate.navigate + if Conf['JSON Navigation'] + $.on a, 'click', Navigate.navigate a.textContent = if /-title/.test(t) or /-replace/.test(t) and $.hasClass a, 'current' a.title diff --git a/src/General/Index.coffee b/src/General/Index.coffee index 9a758b808..b293af5de 100644 --- a/src/General/Index.coffee +++ b/src/General/Index.coffee @@ -1,6 +1,6 @@ Index = init: -> - return if g.BOARD.ID is 'f' or g.VIEW is 'catalog' + return if g.BOARD.ID is 'f' or g.VIEW is 'catalog' or !Conf['JSON Navigation'] @button = $.el 'a', className: 'index-refresh-shortcut fa fa-refresh' diff --git a/src/General/Navigate.coffee b/src/General/Navigate.coffee index 04d15302d..63806eb3a 100644 --- a/src/General/Navigate.coffee +++ b/src/General/Navigate.coffee @@ -1,7 +1,7 @@ Navigate = path: window.location.pathname init: -> - return if g.VIEW is 'catalog' or g.BOARD.ID is 'f' + return if g.VIEW is 'catalog' or g.BOARD.ID is 'f' or !Conf['JSON Navigation'] # blink/webkit throw a popstate on page load. Not what we want. $.ready -> $.on window, 'popstate', Navigate.popstate