diff --git a/4chan_x.user.js b/4chan_x.user.js index c3dbdf329..63a134d3c 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1121,17 +1121,7 @@ _ref = Menu.entries; for (_i = 0, _len = _ref.length; _i < _len; _i++) { entry = _ref[_i]; - if ((function() { - var requirement, val, _ref1; - _ref1 = entry.requirements; - for (requirement in _ref1) { - val = _ref1[requirement]; - if (val !== post[requirement]) { - return false; - } - } - return true; - })()) { + if (entry.requirement(post)) { $.add(el, entry.el); $.event(entry.el, new CustomEvent('context')); } @@ -1145,11 +1135,9 @@ delete Menu.lastOpener; return $.off(d, 'click', Menu.close); }, - newEntry: function(name) { - return $.el(name, { - className: 'entry', - tabIndex: 0 - }); + addEntry: function(entry) { + $.addClass(entry.el, 'entry'); + return Menu.entries.push(entry); } }; @@ -3811,17 +3799,18 @@ DeleteLink = { init: function() { var a; - a = Menu.newEntry('a'); - a.href = 'javascript:;'; - $.addClass(a, 'delete_link'); + a = $.el('a', { + className: 'delete_link', + href: 'javascript:;' + }); $.on(a, 'context', function() { a.textContent = 'Delete this post'; return $.on(a, 'click', DeleteLink["delete"]); }); - return Menu.entries.push({ + return Menu.addEntry({ el: a, - requirements: { - isArchived: false + requirement: function(post) { + return post.isArchived === false; } }); }, @@ -3872,15 +3861,16 @@ ReportLink = { init: function() { var a; - a = Menu.newEntry('a'); - a.href = 'javascript:;'; - a.textContent = 'Report this post'; - $.addClass(a, 'report_link'); + a = $.el('a', { + className: 'report_link', + href: 'javascript:;', + textContent: 'Report this post' + }); $.on(a, 'click', this.report); - return Menu.entries.push({ + return Menu.addEntry({ el: a, - requirements: { - isArchived: false + requirement: function(post) { + return post.isArchived === false; } }); }, diff --git a/script.coffee b/script.coffee index d4132c8e0..014697cfb 100644 --- a/script.coffee +++ b/script.coffee @@ -862,11 +862,7 @@ Menu = # className: 'entry' # textContent: "#{i}: #{post[i]}" for entry in Menu.entries - if (-> - for requirement, val of entry.requirements - return false if val isnt post[requirement] - true - )() + if entry.requirement post $.add el, entry.el # XXX 'context' event? $.event entry.el, new CustomEvent 'context' @@ -878,10 +874,9 @@ Menu = delete Menu.lastOpener $.off d, 'click', Menu.close - newEntry: (name) -> - $.el name, - className: 'entry' - tabIndex: 0 + addEntry: (entry) -> + $.addClass entry.el, 'entry' + Menu.entries.push entry Keybinds = init: -> @@ -2989,16 +2984,16 @@ Quotify = DeleteLink = init: -> - a = Menu.newEntry 'a' - a.href = 'javascript:;' - $.addClass a, 'delete_link' + a = $.el 'a', + className: 'delete_link' + href: 'javascript:;' $.on a, 'context', -> a.textContent = 'Delete this post' $.on a, 'click', DeleteLink.delete - Menu.entries.push + Menu.addEntry el: a - requirements: - isArchived: false + requirement: (post) -> + post.isArchived is false delete: -> $.off @, 'click', DeleteLink.delete @textContent = 'Deleting...' @@ -3042,15 +3037,15 @@ DeleteLink = ReportLink = init: -> - a = Menu.newEntry 'a' - a.href = 'javascript:;' - a.textContent = 'Report this post' - $.addClass a, 'report_link' + a = $.el 'a', + className: 'report_link' + href: 'javascript:;' + textContent: 'Report this post' $.on a, 'click', @report - Menu.entries.push + Menu.addEntry el: a - requirements: - isArchived: false + requirement: (post) -> + post.isArchived is false report: -> a = $ '.postNum > a[title="Highlight this post"]', $.id @parentNode.dataset.rootid url = "//sys.4chan.org/#{a.pathname.split('/')[1]}/imgboard.php?mode=report&no=#{@parentNode.dataset.id}"