Release 4chan X v1.9.16.2.
This commit is contained in:
parent
e87f5dcb0c
commit
d22a2dcf28
@ -3,6 +3,12 @@ The attributions below are for work that has been incorporated into the script a
|
|||||||
The links to individual versions below are to copies of the script with the update URL removed. If you want automatic updates, install the script from the links on the [main page](https://github.com/ccd0/4chan-x).
|
The links to individual versions below are to copies of the script with the update URL removed. If you want automatic updates, install the script from the links on the [main page](https://github.com/ccd0/4chan-x).
|
||||||
|
|
||||||
<!-- v1.9.16.x -->
|
<!-- v1.9.16.x -->
|
||||||
|
### v1.9.16.2
|
||||||
|
*2014-12-14* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.16.2/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.16.2/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||||
|
|
||||||
|
**ccd0**
|
||||||
|
- Minor bugfixes.
|
||||||
|
|
||||||
### v1.9.16.1
|
### v1.9.16.1
|
||||||
*2014-12-14* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.16.1/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.16.1/builds/4chan-X-noupdate.crx "Chromium version")]
|
*2014-12-14* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.16.1/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.16.1/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||||
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.16.1
|
* 4chan X - Version 1.9.16.2
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X beta
|
// @name 4chan X beta
|
||||||
// @version 1.9.16.1
|
// @version 1.9.16.2
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// Generated by CoffeeScript
|
// Generated by CoffeeScript
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X beta
|
// @name 4chan X beta
|
||||||
// @version 1.9.16.1
|
// @version 1.9.16.2
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -25,7 +25,7 @@
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.16.1
|
* 4chan X - Version 1.9.16.2
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
@ -393,7 +393,7 @@
|
|||||||
doc = d.documentElement;
|
doc = d.documentElement;
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.9.16.1',
|
VERSION: '1.9.16.2',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
NAME: '4chan X',
|
NAME: '4chan X',
|
||||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||||
@ -1013,13 +1013,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
Thread.prototype.setPage = function(pageNum) {
|
Thread.prototype.setPage = function(pageNum) {
|
||||||
var icon, info;
|
var icon, info, quote, _ref;
|
||||||
info = this.OP.nodes.info;
|
_ref = this.OP.nodes, info = _ref.info, quote = _ref.quote;
|
||||||
if (!(icon = $('.page-num', info))) {
|
if (!(icon = $('.page-num', info))) {
|
||||||
icon = $.el('span', {
|
icon = $.el('span', {
|
||||||
className: 'page-num'
|
className: 'page-num'
|
||||||
});
|
});
|
||||||
$.after($('a[title="Reply to this post"]', info), [$.tn(' '), icon]);
|
$.after(quote, [$.tn(' '), icon]);
|
||||||
}
|
}
|
||||||
icon.title = "This thread is on page " + pageNum + " in the original index.";
|
icon.title = "This thread is on page " + pageNum + " in the original index.";
|
||||||
icon.textContent = "[" + pageNum + "]";
|
icon.textContent = "[" + pageNum + "]";
|
||||||
@ -1074,7 +1074,7 @@
|
|||||||
title: type,
|
title: type,
|
||||||
className: "" + typeLC + "Icon retina"
|
className: "" + typeLC + "Icon retina"
|
||||||
});
|
});
|
||||||
root = type !== 'Sticky' && this.isSticky ? $('.stickyIcon', this.OP.nodes.info) : $('.page-num', this.OP.nodes.info) || $('[title="Reply to this post"]', this.OP.nodes.info);
|
root = type !== 'Sticky' && this.isSticky ? $('.stickyIcon', this.OP.nodes.info) : $('.page-num', this.OP.nodes.info) || this.OP.nodes.quote;
|
||||||
$.after(root, [$.tn(' '), icon]);
|
$.after(root, [$.tn(' '), icon]);
|
||||||
if (!this.catalogView) {
|
if (!this.catalogView) {
|
||||||
return;
|
return;
|
||||||
@ -1151,6 +1151,7 @@
|
|||||||
post: post,
|
post: post,
|
||||||
info: info,
|
info: info,
|
||||||
nameBlock: $('.nameBlock', info),
|
nameBlock: $('.nameBlock', info),
|
||||||
|
quote: $('a[title*="Reply to this post"]', info),
|
||||||
comment: $('.postMessage', post),
|
comment: $('.postMessage', post),
|
||||||
links: [],
|
links: [],
|
||||||
quotelinks: [],
|
quotelinks: [],
|
||||||
@ -1435,6 +1436,8 @@
|
|||||||
root: root,
|
root: root,
|
||||||
post: post,
|
post: post,
|
||||||
info: info,
|
info: info,
|
||||||
|
nameBlock: $('.nameBlock', info),
|
||||||
|
quote: $('a[title*="Reply to this post"]', info),
|
||||||
comment: $('.postMessage', post),
|
comment: $('.postMessage', post),
|
||||||
quotelinks: [],
|
quotelinks: [],
|
||||||
backlinks: info.getElementsByClassName('backlink')
|
backlinks: info.getElementsByClassName('backlink')
|
||||||
@ -3925,7 +3928,7 @@
|
|||||||
},
|
},
|
||||||
postFromRoot: function(root) {
|
postFromRoot: function(root) {
|
||||||
var boardID, index, link, post, postID;
|
var boardID, index, link, post, postID;
|
||||||
link = $('a[title="Link to this post"]', root);
|
link = $('a[title*="Link to this post"]', root);
|
||||||
boardID = link.pathname.split('/')[1];
|
boardID = link.pathname.split('/')[1];
|
||||||
postID = link.hash.slice(2);
|
postID = link.hash.slice(2);
|
||||||
index = root.dataset.clone;
|
index = root.dataset.clone;
|
||||||
@ -6600,7 +6603,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
return $.on($('a[title="Reply to this post"]', this.nodes.info), 'click', QR.quote);
|
return $.on(this.nodes.quote, 'click', QR.quote);
|
||||||
},
|
},
|
||||||
open: function() {
|
open: function() {
|
||||||
var err;
|
var err;
|
||||||
@ -6744,7 +6747,7 @@
|
|||||||
}
|
}
|
||||||
sel = d.getSelection();
|
sel = d.getSelection();
|
||||||
post = Get.postFromNode(this);
|
post = Get.postFromNode(this);
|
||||||
text = ">>" + post + "\n";
|
text = post.board.ID === g.BOARD.ID ? ">>" + post + "\n" : ">>>/" + post.board + "/" + post + "\n";
|
||||||
if (sel.toString().trim() && post === Get.postFromNode(sel.anchorNode)) {
|
if (sel.toString().trim() && post === Get.postFromNode(sel.anchorNode)) {
|
||||||
range = sel.getRangeAt(0);
|
range = sel.getRangeAt(0);
|
||||||
frag = range.cloneContents();
|
frag = range.cloneContents();
|
||||||
@ -7056,7 +7059,7 @@
|
|||||||
$.rmAll(list);
|
$.rmAll(list);
|
||||||
$.add(list, options);
|
$.add(list, options);
|
||||||
list.value = val;
|
list.value = val;
|
||||||
if (list.value) {
|
if (list.value === val) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list.value = g.VIEW === 'thread' ? g.THREADID : 'new';
|
list.value = g.VIEW === 'thread' ? g.THREADID : 'new';
|
||||||
@ -11823,7 +11826,7 @@
|
|||||||
ThreadWatcher.fetchAllStatus();
|
ThreadWatcher.fetchAllStatus();
|
||||||
this.db.save();
|
this.db.save();
|
||||||
}
|
}
|
||||||
Thread.callbacks.push({
|
Post.callbacks.push({
|
||||||
name: 'Thread Watcher',
|
name: 'Thread Watcher',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
});
|
});
|
||||||
@ -11866,11 +11869,18 @@
|
|||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var toggler;
|
var toggler;
|
||||||
toggler = $.el('img', {
|
if (this.isReply) {
|
||||||
className: 'watch-thread-link'
|
return;
|
||||||
});
|
}
|
||||||
$.on(toggler, 'click', ThreadWatcher.cb.toggle);
|
if (this.isClone) {
|
||||||
return $.before($('input', this.OP.nodes.post), toggler);
|
toggler = $('.watch-thread-link', this.nodes.post);
|
||||||
|
} else {
|
||||||
|
toggler = $.el('img', {
|
||||||
|
className: 'watch-thread-link'
|
||||||
|
});
|
||||||
|
$.before($('input', this.nodes.post), toggler);
|
||||||
|
}
|
||||||
|
return $.on(toggler, 'click', ThreadWatcher.cb.toggle);
|
||||||
},
|
},
|
||||||
catalogNode: function() {
|
catalogNode: function() {
|
||||||
if (ThreadWatcher.isWatched(this.thread)) {
|
if (ThreadWatcher.isWatched(this.thread)) {
|
||||||
@ -12190,7 +12200,7 @@
|
|||||||
return div;
|
return div;
|
||||||
},
|
},
|
||||||
refresh: function() {
|
refresh: function() {
|
||||||
var boardID, data, helper, list, nodes, refresher, thread, threadID, threads, toggler, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
|
var boardID, data, list, nodes, refresher, threadID, _i, _j, _len, _len1, _ref, _ref1, _ref2;
|
||||||
nodes = [];
|
nodes = [];
|
||||||
_ref = ThreadWatcher.getAll();
|
_ref = ThreadWatcher.getAll();
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
@ -12200,24 +12210,25 @@
|
|||||||
list = ThreadWatcher.list;
|
list = ThreadWatcher.list;
|
||||||
$.rmAll(list);
|
$.rmAll(list);
|
||||||
$.add(list, nodes);
|
$.add(list, nodes);
|
||||||
threads = g.BOARD.threads;
|
g.threads.forEach(function(thread) {
|
||||||
_ref2 = threads.keys;
|
var helper, post, toggler, _j, _len1, _ref2;
|
||||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
|
||||||
threadID = _ref2[_j];
|
|
||||||
thread = threads[threadID];
|
|
||||||
helper = ThreadWatcher.isWatched(thread) ? ['addClass', 'Unwatch'] : ['rmClass', 'Watch'];
|
helper = ThreadWatcher.isWatched(thread) ? ['addClass', 'Unwatch'] : ['rmClass', 'Watch'];
|
||||||
if (thread.OP) {
|
if (thread.OP) {
|
||||||
toggler = $('.watch-thread-link', thread.OP.nodes.post);
|
_ref2 = [thread.OP].concat(__slice.call(thread.OP.clones));
|
||||||
$[helper[0]](toggler, 'watched');
|
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||||
toggler.title = "" + helper[1] + " Thread";
|
post = _ref2[_j];
|
||||||
|
toggler = $('.watch-thread-link', post.nodes.post);
|
||||||
|
$[helper[0]](toggler, 'watched');
|
||||||
|
toggler.title = "" + helper[1] + " Thread";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (thread.catalogView) {
|
if (thread.catalogView) {
|
||||||
$[helper[0]](thread.catalogView.nodes.root, 'watched');
|
return $[helper[0]](thread.catalogView.nodes.root, 'watched');
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
_ref3 = ThreadWatcher.menu.refreshers;
|
_ref2 = ThreadWatcher.menu.refreshers;
|
||||||
for (_k = 0, _len2 = _ref3.length; _k < _len2; _k++) {
|
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||||
refresher = _ref3[_k];
|
refresher = _ref2[_j];
|
||||||
refresher();
|
refresher();
|
||||||
}
|
}
|
||||||
if (Index.nodes && Conf['Pin Watched Threads']) {
|
if (Index.nodes && Conf['Pin Watched Threads']) {
|
||||||
@ -14472,7 +14483,7 @@
|
|||||||
className: 'dialog'
|
className: 'dialog'
|
||||||
});
|
});
|
||||||
$.extend(dialog, {
|
$.extend(dialog, {
|
||||||
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.16.1</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.16.2</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
||||||
});
|
});
|
||||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||||
|
|||||||
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
// Generated by CoffeeScript
|
// Generated by CoffeeScript
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.16.1
|
// @version 1.9.16.2
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -24,7 +24,7 @@
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.16.1
|
* 4chan X - Version 1.9.16.2
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
@ -392,7 +392,7 @@
|
|||||||
doc = d.documentElement;
|
doc = d.documentElement;
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.9.16.1',
|
VERSION: '1.9.16.2',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
NAME: '4chan X',
|
NAME: '4chan X',
|
||||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||||
@ -1012,13 +1012,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
Thread.prototype.setPage = function(pageNum) {
|
Thread.prototype.setPage = function(pageNum) {
|
||||||
var icon, info;
|
var icon, info, quote, _ref;
|
||||||
info = this.OP.nodes.info;
|
_ref = this.OP.nodes, info = _ref.info, quote = _ref.quote;
|
||||||
if (!(icon = $('.page-num', info))) {
|
if (!(icon = $('.page-num', info))) {
|
||||||
icon = $.el('span', {
|
icon = $.el('span', {
|
||||||
className: 'page-num'
|
className: 'page-num'
|
||||||
});
|
});
|
||||||
$.after($('a[title="Reply to this post"]', info), [$.tn(' '), icon]);
|
$.after(quote, [$.tn(' '), icon]);
|
||||||
}
|
}
|
||||||
icon.title = "This thread is on page " + pageNum + " in the original index.";
|
icon.title = "This thread is on page " + pageNum + " in the original index.";
|
||||||
icon.textContent = "[" + pageNum + "]";
|
icon.textContent = "[" + pageNum + "]";
|
||||||
@ -1073,7 +1073,7 @@
|
|||||||
title: type,
|
title: type,
|
||||||
className: "" + typeLC + "Icon retina"
|
className: "" + typeLC + "Icon retina"
|
||||||
});
|
});
|
||||||
root = type !== 'Sticky' && this.isSticky ? $('.stickyIcon', this.OP.nodes.info) : $('.page-num', this.OP.nodes.info) || $('[title="Reply to this post"]', this.OP.nodes.info);
|
root = type !== 'Sticky' && this.isSticky ? $('.stickyIcon', this.OP.nodes.info) : $('.page-num', this.OP.nodes.info) || this.OP.nodes.quote;
|
||||||
$.after(root, [$.tn(' '), icon]);
|
$.after(root, [$.tn(' '), icon]);
|
||||||
if (!this.catalogView) {
|
if (!this.catalogView) {
|
||||||
return;
|
return;
|
||||||
@ -1150,6 +1150,7 @@
|
|||||||
post: post,
|
post: post,
|
||||||
info: info,
|
info: info,
|
||||||
nameBlock: $('.nameBlock', info),
|
nameBlock: $('.nameBlock', info),
|
||||||
|
quote: $('a[title*="Reply to this post"]', info),
|
||||||
comment: $('.postMessage', post),
|
comment: $('.postMessage', post),
|
||||||
links: [],
|
links: [],
|
||||||
quotelinks: [],
|
quotelinks: [],
|
||||||
@ -1434,6 +1435,8 @@
|
|||||||
root: root,
|
root: root,
|
||||||
post: post,
|
post: post,
|
||||||
info: info,
|
info: info,
|
||||||
|
nameBlock: $('.nameBlock', info),
|
||||||
|
quote: $('a[title*="Reply to this post"]', info),
|
||||||
comment: $('.postMessage', post),
|
comment: $('.postMessage', post),
|
||||||
quotelinks: [],
|
quotelinks: [],
|
||||||
backlinks: info.getElementsByClassName('backlink')
|
backlinks: info.getElementsByClassName('backlink')
|
||||||
@ -3924,7 +3927,7 @@
|
|||||||
},
|
},
|
||||||
postFromRoot: function(root) {
|
postFromRoot: function(root) {
|
||||||
var boardID, index, link, post, postID;
|
var boardID, index, link, post, postID;
|
||||||
link = $('a[title="Link to this post"]', root);
|
link = $('a[title*="Link to this post"]', root);
|
||||||
boardID = link.pathname.split('/')[1];
|
boardID = link.pathname.split('/')[1];
|
||||||
postID = link.hash.slice(2);
|
postID = link.hash.slice(2);
|
||||||
index = root.dataset.clone;
|
index = root.dataset.clone;
|
||||||
@ -6599,7 +6602,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
return $.on($('a[title="Reply to this post"]', this.nodes.info), 'click', QR.quote);
|
return $.on(this.nodes.quote, 'click', QR.quote);
|
||||||
},
|
},
|
||||||
open: function() {
|
open: function() {
|
||||||
var err;
|
var err;
|
||||||
@ -6743,7 +6746,7 @@
|
|||||||
}
|
}
|
||||||
sel = d.getSelection();
|
sel = d.getSelection();
|
||||||
post = Get.postFromNode(this);
|
post = Get.postFromNode(this);
|
||||||
text = ">>" + post + "\n";
|
text = post.board.ID === g.BOARD.ID ? ">>" + post + "\n" : ">>>/" + post.board + "/" + post + "\n";
|
||||||
if (sel.toString().trim() && post === Get.postFromNode(sel.anchorNode)) {
|
if (sel.toString().trim() && post === Get.postFromNode(sel.anchorNode)) {
|
||||||
range = sel.getRangeAt(0);
|
range = sel.getRangeAt(0);
|
||||||
frag = range.cloneContents();
|
frag = range.cloneContents();
|
||||||
@ -7055,7 +7058,7 @@
|
|||||||
$.rmAll(list);
|
$.rmAll(list);
|
||||||
$.add(list, options);
|
$.add(list, options);
|
||||||
list.value = val;
|
list.value = val;
|
||||||
if (list.value) {
|
if (list.value === val) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list.value = g.VIEW === 'thread' ? g.THREADID : 'new';
|
list.value = g.VIEW === 'thread' ? g.THREADID : 'new';
|
||||||
@ -11822,7 +11825,7 @@
|
|||||||
ThreadWatcher.fetchAllStatus();
|
ThreadWatcher.fetchAllStatus();
|
||||||
this.db.save();
|
this.db.save();
|
||||||
}
|
}
|
||||||
Thread.callbacks.push({
|
Post.callbacks.push({
|
||||||
name: 'Thread Watcher',
|
name: 'Thread Watcher',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
});
|
});
|
||||||
@ -11865,11 +11868,18 @@
|
|||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var toggler;
|
var toggler;
|
||||||
toggler = $.el('img', {
|
if (this.isReply) {
|
||||||
className: 'watch-thread-link'
|
return;
|
||||||
});
|
}
|
||||||
$.on(toggler, 'click', ThreadWatcher.cb.toggle);
|
if (this.isClone) {
|
||||||
return $.before($('input', this.OP.nodes.post), toggler);
|
toggler = $('.watch-thread-link', this.nodes.post);
|
||||||
|
} else {
|
||||||
|
toggler = $.el('img', {
|
||||||
|
className: 'watch-thread-link'
|
||||||
|
});
|
||||||
|
$.before($('input', this.nodes.post), toggler);
|
||||||
|
}
|
||||||
|
return $.on(toggler, 'click', ThreadWatcher.cb.toggle);
|
||||||
},
|
},
|
||||||
catalogNode: function() {
|
catalogNode: function() {
|
||||||
if (ThreadWatcher.isWatched(this.thread)) {
|
if (ThreadWatcher.isWatched(this.thread)) {
|
||||||
@ -12189,7 +12199,7 @@
|
|||||||
return div;
|
return div;
|
||||||
},
|
},
|
||||||
refresh: function() {
|
refresh: function() {
|
||||||
var boardID, data, helper, list, nodes, refresher, thread, threadID, threads, toggler, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
|
var boardID, data, list, nodes, refresher, threadID, _i, _j, _len, _len1, _ref, _ref1, _ref2;
|
||||||
nodes = [];
|
nodes = [];
|
||||||
_ref = ThreadWatcher.getAll();
|
_ref = ThreadWatcher.getAll();
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
@ -12199,24 +12209,25 @@
|
|||||||
list = ThreadWatcher.list;
|
list = ThreadWatcher.list;
|
||||||
$.rmAll(list);
|
$.rmAll(list);
|
||||||
$.add(list, nodes);
|
$.add(list, nodes);
|
||||||
threads = g.BOARD.threads;
|
g.threads.forEach(function(thread) {
|
||||||
_ref2 = threads.keys;
|
var helper, post, toggler, _j, _len1, _ref2;
|
||||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
|
||||||
threadID = _ref2[_j];
|
|
||||||
thread = threads[threadID];
|
|
||||||
helper = ThreadWatcher.isWatched(thread) ? ['addClass', 'Unwatch'] : ['rmClass', 'Watch'];
|
helper = ThreadWatcher.isWatched(thread) ? ['addClass', 'Unwatch'] : ['rmClass', 'Watch'];
|
||||||
if (thread.OP) {
|
if (thread.OP) {
|
||||||
toggler = $('.watch-thread-link', thread.OP.nodes.post);
|
_ref2 = [thread.OP].concat(__slice.call(thread.OP.clones));
|
||||||
$[helper[0]](toggler, 'watched');
|
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||||
toggler.title = "" + helper[1] + " Thread";
|
post = _ref2[_j];
|
||||||
|
toggler = $('.watch-thread-link', post.nodes.post);
|
||||||
|
$[helper[0]](toggler, 'watched');
|
||||||
|
toggler.title = "" + helper[1] + " Thread";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (thread.catalogView) {
|
if (thread.catalogView) {
|
||||||
$[helper[0]](thread.catalogView.nodes.root, 'watched');
|
return $[helper[0]](thread.catalogView.nodes.root, 'watched');
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
_ref3 = ThreadWatcher.menu.refreshers;
|
_ref2 = ThreadWatcher.menu.refreshers;
|
||||||
for (_k = 0, _len2 = _ref3.length; _k < _len2; _k++) {
|
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||||
refresher = _ref3[_k];
|
refresher = _ref2[_j];
|
||||||
refresher();
|
refresher();
|
||||||
}
|
}
|
||||||
if (Index.nodes && Conf['Pin Watched Threads']) {
|
if (Index.nodes && Conf['Pin Watched Threads']) {
|
||||||
@ -14471,7 +14482,7 @@
|
|||||||
className: 'dialog'
|
className: 'dialog'
|
||||||
});
|
});
|
||||||
$.extend(dialog, {
|
$.extend(dialog, {
|
||||||
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.16.1</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.16.2</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
||||||
});
|
});
|
||||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.16.1
|
// @version 1.9.16.2
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// Generated by CoffeeScript
|
// Generated by CoffeeScript
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.16.1
|
// @version 1.9.16.2
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -25,7 +25,7 @@
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.16.1
|
* 4chan X - Version 1.9.16.2
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
@ -393,7 +393,7 @@
|
|||||||
doc = d.documentElement;
|
doc = d.documentElement;
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.9.16.1',
|
VERSION: '1.9.16.2',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
NAME: '4chan X',
|
NAME: '4chan X',
|
||||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||||
@ -1013,13 +1013,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
Thread.prototype.setPage = function(pageNum) {
|
Thread.prototype.setPage = function(pageNum) {
|
||||||
var icon, info;
|
var icon, info, quote, _ref;
|
||||||
info = this.OP.nodes.info;
|
_ref = this.OP.nodes, info = _ref.info, quote = _ref.quote;
|
||||||
if (!(icon = $('.page-num', info))) {
|
if (!(icon = $('.page-num', info))) {
|
||||||
icon = $.el('span', {
|
icon = $.el('span', {
|
||||||
className: 'page-num'
|
className: 'page-num'
|
||||||
});
|
});
|
||||||
$.after($('a[title="Reply to this post"]', info), [$.tn(' '), icon]);
|
$.after(quote, [$.tn(' '), icon]);
|
||||||
}
|
}
|
||||||
icon.title = "This thread is on page " + pageNum + " in the original index.";
|
icon.title = "This thread is on page " + pageNum + " in the original index.";
|
||||||
icon.textContent = "[" + pageNum + "]";
|
icon.textContent = "[" + pageNum + "]";
|
||||||
@ -1074,7 +1074,7 @@
|
|||||||
title: type,
|
title: type,
|
||||||
className: "" + typeLC + "Icon retina"
|
className: "" + typeLC + "Icon retina"
|
||||||
});
|
});
|
||||||
root = type !== 'Sticky' && this.isSticky ? $('.stickyIcon', this.OP.nodes.info) : $('.page-num', this.OP.nodes.info) || $('[title="Reply to this post"]', this.OP.nodes.info);
|
root = type !== 'Sticky' && this.isSticky ? $('.stickyIcon', this.OP.nodes.info) : $('.page-num', this.OP.nodes.info) || this.OP.nodes.quote;
|
||||||
$.after(root, [$.tn(' '), icon]);
|
$.after(root, [$.tn(' '), icon]);
|
||||||
if (!this.catalogView) {
|
if (!this.catalogView) {
|
||||||
return;
|
return;
|
||||||
@ -1151,6 +1151,7 @@
|
|||||||
post: post,
|
post: post,
|
||||||
info: info,
|
info: info,
|
||||||
nameBlock: $('.nameBlock', info),
|
nameBlock: $('.nameBlock', info),
|
||||||
|
quote: $('a[title*="Reply to this post"]', info),
|
||||||
comment: $('.postMessage', post),
|
comment: $('.postMessage', post),
|
||||||
links: [],
|
links: [],
|
||||||
quotelinks: [],
|
quotelinks: [],
|
||||||
@ -1435,6 +1436,8 @@
|
|||||||
root: root,
|
root: root,
|
||||||
post: post,
|
post: post,
|
||||||
info: info,
|
info: info,
|
||||||
|
nameBlock: $('.nameBlock', info),
|
||||||
|
quote: $('a[title*="Reply to this post"]', info),
|
||||||
comment: $('.postMessage', post),
|
comment: $('.postMessage', post),
|
||||||
quotelinks: [],
|
quotelinks: [],
|
||||||
backlinks: info.getElementsByClassName('backlink')
|
backlinks: info.getElementsByClassName('backlink')
|
||||||
@ -3925,7 +3928,7 @@
|
|||||||
},
|
},
|
||||||
postFromRoot: function(root) {
|
postFromRoot: function(root) {
|
||||||
var boardID, index, link, post, postID;
|
var boardID, index, link, post, postID;
|
||||||
link = $('a[title="Link to this post"]', root);
|
link = $('a[title*="Link to this post"]', root);
|
||||||
boardID = link.pathname.split('/')[1];
|
boardID = link.pathname.split('/')[1];
|
||||||
postID = link.hash.slice(2);
|
postID = link.hash.slice(2);
|
||||||
index = root.dataset.clone;
|
index = root.dataset.clone;
|
||||||
@ -6600,7 +6603,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
return $.on($('a[title="Reply to this post"]', this.nodes.info), 'click', QR.quote);
|
return $.on(this.nodes.quote, 'click', QR.quote);
|
||||||
},
|
},
|
||||||
open: function() {
|
open: function() {
|
||||||
var err;
|
var err;
|
||||||
@ -6744,7 +6747,7 @@
|
|||||||
}
|
}
|
||||||
sel = d.getSelection();
|
sel = d.getSelection();
|
||||||
post = Get.postFromNode(this);
|
post = Get.postFromNode(this);
|
||||||
text = ">>" + post + "\n";
|
text = post.board.ID === g.BOARD.ID ? ">>" + post + "\n" : ">>>/" + post.board + "/" + post + "\n";
|
||||||
if (sel.toString().trim() && post === Get.postFromNode(sel.anchorNode)) {
|
if (sel.toString().trim() && post === Get.postFromNode(sel.anchorNode)) {
|
||||||
range = sel.getRangeAt(0);
|
range = sel.getRangeAt(0);
|
||||||
frag = range.cloneContents();
|
frag = range.cloneContents();
|
||||||
@ -7056,7 +7059,7 @@
|
|||||||
$.rmAll(list);
|
$.rmAll(list);
|
||||||
$.add(list, options);
|
$.add(list, options);
|
||||||
list.value = val;
|
list.value = val;
|
||||||
if (list.value) {
|
if (list.value === val) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
list.value = g.VIEW === 'thread' ? g.THREADID : 'new';
|
list.value = g.VIEW === 'thread' ? g.THREADID : 'new';
|
||||||
@ -11823,7 +11826,7 @@
|
|||||||
ThreadWatcher.fetchAllStatus();
|
ThreadWatcher.fetchAllStatus();
|
||||||
this.db.save();
|
this.db.save();
|
||||||
}
|
}
|
||||||
Thread.callbacks.push({
|
Post.callbacks.push({
|
||||||
name: 'Thread Watcher',
|
name: 'Thread Watcher',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
});
|
});
|
||||||
@ -11866,11 +11869,18 @@
|
|||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var toggler;
|
var toggler;
|
||||||
toggler = $.el('img', {
|
if (this.isReply) {
|
||||||
className: 'watch-thread-link'
|
return;
|
||||||
});
|
}
|
||||||
$.on(toggler, 'click', ThreadWatcher.cb.toggle);
|
if (this.isClone) {
|
||||||
return $.before($('input', this.OP.nodes.post), toggler);
|
toggler = $('.watch-thread-link', this.nodes.post);
|
||||||
|
} else {
|
||||||
|
toggler = $.el('img', {
|
||||||
|
className: 'watch-thread-link'
|
||||||
|
});
|
||||||
|
$.before($('input', this.nodes.post), toggler);
|
||||||
|
}
|
||||||
|
return $.on(toggler, 'click', ThreadWatcher.cb.toggle);
|
||||||
},
|
},
|
||||||
catalogNode: function() {
|
catalogNode: function() {
|
||||||
if (ThreadWatcher.isWatched(this.thread)) {
|
if (ThreadWatcher.isWatched(this.thread)) {
|
||||||
@ -12190,7 +12200,7 @@
|
|||||||
return div;
|
return div;
|
||||||
},
|
},
|
||||||
refresh: function() {
|
refresh: function() {
|
||||||
var boardID, data, helper, list, nodes, refresher, thread, threadID, threads, toggler, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
|
var boardID, data, list, nodes, refresher, threadID, _i, _j, _len, _len1, _ref, _ref1, _ref2;
|
||||||
nodes = [];
|
nodes = [];
|
||||||
_ref = ThreadWatcher.getAll();
|
_ref = ThreadWatcher.getAll();
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
@ -12200,24 +12210,25 @@
|
|||||||
list = ThreadWatcher.list;
|
list = ThreadWatcher.list;
|
||||||
$.rmAll(list);
|
$.rmAll(list);
|
||||||
$.add(list, nodes);
|
$.add(list, nodes);
|
||||||
threads = g.BOARD.threads;
|
g.threads.forEach(function(thread) {
|
||||||
_ref2 = threads.keys;
|
var helper, post, toggler, _j, _len1, _ref2;
|
||||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
|
||||||
threadID = _ref2[_j];
|
|
||||||
thread = threads[threadID];
|
|
||||||
helper = ThreadWatcher.isWatched(thread) ? ['addClass', 'Unwatch'] : ['rmClass', 'Watch'];
|
helper = ThreadWatcher.isWatched(thread) ? ['addClass', 'Unwatch'] : ['rmClass', 'Watch'];
|
||||||
if (thread.OP) {
|
if (thread.OP) {
|
||||||
toggler = $('.watch-thread-link', thread.OP.nodes.post);
|
_ref2 = [thread.OP].concat(__slice.call(thread.OP.clones));
|
||||||
$[helper[0]](toggler, 'watched');
|
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||||
toggler.title = "" + helper[1] + " Thread";
|
post = _ref2[_j];
|
||||||
|
toggler = $('.watch-thread-link', post.nodes.post);
|
||||||
|
$[helper[0]](toggler, 'watched');
|
||||||
|
toggler.title = "" + helper[1] + " Thread";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (thread.catalogView) {
|
if (thread.catalogView) {
|
||||||
$[helper[0]](thread.catalogView.nodes.root, 'watched');
|
return $[helper[0]](thread.catalogView.nodes.root, 'watched');
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
_ref3 = ThreadWatcher.menu.refreshers;
|
_ref2 = ThreadWatcher.menu.refreshers;
|
||||||
for (_k = 0, _len2 = _ref3.length; _k < _len2; _k++) {
|
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||||
refresher = _ref3[_k];
|
refresher = _ref2[_j];
|
||||||
refresher();
|
refresher();
|
||||||
}
|
}
|
||||||
if (Index.nodes && Conf['Pin Watched Threads']) {
|
if (Index.nodes && Conf['Pin Watched Threads']) {
|
||||||
@ -14472,7 +14483,7 @@
|
|||||||
className: 'dialog'
|
className: 'dialog'
|
||||||
});
|
});
|
||||||
$.extend(dialog, {
|
$.extend(dialog, {
|
||||||
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.16.1</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.16.2</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
||||||
});
|
});
|
||||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||||
|
|||||||
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.9.16.1' />
|
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.9.16.2' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.9.16.1' />
|
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.9.16.2' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
"description": "Cross-browser userscript for maximum lurking on 4chan.",
|
"description": "Cross-browser userscript for maximum lurking on 4chan.",
|
||||||
"meta": {
|
"meta": {
|
||||||
"name": "4chan X",
|
"name": "4chan X",
|
||||||
"version": "1.9.16.1",
|
"version": "1.9.16.2",
|
||||||
"repo": "https://github.com/ccd0/4chan-x/",
|
"repo": "https://github.com/ccd0/4chan-x/",
|
||||||
"page": "https://github.com/ccd0/4chan-x",
|
"page": "https://github.com/ccd0/4chan-x",
|
||||||
"downloads": "https://ccd0.github.io/4chan-x/builds/",
|
"downloads": "https://ccd0.github.io/4chan-x/builds/",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user