diff --git a/4chan_x.user.js b/4chan_x.user.js
index 2942acbed..6066d5381 100644
--- a/4chan_x.user.js
+++ b/4chan_x.user.js
@@ -1301,7 +1301,7 @@
break;
}
if (qr.replies.length === 1 && !qr.replies[0].file) {
- qr.replies[0].file = file;
+ qr.replies[0].setFile(file);
} else {
new qr.reply(file);
}
@@ -1313,16 +1313,27 @@
function _Class(file) {
var previous, _ref;
- this.file = file;
_ref = (previous = qr.replies[qr.replies.length - 1]) ? [previous.name, /^sage$/.test(previous.email) ? null : previous.email, conf['Remember Subject'] ? previous.sub : null] : [$.get("qr_name", null), $.get("qr_email", null), conf['Remember Subject'] ? $.get("qr_sub", null) : null], this.name = _ref[0], this.email = _ref[1], this.sub = _ref[2];
this.com = null;
+ this.el = $.el('li', {
+ textContent: 'no file'
+ });
+ if (file) this.setFile(file);
+ $.before($('#addReply', qr.el), this.el);
qr.replies.push(this);
}
+ _Class.prototype.setFile = function(file) {
+ this.file = file;
+ return this.el.textContent = this.file.fileName;
+ };
+
_Class.prototype.load = function() {
- var data;
+ var data, _ref;
for (data in this) {
- if (data !== 'file') $("[name=" + data + "]", qr.el).value = this[data];
+ if ((_ref = $("[name=" + data + "]", qr.el)) != null) {
+ _ref.value = this[data];
+ }
}
return log(this);
};
@@ -1354,7 +1365,7 @@
}
});
qr.mimeTypes = mimeTypes.split(', ');
- qr.el = ui.dialog('qr', 'top:0;right:0;', "
");
+ qr.el = ui.dialog('qr', 'top:0;right:0;', "");
if (!g.REPLY) {
$.on($('select', qr.el), 'mousedown', function(e) {
return e.stopPropagation();
@@ -1365,6 +1376,9 @@
$.on($('#dump', qr.el), 'click', function() {
return qr.el.classList.toggle('dump');
});
+ $.on($('#addReply', qr.el), 'click', function() {
+ return new qr.reply().load();
+ });
$.on($('form', qr.el), 'submit', qr.submit);
$.on($('[type=file]', qr.el), 'change', qr.fileInput);
new qr.reply().load();
diff --git a/script.coffee b/script.coffee
index 3d417a933..43c66bfd6 100644
--- a/script.coffee
+++ b/script.coffee
@@ -952,7 +952,7 @@ qr =
qr.error 'Unsupported file type.'
else
# set or modify selected reply's file
- # qr.replies[?].file = file
+ # qr.replies[?].setFile file
return
for file in @files
if file.size > @max
@@ -963,14 +963,14 @@ qr =
break
if qr.replies.length is 1 and not qr.replies[0].file
# set initial reply's file
- qr.replies[0].file = file
+ qr.replies[0].setFile file
else
new qr.reply file
$.addClass qr.el, 'dump'
replies: []
reply: class
- constructor: (@file) ->
+ constructor: (file) ->
[@name, @email, @sub] =
if previous = qr.replies[qr.replies.length-1]
[
@@ -985,10 +985,18 @@ qr =
if conf['Remember Subject'] then $.get("qr_sub", null) else null
]
@com = null
+ @el = $.el 'li',
+ textContent: 'no file'
+ @setFile file if file
+ $.before $('#addReply', qr.el), @el
qr.replies.push @
+ # set/rm this reply's file
+ setFile: (@file) ->
+ # update UI
+ @el.textContent = @file.fileName
load: ->
for data of @
- $("[name=#{data}]", qr.el).value = @[data] unless data is 'file'
+ $("[name=#{data}]", qr.el)?.value = @[data]
# visual feedback in the list
log @
rm: ->
@@ -1052,7 +1060,7 @@ qr =
background: -o-linear-gradient(#CCC, #DDD);
background: linear-gradient(#CCC, #DDD);
}
-#qr:not(.dump) #replies {
+#qr:not(.dump) output {
display: none;
}
.field {
@@ -1106,7 +1114,7 @@ textarea.field {