From f30cc383ecdd8a840c9643e1d63f0470fee6a0bb Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Sat, 28 Jan 2012 20:22:39 +0100 Subject: [PATCH] Finish proofreading. --- 4chan_x.user.js | 125 +++++++++++++++++++++++++----------------------- script.coffee | 103 ++++++++++++++++++++++----------------- 2 files changed, 122 insertions(+), 106 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index be1d24239..a4d0956ea 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1229,7 +1229,7 @@ var i, spoiler, _i, _len, _ref; qr.el.hidden = true; qr.message.send({ - abort: true + req: 'abort' }); d.activeElement.blur(); $.removeClass(qr.el, 'dump'); @@ -1639,7 +1639,7 @@ return; } qr.message.send({ - abort: true + req: 'abort' }); reply = qr.replies[0]; if (!(reply.com || reply.file)) { @@ -1775,21 +1775,20 @@ }); ready = function() { if (location.hostname === 'sys.4chan.org') { + $.rm(script); return qr.message.send({ - status: true, + req: 'status', ready: true }); } }; if (d.documentElement) { $.add(d.documentElement, script); - $.rm(script); ready(); return; } return $.ready(function() { $.add(d.head, script); - $.rm(script); return ready(); }); }, @@ -1799,65 +1798,69 @@ return postMessage(data, '*'); }, receive: function(data) { - var bb, form, i, l, name, ui8a, url, val, _ref; - if (data.abort) { - if ((_ref = qr.ajax) != null) _ref.abort(); - qr.message.send({ - status: true - }); - return; + var _ref; + switch (data.req) { + case 'abort': + if ((_ref = qr.ajax) != null) _ref.abort(); + return qr.message.send({ + req: 'status' + }); + case 'response': + return qr.response(data.html); + case 'status': + return qr.status(data); + default: + return qr.message.post(data); } - if (data.response) { - qr.response(data.html); - return; + }, + post: function(data) { + var bb, callbacks, form, i, l, name, opts, ui8a, url, val; + form = new FormData(); + if (engine === 'gecko' && data.upfile) { + l = data.upfile.buffer.length; + ui8a = new Uint8Array(l); + for (i = 0; 0 <= l ? i < l : i > l; 0 <= l ? i++ : i--) { + ui8a[i] = data.upfile.buffer.charCodeAt(i); + } + bb = new MozBlobBuilder(); + bb.append(ui8a.buffer); + form.append('upfile', bb.getBlob(data.upfile.type), data.upfile.name); + delete data.upfile; } - if (data.status) qr.status(data); + url = "http://sys.4chan.org/" + data.board + "/post"; + delete data.board; delete data.qr; - if (data.mode === 'regist') { - url = "http://sys.4chan.org/" + data.board + "/post"; - delete data.board; - form = new FormData(); - if (engine === 'gecko' && data.upfile) { - l = data.upfile.buffer.length; - ui8a = new Uint8Array(l); - for (i = 0; 0 <= l ? i < l : i > l; 0 <= l ? i++ : i--) { - ui8a[i] = data.upfile.buffer.charCodeAt(i); - } - bb = new MozBlobBuilder(); - bb.append(ui8a.buffer); - form.append('upfile', bb.getBlob(data.upfile.type), data.upfile.name); - delete data.upfile; - } - for (name in data) { - val = data[name]; - if (val) form.append(name, val); - } - return qr.ajax = $.ajax(url, { - onload: (function() { - return qr.message.send({ - response: true, - html: this.response - }); - }) - }, { - form: form, - type: 'post', - upCallbacks: { - onload: function() { - return qr.message.send({ - status: true, - progress: '...' - }); - }, - onprogress: function(e) { - return qr.message.send({ - status: true, - progress: "" + (Math.round(e.loaded / e.total * 100)) + "%" - }); - } - } - }); + for (name in data) { + val = data[name]; + if (val) form.append(name, val); } + callbacks = { + onload: function() { + return qr.message.send({ + req: 'response', + html: this.response + }); + } + }; + opts = { + form: form, + type: 'post', + upCallbacks: { + onload: function() { + return qr.message.send({ + req: 'status', + progress: '...' + }); + }, + onprogress: function(e) { + return qr.message.send({ + req: 'status', + progress: "" + (Math.round(e.loaded / e.total * 100)) + "%" + }); + } + } + }; + return qr.ajax = $.ajax(url, callbacks, opts); } } }; @@ -2303,7 +2306,7 @@ d.title = d.title.match(/^.+-/)[0] + ' 404'; g.dead = true; qr.message.send({ - abort: true + req: 'abort' }); qr.status(); Favicon.update(); diff --git a/script.coffee b/script.coffee index 857f01e6c..8aed69a57 100644 --- a/script.coffee +++ b/script.coffee @@ -887,7 +887,7 @@ qr = qr.dialog() close: -> qr.el.hidden = true - qr.message.send abort: true + qr.message.send req: 'abort' d.activeElement.blur() $.removeClass qr.el, 'dump' for i in qr.replies @@ -1212,7 +1212,7 @@ qr = qr.cooldown.auto = !qr.cooldown.auto qr.status() return - qr.message.send abort: true + qr.message.send req: 'abort' reply = qr.replies[0] # prevent errors @@ -1355,63 +1355,76 @@ qr = script = $.el 'script', textContent: "window.addEventListener('message',#{code},false)" ready = -> if location.hostname is 'sys.4chan.org' - qr.message.send status: true, ready: true + $.rm script + qr.message.send req: 'status', ready: true # Chrome can access the documentElement on document-start if d.documentElement $.add d.documentElement, script - $.rm script ready() return # other browsers will have to wait $.ready -> $.add d.head, script - $.rm script ready() send: (data) -> data.changeContext = true data.qr = true postMessage data, '*' receive: (data) -> - if data.abort - qr.ajax?.abort() - qr.message.send status: true - return - if data.response # xhr response - qr.response data.html - return - if data.status - qr.status data + switch data.req + when 'abort' + qr.ajax?.abort() + qr.message.send req: 'status' + when 'response' # xhr response + qr.response data.html + when 'status' + qr.status data + else + qr.message.post data # Reply object: we're posting + + post: (data) -> + form = new FormData() + + if engine is 'gecko' and data.upfile + # binary string to ArrayBuffer code from Aeosynth's 4chan X + l = data.upfile.buffer.length + ui8a = new Uint8Array l + for i in [0...l] + ui8a[i] = data.upfile.buffer.charCodeAt i + bb = new MozBlobBuilder() + bb.append ui8a.buffer + # https://bugzilla.mozilla.org/show_bug.cgi?id=690659 + # Firefox does not support assigning a filename when appending a blob to a FormData. + form.append 'upfile', bb.getBlob(data.upfile.type), data.upfile.name + delete data.upfile + + url = "http://sys.4chan.org/#{data.board}/post" + # Do not append these values to the form. + delete data.board delete data.qr - if data.mode is 'regist' # reply object: we're posting - url = "http://sys.4chan.org/#{data.board}/post" - delete data.board - form = new FormData() - if engine is 'gecko' and data.upfile - # binary string to ArrayBuffer code from Aeosynth's 4chan X - l = data.upfile.buffer.length - ui8a = new Uint8Array l - for i in [0...l] - ui8a[i] = data.upfile.buffer.charCodeAt i - bb = new MozBlobBuilder() - bb.append ui8a.buffer - # https://bugzilla.mozilla.org/show_bug.cgi?id=690659 - # Firefox does not support assigning a filename when appending a blob to a FormData - form.append 'upfile', bb.getBlob(data.upfile.type), data.upfile.name - delete data.upfile - for name, val of data - form.append name, val if val - qr.ajax = $.ajax url, onload: (-> qr.message.send response: true, html: @response), - form: form - type: 'post' - upCallbacks: - onload: -> - qr.message.send - status: true - progress: '...' - onprogress: (e) -> - qr.message.send - status: true - progress: "#{Math.round e.loaded / e.total * 100}%" + + for name, val of data + form.append name, val if val + + callbacks = + onload: -> + qr.message.send + req: 'response' + html: @response + opts = + form: form + type: 'post' + upCallbacks: + onload: -> + qr.message.send + req: 'status' + progress: '...' + onprogress: (e) -> + qr.message.send + req: 'status' + progress: "#{Math.round e.loaded / e.total * 100}%" + + qr.ajax = $.ajax url, callbacks, opts options = init: -> @@ -1798,7 +1811,7 @@ updater = clearTimeout updater.timeoutID d.title = d.title.match(/^.+-/)[0] + ' 404' g.dead = true - qr.message.send abort: true + qr.message.send req: 'abort' qr.status() Favicon.update() return