Merge branch 'master' into index

This commit is contained in:
ccd0 2015-07-19 22:36:47 -07:00
commit 2ba6e4f9c3
16 changed files with 100 additions and 54 deletions

View File

@ -2,6 +2,13 @@
Sometimes the changelog has notes (not comprehensive) acknowledging people's work. This does not mean the changes are their fault, only that their code was used. All changes to the script are chosen by and the fault of the maintainer (ccd0).
### v1.11.6
**v1.11.6.0** *(2015-07-19)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.6.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.6.0/builds/4chan-X-noupdate.crx "Chromium version")]
- Based on v1.11.5.2.
- Implement 404 Redirect for `sys.4chan.org/board/imgboard.php?res=` URLs.
- Index navigation bugfixes.
### v1.11.5
**v1.11.5.2** *(2015-07-15)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.5.2/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.5.2/builds/4chan-X-noupdate.crx "Chromium version")]

View File

@ -20,8 +20,8 @@ Install [Greasemonkey](https://addons.mozilla.org/en-US/firefox/addon/greasemonk
4chan X is available as a Chrome extension. The Chrome extension has the additional feature of being able to sync your settings and data with other devices via Chrome Sync.
- **Chromium**, **Chrome**, and **Vivaldi** users can **[install 4chan X from the Chrome store](https://chrome.google.com/webstore/detail/4chan-x/ohnjgmpcibpbafdlkimncjhflgedgpam)**.
- **Chromium** users can alternately **[download 4chan X from Github](https://ccd0.github.io/4chan-x/builds/4chan-X.crx)**, then drag it to your `chrome://extensions` page. This will also work for Chrome dev/canary, and Chrome on platforms other than Windows.
- **Opera** users can click to **[download 4chan X from Github](https://ccd0.github.io/4chan-x/builds/4chan-X.crx)**, then follow the prompts to activate it in your extension manager. Note: This version does not work with Opera 12; try [loadletter's fork](https://github.com/loadletter/4chan-x) instead.
- You can alternately **[download 4chan X from Github](https://ccd0.github.io/4chan-x/builds/4chan-X.crx)**, then drag it to your `chrome://extensions` page. This will not work for the stable or beta versions of Chrome on Windows, which block extensions not from the Chrome store.
You can also use the [userscript version of 4chan X](https://ccd0.github.io/4chan-x/builds/4chan-X.user.js) with [Tampermonkey](https://tampermonkey.net/).

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
// @version 1.11.5.2
// @version 1.11.6.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X beta
// @version 1.11.5.2
// @version 1.11.6.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -411,7 +411,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.5.2',
VERSION: '1.11.6.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -3407,7 +3407,6 @@
var mode, page, ref, ref1, search, state;
if (e != null ? e.state : void 0) {
ref = e.state, search = ref.search, mode = ref.mode;
page = Index.getCurrentPage();
state = {};
if (Index.search !== search) {
state.search = Index.search = search;
@ -3416,6 +3415,7 @@
state.mode = mode;
Index.saveMode(mode);
}
page = Index.getCurrentPage();
if (Index.currentPage !== page) {
state.page = Index.currentPage = page;
}
@ -3974,6 +3974,7 @@
Index.pushState({
page: page
});
Index.setPage();
}
}
nodes = Index.buildSinglePage(Index.getCurrentPage());
@ -14362,9 +14363,14 @@
securityCheck: function(URL) {
return /^https:\/\//.test(URL) || location.protocol === 'http:' || Conf['Except Archives from Encryption'];
},
navigate: function(URL, alternative) {
if (URL && (Redirect.securityCheck(URL) || confirm("Redirect to " + URL + "?\n\nYour connection will not be encrypted."))) {
return location.replace(URL);
navigate: function(dest, data, alternative) {
var url;
if (!Redirect.data) {
Redirect.init();
}
url = Redirect.to(dest, data);
if (url && (Redirect.securityCheck(url) || confirm("Redirect to " + url + "?\n\nYour connection will not be encrypted."))) {
return location.replace(url);
} else if (alternative) {
return location.replace(alternative);
}
@ -17065,7 +17071,7 @@
});
},
initFeatures: function() {
var err, feature, k, len1, name, pathname, ref, ref1, ref2;
var err, feature, k, len1, match, name, pathname, ref, ref1, ref2;
if ((ref = location.hostname) === 'boards.4chan.org' || ref === 'sys.4chan.org' || ref === 'www.4chan.org') {
$.globalEval('document.documentElement.classList.add("js-enabled");');
}
@ -17080,20 +17086,29 @@
if (g.VIEW === 'post') {
PostSuccessful.init();
}
if (Conf['404 Redirect'] && /\/imgboard\.php$/.test(location.pathname) && (match = location.search.match(/\bres=(\d+)/))) {
$.ready(function() {
var ref1;
if (((ref1 = $.id('errmsg')) != null ? ref1.textContent : void 0) === 'Error: Specified thread does not exist.') {
return Redirect.navigate('thread', {
boardID: g.BOARD.ID,
postID: +match[1]
});
}
});
}
return;
case 'i.4cdn.org':
$.asap((function() {
return d.readyState !== 'loading';
}), function() {
var URL, pathname, ref1, video;
var pathname, ref1, video;
if (Conf['404 Redirect'] && ((ref1 = d.title) === '4chan - Temporarily Offline' || ref1 === '4chan - 404 Not Found')) {
Redirect.init();
pathname = location.pathname.split('/');
URL = Redirect.to('file', {
return Redirect.navigate('file', {
boardID: g.BOARD.ID,
filename: pathname[pathname.length - 1]
});
return Redirect.navigate(URL);
} else if (video = $('video')) {
if (Conf['Volume in New Tab']) {
Volume.setup(video);
@ -17196,14 +17211,12 @@
if ((ref = d.title) === '4chan - Temporarily Offline' || ref === '4chan - 404 Not Found') {
if (g.VIEW === 'thread') {
ThreadWatcher.set404(g.BOARD.ID, g.THREADID, function() {
var href;
if (Conf['404 Redirect']) {
href = Redirect.to('thread', {
return Redirect.navigate('thread', {
boardID: g.BOARD.ID,
threadID: g.THREADID,
postID: +location.hash.match(/\d+/)
});
return Redirect.navigate(href, "/" + g.BOARD + "/");
}, "/" + g.BOARD + "/");
}
});
}

Binary file not shown.

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.11.5.2
// @version 1.11.6.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -410,7 +410,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.5.2',
VERSION: '1.11.6.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -3406,7 +3406,6 @@
var mode, page, ref, ref1, search, state;
if (e != null ? e.state : void 0) {
ref = e.state, search = ref.search, mode = ref.mode;
page = Index.getCurrentPage();
state = {};
if (Index.search !== search) {
state.search = Index.search = search;
@ -3415,6 +3414,7 @@
state.mode = mode;
Index.saveMode(mode);
}
page = Index.getCurrentPage();
if (Index.currentPage !== page) {
state.page = Index.currentPage = page;
}
@ -3973,6 +3973,7 @@
Index.pushState({
page: page
});
Index.setPage();
}
}
nodes = Index.buildSinglePage(Index.getCurrentPage());
@ -14361,9 +14362,14 @@
securityCheck: function(URL) {
return /^https:\/\//.test(URL) || location.protocol === 'http:' || Conf['Except Archives from Encryption'];
},
navigate: function(URL, alternative) {
if (URL && (Redirect.securityCheck(URL) || confirm("Redirect to " + URL + "?\n\nYour connection will not be encrypted."))) {
return location.replace(URL);
navigate: function(dest, data, alternative) {
var url;
if (!Redirect.data) {
Redirect.init();
}
url = Redirect.to(dest, data);
if (url && (Redirect.securityCheck(url) || confirm("Redirect to " + url + "?\n\nYour connection will not be encrypted."))) {
return location.replace(url);
} else if (alternative) {
return location.replace(alternative);
}
@ -17064,7 +17070,7 @@
});
},
initFeatures: function() {
var err, feature, k, len1, name, pathname, ref, ref1, ref2;
var err, feature, k, len1, match, name, pathname, ref, ref1, ref2;
if ((ref = location.hostname) === 'boards.4chan.org' || ref === 'sys.4chan.org' || ref === 'www.4chan.org') {
$.globalEval('document.documentElement.classList.add("js-enabled");');
}
@ -17079,20 +17085,29 @@
if (g.VIEW === 'post') {
PostSuccessful.init();
}
if (Conf['404 Redirect'] && /\/imgboard\.php$/.test(location.pathname) && (match = location.search.match(/\bres=(\d+)/))) {
$.ready(function() {
var ref1;
if (((ref1 = $.id('errmsg')) != null ? ref1.textContent : void 0) === 'Error: Specified thread does not exist.') {
return Redirect.navigate('thread', {
boardID: g.BOARD.ID,
postID: +match[1]
});
}
});
}
return;
case 'i.4cdn.org':
$.asap((function() {
return d.readyState !== 'loading';
}), function() {
var URL, pathname, ref1, video;
var pathname, ref1, video;
if (Conf['404 Redirect'] && ((ref1 = d.title) === '4chan - Temporarily Offline' || ref1 === '4chan - 404 Not Found')) {
Redirect.init();
pathname = location.pathname.split('/');
URL = Redirect.to('file', {
return Redirect.navigate('file', {
boardID: g.BOARD.ID,
filename: pathname[pathname.length - 1]
});
return Redirect.navigate(URL);
} else if (video = $('video')) {
if (Conf['Volume in New Tab']) {
Volume.setup(video);
@ -17195,14 +17210,12 @@
if ((ref = d.title) === '4chan - Temporarily Offline' || ref === '4chan - 404 Not Found') {
if (g.VIEW === 'thread') {
ThreadWatcher.set404(g.BOARD.ID, g.THREADID, function() {
var href;
if (Conf['404 Redirect']) {
href = Redirect.to('thread', {
return Redirect.navigate('thread', {
boardID: g.BOARD.ID,
threadID: g.THREADID,
postID: +location.hash.match(/\d+/)
});
return Redirect.navigate(href, "/" + g.BOARD + "/");
}, "/" + g.BOARD + "/");
}
});
}

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
// @version 1.11.5.2
// @version 1.11.6.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.11.5.2
// @version 1.11.6.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -411,7 +411,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.5.2',
VERSION: '1.11.6.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -3407,7 +3407,6 @@
var mode, page, ref, ref1, search, state;
if (e != null ? e.state : void 0) {
ref = e.state, search = ref.search, mode = ref.mode;
page = Index.getCurrentPage();
state = {};
if (Index.search !== search) {
state.search = Index.search = search;
@ -3416,6 +3415,7 @@
state.mode = mode;
Index.saveMode(mode);
}
page = Index.getCurrentPage();
if (Index.currentPage !== page) {
state.page = Index.currentPage = page;
}
@ -3974,6 +3974,7 @@
Index.pushState({
page: page
});
Index.setPage();
}
}
nodes = Index.buildSinglePage(Index.getCurrentPage());
@ -14362,9 +14363,14 @@
securityCheck: function(URL) {
return /^https:\/\//.test(URL) || location.protocol === 'http:' || Conf['Except Archives from Encryption'];
},
navigate: function(URL, alternative) {
if (URL && (Redirect.securityCheck(URL) || confirm("Redirect to " + URL + "?\n\nYour connection will not be encrypted."))) {
return location.replace(URL);
navigate: function(dest, data, alternative) {
var url;
if (!Redirect.data) {
Redirect.init();
}
url = Redirect.to(dest, data);
if (url && (Redirect.securityCheck(url) || confirm("Redirect to " + url + "?\n\nYour connection will not be encrypted."))) {
return location.replace(url);
} else if (alternative) {
return location.replace(alternative);
}
@ -17065,7 +17071,7 @@
});
},
initFeatures: function() {
var err, feature, k, len1, name, pathname, ref, ref1, ref2;
var err, feature, k, len1, match, name, pathname, ref, ref1, ref2;
if ((ref = location.hostname) === 'boards.4chan.org' || ref === 'sys.4chan.org' || ref === 'www.4chan.org') {
$.globalEval('document.documentElement.classList.add("js-enabled");');
}
@ -17080,20 +17086,29 @@
if (g.VIEW === 'post') {
PostSuccessful.init();
}
if (Conf['404 Redirect'] && /\/imgboard\.php$/.test(location.pathname) && (match = location.search.match(/\bres=(\d+)/))) {
$.ready(function() {
var ref1;
if (((ref1 = $.id('errmsg')) != null ? ref1.textContent : void 0) === 'Error: Specified thread does not exist.') {
return Redirect.navigate('thread', {
boardID: g.BOARD.ID,
postID: +match[1]
});
}
});
}
return;
case 'i.4cdn.org':
$.asap((function() {
return d.readyState !== 'loading';
}), function() {
var URL, pathname, ref1, video;
var pathname, ref1, video;
if (Conf['404 Redirect'] && ((ref1 = d.title) === '4chan - Temporarily Offline' || ref1 === '4chan - 404 Not Found')) {
Redirect.init();
pathname = location.pathname.split('/');
URL = Redirect.to('file', {
return Redirect.navigate('file', {
boardID: g.BOARD.ID,
filename: pathname[pathname.length - 1]
});
return Redirect.navigate(URL);
} else if (video = $('video')) {
if (Conf['Volume in New Tab']) {
Volume.setup(video);
@ -17196,14 +17211,12 @@
if ((ref = d.title) === '4chan - Temporarily Offline' || ref === '4chan - 404 Not Found') {
if (g.VIEW === 'thread') {
ThreadWatcher.set404(g.BOARD.ID, g.THREADID, function() {
var href;
if (Conf['404 Redirect']) {
href = Redirect.to('thread', {
return Redirect.navigate('thread', {
boardID: g.BOARD.ID,
threadID: g.THREADID,
postID: +location.hash.match(/\d+/)
});
return Redirect.navigate(href, "/" + g.BOARD + "/");
}, "/" + g.BOARD + "/");
}
});
}

Binary file not shown.

View File

@ -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.11.5.2' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.11.6.0' />
</app>
</gupdate>

View File

@ -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.11.5.2' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.11.6.0' />
</app>
</gupdate>

View File

@ -33,8 +33,8 @@ Previously developed by <a href="https://github.com/aeosynth/4chan-x">aeosynth</
<p>4chan X is available as a Chrome extension. The Chrome extension has the additional feature of being able to sync your settings and data with other devices via Chrome Sync.</p>
<ul>
<li><strong>Chromium</strong>, <strong>Chrome</strong>, and <strong>Vivaldi</strong> users can <strong><a href="https://chrome.google.com/webstore/detail/4chan-x/ohnjgmpcibpbafdlkimncjhflgedgpam">install 4chan X from the Chrome store</a></strong>.</li>
<li><strong>Chromium</strong> users can alternately <strong><a href="https://ccd0.github.io/4chan-x/builds/4chan-X.crx">download 4chan X from Github</a></strong>, then drag it to your <code>chrome://extensions</code> page. This will also work for Chrome dev/canary, and Chrome on platforms other than Windows.</li>
<li><strong>Opera</strong> users can click to <strong><a href="https://ccd0.github.io/4chan-x/builds/4chan-X.crx">download 4chan X from Github</a></strong>, then follow the prompts to activate it in your extension manager. Note: This version does not work with Opera 12; try <a href="https://github.com/loadletter/4chan-x">loadletter&#39;s fork</a> instead.</li>
<li>You can alternately <strong><a href="https://ccd0.github.io/4chan-x/builds/4chan-X.crx">download 4chan X from Github</a></strong>, then drag it to your <code>chrome://extensions</code> page. This will not work for the stable or beta versions of Chrome on Windows, which block extensions not from the Chrome store.</li>
</ul>
<p>You can also use the <a href="https://ccd0.github.io/4chan-x/builds/4chan-X.user.js">userscript version of 4chan X</a> with <a href="https://tampermonkey.net/">Tampermonkey</a>.</p>
</div><input hidden type="checkbox" id="safari-hide"><div><label for="safari-hide"><h3 id="safari">Safari</h3></label>

View File

@ -3,8 +3,8 @@
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
"version": "1.11.5.2",
"date": "2015-07-15T21:17:03.431Z",
"version": "1.11.6.0",
"date": "2015-07-20T02:05:39.061Z",
"repo": "https://github.com/ccd0/4chan-x/",
"page": "https://github.com/ccd0/4chan-x",
"downloads": "https://ccd0.github.io/4chan-x/builds/",

View File

@ -75,7 +75,7 @@ Main =
when 'sys.4chan.org'
Report.init()
PostSuccessful.init() if g.VIEW is 'post'
if /\/imgboard\.php$/.test(location.pathname) and (match = location.search.match /\bres=(\d+)/)
if Conf['404 Redirect'] and /\/imgboard\.php$/.test(location.pathname) and (match = location.search.match /\bres=(\d+)/)
$.ready ->
if $.id('errmsg')?.textContent is 'Error: Specified thread does not exist.'
Redirect.navigate 'thread',