Objectify qr.inputs, more form submit/response handling preparations.
This commit is contained in:
parent
07990f29a2
commit
d4cffe79a0
@ -1243,7 +1243,7 @@
|
||||
return ta.selectionEnd = ta.selectionStart = caretPos + text.length;
|
||||
},
|
||||
dialog: function() {
|
||||
var input, _i, _len, _ref;
|
||||
var input, name, _ref;
|
||||
qr.el = ui.dialog('qr', 'top:0;right:0;', '\
|
||||
<style>\
|
||||
.autohide:not(:hover) > form {\
|
||||
@ -1293,36 +1293,41 @@ textarea.field {\
|
||||
$.on($('#autohide', qr.el), 'click', qr.hide);
|
||||
$.on($('.close', qr.el), 'click', qr.close);
|
||||
$.on($('form', qr.el), 'submit', qr.submit);
|
||||
qr.inputs = [$('[name=name]', qr.el), $('[name=email]', qr.el)];
|
||||
if (conf['Remember Subject']) qr.inputs.push($('[name=subject]', qr.el));
|
||||
qr.inputs = {
|
||||
name: $('[name=name]', qr.el),
|
||||
email: $('[name=email]', qr.el)
|
||||
};
|
||||
if (conf['Remember Subject']) qr.inputs.subject = $('[name=subject]', qr.el);
|
||||
_ref = qr.inputs;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
input = _ref[_i];
|
||||
input.value = $.get("qr_" + input.name, null);
|
||||
for (name in _ref) {
|
||||
input = _ref[name];
|
||||
input.value = $.get("qr_" + name, null);
|
||||
}
|
||||
$.on(window, 'storage', function(e) {
|
||||
var match;
|
||||
if (match = e.key.match(/qr_(.+)$/)) {
|
||||
return $("[name=" + match[1] + "]", qr.el).value = JSON.parse(e.newValue);
|
||||
return qr.inputs[match[1]].value = JSON.parse(e.newValue);
|
||||
}
|
||||
});
|
||||
return $.add(d.body, qr.el);
|
||||
},
|
||||
submit: function(e) {
|
||||
var input, _i, _len, _ref, _results;
|
||||
if (e != null) e.preventDefault();
|
||||
if (conf['Auto Hide QR']) qr.hide();
|
||||
if (/sage/i.test(qr.inputs[1].value)) {
|
||||
if (conf['Auto Hide QR']) return qr.hide();
|
||||
},
|
||||
response: function(e) {
|
||||
var input, name, _ref, _results;
|
||||
log(e);
|
||||
if (!conf['Persistent QR']) qr.close();
|
||||
if (/sage/i.test(qr.inputs.email.value)) {
|
||||
qr.sage = true;
|
||||
qr.inputs[1].value = null;
|
||||
}
|
||||
_ref = qr.inputs;
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
input = _ref[_i];
|
||||
_results.push($.on(input, 'change', function() {
|
||||
return $.set("qr_" + this.name, this.value);
|
||||
}));
|
||||
for (name in _ref) {
|
||||
input = _ref[name];
|
||||
_results.push($.set("qr_" + name, input.value));
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
|
||||
@ -964,27 +964,36 @@ textarea.field {
|
||||
$.on $('form', qr.el), 'submit', qr.submit
|
||||
|
||||
# save & load inputs' value with localStorage
|
||||
qr.inputs = [$('[name=name]', qr.el), $('[name=email]', qr.el)]
|
||||
qr.inputs.push $('[name=subject]', qr.el) if conf['Remember Subject']
|
||||
for input in qr.inputs
|
||||
input.value = $.get "qr_#{input.name}", null
|
||||
qr.inputs =
|
||||
name: $ '[name=name]', qr.el
|
||||
email: $ '[name=email]', qr.el
|
||||
qr.inputs.subject = $ '[name=subject]', qr.el if conf['Remember Subject']
|
||||
for name, input of qr.inputs
|
||||
input.value = $.get "qr_#{name}", null
|
||||
# sync between tabs
|
||||
$.on window, 'storage', (e) ->
|
||||
if match = e.key.match /qr_(.+)$/
|
||||
$("[name=#{match[1]}]", qr.el).value = JSON.parse e.newValue
|
||||
qr.inputs[match[1]].value = JSON.parse e.newValue
|
||||
|
||||
$.add d.body, qr.el
|
||||
|
||||
submit: (e) ->
|
||||
e?.preventDefault()
|
||||
qr.hide() if conf['Auto Hide QR']
|
||||
# magical xhr2
|
||||
|
||||
if /sage/i.test qr.inputs[1].value
|
||||
response: (e) ->
|
||||
log e
|
||||
# successful posting/error handling
|
||||
|
||||
unless conf['Persistent QR'] # or more replies to post
|
||||
qr.close()
|
||||
|
||||
if /sage/i.test qr.inputs.email.value
|
||||
qr.sage = true
|
||||
qr.inputs[1].value = null
|
||||
|
||||
for input in qr.inputs
|
||||
$.on input, 'change', -> $.set "qr_#{@name}", @value
|
||||
for name, input of qr.inputs
|
||||
$.set "qr_#{name}", input.value
|
||||
|
||||
options =
|
||||
init: ->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user