diff --git a/css/style.css b/css/style.css
index 4b7c27012..dbba61fa3 100644
--- a/css/style.css
+++ b/css/style.css
@@ -581,7 +581,7 @@ a.hide-announcement {
align-self: stretch;
flex: 1;
}
-#qr select {
+#qr select[data-name=thread] {
margin: 0;
-webkit-appearance: none;
-moz-appearance: none;
diff --git a/src/Posting/QR.coffee b/src/Posting/QR.coffee
index b13b83f15..ff4f86599 100644
--- a/src/Posting/QR.coffee
+++ b/src/Posting/QR.coffee
@@ -522,8 +522,9 @@ QR =
lock: (lock=true) ->
@isLocked = lock
return unless @ is QR.selected
- for name in ['thread', 'name', 'email', 'sub', 'com', 'fileButton', 'filename', 'spoiler']
- QR.nodes[name].disabled = lock
+ for name in ['thread', 'name', 'email', 'sub', 'com', 'fileButton', 'filename', 'spoiler', 'flag']
+ continue unless node = QR.nodes[name]
+ node.disabled = lock
@nodes.rm.style.visibility = if lock then 'hidden' else ''
(if lock then $.off else $.on) QR.nodes.filename.previousElementSibling, 'click', QR.openFileInput
@nodes.spoiler.disabled = lock
@@ -545,8 +546,9 @@ QR =
$.event 'QRPostSelection', @
load: ->
# Load this post's values.
- for name in ['thread', 'name', 'email', 'sub', 'com', 'filename']
- QR.nodes[name].value = @[name] or null
+ for name in ['thread', 'name', 'email', 'sub', 'com', 'filename', 'flag']
+ continue unless node = QR.nodes[name]
+ node.value = @[name] or node.dataset.default or null
@showFileData()
QR.characterCount()
save: (input) ->
@@ -554,7 +556,7 @@ QR =
@spoiler = input.checked
return
{name} = input.dataset
- @[name] = input.value
+ @[name] = input.value or input.dataset.default or null
switch name
when 'thread'
QR.status()
@@ -578,8 +580,9 @@ QR =
return unless @ is QR.selected
# Do this in case people use extensions
# that do not trigger the `input` event.
- for name in ['thread', 'name', 'email', 'sub', 'com', 'filename', 'spoiler']
- @save QR.nodes[name]
+ for name in ['thread', 'name', 'email', 'sub', 'com', 'filename', 'spoiler', 'flag']
+ continue unless node = QR.nodes[name]
+ @save node
return
setFile: (@file) ->
@filename = file.name
@@ -856,7 +859,13 @@ QR =
"""
+ nodes.flashTag.dataset.default = '4'
$.add nodes.form, nodes.flashTag
+ if flagSelector = $ '.flagSelector'
+ nodes.flag = flagSelector.cloneNode true
+ nodes.flag.dataset.name = 'flag'
+ nodes.flag.dataset.default = '0'
+ $.add nodes.form, nodes.flag
# Make a list of threads.
for thread of g.BOARD.threads
@@ -882,9 +891,11 @@ QR =
$.on nodes.spoiler, 'change', -> QR.selected.nodes.spoiler.click()
$.on nodes.fileInput, 'change', QR.handleFiles
# save selected post's data
- for name in ['name', 'email', 'sub', 'com', 'filename']
- $.on nodes[name], 'input', -> QR.selected.save @
- $.on nodes.thread, 'change', -> QR.selected.save @
+ save = -> QR.selected.save @
+ for name in ['thread', 'name', 'email', 'sub', 'com', 'filename', 'flag']
+ continue unless node = nodes[name]
+ event = if node.nodeName is 'SELECT' then 'change' else 'input'
+ $.on nodes[name], event, save
<% if (type === 'userscript') { %>
if Conf['Remember QR Size']
@@ -965,7 +976,7 @@ QR =
post.lock()
- postData =
+ formData =
resto: threadID
name: post.name
email: post.email
@@ -974,6 +985,7 @@ QR =
upfile: post.file
filetag: filetag
spoiler: post.spoiler
+ flag: post.flag
textonly: textOnly
mode: 'regist'
pwd: QR.persona.pwd
@@ -997,7 +1009,7 @@ QR =
[FAQ]
"""
extra =
- form: $.formData postData
+ form: $.formData formData
upCallbacks:
onload: ->
# Upload done, waiting for server response.