diff --git a/CHANGELOG.md b/CHANGELOG.md index 359178d93..dfbb02ded 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +### v1.8.9.7 +*2014-08-13* + +**ccd0** +- Relabel the former email field as `Options` (unless `Show Name and Subject` is checked). + +### v1.8.9.6 +*2014-08-12* + +**ccd0** +- 4chan update: Indicate death of threads with delayed pruning on /a/ and /v/. + ### v1.8.9.5 *2014-08-12* diff --git a/LICENSE b/LICENSE index 4f8c1674a..6ead92c75 100755 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ /* -* 4chan X - Version 1.8.9.5 +* 4chan X - Version 1.8.9.7 * * Licensed under the MIT license. * https://github.com/ccd0/4chan-x/blob/master/LICENSE diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx index 667e77854..33b326424 100644 Binary files a/builds/4chan-X-beta.crx and b/builds/4chan-X-beta.crx differ diff --git a/builds/4chan-X-beta.meta.js b/builds/4chan-X-beta.meta.js index b13936f7e..0471ed847 100644 --- a/builds/4chan-X-beta.meta.js +++ b/builds/4chan-X-beta.meta.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X -// @version 1.8.9.5 +// @version 1.8.9.7 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X diff --git a/builds/4chan-X-beta.user.js b/builds/4chan-X-beta.user.js index d9287a532..1c1e4f806 100644 --- a/builds/4chan-X-beta.user.js +++ b/builds/4chan-X-beta.user.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript // ==UserScript== // @name 4chan X -// @version 1.8.9.5 +// @version 1.8.9.7 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -24,7 +24,7 @@ // ==/UserScript== /* -* 4chan X - Version 1.8.9.5 +* 4chan X - Version 1.8.9.7 * * Licensed under the MIT license. * https://github.com/ccd0/4chan-x/blob/master/LICENSE @@ -222,7 +222,7 @@ 'Remember Subject': [false, 'Remember the subject field, instead of resetting after posting.'], 'Remember QR Size': [false, 'Remember the size of the Quick reply.'], 'Remember Spoiler': [false, 'Remember the spoiler state, instead of resetting after posting.'], - 'Show Name and Subject': [false, 'Always show name and subject fields in the QR even when 4chan doesn\'t use them.'], + 'Show Name and Subject': [false, 'Show the classic name, email, and subject fields in the QR, even when 4chan doesn\'t use them all.'], 'Hide Original Post Form': [true, 'Hide the normal post form.'], 'Cooldown': [true, 'Indicate the remaining time before posting again.'], 'Cooldown Prediction': [true, 'Decrease the cooldown time by taking into account upload speed. Disable it if it\'s inaccurate for you.'], @@ -313,7 +313,7 @@ }, boardnav: "[ toggle-all ]\na-replace\nc-replace\ng-replace\nk-replace\nv-replace\nvg-replace\nvr-replace\nck-replace\nco-replace\nfit-replace\njp-replace\nmu-replace\nsp-replace\ntv-replace\nvp-replace\n[external-text:\"FAQ\",\"https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions\"]", QR: { - 'QR.personas': "#email:\"sage\";boards:jp;always" + 'QR.personas': "#options:\"sage\";boards:jp;always" }, time: '%m/%d/%y(%a)%H:%M:%S', backlink: '>>%id', @@ -380,7 +380,7 @@ doc = d.documentElement; g = { - VERSION: '1.8.9.5', + VERSION: '1.8.9.7', NAMESPACE: '4chan X.', NAME: '4chan X', FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions', @@ -6418,7 +6418,7 @@ var dialog, elm, event, i, items, name, node, nodes, prop, rules, save, setNode, _, _i, _len, _ref, _ref1, _ref2; QR.nodes = nodes = { el: dialog = UI.dialog('qr', 'top:0;right:0;', { - innerHTML: "
×
+
No selected file
" + innerHTML: "
×
+
No selected file
" }) }; setNode = function(name, query) { @@ -6469,6 +6469,7 @@ if (Conf['Show Name and Subject']) { $.addClass(QR.nodes.name, 'force-show'); $.addClass(QR.nodes.sub, 'force-show'); + QR.nodes.email.placeholder = 'E-mail'; } QR.forcedAnon = !!$('.postForm input[name=name][type=hidden]'); if (QR.forcedAnon) { @@ -7193,7 +7194,7 @@ if (item[0] === '#') { return; } - if (!(match = item.match(/(name|email|subject|password):"(.*)"/i))) { + if (!(match = item.match(/(name|options|email|subject|password):"(.*)"/i))) { return; } _ref = match, match = _ref[0], type = _ref[1], val = _ref[2]; @@ -7206,6 +7207,9 @@ QR.persona.pwd = val; return; } + if (type === 'options') { + type = 'email'; + } if (type === 'subject') { type = 'sub'; } @@ -9995,7 +9999,11 @@ $.on(window, 'online offline', ThreadUpdater.cb.online); $.on(d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost); $.on(d, 'visibilitychange', ThreadUpdater.cb.visibility); - return ThreadUpdater.cb.online(); + if (g.DEAD) { + return ThreadUpdater.set('status', 'Archived', 'warning'); + } else { + return ThreadUpdater.cb.online(); + } }, /* @@ -10005,6 +10013,9 @@ beep: 'data:audio/wav;base64,UklGRjQDAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAc21wbDwAAABBAAADAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYXRhzAIAAGMms8em0tleMV4zIpLVo8nhfSlcPR102Ki+5JspVEkdVtKzs+K1NEhUIT7DwKrcy0g6WygsrM2k1NpiLl0zIY/WpMrjgCdbPhxw2Kq+5Z4qUkkdU9K1s+K5NkVTITzBwqnczko3WikrqM+l1NxlLF0zIIvXpsnjgydZPhxs2ay95aIrUEkdUdC3suK8N0NUIjq+xKrcz002WioppdGm091pK1w0IIjYp8jkhydXPxxq2K295aUrTkoeTs65suK+OUFUIzi7xqrb0VA0WSoootKm0t5tKlo1H4TYqMfkiydWQBxm16+85actTEseS8y7seHAPD9TIza5yKra01QyWSson9On0d5wKVk2H4DYqcfkjidUQB1j1rG75KsvSkseScu8seDCPz1TJDW2yara1FYxWSwnm9Sn0N9zKVg2H33ZqsXkkihSQR1g1bK65K0wSEsfR8i+seDEQTxUJTOzy6rY1VowWC0mmNWoz993KVc3H3rYq8TklSlRQh1d1LS647AyR0wgRMbAsN/GRDpTJTKwzKrX1l4vVy4lldWpzt97KVY4IXbUr8LZljVPRCxhw7W3z6ZISkw1VK+4sMWvXEhSPk6buay9sm5JVkZNiLWqtrJ+TldNTnquqbCwilZXU1BwpKirrpNgWFhTaZmnpquZbFlbVmWOpaOonHZcXlljhaGhpZ1+YWBdYn2cn6GdhmdhYGN3lp2enIttY2Jjco+bnJuOdGZlZXCImJqakHpoZ2Zug5WYmZJ/bGlobX6RlpeSg3BqaW16jZSVkoZ0bGtteImSk5KIeG5tbnaFkJKRinxxbm91gY2QkIt/c3BwdH6Kj4+LgnZxcXR8iI2OjIR5c3J0e4WLjYuFe3VzdHmCioyLhn52dHR5gIiKioeAeHV1eH+GiYqHgXp2dnh9hIiJh4J8eHd4fIKHiIeDfXl4eHyBhoeHhH96eHmA', cb: { online: function() { + if (g.DEAD) { + return; + } if (ThreadUpdater.online = navigator.onLine) { ThreadUpdater.outdateCount = 0; ThreadUpdater.setInterval(); @@ -10070,20 +10081,19 @@ req = ThreadUpdater.req; switch (req.status) { case 200: - g.DEAD = false; + g.DEAD = !!+req.response.posts[0].archived; ThreadUpdater.parse(req.response.posts); - ThreadUpdater.setInterval(); + if (g.DEAD) { + ThreadUpdater.set('status', 'Archived', 'warning'); + ThreadUpdater.kill(); + } else { + ThreadUpdater.setInterval(); + } break; case 404: g.DEAD = true; - ThreadUpdater.set('timer', null); ThreadUpdater.set('status', '404', 'warning'); - clearTimeout(ThreadUpdater.timeoutID); - ThreadUpdater.thread.kill(); - $.event('ThreadUpdate', { - 404: true, - threadID: ThreadUpdater.thread.fullID - }); + ThreadUpdater.kill(); break; default: ThreadUpdater.outdateCount++; @@ -10096,6 +10106,15 @@ } } }, + kill: function() { + ThreadUpdater.set('timer', null); + clearTimeout(ThreadUpdater.timeoutID); + ThreadUpdater.thread.kill(); + return $.event('ThreadUpdate', { + 404: true, + threadID: ThreadUpdater.thread.fullID + }); + }, setInterval: function() { var cur, i, j, limit; i = ThreadUpdater.interval + 1; @@ -12742,7 +12761,7 @@ className: 'dialog' }); $.extend(dialog, { - innerHTML: "
" + innerHTML: "
" }); $.on($('.export', Settings.dialog), 'click', Settings["export"]); $.on($('.import', Settings.dialog), 'click', Settings["import"]); @@ -13083,7 +13102,7 @@ advanced: function(section) { var archBoards, boardID, boardOptions, boardSelect, boards, customCSS, event, files, i, input, inputs, interval, item, items, name, o, row, rows, software, ta, table, warning, withCredentials, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6; $.extend(section, { - innerHTML: "
Archiver
404 Redirect is disabled.
Thread redirectionPost fetchingFile redirection
Custom Board Navigation
New lines will be converted into spaces.

In the following examples for /g/, g can be changed to a different board ID (a, b, etc...), the current board (current), or the Twitter link (@).
Board link: g
Title link: g-title
Board link (Replace with title when on that board): g-replace
Full text link: g-full
Custom text link: g-text:\"Install Gentoo\"
Index-only link: g-index
Catalog-only link: g-catalog
External link: external-text:\"Google\",\"http://www.google.com\"
Combinations are possible: g-index-text:\"Technology Index\"
Full board list toggle: toggle-all

[ toggle-all ] [current-title] [g-title / a-title / jp-title] [x / wsg / h] [t-text:\"Piracy\"]
will give you
[ + ] [Technology] [Technology / Anime & Manga / Otaku Culture] [x / wsg / h] [Piracy]
if you are on /g/.
Time Formatting is disabled.
:
Supported format specifiers:
Day: %a, %A, %d, %e
Month: %m, %b, %B
Year: %y, %Y
Hour: %k, %H, %l, %I, %p, %P
Minute: %M
Second: %S
Literal %: %%
Quote Backlinks formatting is disabled.
:
File Info Formatting is disabled.
:
Link: %l (truncated), %L (untruncated), %T (Unix timestamp)
Original file name: %n (truncated), %N (untruncated), %t (Unix timestamp)
Spoiler indicator: %p
Size: %B (Bytes), %K (KB), %M (MB), %s (4chan default)
Resolution: %r (Displays 'PDF' for PDF files)
Literal %: %%
Quick Reply Personas

One item per line.
Items will be added in the relevant input's auto-completion list.
Password items will always be used, since there is no password input.
Lines starting with a # will be ignored.

Unread Favicon is disabled.
Emoji is disabled.
Sage Icon:
Position:
Thread Updater is disabled.
Interval:
" + innerHTML: "
Archiver
404 Redirect is disabled.
Thread redirectionPost fetchingFile redirection
Custom Board Navigation
New lines will be converted into spaces.

In the following examples for /g/, g can be changed to a different board ID (a, b, etc...), the current board (current), or the Twitter link (@).
Board link: g
Title link: g-title
Board link (Replace with title when on that board): g-replace
Full text link: g-full
Custom text link: g-text:\"Install Gentoo\"
Index-only link: g-index
Catalog-only link: g-catalog
External link: external-text:\"Google\",\"http://www.google.com\"
Combinations are possible: g-index-text:\"Technology Index\"
Full board list toggle: toggle-all

[ toggle-all ] [current-title] [g-title / a-title / jp-title] [x / wsg / h] [t-text:\"Piracy\"]
will give you
[ + ] [Technology] [Technology / Anime & Manga / Otaku Culture] [x / wsg / h] [Piracy]
if you are on /g/.
Time Formatting is disabled.
:
Supported format specifiers:
Day: %a, %A, %d, %e
Month: %m, %b, %B
Year: %y, %Y
Hour: %k, %H, %l, %I, %p, %P
Minute: %M
Second: %S
Literal %: %%
Quote Backlinks formatting is disabled.
:
File Info Formatting is disabled.
:
Link: %l (truncated), %L (untruncated), %T (Unix timestamp)
Original file name: %n (truncated), %N (untruncated), %t (Unix timestamp)
Spoiler indicator: %p
Size: %B (Bytes), %K (KB), %M (MB), %s (4chan default)
Resolution: %r (Displays 'PDF' for PDF files)
Literal %: %%
Quick Reply Personas

One item per line.
Items will be added in the relevant input's auto-completion list.
Password items will always be used, since there is no password input.
Lines starting with a # will be ignored.

Unread Favicon is disabled.
Emoji is disabled.
Sage Icon:
Position:
Thread Updater is disabled.
Interval:
" }); _ref = $$('.warning', section); for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -13549,18 +13568,19 @@ } }, initThread: function() { - var board, err, errors, postRoot, posts, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1; + var board, err, errors, postRoot, posts, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1, _ref2; + g.DEAD = !!((_ref = $('.closed')) != null ? _ref.textContent.match(/Thread archived/) : void 0); if (board = $('.board')) { threads = []; posts = []; - _ref = $$('.board > .thread', board); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - threadRoot = _ref[_i]; + _ref1 = $$('.board > .thread', board); + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + threadRoot = _ref1[_i]; thread = new Thread(+threadRoot.id.slice(1), g.BOARD); threads.push(thread); - _ref1 = $$('.thread > .postContainer', threadRoot); - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - postRoot = _ref1[_j]; + _ref2 = $$('.thread > .postContainer', threadRoot); + for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { + postRoot = _ref2[_j]; try { posts.push(new Post(postRoot, thread, g.BOARD)); } catch (_error) { diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx index b0f06132a..ebccc846e 100644 Binary files a/builds/4chan-X-noupdate.crx and b/builds/4chan-X-noupdate.crx differ diff --git a/builds/4chan-X-noupdate.user.js b/builds/4chan-X-noupdate.user.js index 52cf6f725..321e89f85 100644 --- a/builds/4chan-X-noupdate.user.js +++ b/builds/4chan-X-noupdate.user.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript // ==UserScript== // @name 4chan X -// @version 1.8.9.5 +// @version 1.8.9.7 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -23,7 +23,7 @@ // ==/UserScript== /* -* 4chan X - Version 1.8.9.5 +* 4chan X - Version 1.8.9.7 * * Licensed under the MIT license. * https://github.com/ccd0/4chan-x/blob/master/LICENSE @@ -221,7 +221,7 @@ 'Remember Subject': [false, 'Remember the subject field, instead of resetting after posting.'], 'Remember QR Size': [false, 'Remember the size of the Quick reply.'], 'Remember Spoiler': [false, 'Remember the spoiler state, instead of resetting after posting.'], - 'Show Name and Subject': [false, 'Always show name and subject fields in the QR even when 4chan doesn\'t use them.'], + 'Show Name and Subject': [false, 'Show the classic name, email, and subject fields in the QR, even when 4chan doesn\'t use them all.'], 'Hide Original Post Form': [true, 'Hide the normal post form.'], 'Cooldown': [true, 'Indicate the remaining time before posting again.'], 'Cooldown Prediction': [true, 'Decrease the cooldown time by taking into account upload speed. Disable it if it\'s inaccurate for you.'], @@ -312,7 +312,7 @@ }, boardnav: "[ toggle-all ]\na-replace\nc-replace\ng-replace\nk-replace\nv-replace\nvg-replace\nvr-replace\nck-replace\nco-replace\nfit-replace\njp-replace\nmu-replace\nsp-replace\ntv-replace\nvp-replace\n[external-text:\"FAQ\",\"https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions\"]", QR: { - 'QR.personas': "#email:\"sage\";boards:jp;always" + 'QR.personas': "#options:\"sage\";boards:jp;always" }, time: '%m/%d/%y(%a)%H:%M:%S', backlink: '>>%id', @@ -379,7 +379,7 @@ doc = d.documentElement; g = { - VERSION: '1.8.9.5', + VERSION: '1.8.9.7', NAMESPACE: '4chan X.', NAME: '4chan X', FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions', @@ -6417,7 +6417,7 @@ var dialog, elm, event, i, items, name, node, nodes, prop, rules, save, setNode, _, _i, _len, _ref, _ref1, _ref2; QR.nodes = nodes = { el: dialog = UI.dialog('qr', 'top:0;right:0;', { - innerHTML: "
×
+
No selected file
" + innerHTML: "
×
+
No selected file
" }) }; setNode = function(name, query) { @@ -6468,6 +6468,7 @@ if (Conf['Show Name and Subject']) { $.addClass(QR.nodes.name, 'force-show'); $.addClass(QR.nodes.sub, 'force-show'); + QR.nodes.email.placeholder = 'E-mail'; } QR.forcedAnon = !!$('.postForm input[name=name][type=hidden]'); if (QR.forcedAnon) { @@ -7192,7 +7193,7 @@ if (item[0] === '#') { return; } - if (!(match = item.match(/(name|email|subject|password):"(.*)"/i))) { + if (!(match = item.match(/(name|options|email|subject|password):"(.*)"/i))) { return; } _ref = match, match = _ref[0], type = _ref[1], val = _ref[2]; @@ -7205,6 +7206,9 @@ QR.persona.pwd = val; return; } + if (type === 'options') { + type = 'email'; + } if (type === 'subject') { type = 'sub'; } @@ -9994,7 +9998,11 @@ $.on(window, 'online offline', ThreadUpdater.cb.online); $.on(d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost); $.on(d, 'visibilitychange', ThreadUpdater.cb.visibility); - return ThreadUpdater.cb.online(); + if (g.DEAD) { + return ThreadUpdater.set('status', 'Archived', 'warning'); + } else { + return ThreadUpdater.cb.online(); + } }, /* @@ -10004,6 +10012,9 @@ beep: 'data:audio/wav;base64,UklGRjQDAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAc21wbDwAAABBAAADAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYXRhzAIAAGMms8em0tleMV4zIpLVo8nhfSlcPR102Ki+5JspVEkdVtKzs+K1NEhUIT7DwKrcy0g6WygsrM2k1NpiLl0zIY/WpMrjgCdbPhxw2Kq+5Z4qUkkdU9K1s+K5NkVTITzBwqnczko3WikrqM+l1NxlLF0zIIvXpsnjgydZPhxs2ay95aIrUEkdUdC3suK8N0NUIjq+xKrcz002WioppdGm091pK1w0IIjYp8jkhydXPxxq2K295aUrTkoeTs65suK+OUFUIzi7xqrb0VA0WSoootKm0t5tKlo1H4TYqMfkiydWQBxm16+85actTEseS8y7seHAPD9TIza5yKra01QyWSson9On0d5wKVk2H4DYqcfkjidUQB1j1rG75KsvSkseScu8seDCPz1TJDW2yara1FYxWSwnm9Sn0N9zKVg2H33ZqsXkkihSQR1g1bK65K0wSEsfR8i+seDEQTxUJTOzy6rY1VowWC0mmNWoz993KVc3H3rYq8TklSlRQh1d1LS647AyR0wgRMbAsN/GRDpTJTKwzKrX1l4vVy4lldWpzt97KVY4IXbUr8LZljVPRCxhw7W3z6ZISkw1VK+4sMWvXEhSPk6buay9sm5JVkZNiLWqtrJ+TldNTnquqbCwilZXU1BwpKirrpNgWFhTaZmnpquZbFlbVmWOpaOonHZcXlljhaGhpZ1+YWBdYn2cn6GdhmdhYGN3lp2enIttY2Jjco+bnJuOdGZlZXCImJqakHpoZ2Zug5WYmZJ/bGlobX6RlpeSg3BqaW16jZSVkoZ0bGtteImSk5KIeG5tbnaFkJKRinxxbm91gY2QkIt/c3BwdH6Kj4+LgnZxcXR8iI2OjIR5c3J0e4WLjYuFe3VzdHmCioyLhn52dHR5gIiKioeAeHV1eH+GiYqHgXp2dnh9hIiJh4J8eHd4fIKHiIeDfXl4eHyBhoeHhH96eHmA', cb: { online: function() { + if (g.DEAD) { + return; + } if (ThreadUpdater.online = navigator.onLine) { ThreadUpdater.outdateCount = 0; ThreadUpdater.setInterval(); @@ -10069,20 +10080,19 @@ req = ThreadUpdater.req; switch (req.status) { case 200: - g.DEAD = false; + g.DEAD = !!+req.response.posts[0].archived; ThreadUpdater.parse(req.response.posts); - ThreadUpdater.setInterval(); + if (g.DEAD) { + ThreadUpdater.set('status', 'Archived', 'warning'); + ThreadUpdater.kill(); + } else { + ThreadUpdater.setInterval(); + } break; case 404: g.DEAD = true; - ThreadUpdater.set('timer', null); ThreadUpdater.set('status', '404', 'warning'); - clearTimeout(ThreadUpdater.timeoutID); - ThreadUpdater.thread.kill(); - $.event('ThreadUpdate', { - 404: true, - threadID: ThreadUpdater.thread.fullID - }); + ThreadUpdater.kill(); break; default: ThreadUpdater.outdateCount++; @@ -10095,6 +10105,15 @@ } } }, + kill: function() { + ThreadUpdater.set('timer', null); + clearTimeout(ThreadUpdater.timeoutID); + ThreadUpdater.thread.kill(); + return $.event('ThreadUpdate', { + 404: true, + threadID: ThreadUpdater.thread.fullID + }); + }, setInterval: function() { var cur, i, j, limit; i = ThreadUpdater.interval + 1; @@ -12741,7 +12760,7 @@ className: 'dialog' }); $.extend(dialog, { - innerHTML: "
" + innerHTML: "
" }); $.on($('.export', Settings.dialog), 'click', Settings["export"]); $.on($('.import', Settings.dialog), 'click', Settings["import"]); @@ -13082,7 +13101,7 @@ advanced: function(section) { var archBoards, boardID, boardOptions, boardSelect, boards, customCSS, event, files, i, input, inputs, interval, item, items, name, o, row, rows, software, ta, table, warning, withCredentials, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6; $.extend(section, { - innerHTML: "
Archiver
404 Redirect is disabled.
Thread redirectionPost fetchingFile redirection
Custom Board Navigation
New lines will be converted into spaces.

In the following examples for /g/, g can be changed to a different board ID (a, b, etc...), the current board (current), or the Twitter link (@).
Board link: g
Title link: g-title
Board link (Replace with title when on that board): g-replace
Full text link: g-full
Custom text link: g-text:\"Install Gentoo\"
Index-only link: g-index
Catalog-only link: g-catalog
External link: external-text:\"Google\",\"http://www.google.com\"
Combinations are possible: g-index-text:\"Technology Index\"
Full board list toggle: toggle-all

[ toggle-all ] [current-title] [g-title / a-title / jp-title] [x / wsg / h] [t-text:\"Piracy\"]
will give you
[ + ] [Technology] [Technology / Anime & Manga / Otaku Culture] [x / wsg / h] [Piracy]
if you are on /g/.
Time Formatting is disabled.
:
Supported format specifiers:
Day: %a, %A, %d, %e
Month: %m, %b, %B
Year: %y, %Y
Hour: %k, %H, %l, %I, %p, %P
Minute: %M
Second: %S
Literal %: %%
Quote Backlinks formatting is disabled.
:
File Info Formatting is disabled.
:
Link: %l (truncated), %L (untruncated), %T (Unix timestamp)
Original file name: %n (truncated), %N (untruncated), %t (Unix timestamp)
Spoiler indicator: %p
Size: %B (Bytes), %K (KB), %M (MB), %s (4chan default)
Resolution: %r (Displays 'PDF' for PDF files)
Literal %: %%
Quick Reply Personas

One item per line.
Items will be added in the relevant input's auto-completion list.
Password items will always be used, since there is no password input.
Lines starting with a # will be ignored.

Unread Favicon is disabled.
Emoji is disabled.
Sage Icon:
Position:
Thread Updater is disabled.
Interval:
" + innerHTML: "
Archiver
404 Redirect is disabled.
Thread redirectionPost fetchingFile redirection
Custom Board Navigation
New lines will be converted into spaces.

In the following examples for /g/, g can be changed to a different board ID (a, b, etc...), the current board (current), or the Twitter link (@).
Board link: g
Title link: g-title
Board link (Replace with title when on that board): g-replace
Full text link: g-full
Custom text link: g-text:\"Install Gentoo\"
Index-only link: g-index
Catalog-only link: g-catalog
External link: external-text:\"Google\",\"http://www.google.com\"
Combinations are possible: g-index-text:\"Technology Index\"
Full board list toggle: toggle-all

[ toggle-all ] [current-title] [g-title / a-title / jp-title] [x / wsg / h] [t-text:\"Piracy\"]
will give you
[ + ] [Technology] [Technology / Anime & Manga / Otaku Culture] [x / wsg / h] [Piracy]
if you are on /g/.
Time Formatting is disabled.
:
Supported format specifiers:
Day: %a, %A, %d, %e
Month: %m, %b, %B
Year: %y, %Y
Hour: %k, %H, %l, %I, %p, %P
Minute: %M
Second: %S
Literal %: %%
Quote Backlinks formatting is disabled.
:
File Info Formatting is disabled.
:
Link: %l (truncated), %L (untruncated), %T (Unix timestamp)
Original file name: %n (truncated), %N (untruncated), %t (Unix timestamp)
Spoiler indicator: %p
Size: %B (Bytes), %K (KB), %M (MB), %s (4chan default)
Resolution: %r (Displays 'PDF' for PDF files)
Literal %: %%
Quick Reply Personas

One item per line.
Items will be added in the relevant input's auto-completion list.
Password items will always be used, since there is no password input.
Lines starting with a # will be ignored.

Unread Favicon is disabled.
Emoji is disabled.
Sage Icon:
Position:
Thread Updater is disabled.
Interval:
" }); _ref = $$('.warning', section); for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -13548,18 +13567,19 @@ } }, initThread: function() { - var board, err, errors, postRoot, posts, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1; + var board, err, errors, postRoot, posts, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1, _ref2; + g.DEAD = !!((_ref = $('.closed')) != null ? _ref.textContent.match(/Thread archived/) : void 0); if (board = $('.board')) { threads = []; posts = []; - _ref = $$('.board > .thread', board); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - threadRoot = _ref[_i]; + _ref1 = $$('.board > .thread', board); + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + threadRoot = _ref1[_i]; thread = new Thread(+threadRoot.id.slice(1), g.BOARD); threads.push(thread); - _ref1 = $$('.thread > .postContainer', threadRoot); - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - postRoot = _ref1[_j]; + _ref2 = $$('.thread > .postContainer', threadRoot); + for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { + postRoot = _ref2[_j]; try { posts.push(new Post(postRoot, thread, g.BOARD)); } catch (_error) { diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx index ff1c21d40..cb2820d4b 100644 Binary files a/builds/4chan-X.crx and b/builds/4chan-X.crx differ diff --git a/builds/4chan-X.meta.js b/builds/4chan-X.meta.js index 7a6a028d8..bc91c4ea3 100644 --- a/builds/4chan-X.meta.js +++ b/builds/4chan-X.meta.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X -// @version 1.8.9.5 +// @version 1.8.9.7 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 8d75a1ed5..826687164 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript // ==UserScript== // @name 4chan X -// @version 1.8.9.5 +// @version 1.8.9.7 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -24,7 +24,7 @@ // ==/UserScript== /* -* 4chan X - Version 1.8.9.5 +* 4chan X - Version 1.8.9.7 * * Licensed under the MIT license. * https://github.com/ccd0/4chan-x/blob/master/LICENSE @@ -222,7 +222,7 @@ 'Remember Subject': [false, 'Remember the subject field, instead of resetting after posting.'], 'Remember QR Size': [false, 'Remember the size of the Quick reply.'], 'Remember Spoiler': [false, 'Remember the spoiler state, instead of resetting after posting.'], - 'Show Name and Subject': [false, 'Always show name and subject fields in the QR even when 4chan doesn\'t use them.'], + 'Show Name and Subject': [false, 'Show the classic name, email, and subject fields in the QR, even when 4chan doesn\'t use them all.'], 'Hide Original Post Form': [true, 'Hide the normal post form.'], 'Cooldown': [true, 'Indicate the remaining time before posting again.'], 'Cooldown Prediction': [true, 'Decrease the cooldown time by taking into account upload speed. Disable it if it\'s inaccurate for you.'], @@ -313,7 +313,7 @@ }, boardnav: "[ toggle-all ]\na-replace\nc-replace\ng-replace\nk-replace\nv-replace\nvg-replace\nvr-replace\nck-replace\nco-replace\nfit-replace\njp-replace\nmu-replace\nsp-replace\ntv-replace\nvp-replace\n[external-text:\"FAQ\",\"https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions\"]", QR: { - 'QR.personas': "#email:\"sage\";boards:jp;always" + 'QR.personas': "#options:\"sage\";boards:jp;always" }, time: '%m/%d/%y(%a)%H:%M:%S', backlink: '>>%id', @@ -380,7 +380,7 @@ doc = d.documentElement; g = { - VERSION: '1.8.9.5', + VERSION: '1.8.9.7', NAMESPACE: '4chan X.', NAME: '4chan X', FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions', @@ -6418,7 +6418,7 @@ var dialog, elm, event, i, items, name, node, nodes, prop, rules, save, setNode, _, _i, _len, _ref, _ref1, _ref2; QR.nodes = nodes = { el: dialog = UI.dialog('qr', 'top:0;right:0;', { - innerHTML: "
×
+
No selected file
" + innerHTML: "
×
+
No selected file
" }) }; setNode = function(name, query) { @@ -6469,6 +6469,7 @@ if (Conf['Show Name and Subject']) { $.addClass(QR.nodes.name, 'force-show'); $.addClass(QR.nodes.sub, 'force-show'); + QR.nodes.email.placeholder = 'E-mail'; } QR.forcedAnon = !!$('.postForm input[name=name][type=hidden]'); if (QR.forcedAnon) { @@ -7193,7 +7194,7 @@ if (item[0] === '#') { return; } - if (!(match = item.match(/(name|email|subject|password):"(.*)"/i))) { + if (!(match = item.match(/(name|options|email|subject|password):"(.*)"/i))) { return; } _ref = match, match = _ref[0], type = _ref[1], val = _ref[2]; @@ -7206,6 +7207,9 @@ QR.persona.pwd = val; return; } + if (type === 'options') { + type = 'email'; + } if (type === 'subject') { type = 'sub'; } @@ -9995,7 +9999,11 @@ $.on(window, 'online offline', ThreadUpdater.cb.online); $.on(d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost); $.on(d, 'visibilitychange', ThreadUpdater.cb.visibility); - return ThreadUpdater.cb.online(); + if (g.DEAD) { + return ThreadUpdater.set('status', 'Archived', 'warning'); + } else { + return ThreadUpdater.cb.online(); + } }, /* @@ -10005,6 +10013,9 @@ beep: 'data:audio/wav;base64,UklGRjQDAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAc21wbDwAAABBAAADAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYXRhzAIAAGMms8em0tleMV4zIpLVo8nhfSlcPR102Ki+5JspVEkdVtKzs+K1NEhUIT7DwKrcy0g6WygsrM2k1NpiLl0zIY/WpMrjgCdbPhxw2Kq+5Z4qUkkdU9K1s+K5NkVTITzBwqnczko3WikrqM+l1NxlLF0zIIvXpsnjgydZPhxs2ay95aIrUEkdUdC3suK8N0NUIjq+xKrcz002WioppdGm091pK1w0IIjYp8jkhydXPxxq2K295aUrTkoeTs65suK+OUFUIzi7xqrb0VA0WSoootKm0t5tKlo1H4TYqMfkiydWQBxm16+85actTEseS8y7seHAPD9TIza5yKra01QyWSson9On0d5wKVk2H4DYqcfkjidUQB1j1rG75KsvSkseScu8seDCPz1TJDW2yara1FYxWSwnm9Sn0N9zKVg2H33ZqsXkkihSQR1g1bK65K0wSEsfR8i+seDEQTxUJTOzy6rY1VowWC0mmNWoz993KVc3H3rYq8TklSlRQh1d1LS647AyR0wgRMbAsN/GRDpTJTKwzKrX1l4vVy4lldWpzt97KVY4IXbUr8LZljVPRCxhw7W3z6ZISkw1VK+4sMWvXEhSPk6buay9sm5JVkZNiLWqtrJ+TldNTnquqbCwilZXU1BwpKirrpNgWFhTaZmnpquZbFlbVmWOpaOonHZcXlljhaGhpZ1+YWBdYn2cn6GdhmdhYGN3lp2enIttY2Jjco+bnJuOdGZlZXCImJqakHpoZ2Zug5WYmZJ/bGlobX6RlpeSg3BqaW16jZSVkoZ0bGtteImSk5KIeG5tbnaFkJKRinxxbm91gY2QkIt/c3BwdH6Kj4+LgnZxcXR8iI2OjIR5c3J0e4WLjYuFe3VzdHmCioyLhn52dHR5gIiKioeAeHV1eH+GiYqHgXp2dnh9hIiJh4J8eHd4fIKHiIeDfXl4eHyBhoeHhH96eHmA', cb: { online: function() { + if (g.DEAD) { + return; + } if (ThreadUpdater.online = navigator.onLine) { ThreadUpdater.outdateCount = 0; ThreadUpdater.setInterval(); @@ -10070,20 +10081,19 @@ req = ThreadUpdater.req; switch (req.status) { case 200: - g.DEAD = false; + g.DEAD = !!+req.response.posts[0].archived; ThreadUpdater.parse(req.response.posts); - ThreadUpdater.setInterval(); + if (g.DEAD) { + ThreadUpdater.set('status', 'Archived', 'warning'); + ThreadUpdater.kill(); + } else { + ThreadUpdater.setInterval(); + } break; case 404: g.DEAD = true; - ThreadUpdater.set('timer', null); ThreadUpdater.set('status', '404', 'warning'); - clearTimeout(ThreadUpdater.timeoutID); - ThreadUpdater.thread.kill(); - $.event('ThreadUpdate', { - 404: true, - threadID: ThreadUpdater.thread.fullID - }); + ThreadUpdater.kill(); break; default: ThreadUpdater.outdateCount++; @@ -10096,6 +10106,15 @@ } } }, + kill: function() { + ThreadUpdater.set('timer', null); + clearTimeout(ThreadUpdater.timeoutID); + ThreadUpdater.thread.kill(); + return $.event('ThreadUpdate', { + 404: true, + threadID: ThreadUpdater.thread.fullID + }); + }, setInterval: function() { var cur, i, j, limit; i = ThreadUpdater.interval + 1; @@ -12742,7 +12761,7 @@ className: 'dialog' }); $.extend(dialog, { - innerHTML: "
" + innerHTML: "
" }); $.on($('.export', Settings.dialog), 'click', Settings["export"]); $.on($('.import', Settings.dialog), 'click', Settings["import"]); @@ -13083,7 +13102,7 @@ advanced: function(section) { var archBoards, boardID, boardOptions, boardSelect, boards, customCSS, event, files, i, input, inputs, interval, item, items, name, o, row, rows, software, ta, table, warning, withCredentials, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6; $.extend(section, { - innerHTML: "
Archiver
404 Redirect is disabled.
Thread redirectionPost fetchingFile redirection
Custom Board Navigation
New lines will be converted into spaces.

In the following examples for /g/, g can be changed to a different board ID (a, b, etc...), the current board (current), or the Twitter link (@).
Board link: g
Title link: g-title
Board link (Replace with title when on that board): g-replace
Full text link: g-full
Custom text link: g-text:\"Install Gentoo\"
Index-only link: g-index
Catalog-only link: g-catalog
External link: external-text:\"Google\",\"http://www.google.com\"
Combinations are possible: g-index-text:\"Technology Index\"
Full board list toggle: toggle-all

[ toggle-all ] [current-title] [g-title / a-title / jp-title] [x / wsg / h] [t-text:\"Piracy\"]
will give you
[ + ] [Technology] [Technology / Anime & Manga / Otaku Culture] [x / wsg / h] [Piracy]
if you are on /g/.
Time Formatting is disabled.
:
Supported format specifiers:
Day: %a, %A, %d, %e
Month: %m, %b, %B
Year: %y, %Y
Hour: %k, %H, %l, %I, %p, %P
Minute: %M
Second: %S
Literal %: %%
Quote Backlinks formatting is disabled.
:
File Info Formatting is disabled.
:
Link: %l (truncated), %L (untruncated), %T (Unix timestamp)
Original file name: %n (truncated), %N (untruncated), %t (Unix timestamp)
Spoiler indicator: %p
Size: %B (Bytes), %K (KB), %M (MB), %s (4chan default)
Resolution: %r (Displays 'PDF' for PDF files)
Literal %: %%
Quick Reply Personas

One item per line.
Items will be added in the relevant input's auto-completion list.
Password items will always be used, since there is no password input.
Lines starting with a # will be ignored.

Unread Favicon is disabled.
Emoji is disabled.
Sage Icon:
Position:
Thread Updater is disabled.
Interval:
" + innerHTML: "
Archiver
404 Redirect is disabled.
Thread redirectionPost fetchingFile redirection
Custom Board Navigation
New lines will be converted into spaces.

In the following examples for /g/, g can be changed to a different board ID (a, b, etc...), the current board (current), or the Twitter link (@).
Board link: g
Title link: g-title
Board link (Replace with title when on that board): g-replace
Full text link: g-full
Custom text link: g-text:\"Install Gentoo\"
Index-only link: g-index
Catalog-only link: g-catalog
External link: external-text:\"Google\",\"http://www.google.com\"
Combinations are possible: g-index-text:\"Technology Index\"
Full board list toggle: toggle-all

[ toggle-all ] [current-title] [g-title / a-title / jp-title] [x / wsg / h] [t-text:\"Piracy\"]
will give you
[ + ] [Technology] [Technology / Anime & Manga / Otaku Culture] [x / wsg / h] [Piracy]
if you are on /g/.
Time Formatting is disabled.
:
Supported format specifiers:
Day: %a, %A, %d, %e
Month: %m, %b, %B
Year: %y, %Y
Hour: %k, %H, %l, %I, %p, %P
Minute: %M
Second: %S
Literal %: %%
Quote Backlinks formatting is disabled.
:
File Info Formatting is disabled.
:
Link: %l (truncated), %L (untruncated), %T (Unix timestamp)
Original file name: %n (truncated), %N (untruncated), %t (Unix timestamp)
Spoiler indicator: %p
Size: %B (Bytes), %K (KB), %M (MB), %s (4chan default)
Resolution: %r (Displays 'PDF' for PDF files)
Literal %: %%
Quick Reply Personas

One item per line.
Items will be added in the relevant input's auto-completion list.
Password items will always be used, since there is no password input.
Lines starting with a # will be ignored.

Unread Favicon is disabled.
Emoji is disabled.
Sage Icon:
Position:
Thread Updater is disabled.
Interval:
" }); _ref = $$('.warning', section); for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -13549,18 +13568,19 @@ } }, initThread: function() { - var board, err, errors, postRoot, posts, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1; + var board, err, errors, postRoot, posts, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1, _ref2; + g.DEAD = !!((_ref = $('.closed')) != null ? _ref.textContent.match(/Thread archived/) : void 0); if (board = $('.board')) { threads = []; posts = []; - _ref = $$('.board > .thread', board); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - threadRoot = _ref[_i]; + _ref1 = $$('.board > .thread', board); + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + threadRoot = _ref1[_i]; thread = new Thread(+threadRoot.id.slice(1), g.BOARD); threads.push(thread); - _ref1 = $$('.thread > .postContainer', threadRoot); - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - postRoot = _ref1[_j]; + _ref2 = $$('.thread > .postContainer', threadRoot); + for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { + postRoot = _ref2[_j]; try { posts.push(new Post(postRoot, thread, g.BOARD)); } catch (_error) { diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip index d86812d0d..dd5bf1579 100644 Binary files a/builds/4chan-X.zip and b/builds/4chan-X.zip differ diff --git a/builds/updates-beta.xml b/builds/updates-beta.xml index 65e0f09a1..581f8d89b 100644 --- a/builds/updates-beta.xml +++ b/builds/updates-beta.xml @@ -1,7 +1,7 @@ - + diff --git a/builds/updates.xml b/builds/updates.xml index 773c802b0..d22a6e479 100644 --- a/builds/updates.xml +++ b/builds/updates.xml @@ -1,7 +1,7 @@ - + diff --git a/package.json b/package.json index 33788be44..8b4d8c5cf 100755 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "Cross-browser userscript for maximum lurking on 4chan.", "meta": { "name": "4chan X", - "version": "1.8.9.5", + "version": "1.8.9.7", "repo": "https://github.com/ccd0/4chan-x/", "page": "https://github.com/ccd0/4chan-x", "downloads": "https://ccd0.github.io/4chan-x/builds/", diff --git a/src/General/Config.coffee b/src/General/Config.coffee index 7881bc9e6..60e87a974 100755 --- a/src/General/Config.coffee +++ b/src/General/Config.coffee @@ -329,7 +329,7 @@ Config = ] 'Show Name and Subject': [ false - 'Always show name and subject fields in the QR even when 4chan doesn\'t use them.' + 'Show the classic name, email, and subject fields in the QR, even when 4chan doesn\'t use them all.' ] 'Hide Original Post Form': [ true @@ -601,7 +601,7 @@ vp-replace QR: 'QR.personas': """ - #email:"sage";boards:jp;always + #options:"sage";boards:jp;always """ time: '%m/%d/%y(%a)%H:%M:%S' diff --git a/src/General/Main.coffee b/src/General/Main.coffee index 396ab0033..6c32cabb0 100755 --- a/src/General/Main.coffee +++ b/src/General/Main.coffee @@ -159,6 +159,8 @@ Main = new Notice 'warning', 'Cookies need to be enabled on 4chan for <%= meta.name %> to operate properly.', 30 initThread: -> + g.DEAD = !!$('.closed')?.textContent.match(/Thread archived/) + if board = $ '.board' threads = [] posts = [] diff --git a/src/General/html/Features/QuickReply.html b/src/General/html/Features/QuickReply.html index 1a49438a7..4ec950149 100755 --- a/src/General/html/Features/QuickReply.html +++ b/src/General/html/Features/QuickReply.html @@ -11,7 +11,7 @@
- +
diff --git a/src/General/html/Settings/Advanced.html b/src/General/html/Settings/Advanced.html index 18e5c2ccf..9075d1344 100755 --- a/src/General/html/Settings/Advanced.html +++ b/src/General/html/Settings/Advanced.html @@ -75,10 +75,10 @@ Lines starting with a # will be ignored.

diff --git a/src/Monitoring/ThreadUpdater.coffee b/src/Monitoring/ThreadUpdater.coffee index 52bcee0db..8e02ce74a 100755 --- a/src/Monitoring/ThreadUpdater.coffee +++ b/src/Monitoring/ThreadUpdater.coffee @@ -74,7 +74,10 @@ ThreadUpdater = $.on d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost $.on d, 'visibilitychange', ThreadUpdater.cb.visibility - ThreadUpdater.cb.online() + if g.DEAD + ThreadUpdater.set 'status', 'Archived', 'warning' + else + ThreadUpdater.cb.online() ### http://freesound.org/people/pierrecartoons1979/sounds/90112/ @@ -84,6 +87,7 @@ ThreadUpdater = cb: online: -> + return if g.DEAD if ThreadUpdater.online = navigator.onLine ThreadUpdater.outdateCount = 0 ThreadUpdater.setInterval() @@ -127,18 +131,17 @@ ThreadUpdater = {req} = ThreadUpdater switch req.status when 200 - g.DEAD = false + g.DEAD = !!+req.response.posts[0].archived ThreadUpdater.parse req.response.posts - ThreadUpdater.setInterval() + if g.DEAD + ThreadUpdater.set 'status', 'Archived', 'warning' + ThreadUpdater.kill() + else + ThreadUpdater.setInterval() when 404 g.DEAD = true - ThreadUpdater.set 'timer', null ThreadUpdater.set 'status', '404', 'warning' - clearTimeout ThreadUpdater.timeoutID - ThreadUpdater.thread.kill() - $.event 'ThreadUpdate', - 404: true - threadID: ThreadUpdater.thread.fullID + ThreadUpdater.kill() else ThreadUpdater.outdateCount++ ThreadUpdater.setInterval() @@ -151,6 +154,14 @@ ThreadUpdater = if ThreadUpdater.postID ThreadUpdater.cb.checkpost() + kill: -> + ThreadUpdater.set 'timer', null + clearTimeout ThreadUpdater.timeoutID + ThreadUpdater.thread.kill() + $.event 'ThreadUpdate', + 404: true + threadID: ThreadUpdater.thread.fullID + setInterval: -> i = ThreadUpdater.interval + 1 diff --git a/src/Posting/QR.coffee b/src/Posting/QR.coffee index aa77597b8..712ac76d1 100644 --- a/src/Posting/QR.coffee +++ b/src/Posting/QR.coffee @@ -472,6 +472,7 @@ QR = if Conf['Show Name and Subject'] $.addClass QR.nodes.name, 'force-show' $.addClass QR.nodes.sub, 'force-show' + QR.nodes.email.placeholder = 'E-mail' QR.forcedAnon = !!$ '.postForm input[name=name][type=hidden]' if QR.forcedAnon diff --git a/src/Posting/QR.persona.coffee b/src/Posting/QR.persona.coffee index 31de73322..cc382318f 100644 --- a/src/Posting/QR.persona.coffee +++ b/src/Posting/QR.persona.coffee @@ -16,7 +16,7 @@ QR.persona = parseItem: (item, types) -> return if item[0] is '#' - return unless match = item.match /(name|email|subject|password):"(.*)"/i + return unless match = item.match /(name|options|email|subject|password):"(.*)"/i [match, type, val] = match # Don't mix up item settings with val. @@ -30,7 +30,8 @@ QR.persona = QR.persona.pwd = val return - type = 'sub' if type is 'subject' + type = 'email' if type is 'options' + type = 'sub' if type is 'subject' if /always/i.test item QR.persona.always[type] = val