diff --git a/4chan_x.user.js b/4chan_x.user.js
index 78c29c9cb..351807b3f 100644
--- a/4chan_x.user.js
+++ b/4chan_x.user.js
@@ -349,8 +349,7 @@
}
break;
case 39:
- if ((submenu = $('.submenu', entry))) {
- next = submenu.firstElementChild;
+ if ((submenu = $('.submenu', entry)) && (next = submenu.firstElementChild)) {
while (nextPrev = this.findNextEntry(next, -1)) {
next = nextPrev;
}
@@ -918,7 +917,7 @@
Header = {
init: function() {
- var boardList, boardListButton, boardTitle, headerBar, menuButton, toggleBar;
+ var boardList, boardListButton, boardTitle, catalogToggler, headerBar, menuButton, toggleBar;
this.menu = new UI.Menu('header');
this.headerEl = $.el('div', {
id: 'header',
@@ -955,6 +954,15 @@
});
$.on(toggleBar, 'click', this.toggleBar);
$.prepend(headerBar, [menuButton, boardListButton, $.tn(' '), boardTitle, boardList, toggleBar]);
+ catalogToggler = $.el('label', {
+ innerHTML: " Use catalog links"
+ });
+ $.on(catalogToggler.firstElementChild, 'change', this.toggleCatalogLinks);
+ $.event('AddMenuEntry', {
+ type: 'header',
+ el: catalogToggler,
+ order: 105
+ });
$.asap((function() {
return d.body;
}), function() {
@@ -988,6 +996,17 @@
$('.board-name', headerEl).hidden = showBoardList;
return $('.board-list', headerEl).hidden = !showBoardList;
},
+ toggleCatalogLinks: function() {
+ var a, as, root, useCatalog, _i, _len;
+ useCatalog = this.checked;
+ root = $('.board-list', Header.headerEl);
+ as = $$('a[href*="boards.4chan.org"]', root);
+ as.push($('.board-name', Header.headerEl));
+ for (_i = 0, _len = as.length; _i < _len; _i++) {
+ a = as[_i];
+ a.pathname = "/" + (a.pathname.split('/')[1]) + "/" + (useCatalog ? 'catalog' : '');
+ }
+ },
toggleBar: function() {
var isAutohiding, message;
message = (isAutohiding = $.id('header-bar').classList.toggle('autohide')) ? 'The header bar will automatically hide itself.' : 'The header bar will remain visible.';
@@ -1050,7 +1069,7 @@
$.event('AddMenuEntry', {
type: 'header',
el: link,
- order: 100
+ order: 110
});
link = $.el('a', {
className: 'fourchan-settings-link',
@@ -1063,7 +1082,7 @@
$.event('AddMenuEntry', {
type: 'header',
el: link,
- order: 101,
+ order: 111,
open: function() {
return !Conf['Disable 4chan\'s extension'];
}
diff --git a/lib/ui.coffee b/lib/ui.coffee
index f4ae240c0..c05f2b149 100644
--- a/lib/ui.coffee
+++ b/lib/ui.coffee
@@ -130,8 +130,7 @@ UI = (->
if next = @findNextEntry entry, +1
@focus next
when 39 # Right
- if (submenu = $ '.submenu', entry)
- next = submenu.firstElementChild
+ if (submenu = $ '.submenu', entry) and next = submenu.firstElementChild
while nextPrev = @findNextEntry next, -1
next = nextPrev
@focus next
diff --git a/src/features.coffee b/src/features.coffee
index 421ed4eaf..5ccbeba15 100644
--- a/src/features.coffee
+++ b/src/features.coffee
@@ -37,6 +37,14 @@ Header =
$.prepend headerBar, [menuButton, boardListButton, $.tn(' '), boardTitle, boardList, toggleBar]
+ catalogToggler = $.el 'label',
+ innerHTML: " Use catalog links"
+ $.on catalogToggler.firstElementChild, 'change', @toggleCatalogLinks
+ $.event 'AddMenuEntry',
+ type: 'header'
+ el: catalogToggler
+ order: 105
+
$.asap (-> d.body), ->
$.prepend d.body, Header.headerEl
$.asap (-> $.id 'boardNavDesktop'), @setBoardList
@@ -61,6 +69,15 @@ Header =
$('.board-name', headerEl).hidden = showBoardList
$('.board-list', headerEl).hidden = !showBoardList
+ toggleCatalogLinks: ->
+ useCatalog = @checked
+ root = $ '.board-list', Header.headerEl
+ as = $$ 'a[href*="boards.4chan.org"]', root
+ as.push $ '.board-name', Header.headerEl
+ for a in as
+ a.pathname = "/#{a.pathname.split('/')[1]}/#{if useCatalog then 'catalog' else ''}"
+ return
+
toggleBar: ->
message = if isAutohiding = $.id('header-bar').classList.toggle 'autohide'
'The header bar will automatically hide itself.'
@@ -108,7 +125,7 @@ Settings =
$.event 'AddMenuEntry',
type: 'header'
el: link
- order: 100
+ order: 110
# 4chan settings link
link = $.el 'a',
@@ -119,7 +136,7 @@ Settings =
$.event 'AddMenuEntry',
type: 'header'
el: link
- order: 101
+ order: 111
open: -> !Conf['Disable 4chan\'s extension']
return unless Conf['Disable 4chan\'s extension']