Release 4chan X v1.11.15.0.
This commit is contained in:
parent
608480f004
commit
efd5bae561
@ -2,6 +2,12 @@
|
||||
|
||||
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.15
|
||||
|
||||
**v1.11.15.0** *(2015-11-01)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.15.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.15.0/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
- Based on v1.11.14.12.
|
||||
- Add `Open Threads in New Tab` option (off by default), which makes `[Reply]` links on threads and links in the 4chan X catalog open in a new tab.
|
||||
|
||||
### v1.11.14
|
||||
|
||||
**v1.11.14.12** *(2015-10-31)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.14.12/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.14.12/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.11.14.12
|
||||
// @version 1.11.15.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.11.14.12
|
||||
// @version 1.11.15.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -117,7 +117,7 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, Notice, PSAHiding, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, Notice, PSAHiding, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
slice = [].slice,
|
||||
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
||||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
@ -130,6 +130,7 @@
|
||||
'JSON Navigation': [true, 'Replace the original board index with one supporting searching, sorting, infinite scrolling, and a catalog mode.'],
|
||||
'Use 4chan X Catalog': [true, 'Link to 4chan X\'s catalog instead of the native 4chan one.', 1],
|
||||
'Index Refresh Notifications': [false, 'Show a notice at the top of the page when the index is refreshed.', 1],
|
||||
'Open Threads in New Tab': [false, 'Make links to threads in the index / 4chan X catalog open in a new tab.'],
|
||||
'External Catalog': [false, 'Link to external catalog instead of the internal one.'],
|
||||
'Catalog Links': [false, 'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.'],
|
||||
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.'],
|
||||
@ -414,7 +415,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.14.12',
|
||||
VERSION: '1.11.15.0',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -2243,9 +2244,9 @@
|
||||
}
|
||||
this.root.textContent = "Loading post No." + this.postID + "...";
|
||||
if (this.threadID) {
|
||||
$.cache("//a.4cdn.org/" + this.boardID + "/thread/" + this.threadID + ".json", (function(self) {
|
||||
return function() {
|
||||
return self.fetchedPost(this);
|
||||
$.cache("//a.4cdn.org/" + this.boardID + "/thread/" + this.threadID + ".json", (function(_this) {
|
||||
return function(e) {
|
||||
return _this.fetchedPost(e.target);
|
||||
};
|
||||
})(this));
|
||||
} else {
|
||||
@ -2297,9 +2298,9 @@
|
||||
$.cleanCache(function(url) {
|
||||
return url === api;
|
||||
});
|
||||
$.cache(api, (function(self) {
|
||||
return function() {
|
||||
return self.fetchedPost(this);
|
||||
$.cache(api, (function(_this) {
|
||||
return function(e) {
|
||||
return _this.fetchedPost(e.target);
|
||||
};
|
||||
})(this));
|
||||
return;
|
||||
@ -2320,7 +2321,7 @@
|
||||
};
|
||||
|
||||
Fetcher.prototype.archivedPost = function() {
|
||||
var url;
|
||||
var archive, url;
|
||||
if (!Conf['Resurrect Quotes']) {
|
||||
return false;
|
||||
}
|
||||
@ -2330,17 +2331,18 @@
|
||||
}))) {
|
||||
return false;
|
||||
}
|
||||
archive = Redirect.data.post[this.boardID];
|
||||
if (/^https:\/\//.test(url) || location.protocol === 'http:') {
|
||||
$.cache(url, (function(self) {
|
||||
return function() {
|
||||
return self.parseArchivedPost(this.response, url);
|
||||
$.cache(url, (function(_this) {
|
||||
return function(e) {
|
||||
return _this.parseArchivedPost(e.target.response, url);
|
||||
};
|
||||
})(this), {
|
||||
responseType: 'json',
|
||||
withCredentials: url.archive.withCredentials
|
||||
withCredentials: archive.withCredentials
|
||||
});
|
||||
return true;
|
||||
} else if (Conf['Except Archives from Encryption']) {
|
||||
} else if (Conf['Exempt Archives from Encryption']) {
|
||||
CrossOrigin.json(url, (function(_this) {
|
||||
return function(response) {
|
||||
var key, media, ref;
|
||||
@ -2348,7 +2350,7 @@
|
||||
if (media) {
|
||||
for (key in media) {
|
||||
if (/_link$/.test(key)) {
|
||||
if (!((media[key] != null) && (ref = media[key].match(/^(http:\/\/[^\/]+\/)?/)[0], indexOf.call(url.archive.imagehosts, ref) >= 0))) {
|
||||
if (!((ref = media[key]) != null ? ref.match(/^http:\/\//) : void 0)) {
|
||||
delete media[key];
|
||||
}
|
||||
}
|
||||
@ -6117,7 +6119,8 @@
|
||||
}
|
||||
for (u = 0, len3 = containers.length; u < len3; u++) {
|
||||
container = containers[u];
|
||||
nodes = [$.tn(' '), link = a.cloneNode(true)];
|
||||
link = a.cloneNode(true);
|
||||
nodes = container.firstChild ? [$.tn(' '), link] : [link];
|
||||
if (Conf['Quote Previewing']) {
|
||||
$.on(link, 'mouseover', QuotePreview.mouseover);
|
||||
}
|
||||
@ -14489,15 +14492,14 @@
|
||||
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + path;
|
||||
},
|
||||
post: function(archive, arg) {
|
||||
var URL, boardID, postID, protocol;
|
||||
var boardID, postID, protocol, url;
|
||||
boardID = arg.boardID, postID = arg.postID;
|
||||
protocol = Redirect.protocol(archive);
|
||||
URL = new String("" + protocol + archive.domain + "/_/api/chan/post/?board=" + boardID + "&num=" + postID);
|
||||
if (!Redirect.securityCheck(URL)) {
|
||||
url = "" + protocol + archive.domain + "/_/api/chan/post/?board=" + boardID + "&num=" + postID;
|
||||
if (!Redirect.securityCheck(url)) {
|
||||
return '';
|
||||
}
|
||||
URL.archive = archive;
|
||||
return URL;
|
||||
return url;
|
||||
},
|
||||
file: function(archive, arg) {
|
||||
var boardID, filename;
|
||||
@ -14527,8 +14529,8 @@
|
||||
boardID = arg.boardID, postID = arg.postID;
|
||||
return "https://so.fgts.jp/report/?board=" + boardID + "&no=" + postID;
|
||||
},
|
||||
securityCheck: function(URL) {
|
||||
return /^https:\/\//.test(URL) || location.protocol === 'http:' || Conf['Except Archives from Encryption'];
|
||||
securityCheck: function(url) {
|
||||
return /^https:\/\//.test(url) || location.protocol === 'http:' || Conf['Exempt Archives from Encryption'];
|
||||
},
|
||||
navigate: function(dest, data, alternative) {
|
||||
var url;
|
||||
@ -16356,6 +16358,34 @@
|
||||
}
|
||||
};
|
||||
|
||||
ThreadLinks = {
|
||||
init: function() {
|
||||
if (!(g.VIEW === 'index' && Conf['Open Threads in New Tab'])) {
|
||||
return;
|
||||
}
|
||||
Post.callbacks.push({
|
||||
name: 'Thread Links',
|
||||
cb: this.node
|
||||
});
|
||||
return CatalogThread.callbacks.push({
|
||||
name: 'Thread Links',
|
||||
cb: this.catalogNode
|
||||
});
|
||||
},
|
||||
node: function() {
|
||||
if (this.isReply || this.isClone) {
|
||||
return;
|
||||
}
|
||||
return ThreadLinks.process($('.replylink', this.nodes.info));
|
||||
},
|
||||
catalogNode: function() {
|
||||
return ThreadLinks.process(this.nodes.thumb.parentNode);
|
||||
},
|
||||
process: function(link) {
|
||||
return link.target = '_blank';
|
||||
}
|
||||
};
|
||||
|
||||
Time = {
|
||||
init: function() {
|
||||
var ref;
|
||||
@ -19283,6 +19313,9 @@
|
||||
":root.hide-backlinks .backlink.filtered + .hashlink.filtered {\n" +
|
||||
" display: none;\n" +
|
||||
"}\n" +
|
||||
".postNum + .container::before {\n" +
|
||||
" content: \" \";\n" +
|
||||
"}\n" +
|
||||
".inline {\n" +
|
||||
" border: 1px solid;\n" +
|
||||
" display: table;\n" +
|
||||
@ -19946,17 +19979,12 @@
|
||||
" margin: 2px;\n" +
|
||||
" vertical-align: middle;\n" +
|
||||
"}\n" +
|
||||
".reply .menu-button, \n" +
|
||||
".op .menu-button,\n" +
|
||||
".post .menu-button,\n" +
|
||||
"#thread-watcher .menu-button {\n" +
|
||||
" margin-left: -1px !important;\n" +
|
||||
" width: 20px;\n" +
|
||||
" width: 18px;\n" +
|
||||
" height: 15px;\n" +
|
||||
" text-align: center;\n" +
|
||||
"}\n" +
|
||||
".menu-button + .container :first-child {\n" +
|
||||
" margin-left: -5px;\n" +
|
||||
"}\n" +
|
||||
"#menu {\n" +
|
||||
" position: fixed;\n" +
|
||||
" outline: none;\n" +
|
||||
@ -20365,9 +20393,6 @@
|
||||
":root.yotsuba #board-list a, :root.yotsuba #shortcuts a {\n" +
|
||||
" color: #800000;\n" +
|
||||
"}\n" +
|
||||
":root.yotsuba.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.yotsuba #fourchanx-settings fieldset, :root.yotsuba .section-main div::before {\n" +
|
||||
" border-color: #D9BFB7;\n" +
|
||||
@ -20444,9 +20469,6 @@
|
||||
":root.yotsuba-b #board-list a, :root.yotsuba-b #shortcuts a {\n" +
|
||||
" color: #34345C;\n" +
|
||||
"}\n" +
|
||||
":root.yotsuba-b.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.yotsuba-b #fourchanx-settings fieldset, :root.yotsuba-b .section-main div::before {\n" +
|
||||
" border-color: #B7C5D9;\n" +
|
||||
@ -20523,9 +20545,6 @@
|
||||
":root.futaba #header-bar a, :root.futaba #notifications a {\n" +
|
||||
" color: #800000;\n" +
|
||||
"}\n" +
|
||||
":root.futaba.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.futaba #fourchanx-settings fieldset, :root.futaba .section-main div::before {\n" +
|
||||
" border-color: #D9BFB7;\n" +
|
||||
@ -20597,9 +20616,6 @@
|
||||
":root.burichan #header-bar a, :root.burichan #header-bar #notifications a {\n" +
|
||||
" color: #34345C;\n" +
|
||||
"}\n" +
|
||||
":root.burichan.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.burichan #fourchanx-settings fieldset, :root.burichan .section-main div::before {\n" +
|
||||
" border-color: #B7C5D9;\n" +
|
||||
@ -20667,9 +20683,6 @@
|
||||
":root.tomorrow #header-bar a, :root.tomorrow #notifications a {\n" +
|
||||
" color: #81A2BE;\n" +
|
||||
"}\n" +
|
||||
":root.tomorrow.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(95,137,172,0.4);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.tomorrow #fourchanx-settings fieldset, :root.tomorrow .section-main div::before {\n" +
|
||||
" border-color: #111;\n" +
|
||||
@ -20820,9 +20833,6 @@
|
||||
":root.photon #header-bar a, :root.photon #notifications a {\n" +
|
||||
" color: #FF6600;\n" +
|
||||
"}\n" +
|
||||
":root.photon.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,51,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.photon #fourchanx-settings fieldset, :root.photon .section-main div::before {\n" +
|
||||
" border-color: #CCC;\n" +
|
||||
@ -20906,9 +20916,6 @@
|
||||
":root.spooky #board-list a, :root.spooky #shortcuts a {\n" +
|
||||
" color: #FE9600;\n" +
|
||||
"}\n" +
|
||||
":root.spooky.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.spooky #fourchanx-settings fieldset, :root.spooky .section-main div::before {\n" +
|
||||
" border-color: #707070;\n" +
|
||||
@ -21007,7 +21014,7 @@
|
||||
cssWWW: "#captcha-cnt {\n" +
|
||||
" height: auto;\n" +
|
||||
"}",
|
||||
features: [['Polyfill', Polyfill], ['Captcha Replacement', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Oekaki Links', QR.oekaki], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
features: [['Polyfill', Polyfill], ['Captcha Replacement', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Oekaki Links', QR.oekaki], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
};
|
||||
|
||||
Main.init();
|
||||
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.14.12
|
||||
// @version 1.11.15.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -117,7 +117,7 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, Notice, PSAHiding, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, Notice, PSAHiding, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
slice = [].slice,
|
||||
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
||||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
@ -130,6 +130,7 @@
|
||||
'JSON Navigation': [true, 'Replace the original board index with one supporting searching, sorting, infinite scrolling, and a catalog mode.'],
|
||||
'Use 4chan X Catalog': [true, 'Link to 4chan X\'s catalog instead of the native 4chan one.', 1],
|
||||
'Index Refresh Notifications': [false, 'Show a notice at the top of the page when the index is refreshed.', 1],
|
||||
'Open Threads in New Tab': [false, 'Make links to threads in the index / 4chan X catalog open in a new tab.'],
|
||||
'External Catalog': [false, 'Link to external catalog instead of the internal one.'],
|
||||
'Catalog Links': [false, 'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.'],
|
||||
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.'],
|
||||
@ -414,7 +415,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.14.12',
|
||||
VERSION: '1.11.15.0',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -2243,9 +2244,9 @@
|
||||
}
|
||||
this.root.textContent = "Loading post No." + this.postID + "...";
|
||||
if (this.threadID) {
|
||||
$.cache("//a.4cdn.org/" + this.boardID + "/thread/" + this.threadID + ".json", (function(self) {
|
||||
return function() {
|
||||
return self.fetchedPost(this);
|
||||
$.cache("//a.4cdn.org/" + this.boardID + "/thread/" + this.threadID + ".json", (function(_this) {
|
||||
return function(e) {
|
||||
return _this.fetchedPost(e.target);
|
||||
};
|
||||
})(this));
|
||||
} else {
|
||||
@ -2297,9 +2298,9 @@
|
||||
$.cleanCache(function(url) {
|
||||
return url === api;
|
||||
});
|
||||
$.cache(api, (function(self) {
|
||||
return function() {
|
||||
return self.fetchedPost(this);
|
||||
$.cache(api, (function(_this) {
|
||||
return function(e) {
|
||||
return _this.fetchedPost(e.target);
|
||||
};
|
||||
})(this));
|
||||
return;
|
||||
@ -2320,7 +2321,7 @@
|
||||
};
|
||||
|
||||
Fetcher.prototype.archivedPost = function() {
|
||||
var url;
|
||||
var archive, url;
|
||||
if (!Conf['Resurrect Quotes']) {
|
||||
return false;
|
||||
}
|
||||
@ -2330,17 +2331,18 @@
|
||||
}))) {
|
||||
return false;
|
||||
}
|
||||
archive = Redirect.data.post[this.boardID];
|
||||
if (/^https:\/\//.test(url) || location.protocol === 'http:') {
|
||||
$.cache(url, (function(self) {
|
||||
return function() {
|
||||
return self.parseArchivedPost(this.response, url);
|
||||
$.cache(url, (function(_this) {
|
||||
return function(e) {
|
||||
return _this.parseArchivedPost(e.target.response, url);
|
||||
};
|
||||
})(this), {
|
||||
responseType: 'json',
|
||||
withCredentials: url.archive.withCredentials
|
||||
withCredentials: archive.withCredentials
|
||||
});
|
||||
return true;
|
||||
} else if (Conf['Except Archives from Encryption']) {
|
||||
} else if (Conf['Exempt Archives from Encryption']) {
|
||||
CrossOrigin.json(url, (function(_this) {
|
||||
return function(response) {
|
||||
var key, media, ref;
|
||||
@ -2348,7 +2350,7 @@
|
||||
if (media) {
|
||||
for (key in media) {
|
||||
if (/_link$/.test(key)) {
|
||||
if (!((media[key] != null) && (ref = media[key].match(/^(http:\/\/[^\/]+\/)?/)[0], indexOf.call(url.archive.imagehosts, ref) >= 0))) {
|
||||
if (!((ref = media[key]) != null ? ref.match(/^http:\/\//) : void 0)) {
|
||||
delete media[key];
|
||||
}
|
||||
}
|
||||
@ -6117,7 +6119,8 @@
|
||||
}
|
||||
for (u = 0, len3 = containers.length; u < len3; u++) {
|
||||
container = containers[u];
|
||||
nodes = [$.tn(' '), link = a.cloneNode(true)];
|
||||
link = a.cloneNode(true);
|
||||
nodes = container.firstChild ? [$.tn(' '), link] : [link];
|
||||
if (Conf['Quote Previewing']) {
|
||||
$.on(link, 'mouseover', QuotePreview.mouseover);
|
||||
}
|
||||
@ -14489,15 +14492,14 @@
|
||||
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + path;
|
||||
},
|
||||
post: function(archive, arg) {
|
||||
var URL, boardID, postID, protocol;
|
||||
var boardID, postID, protocol, url;
|
||||
boardID = arg.boardID, postID = arg.postID;
|
||||
protocol = Redirect.protocol(archive);
|
||||
URL = new String("" + protocol + archive.domain + "/_/api/chan/post/?board=" + boardID + "&num=" + postID);
|
||||
if (!Redirect.securityCheck(URL)) {
|
||||
url = "" + protocol + archive.domain + "/_/api/chan/post/?board=" + boardID + "&num=" + postID;
|
||||
if (!Redirect.securityCheck(url)) {
|
||||
return '';
|
||||
}
|
||||
URL.archive = archive;
|
||||
return URL;
|
||||
return url;
|
||||
},
|
||||
file: function(archive, arg) {
|
||||
var boardID, filename;
|
||||
@ -14527,8 +14529,8 @@
|
||||
boardID = arg.boardID, postID = arg.postID;
|
||||
return "https://so.fgts.jp/report/?board=" + boardID + "&no=" + postID;
|
||||
},
|
||||
securityCheck: function(URL) {
|
||||
return /^https:\/\//.test(URL) || location.protocol === 'http:' || Conf['Except Archives from Encryption'];
|
||||
securityCheck: function(url) {
|
||||
return /^https:\/\//.test(url) || location.protocol === 'http:' || Conf['Exempt Archives from Encryption'];
|
||||
},
|
||||
navigate: function(dest, data, alternative) {
|
||||
var url;
|
||||
@ -16356,6 +16358,34 @@
|
||||
}
|
||||
};
|
||||
|
||||
ThreadLinks = {
|
||||
init: function() {
|
||||
if (!(g.VIEW === 'index' && Conf['Open Threads in New Tab'])) {
|
||||
return;
|
||||
}
|
||||
Post.callbacks.push({
|
||||
name: 'Thread Links',
|
||||
cb: this.node
|
||||
});
|
||||
return CatalogThread.callbacks.push({
|
||||
name: 'Thread Links',
|
||||
cb: this.catalogNode
|
||||
});
|
||||
},
|
||||
node: function() {
|
||||
if (this.isReply || this.isClone) {
|
||||
return;
|
||||
}
|
||||
return ThreadLinks.process($('.replylink', this.nodes.info));
|
||||
},
|
||||
catalogNode: function() {
|
||||
return ThreadLinks.process(this.nodes.thumb.parentNode);
|
||||
},
|
||||
process: function(link) {
|
||||
return link.target = '_blank';
|
||||
}
|
||||
};
|
||||
|
||||
Time = {
|
||||
init: function() {
|
||||
var ref;
|
||||
@ -19283,6 +19313,9 @@
|
||||
":root.hide-backlinks .backlink.filtered + .hashlink.filtered {\n" +
|
||||
" display: none;\n" +
|
||||
"}\n" +
|
||||
".postNum + .container::before {\n" +
|
||||
" content: \" \";\n" +
|
||||
"}\n" +
|
||||
".inline {\n" +
|
||||
" border: 1px solid;\n" +
|
||||
" display: table;\n" +
|
||||
@ -19946,17 +19979,12 @@
|
||||
" margin: 2px;\n" +
|
||||
" vertical-align: middle;\n" +
|
||||
"}\n" +
|
||||
".reply .menu-button, \n" +
|
||||
".op .menu-button,\n" +
|
||||
".post .menu-button,\n" +
|
||||
"#thread-watcher .menu-button {\n" +
|
||||
" margin-left: -1px !important;\n" +
|
||||
" width: 20px;\n" +
|
||||
" width: 18px;\n" +
|
||||
" height: 15px;\n" +
|
||||
" text-align: center;\n" +
|
||||
"}\n" +
|
||||
".menu-button + .container :first-child {\n" +
|
||||
" margin-left: -5px;\n" +
|
||||
"}\n" +
|
||||
"#menu {\n" +
|
||||
" position: fixed;\n" +
|
||||
" outline: none;\n" +
|
||||
@ -20365,9 +20393,6 @@
|
||||
":root.yotsuba #board-list a, :root.yotsuba #shortcuts a {\n" +
|
||||
" color: #800000;\n" +
|
||||
"}\n" +
|
||||
":root.yotsuba.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.yotsuba #fourchanx-settings fieldset, :root.yotsuba .section-main div::before {\n" +
|
||||
" border-color: #D9BFB7;\n" +
|
||||
@ -20444,9 +20469,6 @@
|
||||
":root.yotsuba-b #board-list a, :root.yotsuba-b #shortcuts a {\n" +
|
||||
" color: #34345C;\n" +
|
||||
"}\n" +
|
||||
":root.yotsuba-b.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.yotsuba-b #fourchanx-settings fieldset, :root.yotsuba-b .section-main div::before {\n" +
|
||||
" border-color: #B7C5D9;\n" +
|
||||
@ -20523,9 +20545,6 @@
|
||||
":root.futaba #header-bar a, :root.futaba #notifications a {\n" +
|
||||
" color: #800000;\n" +
|
||||
"}\n" +
|
||||
":root.futaba.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.futaba #fourchanx-settings fieldset, :root.futaba .section-main div::before {\n" +
|
||||
" border-color: #D9BFB7;\n" +
|
||||
@ -20597,9 +20616,6 @@
|
||||
":root.burichan #header-bar a, :root.burichan #header-bar #notifications a {\n" +
|
||||
" color: #34345C;\n" +
|
||||
"}\n" +
|
||||
":root.burichan.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.burichan #fourchanx-settings fieldset, :root.burichan .section-main div::before {\n" +
|
||||
" border-color: #B7C5D9;\n" +
|
||||
@ -20667,9 +20683,6 @@
|
||||
":root.tomorrow #header-bar a, :root.tomorrow #notifications a {\n" +
|
||||
" color: #81A2BE;\n" +
|
||||
"}\n" +
|
||||
":root.tomorrow.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(95,137,172,0.4);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.tomorrow #fourchanx-settings fieldset, :root.tomorrow .section-main div::before {\n" +
|
||||
" border-color: #111;\n" +
|
||||
@ -20820,9 +20833,6 @@
|
||||
":root.photon #header-bar a, :root.photon #notifications a {\n" +
|
||||
" color: #FF6600;\n" +
|
||||
"}\n" +
|
||||
":root.photon.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,51,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.photon #fourchanx-settings fieldset, :root.photon .section-main div::before {\n" +
|
||||
" border-color: #CCC;\n" +
|
||||
@ -20906,9 +20916,6 @@
|
||||
":root.spooky #board-list a, :root.spooky #shortcuts a {\n" +
|
||||
" color: #FE9600;\n" +
|
||||
"}\n" +
|
||||
":root.spooky.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.spooky #fourchanx-settings fieldset, :root.spooky .section-main div::before {\n" +
|
||||
" border-color: #707070;\n" +
|
||||
@ -21007,7 +21014,7 @@
|
||||
cssWWW: "#captcha-cnt {\n" +
|
||||
" height: auto;\n" +
|
||||
"}",
|
||||
features: [['Polyfill', Polyfill], ['Captcha Replacement', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Oekaki Links', QR.oekaki], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
features: [['Polyfill', Polyfill], ['Captcha Replacement', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Oekaki Links', QR.oekaki], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
};
|
||||
|
||||
Main.init();
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.14.12
|
||||
// @version 1.11.15.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.14.12
|
||||
// @version 1.11.15.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -117,7 +117,7 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, Notice, PSAHiding, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, Notice, PSAHiding, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
slice = [].slice,
|
||||
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
||||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
@ -130,6 +130,7 @@
|
||||
'JSON Navigation': [true, 'Replace the original board index with one supporting searching, sorting, infinite scrolling, and a catalog mode.'],
|
||||
'Use 4chan X Catalog': [true, 'Link to 4chan X\'s catalog instead of the native 4chan one.', 1],
|
||||
'Index Refresh Notifications': [false, 'Show a notice at the top of the page when the index is refreshed.', 1],
|
||||
'Open Threads in New Tab': [false, 'Make links to threads in the index / 4chan X catalog open in a new tab.'],
|
||||
'External Catalog': [false, 'Link to external catalog instead of the internal one.'],
|
||||
'Catalog Links': [false, 'Add toggle link in header menu to turn Navigation links into links to each board\'s catalog.'],
|
||||
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.'],
|
||||
@ -414,7 +415,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.14.12',
|
||||
VERSION: '1.11.15.0',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -2243,9 +2244,9 @@
|
||||
}
|
||||
this.root.textContent = "Loading post No." + this.postID + "...";
|
||||
if (this.threadID) {
|
||||
$.cache("//a.4cdn.org/" + this.boardID + "/thread/" + this.threadID + ".json", (function(self) {
|
||||
return function() {
|
||||
return self.fetchedPost(this);
|
||||
$.cache("//a.4cdn.org/" + this.boardID + "/thread/" + this.threadID + ".json", (function(_this) {
|
||||
return function(e) {
|
||||
return _this.fetchedPost(e.target);
|
||||
};
|
||||
})(this));
|
||||
} else {
|
||||
@ -2297,9 +2298,9 @@
|
||||
$.cleanCache(function(url) {
|
||||
return url === api;
|
||||
});
|
||||
$.cache(api, (function(self) {
|
||||
return function() {
|
||||
return self.fetchedPost(this);
|
||||
$.cache(api, (function(_this) {
|
||||
return function(e) {
|
||||
return _this.fetchedPost(e.target);
|
||||
};
|
||||
})(this));
|
||||
return;
|
||||
@ -2320,7 +2321,7 @@
|
||||
};
|
||||
|
||||
Fetcher.prototype.archivedPost = function() {
|
||||
var url;
|
||||
var archive, url;
|
||||
if (!Conf['Resurrect Quotes']) {
|
||||
return false;
|
||||
}
|
||||
@ -2330,17 +2331,18 @@
|
||||
}))) {
|
||||
return false;
|
||||
}
|
||||
archive = Redirect.data.post[this.boardID];
|
||||
if (/^https:\/\//.test(url) || location.protocol === 'http:') {
|
||||
$.cache(url, (function(self) {
|
||||
return function() {
|
||||
return self.parseArchivedPost(this.response, url);
|
||||
$.cache(url, (function(_this) {
|
||||
return function(e) {
|
||||
return _this.parseArchivedPost(e.target.response, url);
|
||||
};
|
||||
})(this), {
|
||||
responseType: 'json',
|
||||
withCredentials: url.archive.withCredentials
|
||||
withCredentials: archive.withCredentials
|
||||
});
|
||||
return true;
|
||||
} else if (Conf['Except Archives from Encryption']) {
|
||||
} else if (Conf['Exempt Archives from Encryption']) {
|
||||
CrossOrigin.json(url, (function(_this) {
|
||||
return function(response) {
|
||||
var key, media, ref;
|
||||
@ -2348,7 +2350,7 @@
|
||||
if (media) {
|
||||
for (key in media) {
|
||||
if (/_link$/.test(key)) {
|
||||
if (!((media[key] != null) && (ref = media[key].match(/^(http:\/\/[^\/]+\/)?/)[0], indexOf.call(url.archive.imagehosts, ref) >= 0))) {
|
||||
if (!((ref = media[key]) != null ? ref.match(/^http:\/\//) : void 0)) {
|
||||
delete media[key];
|
||||
}
|
||||
}
|
||||
@ -6117,7 +6119,8 @@
|
||||
}
|
||||
for (u = 0, len3 = containers.length; u < len3; u++) {
|
||||
container = containers[u];
|
||||
nodes = [$.tn(' '), link = a.cloneNode(true)];
|
||||
link = a.cloneNode(true);
|
||||
nodes = container.firstChild ? [$.tn(' '), link] : [link];
|
||||
if (Conf['Quote Previewing']) {
|
||||
$.on(link, 'mouseover', QuotePreview.mouseover);
|
||||
}
|
||||
@ -14489,15 +14492,14 @@
|
||||
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + path;
|
||||
},
|
||||
post: function(archive, arg) {
|
||||
var URL, boardID, postID, protocol;
|
||||
var boardID, postID, protocol, url;
|
||||
boardID = arg.boardID, postID = arg.postID;
|
||||
protocol = Redirect.protocol(archive);
|
||||
URL = new String("" + protocol + archive.domain + "/_/api/chan/post/?board=" + boardID + "&num=" + postID);
|
||||
if (!Redirect.securityCheck(URL)) {
|
||||
url = "" + protocol + archive.domain + "/_/api/chan/post/?board=" + boardID + "&num=" + postID;
|
||||
if (!Redirect.securityCheck(url)) {
|
||||
return '';
|
||||
}
|
||||
URL.archive = archive;
|
||||
return URL;
|
||||
return url;
|
||||
},
|
||||
file: function(archive, arg) {
|
||||
var boardID, filename;
|
||||
@ -14527,8 +14529,8 @@
|
||||
boardID = arg.boardID, postID = arg.postID;
|
||||
return "https://so.fgts.jp/report/?board=" + boardID + "&no=" + postID;
|
||||
},
|
||||
securityCheck: function(URL) {
|
||||
return /^https:\/\//.test(URL) || location.protocol === 'http:' || Conf['Except Archives from Encryption'];
|
||||
securityCheck: function(url) {
|
||||
return /^https:\/\//.test(url) || location.protocol === 'http:' || Conf['Exempt Archives from Encryption'];
|
||||
},
|
||||
navigate: function(dest, data, alternative) {
|
||||
var url;
|
||||
@ -16356,6 +16358,34 @@
|
||||
}
|
||||
};
|
||||
|
||||
ThreadLinks = {
|
||||
init: function() {
|
||||
if (!(g.VIEW === 'index' && Conf['Open Threads in New Tab'])) {
|
||||
return;
|
||||
}
|
||||
Post.callbacks.push({
|
||||
name: 'Thread Links',
|
||||
cb: this.node
|
||||
});
|
||||
return CatalogThread.callbacks.push({
|
||||
name: 'Thread Links',
|
||||
cb: this.catalogNode
|
||||
});
|
||||
},
|
||||
node: function() {
|
||||
if (this.isReply || this.isClone) {
|
||||
return;
|
||||
}
|
||||
return ThreadLinks.process($('.replylink', this.nodes.info));
|
||||
},
|
||||
catalogNode: function() {
|
||||
return ThreadLinks.process(this.nodes.thumb.parentNode);
|
||||
},
|
||||
process: function(link) {
|
||||
return link.target = '_blank';
|
||||
}
|
||||
};
|
||||
|
||||
Time = {
|
||||
init: function() {
|
||||
var ref;
|
||||
@ -19283,6 +19313,9 @@
|
||||
":root.hide-backlinks .backlink.filtered + .hashlink.filtered {\n" +
|
||||
" display: none;\n" +
|
||||
"}\n" +
|
||||
".postNum + .container::before {\n" +
|
||||
" content: \" \";\n" +
|
||||
"}\n" +
|
||||
".inline {\n" +
|
||||
" border: 1px solid;\n" +
|
||||
" display: table;\n" +
|
||||
@ -19946,17 +19979,12 @@
|
||||
" margin: 2px;\n" +
|
||||
" vertical-align: middle;\n" +
|
||||
"}\n" +
|
||||
".reply .menu-button, \n" +
|
||||
".op .menu-button,\n" +
|
||||
".post .menu-button,\n" +
|
||||
"#thread-watcher .menu-button {\n" +
|
||||
" margin-left: -1px !important;\n" +
|
||||
" width: 20px;\n" +
|
||||
" width: 18px;\n" +
|
||||
" height: 15px;\n" +
|
||||
" text-align: center;\n" +
|
||||
"}\n" +
|
||||
".menu-button + .container :first-child {\n" +
|
||||
" margin-left: -5px;\n" +
|
||||
"}\n" +
|
||||
"#menu {\n" +
|
||||
" position: fixed;\n" +
|
||||
" outline: none;\n" +
|
||||
@ -20365,9 +20393,6 @@
|
||||
":root.yotsuba #board-list a, :root.yotsuba #shortcuts a {\n" +
|
||||
" color: #800000;\n" +
|
||||
"}\n" +
|
||||
":root.yotsuba.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.yotsuba #fourchanx-settings fieldset, :root.yotsuba .section-main div::before {\n" +
|
||||
" border-color: #D9BFB7;\n" +
|
||||
@ -20444,9 +20469,6 @@
|
||||
":root.yotsuba-b #board-list a, :root.yotsuba-b #shortcuts a {\n" +
|
||||
" color: #34345C;\n" +
|
||||
"}\n" +
|
||||
":root.yotsuba-b.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.yotsuba-b #fourchanx-settings fieldset, :root.yotsuba-b .section-main div::before {\n" +
|
||||
" border-color: #B7C5D9;\n" +
|
||||
@ -20523,9 +20545,6 @@
|
||||
":root.futaba #header-bar a, :root.futaba #notifications a {\n" +
|
||||
" color: #800000;\n" +
|
||||
"}\n" +
|
||||
":root.futaba.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.futaba #fourchanx-settings fieldset, :root.futaba .section-main div::before {\n" +
|
||||
" border-color: #D9BFB7;\n" +
|
||||
@ -20597,9 +20616,6 @@
|
||||
":root.burichan #header-bar a, :root.burichan #header-bar #notifications a {\n" +
|
||||
" color: #34345C;\n" +
|
||||
"}\n" +
|
||||
":root.burichan.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.burichan #fourchanx-settings fieldset, :root.burichan .section-main div::before {\n" +
|
||||
" border-color: #B7C5D9;\n" +
|
||||
@ -20667,9 +20683,6 @@
|
||||
":root.tomorrow #header-bar a, :root.tomorrow #notifications a {\n" +
|
||||
" color: #81A2BE;\n" +
|
||||
"}\n" +
|
||||
":root.tomorrow.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(95,137,172,0.4);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.tomorrow #fourchanx-settings fieldset, :root.tomorrow .section-main div::before {\n" +
|
||||
" border-color: #111;\n" +
|
||||
@ -20820,9 +20833,6 @@
|
||||
":root.photon #header-bar a, :root.photon #notifications a {\n" +
|
||||
" color: #FF6600;\n" +
|
||||
"}\n" +
|
||||
":root.photon.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,51,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.photon #fourchanx-settings fieldset, :root.photon .section-main div::before {\n" +
|
||||
" border-color: #CCC;\n" +
|
||||
@ -20906,9 +20916,6 @@
|
||||
":root.spooky #board-list a, :root.spooky #shortcuts a {\n" +
|
||||
" color: #FE9600;\n" +
|
||||
"}\n" +
|
||||
":root.spooky.fixed #custom-board-list .current:hover {\n" +
|
||||
" border-bottom-color: rgba(255,0,0,0.2);\n" +
|
||||
"}\n" +
|
||||
"/* Settings */\n" +
|
||||
":root.spooky #fourchanx-settings fieldset, :root.spooky .section-main div::before {\n" +
|
||||
" border-color: #707070;\n" +
|
||||
@ -21007,7 +21014,7 @@
|
||||
cssWWW: "#captcha-cnt {\n" +
|
||||
" height: auto;\n" +
|
||||
"}",
|
||||
features: [['Polyfill', Polyfill], ['Captcha Replacement', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Oekaki Links', QR.oekaki], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
features: [['Polyfill', Polyfill], ['Captcha Replacement', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Oekaki Links', QR.oekaki], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
};
|
||||
|
||||
Main.init();
|
||||
|
||||
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://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.11.14.12' />
|
||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.11.15.0' />
|
||||
</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://www.4chan-x.net/builds/4chan-X.crx' version='1.11.14.12' />
|
||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.11.15.0' />
|
||||
</app>
|
||||
</gupdate>
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
"version": "1.11.14.12",
|
||||
"date": "2015-11-01T00:02:41.314Z"
|
||||
"version": "1.11.15.0",
|
||||
"date": "2015-11-01T21:27:18.269Z"
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user