From 4a9b9b11d369bfe24be478d818208436574bb322 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Sun, 1 Jan 2012 06:26:04 +0100 Subject: [PATCH] Disable the QR if the thread 404'd. --- 4chan_x.user.js | 42 ++++++++++++++++++++++++------------------ script.coffee | 25 ++++++++++++++++--------- 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index 009a804e4..a1676a002 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1196,26 +1196,24 @@ } }, open: function() { - var input; if (qr.el) { qr.el.hidden = false; - input = $.id('autohide'); - input.checked = false; - return qr.hide.call(input); + $.id('autohide').checked = false; + return qr.hide(); } else { return qr.dialog(); } }, + close: function() { + return qr.el.hidden = true; + }, hide: function() { - if (this.checked) { + if ($.id('autohide').checked) { return $.addClass(qr.el, 'autohide'); } else { return $.removeClass(qr.el, 'autohide'); } }, - close: function() { - return qr.el.hidden = true; - }, error: function(err) { $('.error', qr.el).textContent = err; return alert(err); @@ -1344,7 +1342,7 @@ textarea.field {\ '); $.on($('#autohide', qr.el), 'click', qr.hide); $.on($('.close', qr.el), 'click', qr.close); - $.on($('button', qr.el), 'click', function() { + $.on($('#dump', qr.el), 'click', function() { return qr.el.classList.toggle('dump'); }); $.on($('form', qr.el), 'submit', qr.submit); @@ -1377,11 +1375,21 @@ textarea.field {\ }); file.max = $('[name=MAX_FILE_SIZE]').value; $.on(file, 'change', qr.fileInput); + if (g.dead) { + $.extend($('[type=submit]', qr.el), { + disabled: true, + value: 404 + }); + } return $.add(d.body, qr.el); }, submit: function(e) { if (e != null) e.preventDefault(); - if (conf['Auto Hide QR']) qr.hide(); + if (g.dead) return; + if (conf['Auto Hide QR']) { + $.id('autohide').checked = true; + qr.hide(); + } return qr.cleanError(); }, response: function(e) { @@ -1842,15 +1850,13 @@ textarea.field {\ } }, update: function() { - var body, frag, id, input, newPosts, reply, scroll, _i, _j, _len, _len2, _ref, _ref2, _ref3; + var body, frag, id, input, newPosts, reply, scroll, _i, _len, _ref, _ref2; if (this.status === 404) { updater.timer.textContent = ''; updater.count.textContent = 404; updater.count.className = 'error'; clearTimeout(updater.timeoutID); - _ref = $$('#com_submit'); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - input = _ref[_i]; + if (input = $('#qr [type=submit]', qr.el)) { input.disabled = true; input.value = 404; } @@ -1883,11 +1889,11 @@ textarea.field {\ updater.count.className = 'error'; return; } - id = ((_ref2 = $('td[id]', updater.br.previousElementSibling)) != null ? _ref2.id : void 0) || 0; + id = ((_ref = $('td[id]', updater.br.previousElementSibling)) != null ? _ref.id : void 0) || 0; frag = d.createDocumentFragment(); - _ref3 = $$('.reply', body).reverse(); - for (_j = 0, _len2 = _ref3.length; _j < _len2; _j++) { - reply = _ref3[_j]; + _ref2 = $$('.reply', body).reverse(); + for (_i = 0, _len = _ref2.length; _i < _len; _i++) { + reply = _ref2[_i]; if (reply.id <= id) break; $.prepend(frag, reply.parentNode.parentNode.parentNode); } diff --git a/script.coffee b/script.coffee index 566e53374..18398d9fe 100644 --- a/script.coffee +++ b/script.coffee @@ -872,18 +872,17 @@ qr = open: -> if qr.el qr.el.hidden = false - input = $.id 'autohide' - input.checked = false - qr.hide.call input + $.id('autohide').checked = false + qr.hide() else qr.dialog() + close: -> + qr.el.hidden = true hide: -> - if this.checked + if $.id('autohide').checked $.addClass qr.el, 'autohide' else $.removeClass qr.el, 'autohide' - close: -> - qr.el.hidden = true error: (err) -> $('.error', qr.el).textContent = err @@ -1009,7 +1008,7 @@ textarea.field { ' $.on $('#autohide', qr.el), 'click', qr.hide $.on $('.close', qr.el), 'click', qr.close - $.on $('button', qr.el), 'click', -> qr.el.classList.toggle 'dump' + $.on $('#dump', qr.el), 'click', -> qr.el.classList.toggle 'dump' $.on $('form', qr.el), 'submit', qr.submit # save & load inputs' value with localStorage @@ -1037,11 +1036,19 @@ textarea.field { file.max = $('[name=MAX_FILE_SIZE]').value $.on file, 'change', qr.fileInput + if g.dead + $.extend $('[type=submit]', qr.el), + disabled: true + value: 404 + $.add d.body, qr.el submit: (e) -> e?.preventDefault() - qr.hide() if conf['Auto Hide QR'] + return if g.dead + if conf['Auto Hide QR'] + $.id('autohide').checked = true + qr.hide() qr.cleanError() # magical xhr2 @@ -1447,7 +1454,7 @@ updater = updater.count.textContent = 404 updater.count.className = 'error' clearTimeout updater.timeoutID - for input in $$ '#com_submit' + if input = $ '#qr [type=submit]', qr.el input.disabled = true input.value = 404 d.title = d.title.match(/^.+-/)[0] + ' 404'