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;', "
Quick Reply " + (g.REPLY ? '' : threads) + "
"); + qr.el = ui.dialog('qr', 'top:0;right:0;', "
Quick Reply " + (g.REPLY ? '' : threads) + "
    +
"); 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 {
-
+
    +
@@ -1118,12 +1126,13 @@ textarea.field { $.on $('#autohide', qr.el), 'click', qr.hide $.on $('.close', qr.el), 'click', qr.close $.on $('#dump', qr.el), 'click', -> qr.el.classList.toggle 'dump' + $.on $('#addReply', qr.el), 'click', -> new qr.reply().load() $.on $('form', qr.el), 'submit', qr.submit $.on $('[type=file]', qr.el), 'change', qr.fileInput new qr.reply().load() + # save selected reply's data for input in ['name', 'email', 'sub', 'com'] - # save this reply's data $.on $("[name=#{input}]", qr.el), 'change', -> # (getReply?)[@name] = @value # sync between tabs # $.on window, 'storage', (e) ->