From 4ec8ca541ebef32ae464acf6640c1bdef11afee7 Mon Sep 17 00:00:00 2001 From: James Campos Date: Fri, 2 Sep 2011 19:55:22 -0700 Subject: [PATCH] cooldown --- 4chan_x.user.js | 32 +++++++++++++++++++++++++++++++- script.coffee | 20 ++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index afb84620d..d4a25773d 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1288,6 +1288,9 @@ top: '0', left: '0' }, " X
Quick Reply
" + ($.get('captchas', []).length) + " captchas
"); + if (conf['Cooldown']) { + QR.cooldown; + } $.bind($('.close', el), 'click', QR.close); $.bind($('form', el), 'submit', QR.submit); $.bind($('#recaptcha_response_field', el), 'keydown', QR.keydown); @@ -1323,13 +1326,40 @@ ta.setSelectionRange(i, i); return ta.focus(); }, + cooldown: function() { + var b, n, now; + if (!QR.el) { + return; + } + cooldown = $.get("cooldown/" + g.BOARD, 0); + now = Date.now(); + n = Math.ceil((cooldown - now) / 1000); + b = $('button', QR.el); + if (n > 0) { + setTimeout(QR.cooldown, 1000); + return $.extend(b, { + textContent: n, + disabled: true + }); + } else { + return $.extend(b, { + textContent: 'Submit', + disabled: false + }); + } + }, receive: function(e) { var data; data = e.data; if (data) { return $.extend($('a.error', QR.el), JSON.parse(data)); } else { - return QR.close(); + QR.close(); + if (conf['Cooldown']) { + cooldown = Date.now() + 30 * SECOND; + $.set("cooldown/" + g.BOARD, cooldown); + return QR.cooldown(); + } } }, submit: function(e) { diff --git a/script.coffee b/script.coffee index f60468d3d..eec34ceb5 100644 --- a/script.coffee +++ b/script.coffee @@ -1019,6 +1019,7 @@ QR = " + QR.cooldown if conf['Cooldown'] $.bind $('.close', el), 'click', QR.close $.bind $('form', el), 'submit', QR.submit $.bind $('#recaptcha_response_field', el), 'keydown', QR.keydown @@ -1045,12 +1046,31 @@ QR = i = ss + text.length ta.setSelectionRange i, i ta.focus() + cooldown: -> + return unless QR.el + cooldown = $.get "cooldown/#{g.BOARD}", 0 + now = Date.now() + n = Math.ceil (cooldown - now) / 1000 + b = $ 'button', QR.el + if n > 0 + setTimeout QR.cooldown, 1000 + $.extend b, + textContent: n + disabled: true + else + $.extend b, + textContent: 'Submit' + disabled: false receive: (e) -> {data} = e if data $.extend $('a.error', QR.el), JSON.parse data else QR.close() + if conf['Cooldown'] + cooldown = Date.now() + 30*SECOND + $.set "cooldown/#{g.BOARD}", cooldown + QR.cooldown() submit: (e) -> $('.error', qr.el).textContent = '' if (el = $('#recaptcha_response_field', QR.el)).value