Actual posting or reply/new thread. The QR is now usable. Caution: no posting feedback yet.
This commit is contained in:
parent
48e8b33f6c
commit
0055c6d164
@ -319,7 +319,7 @@
|
|||||||
id: function(id) {
|
id: function(id) {
|
||||||
return d.getElementById(id);
|
return d.getElementById(id);
|
||||||
},
|
},
|
||||||
ajax: function(url, cb, opts) {
|
ajax: function(url, cb, opts, form) {
|
||||||
var event, headers, key, r, type, val;
|
var event, headers, key, r, type, val;
|
||||||
if (opts == null) opts = {};
|
if (opts == null) opts = {};
|
||||||
type = opts.type, event = opts.event, headers = opts.headers;
|
type = opts.type, event = opts.event, headers = opts.headers;
|
||||||
@ -332,7 +332,7 @@
|
|||||||
r.setRequestHeader(key, val);
|
r.setRequestHeader(key, val);
|
||||||
}
|
}
|
||||||
r[event] = cb;
|
r[event] = cb;
|
||||||
r.send();
|
r.send(form);
|
||||||
return r;
|
return r;
|
||||||
},
|
},
|
||||||
cache: function(url, cb) {
|
cache: function(url, cb) {
|
||||||
@ -1533,8 +1533,9 @@
|
|||||||
return $.add(d.body, qr.el);
|
return $.add(d.body, qr.el);
|
||||||
},
|
},
|
||||||
submit: function(e) {
|
submit: function(e) {
|
||||||
var captcha, captchas, challenge, err, len, m, now, reply, response, resto;
|
var captcha, captchas, challenge, err, len, m, now, reply, response, _ref;
|
||||||
if (e != null) e.preventDefault();
|
if (e != null) e.preventDefault();
|
||||||
|
if ((_ref = qr.ajax) != null) _ref.abort();
|
||||||
reply = qr.replies[0];
|
reply = qr.replies[0];
|
||||||
if (!(reply.com || reply.file)) {
|
if (!(reply.com || reply.file)) {
|
||||||
err = 'Error: No file selected.';
|
err = 'Error: No file selected.';
|
||||||
@ -1567,12 +1568,13 @@
|
|||||||
qr.hide();
|
qr.hide();
|
||||||
}
|
}
|
||||||
return qr.message.send({
|
return qr.message.send({
|
||||||
resto: g.REPLY ? g.THREAD_ID : (resto = $('select').value !== 'new') ? resto : void 0,
|
board: g.BOARD,
|
||||||
|
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,
|
||||||
file: 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,
|
||||||
@ -1581,7 +1583,8 @@
|
|||||||
},
|
},
|
||||||
response: function(e) {
|
response: function(e) {
|
||||||
var reply, sage;
|
var reply, sage;
|
||||||
log(e);
|
log(e, qr.ajax);
|
||||||
|
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);
|
||||||
reply = qr.replies[0];
|
reply = qr.replies[0];
|
||||||
@ -1618,7 +1621,20 @@
|
|||||||
return postMessage(data, '*');
|
return postMessage(data, '*');
|
||||||
},
|
},
|
||||||
receive: function(data) {
|
receive: function(data) {
|
||||||
return log('receive', location.hostname, data);
|
var form, name, url, val;
|
||||||
|
delete data.qr;
|
||||||
|
if (data.mode === 'regist') {
|
||||||
|
url = "http://sys.4chan.org/" + data.board + "/post?" + (Date.now());
|
||||||
|
delete data.board;
|
||||||
|
form = new FormData();
|
||||||
|
for (name in data) {
|
||||||
|
val = data[name];
|
||||||
|
if (val) form.append(name, val);
|
||||||
|
}
|
||||||
|
return qr.ajax = $.ajax(url, qr.response, {
|
||||||
|
type: 'post'
|
||||||
|
}, form);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -230,7 +230,7 @@ $.extend $,
|
|||||||
$.on d, 'DOMContentLoaded', cb
|
$.on d, 'DOMContentLoaded', cb
|
||||||
id: (id) ->
|
id: (id) ->
|
||||||
d.getElementById id
|
d.getElementById id
|
||||||
ajax: (url, cb, opts={}) ->
|
ajax: (url, cb, opts={}, form) ->
|
||||||
{type, event, headers} = opts
|
{type, event, headers} = opts
|
||||||
type or= 'get'
|
type or= 'get'
|
||||||
event or= 'onload'
|
event or= 'onload'
|
||||||
@ -239,7 +239,7 @@ $.extend $,
|
|||||||
for key, val of headers
|
for key, val of headers
|
||||||
r.setRequestHeader key, val
|
r.setRequestHeader key, val
|
||||||
r[event] = cb
|
r[event] = cb
|
||||||
r.send()
|
r.send form
|
||||||
r
|
r
|
||||||
cache: (url, cb) ->
|
cache: (url, cb) ->
|
||||||
if req = $.cache.requests[url]
|
if req = $.cache.requests[url]
|
||||||
@ -1154,6 +1154,7 @@ qr =
|
|||||||
|
|
||||||
submit: (e) ->
|
submit: (e) ->
|
||||||
e?.preventDefault()
|
e?.preventDefault()
|
||||||
|
qr.ajax?.abort()
|
||||||
reply = qr.replies[0]
|
reply = qr.replies[0]
|
||||||
|
|
||||||
# prevent errors
|
# prevent errors
|
||||||
@ -1189,23 +1190,21 @@ qr =
|
|||||||
qr.hide()
|
qr.hide()
|
||||||
|
|
||||||
qr.message.send
|
qr.message.send
|
||||||
resto:
|
board: g.BOARD
|
||||||
if g.REPLY
|
resto: g.THREAD_ID or $('select', qr.el).value
|
||||||
g.THREAD_ID
|
name: reply.name
|
||||||
else if resto = $('select').value isnt 'new'
|
email: reply.email
|
||||||
resto
|
sub: reply.sub
|
||||||
name: reply.name
|
com: reply.com
|
||||||
email: reply.email
|
upfile: reply.file
|
||||||
sub: reply.sub
|
mode: 'regist'
|
||||||
com: reply.com
|
|
||||||
file: reply.file
|
|
||||||
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
|
||||||
|
|
||||||
response: (e) ->
|
response: (e) ->
|
||||||
log e
|
log e, qr.ajax
|
||||||
|
return
|
||||||
# successful posting/error handling
|
# successful posting/error handling
|
||||||
|
|
||||||
unless conf['Persistent QR'] or qr.replies.length > 1
|
unless conf['Persistent QR'] or qr.replies.length > 1
|
||||||
@ -1246,7 +1245,15 @@ qr =
|
|||||||
data.qr = true
|
data.qr = true
|
||||||
postMessage data, '*'
|
postMessage data, '*'
|
||||||
receive: (data) ->
|
receive: (data) ->
|
||||||
log 'receive', location.hostname, data
|
delete data.qr
|
||||||
|
if data.mode is 'regist' # reply object: we're posting
|
||||||
|
# fool CloudFlare's cache to hopefully avoid connection errors
|
||||||
|
url = "http://sys.4chan.org/#{data.board}/post?#{Date.now()}"
|
||||||
|
delete data.board
|
||||||
|
form = new FormData()
|
||||||
|
for name, val of data
|
||||||
|
form.append name, val if val
|
||||||
|
qr.ajax = $.ajax url, qr.response, type: 'post', form
|
||||||
|
|
||||||
options =
|
options =
|
||||||
init: ->
|
init: ->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user