Supposedly actually fix file upload on Firefox.
This commit is contained in:
parent
239ea5180f
commit
c2bd74260b
@ -1538,7 +1538,7 @@
|
|||||||
return $.add(d.body, qr.el);
|
return $.add(d.body, qr.el);
|
||||||
},
|
},
|
||||||
submit: function(e) {
|
submit: function(e) {
|
||||||
var bb, blob, captcha, captchas, challenge, err, m, now, reply, response;
|
var captcha, captchas, challenge, err, file, m, now, post, reader, reply, response;
|
||||||
if (e != null) e.preventDefault();
|
if (e != null) e.preventDefault();
|
||||||
qr.message.send({
|
qr.message.send({
|
||||||
abort: true
|
abort: true
|
||||||
@ -1574,28 +1574,36 @@
|
|||||||
$.id('autohide').checked = true;
|
$.id('autohide').checked = true;
|
||||||
qr.hide();
|
qr.hide();
|
||||||
}
|
}
|
||||||
if (engine === 'gecko' && reply.file) {
|
post = {
|
||||||
bb = new MozBlobBuilder();
|
|
||||||
bb.append(reply.file);
|
|
||||||
blob = bb.getBlob(reply.file.type);
|
|
||||||
}
|
|
||||||
return qr.message.send({
|
|
||||||
board: g.BOARD,
|
board: g.BOARD,
|
||||||
resto: g.THREAD_ID || $('select', qr.el).value,
|
resto: g.THREAD_ID || $('select', qr.el).value,
|
||||||
name: reply.name,
|
name: reply.name,
|
||||||
email: reply.email,
|
email: reply.email,
|
||||||
sub: reply.sub,
|
sub: reply.sub,
|
||||||
com: reply.com,
|
com: reply.com,
|
||||||
upfile: blob || reply.file,
|
upfile: reply.file,
|
||||||
mode: 'regist',
|
mode: 'regist',
|
||||||
pwd: (m = d.cookie.match(/4chan_pass=([^;]+)/)) ? decodeURIComponent(m[1]) : $('input[name=pwd]').value,
|
pwd: (m = d.cookie.match(/4chan_pass=([^;]+)/)) ? decodeURIComponent(m[1]) : $('input[name=pwd]').value,
|
||||||
recaptcha_challenge_field: challenge,
|
recaptcha_challenge_field: challenge,
|
||||||
recaptcha_response_field: response
|
recaptcha_response_field: response
|
||||||
});
|
};
|
||||||
|
if (engine === 'gecko' && reply.file) {
|
||||||
|
file = {};
|
||||||
|
reader = new FileReader();
|
||||||
|
reader.onload = function() {
|
||||||
|
file.buffer = this.result;
|
||||||
|
file.type = reply.file.type;
|
||||||
|
post.upfile = file;
|
||||||
|
return qr.message.send(post);
|
||||||
|
};
|
||||||
|
reader.readAsArrayBuffer(reply.file);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return qr.message.send(post);
|
||||||
},
|
},
|
||||||
response: function(e) {
|
response: function(e) {
|
||||||
var reply, sage;
|
var reply, sage;
|
||||||
log(e, qr.ajax);
|
log(e);
|
||||||
return;
|
return;
|
||||||
if (!(conf['Persistent QR'] || qr.replies.length > 1)) qr.close();
|
if (!(conf['Persistent QR'] || qr.replies.length > 1)) qr.close();
|
||||||
sage = /sage/i.test(reply.email);
|
sage = /sage/i.test(reply.email);
|
||||||
@ -1635,7 +1643,7 @@
|
|||||||
return postMessage(data, '*');
|
return postMessage(data, '*');
|
||||||
},
|
},
|
||||||
receive: function(data) {
|
receive: function(data) {
|
||||||
var form, name, url, val, _ref;
|
var bb, form, name, url, val, _ref;
|
||||||
if (data.abort) {
|
if (data.abort) {
|
||||||
if ((_ref = qr.ajax) != null) _ref.abort();
|
if ((_ref = qr.ajax) != null) _ref.abort();
|
||||||
return;
|
return;
|
||||||
@ -1644,6 +1652,11 @@
|
|||||||
if (data.mode === 'regist') {
|
if (data.mode === 'regist') {
|
||||||
url = "http://sys.4chan.org/" + data.board + "/post?" + (Date.now());
|
url = "http://sys.4chan.org/" + data.board + "/post?" + (Date.now());
|
||||||
delete data.board;
|
delete data.board;
|
||||||
|
if (engine === 'gecko' && data.upfile) {
|
||||||
|
bb = new MozBlobBuilder();
|
||||||
|
bb.append(data.upfile.buffer);
|
||||||
|
data.upfile = bb.getBlob(data.upfile.type);
|
||||||
|
}
|
||||||
form = new FormData();
|
form = new FormData();
|
||||||
for (name in data) {
|
for (name in data) {
|
||||||
val = data[name];
|
val = data[name];
|
||||||
|
|||||||
@ -1192,29 +1192,37 @@ qr =
|
|||||||
$.id('autohide').checked = true
|
$.id('autohide').checked = true
|
||||||
qr.hide()
|
qr.hide()
|
||||||
|
|
||||||
if engine is 'gecko' and reply.file
|
post =
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=673742
|
|
||||||
# We plan to allow postMessaging Files and FileLists across origins,
|
|
||||||
# that just needs a more in depth security review.
|
|
||||||
bb = new MozBlobBuilder()
|
|
||||||
bb.append reply.file
|
|
||||||
blob = bb.getBlob reply.file.type
|
|
||||||
|
|
||||||
qr.message.send
|
|
||||||
board: g.BOARD
|
board: g.BOARD
|
||||||
resto: g.THREAD_ID or $('select', qr.el).value
|
resto: g.THREAD_ID or $('select', qr.el).value
|
||||||
name: reply.name
|
name: reply.name
|
||||||
email: reply.email
|
email: reply.email
|
||||||
sub: reply.sub
|
sub: reply.sub
|
||||||
com: reply.com
|
com: reply.com
|
||||||
upfile: blob or reply.file
|
upfile: reply.file
|
||||||
mode: 'regist'
|
mode: 'regist'
|
||||||
pwd: if m = d.cookie.match(/4chan_pass=([^;]+)/) then decodeURIComponent m[1] else $('input[name=pwd]').value
|
pwd: if m = d.cookie.match(/4chan_pass=([^;]+)/) then decodeURIComponent m[1] else $('input[name=pwd]').value
|
||||||
recaptcha_challenge_field: challenge
|
recaptcha_challenge_field: challenge
|
||||||
recaptcha_response_field: response
|
recaptcha_response_field: response
|
||||||
|
|
||||||
|
if engine is 'gecko' and reply.file
|
||||||
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=673742
|
||||||
|
# We plan to allow postMessaging Files and FileLists across origins,
|
||||||
|
# that just needs a more in depth security review.
|
||||||
|
file = {}
|
||||||
|
reader = new FileReader()
|
||||||
|
reader.onload = ->
|
||||||
|
file.buffer = @result
|
||||||
|
file.type = reply.file.type
|
||||||
|
post.upfile = file
|
||||||
|
qr.message.send post
|
||||||
|
reader.readAsArrayBuffer reply.file
|
||||||
|
return
|
||||||
|
|
||||||
|
qr.message.send post
|
||||||
|
|
||||||
response: (e) ->
|
response: (e) ->
|
||||||
log e, qr.ajax
|
log e
|
||||||
return
|
return
|
||||||
# successful posting/error handling
|
# successful posting/error handling
|
||||||
|
|
||||||
@ -1265,6 +1273,10 @@ qr =
|
|||||||
# fool CloudFlare's cache to hopefully avoid connection errors
|
# fool CloudFlare's cache to hopefully avoid connection errors
|
||||||
url = "http://sys.4chan.org/#{data.board}/post?#{Date.now()}"
|
url = "http://sys.4chan.org/#{data.board}/post?#{Date.now()}"
|
||||||
delete data.board
|
delete data.board
|
||||||
|
if engine is 'gecko' and data.upfile
|
||||||
|
bb = new MozBlobBuilder()
|
||||||
|
bb.append data.upfile.buffer
|
||||||
|
data.upfile = bb.getBlob data.upfile.type
|
||||||
form = new FormData()
|
form = new FormData()
|
||||||
for name, val of data
|
for name, val of data
|
||||||
form.append name, val if val
|
form.append name, val if val
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user