Release 4chan X v1.10.9.0.
This commit is contained in:
parent
52dfc296cf
commit
194f088587
@ -2,6 +2,13 @@ Sometimes the changelog has notes (not comprehensive) acknowledging people's wor
|
||||
|
||||
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.10.9
|
||||
|
||||
**v1.10.9.0** *(2015-04-15)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.9.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.9.0/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
- Based on v1.10.8.10.
|
||||
- Support reporting posts to fgts archive.
|
||||
- Add capcode to archive search menu.
|
||||
|
||||
### v1.10.8
|
||||
|
||||
**v1.10.8.10** *(2015-04-13)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.8.10/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.8.10/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.10.8.10
|
||||
// @version 1.10.9.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.10.8.10
|
||||
// @version 1.10.9.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -109,7 +109,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, 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, 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; },
|
||||
@ -127,6 +127,7 @@
|
||||
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.'],
|
||||
'Desktop Notifications': [true, 'Enables desktop notifications across various 4chan X features.'],
|
||||
'404 Redirect': [true, 'Redirect dead threads and images to the archives.'],
|
||||
'Archive Report': [true, 'Enable reporting posts to supported archives.'],
|
||||
'Except Archives from Encryption': [false, 'Permit loading content from, and warningless redirects to, HTTP-only archives from HTTPS pages.'],
|
||||
'Keybinds': [true, 'Bind actions to keyboard shortcuts.'],
|
||||
'Time Formatting': [true, 'Localize and format timestamps.'],
|
||||
@ -396,7 +397,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.10.8.10',
|
||||
VERSION: '1.10.9.0',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -5070,18 +5071,18 @@
|
||||
},
|
||||
node: function() {
|
||||
var filter, k, key, len1, ref, ref1, result, value;
|
||||
if (this.isClone || this.isFetchedQuote) {
|
||||
if (this.isClone) {
|
||||
return;
|
||||
}
|
||||
for (key in Filter.filters) {
|
||||
if ((value = Filter[key](this)) !== false) {
|
||||
if ((value = Filter[key](this)) != null) {
|
||||
ref = Filter.filters[key];
|
||||
for (k = 0, len1 = ref.length; k < len1; k++) {
|
||||
filter = ref[k];
|
||||
if (!(result = filter(value, this.isReply))) {
|
||||
continue;
|
||||
}
|
||||
if (result.hide) {
|
||||
if (result.hide && !this.isFetchedQuote) {
|
||||
if (this.isReply) {
|
||||
PostHiding.hide(this, result.stub);
|
||||
} else if (g.VIEW === 'index') {
|
||||
@ -5103,73 +5104,41 @@
|
||||
}
|
||||
},
|
||||
name: function(post) {
|
||||
if ('name' in post.info) {
|
||||
return post.info.name;
|
||||
}
|
||||
return false;
|
||||
return post.info.name;
|
||||
},
|
||||
uniqueID: function(post) {
|
||||
if ('uniqueID' in post.info) {
|
||||
return post.info.uniqueID;
|
||||
}
|
||||
return false;
|
||||
return post.info.uniqueID;
|
||||
},
|
||||
tripcode: function(post) {
|
||||
if ('tripcode' in post.info) {
|
||||
return post.info.tripcode;
|
||||
}
|
||||
return false;
|
||||
return post.info.tripcode;
|
||||
},
|
||||
capcode: function(post) {
|
||||
if ('capcode' in post.info) {
|
||||
return post.info.capcode;
|
||||
}
|
||||
return false;
|
||||
return post.info.capcode;
|
||||
},
|
||||
subject: function(post) {
|
||||
if ('subject' in post.info) {
|
||||
return post.info.subject || false;
|
||||
}
|
||||
return false;
|
||||
return post.info.subject || void 0;
|
||||
},
|
||||
comment: function(post) {
|
||||
if ('comment' in post.info) {
|
||||
return post.info.comment;
|
||||
}
|
||||
return false;
|
||||
return post.info.comment;
|
||||
},
|
||||
flag: function(post) {
|
||||
if ('flag' in post.info) {
|
||||
return post.info.flag;
|
||||
}
|
||||
return false;
|
||||
return post.info.flag;
|
||||
},
|
||||
filename: function(post) {
|
||||
if (post.file) {
|
||||
return post.file.name;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.name : void 0;
|
||||
},
|
||||
dimensions: function(post) {
|
||||
var file;
|
||||
file = post.file;
|
||||
if (file != null ? file.dimensions : void 0) {
|
||||
return file.dimensions;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.dimensions : void 0;
|
||||
},
|
||||
filesize: function(post) {
|
||||
if (post.file) {
|
||||
return post.file.size;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.size : void 0;
|
||||
},
|
||||
MD5: function(post) {
|
||||
var ref;
|
||||
if ((ref = post.file) != null ? ref.MD5 : void 0) {
|
||||
return post.file.MD5;
|
||||
}
|
||||
return false;
|
||||
return (ref = post.file) != null ? ref.MD5 : void 0;
|
||||
},
|
||||
menu: {
|
||||
init: function() {
|
||||
@ -5209,7 +5178,7 @@
|
||||
open: function(post) {
|
||||
var value;
|
||||
value = Filter[type](post);
|
||||
return value !== false;
|
||||
return value != null;
|
||||
}
|
||||
};
|
||||
},
|
||||
@ -11444,7 +11413,7 @@
|
||||
},
|
||||
subEntries: []
|
||||
};
|
||||
ref1 = [['Post', 'post'], ['Name', 'name'], ['Tripcode', 'tripcode'], ['Subject', 'subject'], ['Filename', 'filename'], ['Image MD5', 'MD5']];
|
||||
ref1 = [['Post', 'post'], ['Name', 'name'], ['Tripcode', 'tripcode'], ['Capcode', 'capcode'], ['Subject', 'subject'], ['Filename', 'filename'], ['Image MD5', 'MD5']];
|
||||
for (k = 0, len1 = ref1.length; k < len1; k++) {
|
||||
type = ref1[k];
|
||||
entry.subEntries.push(this.createSubEntry(type[0], type[1]));
|
||||
@ -11711,17 +11680,19 @@
|
||||
el: a,
|
||||
order: 10,
|
||||
open: function(post) {
|
||||
ReportLink.post = post;
|
||||
return !post.isDead;
|
||||
ReportLink.url = !post.isDead ? "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post : Conf['Archive Report'] ? Redirect.to('report', {
|
||||
boardID: post.board.ID,
|
||||
postID: post.ID
|
||||
}) : void 0;
|
||||
return !!ReportLink.url;
|
||||
}
|
||||
});
|
||||
},
|
||||
report: function() {
|
||||
var id, post, set, url;
|
||||
post = ReportLink.post;
|
||||
url = "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post;
|
||||
var id, set, url;
|
||||
url = ReportLink.url;
|
||||
id = Date.now();
|
||||
set = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1,width=685,height=285";
|
||||
set = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1,width=685,height=320";
|
||||
return window.open(url, id, set);
|
||||
}
|
||||
};
|
||||
@ -13414,7 +13385,8 @@
|
||||
o = {
|
||||
thread: {},
|
||||
post: {},
|
||||
file: {}
|
||||
file: {},
|
||||
report: {}
|
||||
};
|
||||
archives = {};
|
||||
ref = Redirect.archives;
|
||||
@ -13424,17 +13396,19 @@
|
||||
archives[name] = data;
|
||||
for (q = 0, len2 = boards.length; q < len2; q++) {
|
||||
boardID = boards[q];
|
||||
if (!(!withCredentials)) {
|
||||
continue;
|
||||
if (!withCredentials) {
|
||||
if (!(boardID in o.thread)) {
|
||||
o.thread[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.post || software !== 'foolfuuka')) {
|
||||
o.post[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.file || indexOf.call(files, boardID) < 0)) {
|
||||
o.file[boardID] = data;
|
||||
}
|
||||
}
|
||||
if (!(boardID in o.thread)) {
|
||||
o.thread[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.post || software !== 'foolfuuka')) {
|
||||
o.post[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.file || indexOf.call(files, boardID) < 0)) {
|
||||
o.file[boardID] = data;
|
||||
if (name === 'fgts') {
|
||||
o.report[boardID] = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -13509,10 +13483,20 @@
|
||||
var boardID, path, type, value;
|
||||
boardID = arg.boardID, type = arg.type, value = arg.value;
|
||||
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
||||
if (type === 'capcode') {
|
||||
value = {
|
||||
'Developer': 'dev'
|
||||
}[value] || value.toLowerCase();
|
||||
}
|
||||
value = encodeURIComponent(value);
|
||||
path = archive.software === 'foolfuuka' ? boardID + "/search/" + type + "/" + value : boardID + "/?task=search2&search_" + (type === 'image' ? 'media_hash' : type) + "=" + value;
|
||||
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + path;
|
||||
},
|
||||
report: function(archive, arg) {
|
||||
var boardID, postID;
|
||||
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'];
|
||||
},
|
||||
@ -15232,6 +15216,38 @@
|
||||
}
|
||||
};
|
||||
|
||||
Report = {
|
||||
init: function() {
|
||||
var match, postID;
|
||||
if (!(Conf['Archive Report'] && /\bmode=report\b/.test(location.search))) {
|
||||
return;
|
||||
}
|
||||
if (!(match = location.search.match(/\bno=(\d+)/))) {
|
||||
return;
|
||||
}
|
||||
postID = +match[1];
|
||||
Redirect.init();
|
||||
if (this.archive = Redirect.to('report', {
|
||||
boardID: g.BOARD.ID,
|
||||
postID: postID
|
||||
})) {
|
||||
return $.ready(this.ready);
|
||||
}
|
||||
},
|
||||
ready: function() {
|
||||
var link, message;
|
||||
if ((message = $('h3')) && /Report submitted!/.test(message.textContent)) {
|
||||
location.replace(Report.archive);
|
||||
return;
|
||||
}
|
||||
link = $.el('a', {
|
||||
href: Report.archive,
|
||||
textContent: 'Report to fgts'
|
||||
});
|
||||
return $.add(d.body, [$.tn(' ['), link, $.tn(']')]);
|
||||
}
|
||||
};
|
||||
|
||||
Time = {
|
||||
init: function() {
|
||||
var ref;
|
||||
@ -16100,6 +16116,7 @@
|
||||
case 'a.4cdn.org':
|
||||
return;
|
||||
case 'sys.4chan.org':
|
||||
Report.init();
|
||||
if (g.VIEW === 'post') {
|
||||
PostSuccessful.init();
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.10.8.10
|
||||
// @version 1.10.9.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -108,7 +108,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, 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, 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; },
|
||||
@ -126,6 +126,7 @@
|
||||
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.'],
|
||||
'Desktop Notifications': [true, 'Enables desktop notifications across various 4chan X features.'],
|
||||
'404 Redirect': [true, 'Redirect dead threads and images to the archives.'],
|
||||
'Archive Report': [true, 'Enable reporting posts to supported archives.'],
|
||||
'Except Archives from Encryption': [false, 'Permit loading content from, and warningless redirects to, HTTP-only archives from HTTPS pages.'],
|
||||
'Keybinds': [true, 'Bind actions to keyboard shortcuts.'],
|
||||
'Time Formatting': [true, 'Localize and format timestamps.'],
|
||||
@ -395,7 +396,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.10.8.10',
|
||||
VERSION: '1.10.9.0',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -5069,18 +5070,18 @@
|
||||
},
|
||||
node: function() {
|
||||
var filter, k, key, len1, ref, ref1, result, value;
|
||||
if (this.isClone || this.isFetchedQuote) {
|
||||
if (this.isClone) {
|
||||
return;
|
||||
}
|
||||
for (key in Filter.filters) {
|
||||
if ((value = Filter[key](this)) !== false) {
|
||||
if ((value = Filter[key](this)) != null) {
|
||||
ref = Filter.filters[key];
|
||||
for (k = 0, len1 = ref.length; k < len1; k++) {
|
||||
filter = ref[k];
|
||||
if (!(result = filter(value, this.isReply))) {
|
||||
continue;
|
||||
}
|
||||
if (result.hide) {
|
||||
if (result.hide && !this.isFetchedQuote) {
|
||||
if (this.isReply) {
|
||||
PostHiding.hide(this, result.stub);
|
||||
} else if (g.VIEW === 'index') {
|
||||
@ -5102,73 +5103,41 @@
|
||||
}
|
||||
},
|
||||
name: function(post) {
|
||||
if ('name' in post.info) {
|
||||
return post.info.name;
|
||||
}
|
||||
return false;
|
||||
return post.info.name;
|
||||
},
|
||||
uniqueID: function(post) {
|
||||
if ('uniqueID' in post.info) {
|
||||
return post.info.uniqueID;
|
||||
}
|
||||
return false;
|
||||
return post.info.uniqueID;
|
||||
},
|
||||
tripcode: function(post) {
|
||||
if ('tripcode' in post.info) {
|
||||
return post.info.tripcode;
|
||||
}
|
||||
return false;
|
||||
return post.info.tripcode;
|
||||
},
|
||||
capcode: function(post) {
|
||||
if ('capcode' in post.info) {
|
||||
return post.info.capcode;
|
||||
}
|
||||
return false;
|
||||
return post.info.capcode;
|
||||
},
|
||||
subject: function(post) {
|
||||
if ('subject' in post.info) {
|
||||
return post.info.subject || false;
|
||||
}
|
||||
return false;
|
||||
return post.info.subject || void 0;
|
||||
},
|
||||
comment: function(post) {
|
||||
if ('comment' in post.info) {
|
||||
return post.info.comment;
|
||||
}
|
||||
return false;
|
||||
return post.info.comment;
|
||||
},
|
||||
flag: function(post) {
|
||||
if ('flag' in post.info) {
|
||||
return post.info.flag;
|
||||
}
|
||||
return false;
|
||||
return post.info.flag;
|
||||
},
|
||||
filename: function(post) {
|
||||
if (post.file) {
|
||||
return post.file.name;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.name : void 0;
|
||||
},
|
||||
dimensions: function(post) {
|
||||
var file;
|
||||
file = post.file;
|
||||
if (file != null ? file.dimensions : void 0) {
|
||||
return file.dimensions;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.dimensions : void 0;
|
||||
},
|
||||
filesize: function(post) {
|
||||
if (post.file) {
|
||||
return post.file.size;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.size : void 0;
|
||||
},
|
||||
MD5: function(post) {
|
||||
var ref;
|
||||
if ((ref = post.file) != null ? ref.MD5 : void 0) {
|
||||
return post.file.MD5;
|
||||
}
|
||||
return false;
|
||||
return (ref = post.file) != null ? ref.MD5 : void 0;
|
||||
},
|
||||
menu: {
|
||||
init: function() {
|
||||
@ -5208,7 +5177,7 @@
|
||||
open: function(post) {
|
||||
var value;
|
||||
value = Filter[type](post);
|
||||
return value !== false;
|
||||
return value != null;
|
||||
}
|
||||
};
|
||||
},
|
||||
@ -11443,7 +11412,7 @@
|
||||
},
|
||||
subEntries: []
|
||||
};
|
||||
ref1 = [['Post', 'post'], ['Name', 'name'], ['Tripcode', 'tripcode'], ['Subject', 'subject'], ['Filename', 'filename'], ['Image MD5', 'MD5']];
|
||||
ref1 = [['Post', 'post'], ['Name', 'name'], ['Tripcode', 'tripcode'], ['Capcode', 'capcode'], ['Subject', 'subject'], ['Filename', 'filename'], ['Image MD5', 'MD5']];
|
||||
for (k = 0, len1 = ref1.length; k < len1; k++) {
|
||||
type = ref1[k];
|
||||
entry.subEntries.push(this.createSubEntry(type[0], type[1]));
|
||||
@ -11710,17 +11679,19 @@
|
||||
el: a,
|
||||
order: 10,
|
||||
open: function(post) {
|
||||
ReportLink.post = post;
|
||||
return !post.isDead;
|
||||
ReportLink.url = !post.isDead ? "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post : Conf['Archive Report'] ? Redirect.to('report', {
|
||||
boardID: post.board.ID,
|
||||
postID: post.ID
|
||||
}) : void 0;
|
||||
return !!ReportLink.url;
|
||||
}
|
||||
});
|
||||
},
|
||||
report: function() {
|
||||
var id, post, set, url;
|
||||
post = ReportLink.post;
|
||||
url = "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post;
|
||||
var id, set, url;
|
||||
url = ReportLink.url;
|
||||
id = Date.now();
|
||||
set = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1,width=685,height=285";
|
||||
set = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1,width=685,height=320";
|
||||
return window.open(url, id, set);
|
||||
}
|
||||
};
|
||||
@ -13413,7 +13384,8 @@
|
||||
o = {
|
||||
thread: {},
|
||||
post: {},
|
||||
file: {}
|
||||
file: {},
|
||||
report: {}
|
||||
};
|
||||
archives = {};
|
||||
ref = Redirect.archives;
|
||||
@ -13423,17 +13395,19 @@
|
||||
archives[name] = data;
|
||||
for (q = 0, len2 = boards.length; q < len2; q++) {
|
||||
boardID = boards[q];
|
||||
if (!(!withCredentials)) {
|
||||
continue;
|
||||
if (!withCredentials) {
|
||||
if (!(boardID in o.thread)) {
|
||||
o.thread[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.post || software !== 'foolfuuka')) {
|
||||
o.post[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.file || indexOf.call(files, boardID) < 0)) {
|
||||
o.file[boardID] = data;
|
||||
}
|
||||
}
|
||||
if (!(boardID in o.thread)) {
|
||||
o.thread[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.post || software !== 'foolfuuka')) {
|
||||
o.post[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.file || indexOf.call(files, boardID) < 0)) {
|
||||
o.file[boardID] = data;
|
||||
if (name === 'fgts') {
|
||||
o.report[boardID] = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -13508,10 +13482,20 @@
|
||||
var boardID, path, type, value;
|
||||
boardID = arg.boardID, type = arg.type, value = arg.value;
|
||||
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
||||
if (type === 'capcode') {
|
||||
value = {
|
||||
'Developer': 'dev'
|
||||
}[value] || value.toLowerCase();
|
||||
}
|
||||
value = encodeURIComponent(value);
|
||||
path = archive.software === 'foolfuuka' ? boardID + "/search/" + type + "/" + value : boardID + "/?task=search2&search_" + (type === 'image' ? 'media_hash' : type) + "=" + value;
|
||||
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + path;
|
||||
},
|
||||
report: function(archive, arg) {
|
||||
var boardID, postID;
|
||||
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'];
|
||||
},
|
||||
@ -15231,6 +15215,38 @@
|
||||
}
|
||||
};
|
||||
|
||||
Report = {
|
||||
init: function() {
|
||||
var match, postID;
|
||||
if (!(Conf['Archive Report'] && /\bmode=report\b/.test(location.search))) {
|
||||
return;
|
||||
}
|
||||
if (!(match = location.search.match(/\bno=(\d+)/))) {
|
||||
return;
|
||||
}
|
||||
postID = +match[1];
|
||||
Redirect.init();
|
||||
if (this.archive = Redirect.to('report', {
|
||||
boardID: g.BOARD.ID,
|
||||
postID: postID
|
||||
})) {
|
||||
return $.ready(this.ready);
|
||||
}
|
||||
},
|
||||
ready: function() {
|
||||
var link, message;
|
||||
if ((message = $('h3')) && /Report submitted!/.test(message.textContent)) {
|
||||
location.replace(Report.archive);
|
||||
return;
|
||||
}
|
||||
link = $.el('a', {
|
||||
href: Report.archive,
|
||||
textContent: 'Report to fgts'
|
||||
});
|
||||
return $.add(d.body, [$.tn(' ['), link, $.tn(']')]);
|
||||
}
|
||||
};
|
||||
|
||||
Time = {
|
||||
init: function() {
|
||||
var ref;
|
||||
@ -16099,6 +16115,7 @@
|
||||
case 'a.4cdn.org':
|
||||
return;
|
||||
case 'sys.4chan.org':
|
||||
Report.init();
|
||||
if (g.VIEW === 'post') {
|
||||
PostSuccessful.init();
|
||||
}
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.10.8.10
|
||||
// @version 1.10.9.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.10.8.10
|
||||
// @version 1.10.9.0
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -109,7 +109,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, 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, 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; },
|
||||
@ -127,6 +127,7 @@
|
||||
'Announcement Hiding': [true, 'Add button to hide 4chan announcements.'],
|
||||
'Desktop Notifications': [true, 'Enables desktop notifications across various 4chan X features.'],
|
||||
'404 Redirect': [true, 'Redirect dead threads and images to the archives.'],
|
||||
'Archive Report': [true, 'Enable reporting posts to supported archives.'],
|
||||
'Except Archives from Encryption': [false, 'Permit loading content from, and warningless redirects to, HTTP-only archives from HTTPS pages.'],
|
||||
'Keybinds': [true, 'Bind actions to keyboard shortcuts.'],
|
||||
'Time Formatting': [true, 'Localize and format timestamps.'],
|
||||
@ -396,7 +397,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.10.8.10',
|
||||
VERSION: '1.10.9.0',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -5070,18 +5071,18 @@
|
||||
},
|
||||
node: function() {
|
||||
var filter, k, key, len1, ref, ref1, result, value;
|
||||
if (this.isClone || this.isFetchedQuote) {
|
||||
if (this.isClone) {
|
||||
return;
|
||||
}
|
||||
for (key in Filter.filters) {
|
||||
if ((value = Filter[key](this)) !== false) {
|
||||
if ((value = Filter[key](this)) != null) {
|
||||
ref = Filter.filters[key];
|
||||
for (k = 0, len1 = ref.length; k < len1; k++) {
|
||||
filter = ref[k];
|
||||
if (!(result = filter(value, this.isReply))) {
|
||||
continue;
|
||||
}
|
||||
if (result.hide) {
|
||||
if (result.hide && !this.isFetchedQuote) {
|
||||
if (this.isReply) {
|
||||
PostHiding.hide(this, result.stub);
|
||||
} else if (g.VIEW === 'index') {
|
||||
@ -5103,73 +5104,41 @@
|
||||
}
|
||||
},
|
||||
name: function(post) {
|
||||
if ('name' in post.info) {
|
||||
return post.info.name;
|
||||
}
|
||||
return false;
|
||||
return post.info.name;
|
||||
},
|
||||
uniqueID: function(post) {
|
||||
if ('uniqueID' in post.info) {
|
||||
return post.info.uniqueID;
|
||||
}
|
||||
return false;
|
||||
return post.info.uniqueID;
|
||||
},
|
||||
tripcode: function(post) {
|
||||
if ('tripcode' in post.info) {
|
||||
return post.info.tripcode;
|
||||
}
|
||||
return false;
|
||||
return post.info.tripcode;
|
||||
},
|
||||
capcode: function(post) {
|
||||
if ('capcode' in post.info) {
|
||||
return post.info.capcode;
|
||||
}
|
||||
return false;
|
||||
return post.info.capcode;
|
||||
},
|
||||
subject: function(post) {
|
||||
if ('subject' in post.info) {
|
||||
return post.info.subject || false;
|
||||
}
|
||||
return false;
|
||||
return post.info.subject || void 0;
|
||||
},
|
||||
comment: function(post) {
|
||||
if ('comment' in post.info) {
|
||||
return post.info.comment;
|
||||
}
|
||||
return false;
|
||||
return post.info.comment;
|
||||
},
|
||||
flag: function(post) {
|
||||
if ('flag' in post.info) {
|
||||
return post.info.flag;
|
||||
}
|
||||
return false;
|
||||
return post.info.flag;
|
||||
},
|
||||
filename: function(post) {
|
||||
if (post.file) {
|
||||
return post.file.name;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.name : void 0;
|
||||
},
|
||||
dimensions: function(post) {
|
||||
var file;
|
||||
file = post.file;
|
||||
if (file != null ? file.dimensions : void 0) {
|
||||
return file.dimensions;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.dimensions : void 0;
|
||||
},
|
||||
filesize: function(post) {
|
||||
if (post.file) {
|
||||
return post.file.size;
|
||||
}
|
||||
return false;
|
||||
var ref;
|
||||
return (ref = post.file) != null ? ref.size : void 0;
|
||||
},
|
||||
MD5: function(post) {
|
||||
var ref;
|
||||
if ((ref = post.file) != null ? ref.MD5 : void 0) {
|
||||
return post.file.MD5;
|
||||
}
|
||||
return false;
|
||||
return (ref = post.file) != null ? ref.MD5 : void 0;
|
||||
},
|
||||
menu: {
|
||||
init: function() {
|
||||
@ -5209,7 +5178,7 @@
|
||||
open: function(post) {
|
||||
var value;
|
||||
value = Filter[type](post);
|
||||
return value !== false;
|
||||
return value != null;
|
||||
}
|
||||
};
|
||||
},
|
||||
@ -11444,7 +11413,7 @@
|
||||
},
|
||||
subEntries: []
|
||||
};
|
||||
ref1 = [['Post', 'post'], ['Name', 'name'], ['Tripcode', 'tripcode'], ['Subject', 'subject'], ['Filename', 'filename'], ['Image MD5', 'MD5']];
|
||||
ref1 = [['Post', 'post'], ['Name', 'name'], ['Tripcode', 'tripcode'], ['Capcode', 'capcode'], ['Subject', 'subject'], ['Filename', 'filename'], ['Image MD5', 'MD5']];
|
||||
for (k = 0, len1 = ref1.length; k < len1; k++) {
|
||||
type = ref1[k];
|
||||
entry.subEntries.push(this.createSubEntry(type[0], type[1]));
|
||||
@ -11711,17 +11680,19 @@
|
||||
el: a,
|
||||
order: 10,
|
||||
open: function(post) {
|
||||
ReportLink.post = post;
|
||||
return !post.isDead;
|
||||
ReportLink.url = !post.isDead ? "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post : Conf['Archive Report'] ? Redirect.to('report', {
|
||||
boardID: post.board.ID,
|
||||
postID: post.ID
|
||||
}) : void 0;
|
||||
return !!ReportLink.url;
|
||||
}
|
||||
});
|
||||
},
|
||||
report: function() {
|
||||
var id, post, set, url;
|
||||
post = ReportLink.post;
|
||||
url = "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post;
|
||||
var id, set, url;
|
||||
url = ReportLink.url;
|
||||
id = Date.now();
|
||||
set = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1,width=685,height=285";
|
||||
set = "toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1,width=685,height=320";
|
||||
return window.open(url, id, set);
|
||||
}
|
||||
};
|
||||
@ -13414,7 +13385,8 @@
|
||||
o = {
|
||||
thread: {},
|
||||
post: {},
|
||||
file: {}
|
||||
file: {},
|
||||
report: {}
|
||||
};
|
||||
archives = {};
|
||||
ref = Redirect.archives;
|
||||
@ -13424,17 +13396,19 @@
|
||||
archives[name] = data;
|
||||
for (q = 0, len2 = boards.length; q < len2; q++) {
|
||||
boardID = boards[q];
|
||||
if (!(!withCredentials)) {
|
||||
continue;
|
||||
if (!withCredentials) {
|
||||
if (!(boardID in o.thread)) {
|
||||
o.thread[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.post || software !== 'foolfuuka')) {
|
||||
o.post[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.file || indexOf.call(files, boardID) < 0)) {
|
||||
o.file[boardID] = data;
|
||||
}
|
||||
}
|
||||
if (!(boardID in o.thread)) {
|
||||
o.thread[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.post || software !== 'foolfuuka')) {
|
||||
o.post[boardID] = data;
|
||||
}
|
||||
if (!(boardID in o.file || indexOf.call(files, boardID) < 0)) {
|
||||
o.file[boardID] = data;
|
||||
if (name === 'fgts') {
|
||||
o.report[boardID] = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -13509,10 +13483,20 @@
|
||||
var boardID, path, type, value;
|
||||
boardID = arg.boardID, type = arg.type, value = arg.value;
|
||||
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
||||
if (type === 'capcode') {
|
||||
value = {
|
||||
'Developer': 'dev'
|
||||
}[value] || value.toLowerCase();
|
||||
}
|
||||
value = encodeURIComponent(value);
|
||||
path = archive.software === 'foolfuuka' ? boardID + "/search/" + type + "/" + value : boardID + "/?task=search2&search_" + (type === 'image' ? 'media_hash' : type) + "=" + value;
|
||||
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + path;
|
||||
},
|
||||
report: function(archive, arg) {
|
||||
var boardID, postID;
|
||||
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'];
|
||||
},
|
||||
@ -15232,6 +15216,38 @@
|
||||
}
|
||||
};
|
||||
|
||||
Report = {
|
||||
init: function() {
|
||||
var match, postID;
|
||||
if (!(Conf['Archive Report'] && /\bmode=report\b/.test(location.search))) {
|
||||
return;
|
||||
}
|
||||
if (!(match = location.search.match(/\bno=(\d+)/))) {
|
||||
return;
|
||||
}
|
||||
postID = +match[1];
|
||||
Redirect.init();
|
||||
if (this.archive = Redirect.to('report', {
|
||||
boardID: g.BOARD.ID,
|
||||
postID: postID
|
||||
})) {
|
||||
return $.ready(this.ready);
|
||||
}
|
||||
},
|
||||
ready: function() {
|
||||
var link, message;
|
||||
if ((message = $('h3')) && /Report submitted!/.test(message.textContent)) {
|
||||
location.replace(Report.archive);
|
||||
return;
|
||||
}
|
||||
link = $.el('a', {
|
||||
href: Report.archive,
|
||||
textContent: 'Report to fgts'
|
||||
});
|
||||
return $.add(d.body, [$.tn(' ['), link, $.tn(']')]);
|
||||
}
|
||||
};
|
||||
|
||||
Time = {
|
||||
init: function() {
|
||||
var ref;
|
||||
@ -16100,6 +16116,7 @@
|
||||
case 'a.4cdn.org':
|
||||
return;
|
||||
case 'sys.4chan.org':
|
||||
Report.init();
|
||||
if (g.VIEW === 'post') {
|
||||
PostSuccessful.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://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.10.8.10' />
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.10.9.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://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.10.8.10' />
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.10.9.0' />
|
||||
</app>
|
||||
</gupdate>
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
"description": "Cross-browser userscript for maximum lurking on 4chan.",
|
||||
"meta": {
|
||||
"name": "4chan X",
|
||||
"version": "1.10.8.10",
|
||||
"date": "2015-04-14T03:57:38.704Z",
|
||||
"version": "1.10.9.0",
|
||||
"date": "2015-04-15T09:10:25.239Z",
|
||||
"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