diff --git a/4chan_x.user.js b/4chan_x.user.js index 169b39e31..3f4524e5c 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -229,7 +229,7 @@ el.innerHTML = html; el.id = id; el.style.cssText = (saved = localStorage["" + NAMESPACE + id + ".position"]) ? saved : position; - el.querySelector('div.move').addEventListener('mousedown', ui.dragstart, false); + el.querySelector('.move').addEventListener('mousedown', ui.dragstart, false); return el; }, dragstart: function(e) { @@ -1481,7 +1481,7 @@ init: function() { var _this = this; this.img = $('.captcha > img', qr.el); - this.input = $('[name=captcha]', qr.el); + this.input = $('[autocomplete]', qr.el); this.challenge = $.id('recaptcha_challenge_field_holder'); $.on(this.img.parentNode, 'click', this.reload); $.on(this.input, 'keydown', this.keydown); @@ -1541,7 +1541,39 @@ } }, dialog: function() { - var input, mimeTypes, thread, threads, _i, _j, _len, _len2, _ref, _ref2; + var fileInput, input, mimeTypes, spoiler, thread, threads, _i, _j, _len, _len2, _ref, _ref2; + qr.el = ui.dialog('qr', 'top:0;right:0;', '\ +
\ + Quick Reply \ + x\ +
\ +
\ +
\ +
+
\ +
\ +
\ +
\ +
\ + \ +
\ +
'); + mimeTypes = $('.rules').textContent.match(/: (.+) /)[1].toLowerCase().replace(/\w+/g, function(type) { + switch (type) { + case 'jpg': + return 'image/jpeg'; + case 'pdf': + return 'application/pdf'; + default: + return "image/" + type; + } + }); + qr.mimeTypes = mimeTypes.split(', '); + fileInput = $('[type=file]', qr.el); + fileInput.max = $('[name=MAX_FILE_SIZE]').value; + fileInput.accept = mimeTypes; + qr.spoiler = !!$('#com_submit + label'); + spoiler = $('#spoilerLabel', qr.el); + spoiler.hidden = !qr.spoiler; if (!g.REPLY) { threads = ''; _ref = $$('.op'); @@ -1549,22 +1581,9 @@ thread = _ref[_i]; threads += ""; } - threads = ""; - } - mimeTypes = $('.rules').textContent.toLowerCase().match(/: (.+) /)[1].replace(/\w+/g, function(type) { - switch (type) { - case 'jpg': - return 'image/jpeg'; - case 'pdf': - return 'application/pdf'; - default: - return 'image/' + type; - } - }); - qr.mimeTypes = mimeTypes.split(', '); - qr.spoiler = !!$('#com_submit + label'); - qr.el = ui.dialog('qr', 'top:0;right:0;', "
Quick Reply " + (g.REPLY ? '' : threads) + " x
+
"); - if (!g.REPLY) { + $.prepend($('.move > span', qr.el), $.el('select', { + innerHTML: threads + })); $.on($('select', qr.el), 'mousedown', function(e) { return e.stopPropagation(); }); @@ -1581,8 +1600,8 @@ $.on($('textarea', qr.el), 'change', function() { return qr.selected.el.lastChild.textContent = this.value; }); - $.on($('[type=file]', qr.el), 'change', qr.fileInput); - $.on($('#spoiler', qr.el), 'change', function() { + $.on(fileInput, 'change', qr.fileInput); + $.on(spoiler.firstChild, 'change', function() { return $('input', qr.selected.el).click(); }); new qr.reply().select(); @@ -3528,7 +3547,7 @@ a[href="javascript:;"] {\ background: -o-linear-gradient(#CCC, #DDD);\ background: linear-gradient(#CCC, #DDD);\ }\ -#qr:not(.dump) output, .dump > form > label {\ +#qr:not(.dump) #replies, .dump > form > label {\ display: none;\ }\ #replies {\ @@ -3642,7 +3661,7 @@ textarea.field {\ height: 57px;\ width: 300px;\ }\ -.field[name=captcha] {\ +.field:only-child {\ width: 100%;\ }\ #qr [type=file] {\ diff --git a/script.coffee b/script.coffee index 58d24734c..b2dfcc453 100644 --- a/script.coffee +++ b/script.coffee @@ -136,7 +136,7 @@ ui = el.innerHTML = html el.id = id el.style.cssText = if saved = localStorage["#{NAMESPACE}#{id}.position"] then saved else position - el.querySelector('div.move').addEventListener 'mousedown', ui.dragstart, false + el.querySelector('.move').addEventListener 'mousedown', ui.dragstart, false el dragstart: (e) -> #prevent text selection @@ -1090,7 +1090,7 @@ qr = captcha: init: -> @img = $ '.captcha > img', qr.el - @input = $ '[name=captcha]', qr.el + @input = $ '[autocomplete]', qr.el @challenge = $.id 'recaptcha_challenge_field_holder' $.on @img.parentNode, 'click', @reload $.on @input, 'keydown', @keydown @@ -1136,48 +1136,55 @@ qr = e.preventDefault() dialog: -> - # create a new thread or select thread to reply to - unless g.REPLY - threads = '' - for thread in $$ '.op' - threads += "" - threads = "" - # chose only supported files - mimeTypes = $('.rules').textContent.toLowerCase().match(/: (.+) /)[1].replace /\w+/g, (type) -> + qr.el = ui.dialog 'qr', 'top:0;right:0;', ' +
+ Quick Reply + x +
+
+
+
+
+
+
+
+
+ +
+
' + + # Allow only this board's supported files. + mimeTypes = $('.rules').textContent.match(/: (.+) /)[1].toLowerCase().replace /\w+/g, (type) -> switch type when 'jpg' 'image/jpeg' when 'pdf' 'application/pdf' else - 'image/' + type - qr.mimeTypes = mimeTypes.split ', ' - qr.spoiler = !!$ '#com_submit + label' - qr.el = ui.dialog 'qr', 'top:0;right:0;', " -
- Quick Reply - #{if g.REPLY then '' else threads} x -
-
-
-
+
-
-
-
-
- -
-
" + "image/#{type}" + qr.mimeTypes = mimeTypes.split ', ' + fileInput = $ '[type=file]', qr.el + fileInput.max = $('[name=MAX_FILE_SIZE]').value + fileInput.accept = mimeTypes + + qr.spoiler = !!$ '#com_submit + label' + spoiler = $ '#spoilerLabel', qr.el + spoiler.hidden = !qr.spoiler + unless g.REPLY - $.on $('select', qr.el), 'mousedown', (e) -> e.stopPropagation() - $.on $('#autohide', qr.el), 'change', qr.toggleHide - $.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().select() - $.on $('form', qr.el), 'submit', qr.submit - $.on $('textarea', qr.el), 'change', -> qr.selected.el.lastChild.textContent = @value - $.on $('[type=file]', qr.el), 'change', qr.fileInput - $.on $('#spoiler', qr.el), 'change', -> $('input', qr.selected.el).click() + # Make a list with visible threads and an option to create a new one. + threads = '' + for thread in $$ '.op' + threads += "" + $.prepend $('.move > span', qr.el), $.el 'select', innerHTML: threads + $.on $('select', qr.el), 'mousedown', (e) -> e.stopPropagation() + $.on $('#autohide', qr.el), 'change', qr.toggleHide + $.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().select() + $.on $('form', qr.el), 'submit', qr.submit + $.on $('textarea', qr.el), 'change', -> qr.selected.el.lastChild.textContent = @value + $.on fileInput, 'change', qr.fileInput + $.on spoiler.firstChild, 'change', -> $('input', qr.selected.el).click() new qr.reply().select() # save selected reply's data @@ -2782,7 +2789,7 @@ a[href="javascript:;"] { background: -o-linear-gradient(#CCC, #DDD); background: linear-gradient(#CCC, #DDD); } -#qr:not(.dump) output, .dump > form > label { +#qr:not(.dump) #replies, .dump > form > label { display: none; } #replies { @@ -2896,7 +2903,7 @@ textarea.field { height: 57px; width: 300px; } -.field[name=captcha] { +.field:only-child { width: 100%; } #qr [type=file] {