Make the JSON Navigation / Index features optional

This commit is contained in:
Zixaphir 2014-01-13 19:31:32 -07:00
parent d8154e8ae2
commit bcd7ab21e3
6 changed files with 42 additions and 21 deletions

View File

@ -129,6 +129,7 @@
Config = { Config = {
main: { main: {
'Miscellaneous': { '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.'], '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.'], 'External Catalog': [false, 'Link to external catalog instead of the internal one.'],
'QR Shortcut': [false, 'Adds a small [QR] link in the header.'], 'QR Shortcut': [false, 'Adds a small [QR] link in the header.'],
@ -1775,10 +1776,12 @@
$.ready(function() { $.ready(function() {
var a, cs, footer, _i, _len, _ref; var a, cs, footer, _i, _len, _ref;
_this.footer = footer = $.id('boardNavDesktopFoot'); _this.footer = footer = $.id('boardNavDesktopFoot');
_ref = $$('a', footer); if (Conf['JSON Navigation']) {
for (_i = 0, _len = _ref.length; _i < _len; _i++) { _ref = $$('a', footer);
a = _ref[_i]; for (_i = 0, _len = _ref.length; _i < _len; _i++) {
$.on(a, 'click', Navigate.navigate); a = _ref[_i];
$.on(a, 'click', Navigate.navigate);
}
} }
if (a = $("a[href*='/" + g.BOARD + "/']", footer)) { if (a = $("a[href*='/" + g.BOARD + "/']", footer)) {
a.className = 'current'; a.className = 'current';
@ -1825,7 +1828,9 @@
_ref = $$('a', boardList); _ref = $$('a', boardList);
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
a = _ref[_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) { if (a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current'; a.className = 'current';
} }
@ -1876,7 +1881,9 @@
a = as[_i]; a = as[_i];
if (a.textContent === board) { if (a.textContent === board) {
a = a.cloneNode(true); 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; 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)/)) { if (m = t.match(/-(index|catalog)/)) {
a.dataset.only = m[1]; a.dataset.only = m[1];
@ -2150,7 +2157,7 @@
Index = { Index = {
init: function() { init: function() {
var anchorEntry, input, label, modeEntry, name, refNavEntry, repliesEntry, sortEntry, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2; 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; return;
} }
this.button = $.el('a', { this.button = $.el('a', {
@ -11877,7 +11884,7 @@
Navigate = { Navigate = {
path: window.location.pathname, path: window.location.pathname,
init: function() { init: function() {
if (g.VIEW === 'catalog' || g.BOARD.ID === 'f') { if (g.VIEW === 'catalog' || g.BOARD.ID === 'f' || !Conf['JSON Navigation']) {
return; return;
} }
$.ready(function() { $.ready(function() {

View File

@ -107,6 +107,7 @@
Config = { Config = {
main: { main: {
'Miscellaneous': { '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.'], '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.'], 'External Catalog': [false, 'Link to external catalog instead of the internal one.'],
'QR Shortcut': [false, 'Adds a small [QR] link in the header.'], 'QR Shortcut': [false, 'Adds a small [QR] link in the header.'],
@ -1785,10 +1786,12 @@
$.ready(function() { $.ready(function() {
var a, cs, footer, _i, _len, _ref; var a, cs, footer, _i, _len, _ref;
_this.footer = footer = $.id('boardNavDesktopFoot'); _this.footer = footer = $.id('boardNavDesktopFoot');
_ref = $$('a', footer); if (Conf['JSON Navigation']) {
for (_i = 0, _len = _ref.length; _i < _len; _i++) { _ref = $$('a', footer);
a = _ref[_i]; for (_i = 0, _len = _ref.length; _i < _len; _i++) {
$.on(a, 'click', Navigate.navigate); a = _ref[_i];
$.on(a, 'click', Navigate.navigate);
}
} }
if (a = $("a[href*='/" + g.BOARD + "/']", footer)) { if (a = $("a[href*='/" + g.BOARD + "/']", footer)) {
a.className = 'current'; a.className = 'current';
@ -1835,7 +1838,9 @@
_ref = $$('a', boardList); _ref = $$('a', boardList);
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
a = _ref[_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) { if (a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current'; a.className = 'current';
} }
@ -1886,7 +1891,9 @@
a = as[_i]; a = as[_i];
if (a.textContent === board) { if (a.textContent === board) {
a = a.cloneNode(true); 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; 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)/)) { if (m = t.match(/-(index|catalog)/)) {
a.dataset.only = m[1]; a.dataset.only = m[1];
@ -2160,7 +2167,7 @@
Index = { Index = {
init: function() { init: function() {
var anchorEntry, input, label, modeEntry, name, refNavEntry, repliesEntry, sortEntry, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2; 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; return;
} }
this.button = $.el('a', { this.button = $.el('a', {
@ -11866,7 +11873,7 @@
Navigate = { Navigate = {
path: window.location.pathname, path: window.location.pathname,
init: function() { init: function() {
if (g.VIEW === 'catalog' || g.BOARD.ID === 'f') { if (g.VIEW === 'catalog' || g.BOARD.ID === 'f' || !Conf['JSON Navigation']) {
return; return;
} }
$.ready(function() { $.ready(function() {

View File

@ -1,6 +1,10 @@
Config = Config =
main: main:
'Miscellaneous': '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': [ 'Catalog Links': [
true true
'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.' 'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.'

View File

@ -102,7 +102,8 @@ Header =
$.ready => $.ready =>
@footer = footer = $.id 'boardNavDesktopFoot' @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 if a = $ "a[href*='/#{g.BOARD}/']", footer
a.className = 'current' a.className = 'current'
@ -143,7 +144,8 @@ Header =
id: 'board-list' id: 'board-list'
innerHTML: "<span id=custom-board-list></span><span id=full-board-list hidden><span class='hide-board-list-container brackets-wrap'><a href=javascript:; class='hide-board-list-button'>&nbsp;-&nbsp;</a></span> #{fourchannav.innerHTML}</span>" innerHTML: "<span id=custom-board-list></span><span id=full-board-list hidden><span class='hide-board-list-container brackets-wrap'><a href=javascript:; class='hide-board-list-button'>&nbsp;-&nbsp;</a></span> #{fourchannav.innerHTML}</span>"
for a in $$ 'a', boardList 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 if a.pathname.split('/')[1] is g.BOARD.ID
a.className = 'current' a.className = 'current'
fullBoardList = $ '#full-board-list', boardList fullBoardList = $ '#full-board-list', boardList
@ -189,7 +191,8 @@ Header =
if a.textContent is board if a.textContent is board
a = a.cloneNode true 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.textContent = if /-title/.test(t) or /-replace/.test(t) and $.hasClass a, 'current'
a.title a.title

View File

@ -1,6 +1,6 @@
Index = Index =
init: -> 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', @button = $.el 'a',
className: 'index-refresh-shortcut fa fa-refresh' className: 'index-refresh-shortcut fa fa-refresh'

View File

@ -1,7 +1,7 @@
Navigate = Navigate =
path: window.location.pathname path: window.location.pathname
init: -> 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. # blink/webkit throw a popstate on page load. Not what we want.
$.ready -> $.on window, 'popstate', Navigate.popstate $.ready -> $.on window, 'popstate', Navigate.popstate