Release 4chan X v1.9.10.1.
This commit is contained in:
parent
700085107f
commit
3f0981cb21
@ -3,6 +3,15 @@ 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).
|
||||
|
||||
<!-- v1.9.10.x -->
|
||||
### v1.9.10.1
|
||||
*2014-11-10* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.10.1/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.10.1/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
|
||||
Backported from v1.9.11.1.
|
||||
|
||||
**ccd0**
|
||||
- Add unique IP count to thread stats.
|
||||
- The IP count in the thread stats is now optional, controlled by the IP Count in Stats setting (default: on).
|
||||
|
||||
### v1.9.10.0
|
||||
*2014-11-02* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.10.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.10.0/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
|
||||
|
||||
2
LICENSE
2
LICENSE
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* 4chan X - Version 1.9.10.0
|
||||
* 4chan X - Version 1.9.10.1
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.9.10.0
|
||||
// @version 1.9.10.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.9.10.0
|
||||
// @version 1.9.10.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -24,7 +24,7 @@
|
||||
// ==/UserScript==
|
||||
|
||||
/*
|
||||
* 4chan X - Version 1.9.10.0
|
||||
* 4chan X - Version 1.9.10.1
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||
@ -212,7 +212,8 @@
|
||||
'Thread Excerpt': [true, 'Show an excerpt of the thread in the tab title for threads in /f/.'],
|
||||
'Remove Thread Excerpt': [false, 'Replace the excerpt of the thread in the tab title with the board title.'],
|
||||
'Thread Stats': [true, 'Display reply and image count.'],
|
||||
'Page Count in Stats': [true, 'Display the page count in the thread stats as well.'],
|
||||
'IP Count in Stats': [true, 'Display the unique IP count in the thread stats.'],
|
||||
'Page Count in Stats': [true, 'Display the page count in the thread stats.'],
|
||||
'Updater and Stats in Header': [true, 'Places the thread updater and thread stats in the header instead of floating them.'],
|
||||
'Thread Watcher': [true, 'Bookmark threads.'],
|
||||
'Toggleable Thread Watcher': [true, 'Adds a shortcut for the thread watcher, hides the watcher by default, and makes it scroll with the page.']
|
||||
@ -381,7 +382,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.9.10.0',
|
||||
VERSION: '1.9.10.1',
|
||||
NAMESPACE: '4chan X.',
|
||||
NAME: '4chan X',
|
||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||
@ -10570,30 +10571,38 @@
|
||||
|
||||
ThreadStats = {
|
||||
init: function() {
|
||||
var countHTML, sc;
|
||||
var sc, statsHTML, statsTitle;
|
||||
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
|
||||
return;
|
||||
}
|
||||
countHTML = {
|
||||
statsHTML = {
|
||||
innerHTML: "<span id=\"post-count\">?</span> / <span id=\"file-count\">?</span>"
|
||||
};
|
||||
if (Conf['Page Count in Stats']) {
|
||||
countHTML = {
|
||||
innerHTML: countHTML.innerHTML + " / <span id=\"page-count\">?</span>"
|
||||
statsTitle = 'Post Count / File Count';
|
||||
if (Conf['IP Count in Stats']) {
|
||||
statsHTML = {
|
||||
innerHTML: statsHTML.innerHTML + " / <span id=\"ip-count\">?</span>"
|
||||
};
|
||||
statsTitle += ' / IP Count';
|
||||
}
|
||||
if (Conf['Page Count in Stats']) {
|
||||
statsHTML = {
|
||||
innerHTML: statsHTML.innerHTML + " / <span id=\"page-count\">?</span>"
|
||||
};
|
||||
statsTitle += ' / Page Count';
|
||||
}
|
||||
if (Conf['Updater and Stats in Header']) {
|
||||
this.dialog = sc = $.el('span', {
|
||||
id: 'thread-stats',
|
||||
title: 'Post Count / File Count' + (Conf["Page Count in Stats"] ? " / Page Count" : "")
|
||||
title: statsTitle
|
||||
});
|
||||
$.extend(sc, countHTML);
|
||||
$.extend(sc, statsHTML);
|
||||
$.ready(function() {
|
||||
return Header.addShortcut(sc);
|
||||
});
|
||||
} else {
|
||||
this.dialog = sc = UI.dialog('thread-stats', 'bottom: 0px; right: 0px;', {
|
||||
innerHTML: "<div class=\"move\" title=\"Post Count / File Count" + E(Conf["Page Count in Stats"] ? " / Page Count" : "") + "\">" + countHTML.innerHTML + "</div>"
|
||||
innerHTML: "<div class=\"move\" title=\"" + E(statsTitle) + "\">" + statsHTML.innerHTML + "</div>"
|
||||
});
|
||||
$.ready((function(_this) {
|
||||
return function() {
|
||||
@ -10603,6 +10612,7 @@
|
||||
}
|
||||
this.postCountEl = $('#post-count', sc);
|
||||
this.fileCountEl = $('#file-count', sc);
|
||||
this.ipCountEl = $('#ip-count', sc);
|
||||
this.pageCountEl = $('#page-count', sc);
|
||||
return Thread.callbacks.push({
|
||||
name: 'Thread Stats',
|
||||
@ -10610,7 +10620,7 @@
|
||||
});
|
||||
},
|
||||
node: function() {
|
||||
var fileCount, postCount;
|
||||
var fileCount, ipCount, m, postCount, script, _i, _len, _ref;
|
||||
postCount = 0;
|
||||
fileCount = 0;
|
||||
this.posts.forEach(function(post) {
|
||||
@ -10622,18 +10632,26 @@
|
||||
return ThreadStats.lastPost = post.info.date;
|
||||
}
|
||||
});
|
||||
_ref = $$('script[type="text/javascript"]:not([src])', d.head);
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
script = _ref[_i];
|
||||
if (m = script.textContent.match(/\bvar unique_ips = (\d+);/)) {
|
||||
ipCount = +m[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
ThreadStats.thread = this;
|
||||
ThreadStats.fetchPage();
|
||||
ThreadStats.update(postCount, fileCount);
|
||||
ThreadStats.update(postCount, fileCount, ipCount);
|
||||
return $.on(d, 'ThreadUpdate', ThreadStats.onUpdate);
|
||||
},
|
||||
onUpdate: function(e) {
|
||||
var fileCount, newPosts, postCount, _ref, _ref1;
|
||||
var fileCount, ipCount, newPosts, postCount, _ref, _ref1;
|
||||
if (e.detail[404]) {
|
||||
return;
|
||||
}
|
||||
_ref = e.detail, postCount = _ref.postCount, fileCount = _ref.fileCount, newPosts = _ref.newPosts;
|
||||
ThreadStats.update(postCount, fileCount);
|
||||
_ref = e.detail, postCount = _ref.postCount, fileCount = _ref.fileCount, ipCount = _ref.ipCount, newPosts = _ref.newPosts;
|
||||
ThreadStats.update(postCount, fileCount, ipCount);
|
||||
if (!Conf["Page Count in Stats"]) {
|
||||
return;
|
||||
}
|
||||
@ -10644,11 +10662,14 @@
|
||||
return ThreadStats.fetchPage();
|
||||
}
|
||||
},
|
||||
update: function(postCount, fileCount) {
|
||||
var fileCountEl, postCountEl, thread;
|
||||
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
|
||||
update: function(postCount, fileCount, ipCount) {
|
||||
var fileCountEl, ipCountEl, postCountEl, thread;
|
||||
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl, ipCountEl = ThreadStats.ipCountEl;
|
||||
postCountEl.textContent = postCount;
|
||||
fileCountEl.textContent = fileCount;
|
||||
if (Conf["IP Count in Stats"]) {
|
||||
ipCountEl.textContent = ipCount != null ? ipCount : '?';
|
||||
}
|
||||
(thread.postLimit && !thread.isSticky ? $.addClass : $.rmClass)(postCountEl, 'warning');
|
||||
return (thread.fileLimit && !thread.isSticky ? $.addClass : $.rmClass)(fileCountEl, 'warning');
|
||||
},
|
||||
@ -11090,7 +11111,8 @@
|
||||
return post.fullID;
|
||||
}),
|
||||
postCount: OP.replies + 1,
|
||||
fileCount: OP.images + (!!ThreadUpdater.thread.OP.file && !ThreadUpdater.thread.OP.file.isDead)
|
||||
fileCount: OP.images + (!!ThreadUpdater.thread.OP.file && !ThreadUpdater.thread.OP.file.isDead),
|
||||
ipCount: OP.unique_ips
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -13688,7 +13710,7 @@
|
||||
className: '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.10.0</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.10.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>"
|
||||
});
|
||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.9.10.0
|
||||
// @version 1.9.10.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -23,7 +23,7 @@
|
||||
// ==/UserScript==
|
||||
|
||||
/*
|
||||
* 4chan X - Version 1.9.10.0
|
||||
* 4chan X - Version 1.9.10.1
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||
@ -211,7 +211,8 @@
|
||||
'Thread Excerpt': [true, 'Show an excerpt of the thread in the tab title for threads in /f/.'],
|
||||
'Remove Thread Excerpt': [false, 'Replace the excerpt of the thread in the tab title with the board title.'],
|
||||
'Thread Stats': [true, 'Display reply and image count.'],
|
||||
'Page Count in Stats': [true, 'Display the page count in the thread stats as well.'],
|
||||
'IP Count in Stats': [true, 'Display the unique IP count in the thread stats.'],
|
||||
'Page Count in Stats': [true, 'Display the page count in the thread stats.'],
|
||||
'Updater and Stats in Header': [true, 'Places the thread updater and thread stats in the header instead of floating them.'],
|
||||
'Thread Watcher': [true, 'Bookmark threads.'],
|
||||
'Toggleable Thread Watcher': [true, 'Adds a shortcut for the thread watcher, hides the watcher by default, and makes it scroll with the page.']
|
||||
@ -380,7 +381,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.9.10.0',
|
||||
VERSION: '1.9.10.1',
|
||||
NAMESPACE: '4chan X.',
|
||||
NAME: '4chan X',
|
||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||
@ -10569,30 +10570,38 @@
|
||||
|
||||
ThreadStats = {
|
||||
init: function() {
|
||||
var countHTML, sc;
|
||||
var sc, statsHTML, statsTitle;
|
||||
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
|
||||
return;
|
||||
}
|
||||
countHTML = {
|
||||
statsHTML = {
|
||||
innerHTML: "<span id=\"post-count\">?</span> / <span id=\"file-count\">?</span>"
|
||||
};
|
||||
if (Conf['Page Count in Stats']) {
|
||||
countHTML = {
|
||||
innerHTML: countHTML.innerHTML + " / <span id=\"page-count\">?</span>"
|
||||
statsTitle = 'Post Count / File Count';
|
||||
if (Conf['IP Count in Stats']) {
|
||||
statsHTML = {
|
||||
innerHTML: statsHTML.innerHTML + " / <span id=\"ip-count\">?</span>"
|
||||
};
|
||||
statsTitle += ' / IP Count';
|
||||
}
|
||||
if (Conf['Page Count in Stats']) {
|
||||
statsHTML = {
|
||||
innerHTML: statsHTML.innerHTML + " / <span id=\"page-count\">?</span>"
|
||||
};
|
||||
statsTitle += ' / Page Count';
|
||||
}
|
||||
if (Conf['Updater and Stats in Header']) {
|
||||
this.dialog = sc = $.el('span', {
|
||||
id: 'thread-stats',
|
||||
title: 'Post Count / File Count' + (Conf["Page Count in Stats"] ? " / Page Count" : "")
|
||||
title: statsTitle
|
||||
});
|
||||
$.extend(sc, countHTML);
|
||||
$.extend(sc, statsHTML);
|
||||
$.ready(function() {
|
||||
return Header.addShortcut(sc);
|
||||
});
|
||||
} else {
|
||||
this.dialog = sc = UI.dialog('thread-stats', 'bottom: 0px; right: 0px;', {
|
||||
innerHTML: "<div class=\"move\" title=\"Post Count / File Count" + E(Conf["Page Count in Stats"] ? " / Page Count" : "") + "\">" + countHTML.innerHTML + "</div>"
|
||||
innerHTML: "<div class=\"move\" title=\"" + E(statsTitle) + "\">" + statsHTML.innerHTML + "</div>"
|
||||
});
|
||||
$.ready((function(_this) {
|
||||
return function() {
|
||||
@ -10602,6 +10611,7 @@
|
||||
}
|
||||
this.postCountEl = $('#post-count', sc);
|
||||
this.fileCountEl = $('#file-count', sc);
|
||||
this.ipCountEl = $('#ip-count', sc);
|
||||
this.pageCountEl = $('#page-count', sc);
|
||||
return Thread.callbacks.push({
|
||||
name: 'Thread Stats',
|
||||
@ -10609,7 +10619,7 @@
|
||||
});
|
||||
},
|
||||
node: function() {
|
||||
var fileCount, postCount;
|
||||
var fileCount, ipCount, m, postCount, script, _i, _len, _ref;
|
||||
postCount = 0;
|
||||
fileCount = 0;
|
||||
this.posts.forEach(function(post) {
|
||||
@ -10621,18 +10631,26 @@
|
||||
return ThreadStats.lastPost = post.info.date;
|
||||
}
|
||||
});
|
||||
_ref = $$('script[type="text/javascript"]:not([src])', d.head);
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
script = _ref[_i];
|
||||
if (m = script.textContent.match(/\bvar unique_ips = (\d+);/)) {
|
||||
ipCount = +m[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
ThreadStats.thread = this;
|
||||
ThreadStats.fetchPage();
|
||||
ThreadStats.update(postCount, fileCount);
|
||||
ThreadStats.update(postCount, fileCount, ipCount);
|
||||
return $.on(d, 'ThreadUpdate', ThreadStats.onUpdate);
|
||||
},
|
||||
onUpdate: function(e) {
|
||||
var fileCount, newPosts, postCount, _ref, _ref1;
|
||||
var fileCount, ipCount, newPosts, postCount, _ref, _ref1;
|
||||
if (e.detail[404]) {
|
||||
return;
|
||||
}
|
||||
_ref = e.detail, postCount = _ref.postCount, fileCount = _ref.fileCount, newPosts = _ref.newPosts;
|
||||
ThreadStats.update(postCount, fileCount);
|
||||
_ref = e.detail, postCount = _ref.postCount, fileCount = _ref.fileCount, ipCount = _ref.ipCount, newPosts = _ref.newPosts;
|
||||
ThreadStats.update(postCount, fileCount, ipCount);
|
||||
if (!Conf["Page Count in Stats"]) {
|
||||
return;
|
||||
}
|
||||
@ -10643,11 +10661,14 @@
|
||||
return ThreadStats.fetchPage();
|
||||
}
|
||||
},
|
||||
update: function(postCount, fileCount) {
|
||||
var fileCountEl, postCountEl, thread;
|
||||
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
|
||||
update: function(postCount, fileCount, ipCount) {
|
||||
var fileCountEl, ipCountEl, postCountEl, thread;
|
||||
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl, ipCountEl = ThreadStats.ipCountEl;
|
||||
postCountEl.textContent = postCount;
|
||||
fileCountEl.textContent = fileCount;
|
||||
if (Conf["IP Count in Stats"]) {
|
||||
ipCountEl.textContent = ipCount != null ? ipCount : '?';
|
||||
}
|
||||
(thread.postLimit && !thread.isSticky ? $.addClass : $.rmClass)(postCountEl, 'warning');
|
||||
return (thread.fileLimit && !thread.isSticky ? $.addClass : $.rmClass)(fileCountEl, 'warning');
|
||||
},
|
||||
@ -11089,7 +11110,8 @@
|
||||
return post.fullID;
|
||||
}),
|
||||
postCount: OP.replies + 1,
|
||||
fileCount: OP.images + (!!ThreadUpdater.thread.OP.file && !ThreadUpdater.thread.OP.file.isDead)
|
||||
fileCount: OP.images + (!!ThreadUpdater.thread.OP.file && !ThreadUpdater.thread.OP.file.isDead),
|
||||
ipCount: OP.unique_ips
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -13687,7 +13709,7 @@
|
||||
className: '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.10.0</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.10.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>"
|
||||
});
|
||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.9.10.0
|
||||
// @version 1.9.10.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.9.10.0
|
||||
// @version 1.9.10.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -24,7 +24,7 @@
|
||||
// ==/UserScript==
|
||||
|
||||
/*
|
||||
* 4chan X - Version 1.9.10.0
|
||||
* 4chan X - Version 1.9.10.1
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||
@ -212,7 +212,8 @@
|
||||
'Thread Excerpt': [true, 'Show an excerpt of the thread in the tab title for threads in /f/.'],
|
||||
'Remove Thread Excerpt': [false, 'Replace the excerpt of the thread in the tab title with the board title.'],
|
||||
'Thread Stats': [true, 'Display reply and image count.'],
|
||||
'Page Count in Stats': [true, 'Display the page count in the thread stats as well.'],
|
||||
'IP Count in Stats': [true, 'Display the unique IP count in the thread stats.'],
|
||||
'Page Count in Stats': [true, 'Display the page count in the thread stats.'],
|
||||
'Updater and Stats in Header': [true, 'Places the thread updater and thread stats in the header instead of floating them.'],
|
||||
'Thread Watcher': [true, 'Bookmark threads.'],
|
||||
'Toggleable Thread Watcher': [true, 'Adds a shortcut for the thread watcher, hides the watcher by default, and makes it scroll with the page.']
|
||||
@ -381,7 +382,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.9.10.0',
|
||||
VERSION: '1.9.10.1',
|
||||
NAMESPACE: '4chan X.',
|
||||
NAME: '4chan X',
|
||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||
@ -10570,30 +10571,38 @@
|
||||
|
||||
ThreadStats = {
|
||||
init: function() {
|
||||
var countHTML, sc;
|
||||
var sc, statsHTML, statsTitle;
|
||||
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
|
||||
return;
|
||||
}
|
||||
countHTML = {
|
||||
statsHTML = {
|
||||
innerHTML: "<span id=\"post-count\">?</span> / <span id=\"file-count\">?</span>"
|
||||
};
|
||||
if (Conf['Page Count in Stats']) {
|
||||
countHTML = {
|
||||
innerHTML: countHTML.innerHTML + " / <span id=\"page-count\">?</span>"
|
||||
statsTitle = 'Post Count / File Count';
|
||||
if (Conf['IP Count in Stats']) {
|
||||
statsHTML = {
|
||||
innerHTML: statsHTML.innerHTML + " / <span id=\"ip-count\">?</span>"
|
||||
};
|
||||
statsTitle += ' / IP Count';
|
||||
}
|
||||
if (Conf['Page Count in Stats']) {
|
||||
statsHTML = {
|
||||
innerHTML: statsHTML.innerHTML + " / <span id=\"page-count\">?</span>"
|
||||
};
|
||||
statsTitle += ' / Page Count';
|
||||
}
|
||||
if (Conf['Updater and Stats in Header']) {
|
||||
this.dialog = sc = $.el('span', {
|
||||
id: 'thread-stats',
|
||||
title: 'Post Count / File Count' + (Conf["Page Count in Stats"] ? " / Page Count" : "")
|
||||
title: statsTitle
|
||||
});
|
||||
$.extend(sc, countHTML);
|
||||
$.extend(sc, statsHTML);
|
||||
$.ready(function() {
|
||||
return Header.addShortcut(sc);
|
||||
});
|
||||
} else {
|
||||
this.dialog = sc = UI.dialog('thread-stats', 'bottom: 0px; right: 0px;', {
|
||||
innerHTML: "<div class=\"move\" title=\"Post Count / File Count" + E(Conf["Page Count in Stats"] ? " / Page Count" : "") + "\">" + countHTML.innerHTML + "</div>"
|
||||
innerHTML: "<div class=\"move\" title=\"" + E(statsTitle) + "\">" + statsHTML.innerHTML + "</div>"
|
||||
});
|
||||
$.ready((function(_this) {
|
||||
return function() {
|
||||
@ -10603,6 +10612,7 @@
|
||||
}
|
||||
this.postCountEl = $('#post-count', sc);
|
||||
this.fileCountEl = $('#file-count', sc);
|
||||
this.ipCountEl = $('#ip-count', sc);
|
||||
this.pageCountEl = $('#page-count', sc);
|
||||
return Thread.callbacks.push({
|
||||
name: 'Thread Stats',
|
||||
@ -10610,7 +10620,7 @@
|
||||
});
|
||||
},
|
||||
node: function() {
|
||||
var fileCount, postCount;
|
||||
var fileCount, ipCount, m, postCount, script, _i, _len, _ref;
|
||||
postCount = 0;
|
||||
fileCount = 0;
|
||||
this.posts.forEach(function(post) {
|
||||
@ -10622,18 +10632,26 @@
|
||||
return ThreadStats.lastPost = post.info.date;
|
||||
}
|
||||
});
|
||||
_ref = $$('script[type="text/javascript"]:not([src])', d.head);
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
script = _ref[_i];
|
||||
if (m = script.textContent.match(/\bvar unique_ips = (\d+);/)) {
|
||||
ipCount = +m[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
ThreadStats.thread = this;
|
||||
ThreadStats.fetchPage();
|
||||
ThreadStats.update(postCount, fileCount);
|
||||
ThreadStats.update(postCount, fileCount, ipCount);
|
||||
return $.on(d, 'ThreadUpdate', ThreadStats.onUpdate);
|
||||
},
|
||||
onUpdate: function(e) {
|
||||
var fileCount, newPosts, postCount, _ref, _ref1;
|
||||
var fileCount, ipCount, newPosts, postCount, _ref, _ref1;
|
||||
if (e.detail[404]) {
|
||||
return;
|
||||
}
|
||||
_ref = e.detail, postCount = _ref.postCount, fileCount = _ref.fileCount, newPosts = _ref.newPosts;
|
||||
ThreadStats.update(postCount, fileCount);
|
||||
_ref = e.detail, postCount = _ref.postCount, fileCount = _ref.fileCount, ipCount = _ref.ipCount, newPosts = _ref.newPosts;
|
||||
ThreadStats.update(postCount, fileCount, ipCount);
|
||||
if (!Conf["Page Count in Stats"]) {
|
||||
return;
|
||||
}
|
||||
@ -10644,11 +10662,14 @@
|
||||
return ThreadStats.fetchPage();
|
||||
}
|
||||
},
|
||||
update: function(postCount, fileCount) {
|
||||
var fileCountEl, postCountEl, thread;
|
||||
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
|
||||
update: function(postCount, fileCount, ipCount) {
|
||||
var fileCountEl, ipCountEl, postCountEl, thread;
|
||||
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl, ipCountEl = ThreadStats.ipCountEl;
|
||||
postCountEl.textContent = postCount;
|
||||
fileCountEl.textContent = fileCount;
|
||||
if (Conf["IP Count in Stats"]) {
|
||||
ipCountEl.textContent = ipCount != null ? ipCount : '?';
|
||||
}
|
||||
(thread.postLimit && !thread.isSticky ? $.addClass : $.rmClass)(postCountEl, 'warning');
|
||||
return (thread.fileLimit && !thread.isSticky ? $.addClass : $.rmClass)(fileCountEl, 'warning');
|
||||
},
|
||||
@ -11090,7 +11111,8 @@
|
||||
return post.fullID;
|
||||
}),
|
||||
postCount: OP.replies + 1,
|
||||
fileCount: OP.images + (!!ThreadUpdater.thread.OP.file && !ThreadUpdater.thread.OP.file.isDead)
|
||||
fileCount: OP.images + (!!ThreadUpdater.thread.OP.file && !ThreadUpdater.thread.OP.file.isDead),
|
||||
ipCount: OP.unique_ips
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -13688,7 +13710,7 @@
|
||||
className: '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.10.0</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.10.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>"
|
||||
});
|
||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.9.10.0' />
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.9.10.1' />
|
||||
</app>
|
||||
</gupdate>
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.9.10.0' />
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.9.10.1' />
|
||||
</app>
|
||||
</gupdate>
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
"description": "Cross-browser userscript for maximum lurking on 4chan.",
|
||||
"meta": {
|
||||
"name": "4chan X",
|
||||
"version": "1.9.10.0",
|
||||
"version": "1.9.10.1",
|
||||
"repo": "https://github.com/ccd0/4chan-x/",
|
||||
"page": "https://github.com/ccd0/4chan-x",
|
||||
"downloads": "https://ccd0.github.io/4chan-x/builds/",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user