Release 4chan X v1.7.36.

This commit is contained in:
ccd0 2014-05-13 00:34:24 -07:00
parent 7f900ce3d4
commit 8a18db8361
9 changed files with 137 additions and 236 deletions

View File

@ -1,3 +1,6 @@
### v1.7.36
*2014-05-13*
**ccd0**
- Fix an issue that allowed Javascript running on the page access to the Greasemonkey / Chrome extension APIs.
- Minor fixes.

View File

@ -1,5 +1,5 @@
/*
* 4chan X - Version 1.7.35 - 2014-05-12
* 4chan X - Version 1.7.36 - 2014-05-13
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE

View File

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

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.7.35
// @version 1.7.36
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -24,7 +24,7 @@
// ==/UserScript==
/*
* 4chan X - Version 1.7.35 - 2014-05-12
* 4chan X - Version 1.7.36 - 2014-05-13
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@ -372,7 +372,7 @@
doc = d.documentElement;
g = {
VERSION: '1.7.35',
VERSION: '1.7.36',
NAMESPACE: '4chan X.',
boards: {}
};
@ -3056,7 +3056,7 @@
threshold = isReply ? 30 : 40;
ext = filename.match(/\.?[^\.]*$/)[0];
if (filename.length - ext.length > threshold) {
return "" + filename.slice(0, threshold - 5) + "(...)." + ext;
return "" + filename.slice(0, threshold - 5) + "(...)" + ext;
} else {
return filename;
}
@ -3397,6 +3397,7 @@
$.cache(url, function() {
return Get.archivedPost(this, boardID, postID, root, context);
}, {
responseType: 'json',
withCredentials: url.archive.withCredentials
});
} else {
@ -4896,12 +4897,9 @@
QuoteBacklink = {
containers: {},
init: function() {
var format;
if (g.VIEW === 'catalog' || !Conf['Quote Backlinks']) {
return;
}
format = Conf['backlink'].replace(/%id/g, "' + id + '");
this.funk = Function('id', "return '" + format + "'");
Post.callbacks.push({
name: 'Quote Backlinking Part 1',
cb: this.firstNode
@ -4924,7 +4922,7 @@
a = $.el('a', {
href: "/" + this.board + "/thread/" + this.thread + "#p" + this,
className: this.isHidden ? 'filtered backlink' : 'backlink',
textContent: (QuoteBacklink.funk(this.ID)) + (markYours ? '\u00A0(You)' : '')
textContent: (Conf['backlink'].replace(/%id/, this.ID)) + (markYours ? '\u00A0(You)' : '')
});
_ref = this.quotes;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@ -8381,7 +8379,7 @@
link = _ref[_i];
try {
if (link[0] !== '#') {
links.push(this.createSauceLink(link.trim()));
links.push(link.trim());
}
} catch (_error) {
err = _error;
@ -8399,21 +8397,34 @@
cb: this.node
});
},
createSauceLink: function(link) {
var m, text;
link = link.replace(/%(T?URL|MD5|board|name)/g, function(parameter) {
var type;
return ((type = {
'%TURL': 'post.file.thumbURL',
'%URL': 'post.file.URL',
'%MD5': 'post.file.MD5',
'%board': 'post.board',
'%name': 'post.file.name'
}[parameter]) ? "' + encodeURIComponent(" + type + ") + '" : parameter);
});
text = (m = link.match(/;text:(.+)$/)) ? m[1] : link.match(/(\w+)\.\w+\//)[1];
createSauceLink: function(link, post, a) {
var i, m, parts, text, _i, _ref;
text = (m = link.match(/;text:(.+)$/)) ? m[1] : ((_ref = link.match(/(\w+)\.\w+\//)) != null ? _ref[1] : void 0) || '?';
link = link.replace(/;text:.+$/, '');
return Function('post', 'a', "a.href = '" + link + "';\na.textContent = '" + text + "';\nreturn a;");
parts = [link, text];
for (i = _i = 0; _i <= 1; i = ++_i) {
parts[i] = parts[i].replace(/%(T?URL|MD5|board|name)/g, function(parameter) {
var type;
if (type = {
'%TURL': post.file.thumbURL,
'%URL': post.file.URL,
'%MD5': post.file.MD5,
'%board': post.board,
'%name': post.file.name
}[parameter]) {
if (i === 0) {
return encodeURIComponent(type);
} else {
return type;
}
} else {
return parameter;
}
});
}
a.href = parts[0];
a.textContent = parts[1];
return a;
},
node: function() {
var link, nodes, _i, _len, _ref;
@ -8424,7 +8435,7 @@
_ref = Sauce.links;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
nodes.push($.tn('\u00A0'), link(this, Sauce.link.cloneNode(true)));
nodes.push($.tn('\u00A0'), Sauce.createSauceLink(link, this, Sauce.link.cloneNode(true)));
}
return $.add(this.file.text, nodes);
}
@ -10756,7 +10767,7 @@
}
return Redirect.data = o;
},
archives: [{"uid":0,"name":"Foolz","domain":"archive.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["a","biz","co","diy","gd","jp","m","sci","sp","tg","tv","vg","vp","vr","wsg"],"files":["a","biz","diy","gd","jp","m","sci","tg","vg","vp","vr","wsg"]},{"uid":1,"name":"NSFW Foolz","domain":"nsfw.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["u"],"files":["u"]},{"uid":2,"name":"The Dark Cave","domain":"archive.thedarkcave.org","http":true,"https":true,"software":"foolfuuka","boards":["c","int","out","po"],"files":["c","po"]},{"uid":3,"name":"4plebs Archive","domain":"archive.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["adv","hr","o","pol","s4s","tg","trv","tv","x"],"files":["adv","hr","o","pol","s4s","tg","trv","tv","x"]},{"uid":18,"name":"4plebs Flash Archive","domain":"flash.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["f"],"files":["f"]},{"uid":4,"name":"Nyafuu","domain":"archive.nyafuu.org","http":true,"https":true,"software":"foolfuuka","boards":["c","e","w","wg"],"files":["c","e","w","wg"]},{"uid":5,"name":"Love is Over","domain":"archive.loveisover.me","http":true,"https":true,"software":"foolfuuka","boards":["d","i","lgbt"],"files":["d","i","lgbt"]},{"uid":8,"name":"Rebecca Black Tech","domain":"rbt.asia","http":false,"https":true,"software":"fuuka","boards":["cgl","g","mu","w"],"files":["cgl","g","mu","w"]},{"uid":9,"name":"Heinessen","domain":"archive.heinessen.com","http":true,"https":false,"software":"fuuka","boards":["an","fit","k","mlp","r9k","toy"],"files":["an","fit","k","mlp","r9k","toy"]},{"uid":10,"name":"warosu","domain":"fuuka.warosu.org","http":false,"https":true,"software":"fuuka","boards":["3","biz","cgl","ck","diy","fa","g","ic","jp","lit","sci","tg","vr"],"files":["3","biz","cgl","ck","diy","fa","ic","jp","lit","sci","tg","vr"]},{"uid":15,"name":"fgts","domain":"fgts.eu","http":true,"https":true,"software":"foolfuuka","boards":["asp","cm","h","hc","hm","n","p","r","s","soc","y"],"files":["asp","cm","h","hc","hm","n","p","r","s","soc","y"]},{"uid":16,"name":"maware","domain":"archive.mawa.re","http":true,"https":false,"software":"foolfuuka","boards":["t"],"files":["t"]},{"uid":17,"name":"installgentoo.com","domain":"chan.installgentoo.com","http":true,"https":false,"software":"foolfuuka","boards":["g","t"],"files":["g","t"]},{"uid":19,"name":"Innovandalism Archive","domain":"boards.innovandalism.eu","http":true,"https":false,"software":"foolfuuka","boards":["v"],"files":[]},{"uid":13,"name":"Foolz Beta","domain":"beta.foolz.us","http":true,"https":true,"withCredentials":true,"software":"foolfuuka","boards":["a","biz","co","d","diy","gd","h","i","jp","m","mlp","s4s","sci","sp","tg","tv","u","v","vg","vp","vr","wsg"],"files":[]}],
archives: [{"uid":0,"name":"Foolz","domain":"archive.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["a","biz","co","diy","gd","jp","m","sci","sp","tg","tv","vg","vp","vr","wsg"],"files":["a","biz","diy","gd","jp","m","sci","tg","vg","vp","vr","wsg"]},{"uid":1,"name":"NSFW Foolz","domain":"nsfw.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["u"],"files":["u"]},{"uid":2,"name":"The Dark Cave","domain":"archive.thedarkcave.org","http":true,"https":true,"software":"foolfuuka","boards":["c","int","out","po"],"files":["c","po"]},{"uid":3,"name":"4plebs Archive","domain":"archive.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["adv","hr","o","pol","s4s","tg","trv","tv","x"],"files":["adv","hr","o","pol","s4s","tg","trv","tv","x"]},{"uid":18,"name":"4plebs Flash Archive","domain":"flash.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["f"],"files":["f"]},{"uid":4,"name":"Nyafuu","domain":"archive.nyafuu.org","http":true,"https":true,"software":"foolfuuka","boards":["c","e","w","wg"],"files":["c","e","w","wg"]},{"uid":5,"name":"Love is Over","domain":"archive.loveisover.me","http":true,"https":true,"software":"foolfuuka","boards":["d","i","lgbt"],"files":["d","i","lgbt"]},{"uid":8,"name":"Rebecca Black Tech","domain":"rbt.asia","http":false,"https":true,"software":"fuuka","boards":["cgl","g","mu","w"],"files":["cgl","g","mu","w"]},{"uid":9,"name":"Heinessen","domain":"archive.heinessen.com","http":true,"https":false,"software":"fuuka","boards":["an","fit","k","mlp","r9k","toy"],"files":["an","fit","k","mlp","r9k","toy"]},{"uid":10,"name":"warosu","domain":"fuuka.warosu.org","http":false,"https":true,"software":"fuuka","boards":["3","biz","cgl","ck","diy","fa","g","ic","jp","lit","sci","tg","vr"],"files":["3","biz","cgl","ck","diy","fa","ic","jp","lit","sci","tg","vr"]},{"uid":15,"name":"fgts","domain":"fgts.eu","http":true,"https":true,"software":"foolfuuka","boards":["asp","b","cm","h","hc","hm","n","p","r","s","soc","y"],"files":["asp","cm","h","hc","hm","n","p","r","s","soc","y"]},{"uid":16,"name":"maware","domain":"archive.mawa.re","http":true,"https":false,"software":"foolfuuka","boards":["t"],"files":["t"]},{"uid":17,"name":"installgentoo.com","domain":"chan.installgentoo.com","http":true,"https":false,"software":"foolfuuka","boards":["g","t"],"files":["g","t"]},{"uid":19,"name":"Innovandalism Archive","domain":"boards.innovandalism.eu","http":true,"https":false,"software":"foolfuuka","boards":["v"],"files":[]},{"uid":13,"name":"Foolz Beta","domain":"beta.foolz.us","http":true,"https":true,"withCredentials":true,"software":"foolfuuka","boards":["a","biz","co","d","diy","gd","h","i","jp","m","mlp","s4s","sci","sp","tg","tv","u","v","vg","vp","vr","wsg"],"files":[]}],
to: function(dest, data) {
var archive;
archive = (dest === 'search' ? Redirect.data.thread : Redirect.data[dest])[data.boardID];
@ -11023,65 +11034,10 @@
return CatalogLinks.el.title = "Turn catalog links " + (useCatalog ? 'off' : 'on') + ".";
},
external: function(board) {
switch (board) {
case 'a':
case 'c':
case 'g':
case 'co':
case 'k':
case 'm':
case 'o':
case 'p':
case 'v':
case 'vg':
case 'w':
case 'cm':
case '3':
case 'adv':
case 'an':
case 'cgl':
case 'ck':
case 'diy':
case 'fa':
case 'fit':
case 'int':
case 'jp':
case 'mlp':
case 'lit':
case 'mu':
case 'n':
case 'po':
case 'sci':
case 'toy':
case 'trv':
case 'tv':
case 'vp':
case 'x':
case 'q':
return "http://catalog.neet.tv/" + board;
case 'd':
case 'e':
case 'gif':
case 'h':
case 'hr':
case 'hc':
case 'r9k':
case 's':
case 'pol':
case 'soc':
case 'u':
case 'i':
case 'ic':
case 'hm':
case 'r':
case 'w':
case 'wg':
case 'wsg':
case 't':
case 'y':
return "http://4index.gropes.us/" + board;
default:
return "/" + board + "/catalog";
if (board === 'a' || board === 'c' || board === 'g' || board === 'biz' || board === 'k' || board === 'm' || board === 'o' || board === 'p' || board === 'v' || board === 'vg' || board === 'vr' || board === 'w' || board === 'wg' || board === 'cm' || board === '3' || board === 'adv' || board === 'an' || board === 'asp' || board === 'cgl' || board === 'ck' || board === 'co' || board === 'diy' || board === 'fa' || board === 'fit' || board === 'gd' || board === 'int' || board === 'jp' || board === 'lit' || board === 'mlp' || board === 'mu' || board === 'n' || board === 'out' || board === 'po' || board === 'sci' || board === 'sp' || board === 'tg' || board === 'toy' || board === 'trv' || board === 'tv' || board === 'vp' || board === 'wsg' || board === 'x' || board === 'f' || board === 'pol' || board === 's4s' || board === 'lgbt') {
return "http://catalog.neet.tv/" + board;
} else {
return "/" + board + "/catalog";
}
}
};
@ -11459,7 +11415,6 @@
if (g.VIEW === 'catalog' || !Conf['File Info Formatting']) {
return;
}
this.funk = this.createFunc(Conf['fileInfo']);
return Post.callbacks.push({
name: 'File Info Formatting',
cb: this.node
@ -11469,18 +11424,16 @@
if (!this.file || this.isClone) {
return;
}
return this.file.text.innerHTML = "<span class=file-info>" + (FileInfo.funk(FileInfo, this)) + "</span>";
return this.file.text.innerHTML = "<span class=file-info>" + (FileInfo.format(Conf['fileInfo'], this)) + "</span>";
},
createFunc: function(format) {
var code;
code = format.replace(/%(.)/g, function(s, c) {
format: function(formatString, post) {
return formatString.replace(/%([A-Za-z])/g, function(s, c) {
if (c in FileInfo.formatters) {
return "' + FileInfo.formatters." + c + ".call(post) + '";
return FileInfo.formatters[c].call(post);
} else {
return s;
}
});
return Function('FileInfo', 'post', "return '" + code + "'");
},
convertUnit: function(size, unit) {
var i;
@ -11495,22 +11448,28 @@
return "" + size + " " + unit;
},
escape: function(name) {
return name.replace(/<|>/g, function(c) {
return c === '<' && '&lt;' || '&gt;';
return name.replace(/[&"'<>]/g, function(c) {
return {
'&': '&amp;',
"'": '&apos;',
'"': '&quot;',
'<': '&lt;',
'>': '&gt;'
}[c];
});
},
formatters: {
t: function() {
return this.file.URL.match(/\d+\..+$/)[0];
return FileInfo.escape(this.file.URL.match(/\d+\..+$/)[0]);
},
T: function() {
return "<a href=" + this.file.URL + " target=_blank>" + (FileInfo.formatters.t.call(this)) + "</a>";
return "<a href=" + (FileInfo.escape(this.file.URL)) + " target=_blank>" + (FileInfo.formatters.t.call(this)) + "</a>";
},
l: function() {
return "<a href=" + this.file.URL + " target=_blank>" + (FileInfo.formatters.n.call(this)) + "</a>";
return "<a href=" + (FileInfo.escape(this.file.URL)) + " target=_blank>" + (FileInfo.formatters.n.call(this)) + "</a>";
},
L: function() {
return "<a href=" + this.file.URL + " target=_blank>" + (FileInfo.formatters.N.call(this)) + "</a>";
return "<a href=" + (FileInfo.escape(this.file.URL)) + " target=_blank>" + (FileInfo.formatters.N.call(this)) + "</a>";
},
n: function() {
var fullname, shortname;
@ -11533,7 +11492,7 @@
}
},
s: function() {
return this.file.size;
return FileInfo.escape(this.file.size);
},
B: function() {
return FileInfo.convertUnit(this.file.sizeInBytes, 'B');
@ -11545,11 +11504,7 @@
return FileInfo.convertUnit(this.file.sizeInBytes, 'MB');
},
r: function() {
if (this.file.isImage || this.file.isVideo) {
return this.file.dimensions;
} else {
return 'PDF';
}
return FileInfo.escape(this.file.dimensions || 'PDF');
}
}
};
@ -12320,7 +12275,6 @@
if (g.VIEW === 'catalog' || !Conf['Time Formatting']) {
return;
}
this.funk = this.createFunc(Conf['time']);
return Post.callbacks.push({
name: 'Time Formatting',
cb: this.node
@ -12330,18 +12284,16 @@
if (this.isClone) {
return;
}
return this.nodes.date.textContent = Time.funk(Time, this.info.date);
return this.nodes.date.textContent = Time.format(Conf['time'], this.info.date);
},
createFunc: function(format) {
var code;
code = format.replace(/%([A-Za-z])/g, function(s, c) {
format: function(formatString, date) {
return formatString.replace(/%([A-Za-z])/g, function(s, c) {
if (c in Time.formatters) {
return "' + Time.formatters." + c + ".call(date) + '";
return Time.formatters[c].call(date);
} else {
return s;
}
});
return Function('Time', 'date', "return '" + code + "'");
},
day: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
@ -13330,15 +13282,13 @@
return Header.generateBoardList(this.value);
},
time: function() {
var funk;
funk = Time.createFunc(this.value);
return this.nextElementSibling.textContent = funk(Time, new Date());
return this.nextElementSibling.textContent = Time.format(this.value, new Date());
},
backlink: function() {
return this.nextElementSibling.textContent = this.value.replace(/%id/, '123456789');
},
fileInfo: function() {
var data, funk;
var data;
data = {
isReply: true,
file: {
@ -13351,8 +13301,7 @@
isSpoiler: true
}
};
funk = FileInfo.createFunc(this.value);
return this.nextElementSibling.innerHTML = funk(FileInfo, data);
return this.nextElementSibling.innerHTML = FileInfo.format(this.value, data);
},
favicon: function() {
Favicon["switch"]();

Binary file not shown.

View File

@ -1,6 +1,6 @@
{
"name": "4chan X",
"version": "1.7.35",
"version": "1.7.36",
"manifest_version": 2,
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"icons": {

View File

@ -1,6 +1,6 @@
// Generated by CoffeeScript
/*
* 4chan X - Version 1.7.35 - 2014-05-12
* 4chan X - Version 1.7.36 - 2014-05-13
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@ -348,7 +348,7 @@
doc = d.documentElement;
g = {
VERSION: '1.7.35',
VERSION: '1.7.36',
NAMESPACE: '4chan X.',
boards: {}
};
@ -3097,7 +3097,7 @@
threshold = isReply ? 30 : 40;
ext = filename.match(/\.?[^\.]*$/)[0];
if (filename.length - ext.length > threshold) {
return "" + filename.slice(0, threshold - 5) + "(...)." + ext;
return "" + filename.slice(0, threshold - 5) + "(...)" + ext;
} else {
return filename;
}
@ -3438,6 +3438,7 @@
$.cache(url, function() {
return Get.archivedPost(this, boardID, postID, root, context);
}, {
responseType: 'json',
withCredentials: url.archive.withCredentials
});
} else {
@ -4930,12 +4931,9 @@
QuoteBacklink = {
containers: {},
init: function() {
var format;
if (g.VIEW === 'catalog' || !Conf['Quote Backlinks']) {
return;
}
format = Conf['backlink'].replace(/%id/g, "' + id + '");
this.funk = Function('id', "return '" + format + "'");
Post.callbacks.push({
name: 'Quote Backlinking Part 1',
cb: this.firstNode
@ -4958,7 +4956,7 @@
a = $.el('a', {
href: "/" + this.board + "/thread/" + this.thread + "#p" + this,
className: this.isHidden ? 'filtered backlink' : 'backlink',
textContent: (QuoteBacklink.funk(this.ID)) + (markYours ? '\u00A0(You)' : '')
textContent: (Conf['backlink'].replace(/%id/, this.ID)) + (markYours ? '\u00A0(You)' : '')
});
_ref = this.quotes;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@ -8378,7 +8376,7 @@
link = _ref[_i];
try {
if (link[0] !== '#') {
links.push(this.createSauceLink(link.trim()));
links.push(link.trim());
}
} catch (_error) {
err = _error;
@ -8396,21 +8394,34 @@
cb: this.node
});
},
createSauceLink: function(link) {
var m, text;
link = link.replace(/%(T?URL|MD5|board|name)/g, function(parameter) {
var type;
return ((type = {
'%TURL': 'post.file.thumbURL',
'%URL': 'post.file.URL',
'%MD5': 'post.file.MD5',
'%board': 'post.board',
'%name': 'post.file.name'
}[parameter]) ? "' + encodeURIComponent(" + type + ") + '" : parameter);
});
text = (m = link.match(/;text:(.+)$/)) ? m[1] : link.match(/(\w+)\.\w+\//)[1];
createSauceLink: function(link, post, a) {
var i, m, parts, text, _i, _ref;
text = (m = link.match(/;text:(.+)$/)) ? m[1] : ((_ref = link.match(/(\w+)\.\w+\//)) != null ? _ref[1] : void 0) || '?';
link = link.replace(/;text:.+$/, '');
return Function('post', 'a', "a.href = '" + link + "';\na.textContent = '" + text + "';\nreturn a;");
parts = [link, text];
for (i = _i = 0; _i <= 1; i = ++_i) {
parts[i] = parts[i].replace(/%(T?URL|MD5|board|name)/g, function(parameter) {
var type;
if (type = {
'%TURL': post.file.thumbURL,
'%URL': post.file.URL,
'%MD5': post.file.MD5,
'%board': post.board,
'%name': post.file.name
}[parameter]) {
if (i === 0) {
return encodeURIComponent(type);
} else {
return type;
}
} else {
return parameter;
}
});
}
a.href = parts[0];
a.textContent = parts[1];
return a;
},
node: function() {
var link, nodes, _i, _len, _ref;
@ -8421,7 +8432,7 @@
_ref = Sauce.links;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
nodes.push($.tn('\u00A0'), link(this, Sauce.link.cloneNode(true)));
nodes.push($.tn('\u00A0'), Sauce.createSauceLink(link, this, Sauce.link.cloneNode(true)));
}
return $.add(this.file.text, nodes);
}
@ -10759,7 +10770,7 @@
}
return Redirect.data = o;
},
archives: [{"uid":0,"name":"Foolz","domain":"archive.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["a","biz","co","diy","gd","jp","m","sci","sp","tg","tv","vg","vp","vr","wsg"],"files":["a","biz","diy","gd","jp","m","sci","tg","vg","vp","vr","wsg"]},{"uid":1,"name":"NSFW Foolz","domain":"nsfw.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["u"],"files":["u"]},{"uid":2,"name":"The Dark Cave","domain":"archive.thedarkcave.org","http":true,"https":true,"software":"foolfuuka","boards":["c","int","out","po"],"files":["c","po"]},{"uid":3,"name":"4plebs Archive","domain":"archive.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["adv","hr","o","pol","s4s","tg","trv","tv","x"],"files":["adv","hr","o","pol","s4s","tg","trv","tv","x"]},{"uid":18,"name":"4plebs Flash Archive","domain":"flash.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["f"],"files":["f"]},{"uid":4,"name":"Nyafuu","domain":"archive.nyafuu.org","http":true,"https":true,"software":"foolfuuka","boards":["c","e","w","wg"],"files":["c","e","w","wg"]},{"uid":5,"name":"Love is Over","domain":"archive.loveisover.me","http":true,"https":true,"software":"foolfuuka","boards":["d","i","lgbt"],"files":["d","i","lgbt"]},{"uid":8,"name":"Rebecca Black Tech","domain":"rbt.asia","http":false,"https":true,"software":"fuuka","boards":["cgl","g","mu","w"],"files":["cgl","g","mu","w"]},{"uid":9,"name":"Heinessen","domain":"archive.heinessen.com","http":true,"https":false,"software":"fuuka","boards":["an","fit","k","mlp","r9k","toy"],"files":["an","fit","k","mlp","r9k","toy"]},{"uid":10,"name":"warosu","domain":"fuuka.warosu.org","http":false,"https":true,"software":"fuuka","boards":["3","biz","cgl","ck","diy","fa","g","ic","jp","lit","sci","tg","vr"],"files":["3","biz","cgl","ck","diy","fa","ic","jp","lit","sci","tg","vr"]},{"uid":15,"name":"fgts","domain":"fgts.eu","http":true,"https":true,"software":"foolfuuka","boards":["asp","cm","h","hc","hm","n","p","r","s","soc","y"],"files":["asp","cm","h","hc","hm","n","p","r","s","soc","y"]},{"uid":16,"name":"maware","domain":"archive.mawa.re","http":true,"https":false,"software":"foolfuuka","boards":["t"],"files":["t"]},{"uid":17,"name":"installgentoo.com","domain":"chan.installgentoo.com","http":true,"https":false,"software":"foolfuuka","boards":["g","t"],"files":["g","t"]},{"uid":19,"name":"Innovandalism Archive","domain":"boards.innovandalism.eu","http":true,"https":false,"software":"foolfuuka","boards":["v"],"files":[]},{"uid":13,"name":"Foolz Beta","domain":"beta.foolz.us","http":true,"https":true,"withCredentials":true,"software":"foolfuuka","boards":["a","biz","co","d","diy","gd","h","i","jp","m","mlp","s4s","sci","sp","tg","tv","u","v","vg","vp","vr","wsg"],"files":[]}],
archives: [{"uid":0,"name":"Foolz","domain":"archive.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["a","biz","co","diy","gd","jp","m","sci","sp","tg","tv","vg","vp","vr","wsg"],"files":["a","biz","diy","gd","jp","m","sci","tg","vg","vp","vr","wsg"]},{"uid":1,"name":"NSFW Foolz","domain":"nsfw.foolz.us","http":true,"https":true,"software":"foolfuuka","boards":["u"],"files":["u"]},{"uid":2,"name":"The Dark Cave","domain":"archive.thedarkcave.org","http":true,"https":true,"software":"foolfuuka","boards":["c","int","out","po"],"files":["c","po"]},{"uid":3,"name":"4plebs Archive","domain":"archive.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["adv","hr","o","pol","s4s","tg","trv","tv","x"],"files":["adv","hr","o","pol","s4s","tg","trv","tv","x"]},{"uid":18,"name":"4plebs Flash Archive","domain":"flash.4plebs.org","http":true,"https":true,"software":"foolfuuka","boards":["f"],"files":["f"]},{"uid":4,"name":"Nyafuu","domain":"archive.nyafuu.org","http":true,"https":true,"software":"foolfuuka","boards":["c","e","w","wg"],"files":["c","e","w","wg"]},{"uid":5,"name":"Love is Over","domain":"archive.loveisover.me","http":true,"https":true,"software":"foolfuuka","boards":["d","i","lgbt"],"files":["d","i","lgbt"]},{"uid":8,"name":"Rebecca Black Tech","domain":"rbt.asia","http":false,"https":true,"software":"fuuka","boards":["cgl","g","mu","w"],"files":["cgl","g","mu","w"]},{"uid":9,"name":"Heinessen","domain":"archive.heinessen.com","http":true,"https":false,"software":"fuuka","boards":["an","fit","k","mlp","r9k","toy"],"files":["an","fit","k","mlp","r9k","toy"]},{"uid":10,"name":"warosu","domain":"fuuka.warosu.org","http":false,"https":true,"software":"fuuka","boards":["3","biz","cgl","ck","diy","fa","g","ic","jp","lit","sci","tg","vr"],"files":["3","biz","cgl","ck","diy","fa","ic","jp","lit","sci","tg","vr"]},{"uid":15,"name":"fgts","domain":"fgts.eu","http":true,"https":true,"software":"foolfuuka","boards":["asp","b","cm","h","hc","hm","n","p","r","s","soc","y"],"files":["asp","cm","h","hc","hm","n","p","r","s","soc","y"]},{"uid":16,"name":"maware","domain":"archive.mawa.re","http":true,"https":false,"software":"foolfuuka","boards":["t"],"files":["t"]},{"uid":17,"name":"installgentoo.com","domain":"chan.installgentoo.com","http":true,"https":false,"software":"foolfuuka","boards":["g","t"],"files":["g","t"]},{"uid":19,"name":"Innovandalism Archive","domain":"boards.innovandalism.eu","http":true,"https":false,"software":"foolfuuka","boards":["v"],"files":[]},{"uid":13,"name":"Foolz Beta","domain":"beta.foolz.us","http":true,"https":true,"withCredentials":true,"software":"foolfuuka","boards":["a","biz","co","d","diy","gd","h","i","jp","m","mlp","s4s","sci","sp","tg","tv","u","v","vg","vp","vr","wsg"],"files":[]}],
to: function(dest, data) {
var archive;
archive = (dest === 'search' ? Redirect.data.thread : Redirect.data[dest])[data.boardID];
@ -11026,65 +11037,10 @@
return CatalogLinks.el.title = "Turn catalog links " + (useCatalog ? 'off' : 'on') + ".";
},
external: function(board) {
switch (board) {
case 'a':
case 'c':
case 'g':
case 'co':
case 'k':
case 'm':
case 'o':
case 'p':
case 'v':
case 'vg':
case 'w':
case 'cm':
case '3':
case 'adv':
case 'an':
case 'cgl':
case 'ck':
case 'diy':
case 'fa':
case 'fit':
case 'int':
case 'jp':
case 'mlp':
case 'lit':
case 'mu':
case 'n':
case 'po':
case 'sci':
case 'toy':
case 'trv':
case 'tv':
case 'vp':
case 'x':
case 'q':
return "http://catalog.neet.tv/" + board;
case 'd':
case 'e':
case 'gif':
case 'h':
case 'hr':
case 'hc':
case 'r9k':
case 's':
case 'pol':
case 'soc':
case 'u':
case 'i':
case 'ic':
case 'hm':
case 'r':
case 'w':
case 'wg':
case 'wsg':
case 't':
case 'y':
return "http://4index.gropes.us/" + board;
default:
return "/" + board + "/catalog";
if (board === 'a' || board === 'c' || board === 'g' || board === 'biz' || board === 'k' || board === 'm' || board === 'o' || board === 'p' || board === 'v' || board === 'vg' || board === 'vr' || board === 'w' || board === 'wg' || board === 'cm' || board === '3' || board === 'adv' || board === 'an' || board === 'asp' || board === 'cgl' || board === 'ck' || board === 'co' || board === 'diy' || board === 'fa' || board === 'fit' || board === 'gd' || board === 'int' || board === 'jp' || board === 'lit' || board === 'mlp' || board === 'mu' || board === 'n' || board === 'out' || board === 'po' || board === 'sci' || board === 'sp' || board === 'tg' || board === 'toy' || board === 'trv' || board === 'tv' || board === 'vp' || board === 'wsg' || board === 'x' || board === 'f' || board === 'pol' || board === 's4s' || board === 'lgbt') {
return "http://catalog.neet.tv/" + board;
} else {
return "/" + board + "/catalog";
}
}
};
@ -11462,7 +11418,6 @@
if (g.VIEW === 'catalog' || !Conf['File Info Formatting']) {
return;
}
this.funk = this.createFunc(Conf['fileInfo']);
return Post.callbacks.push({
name: 'File Info Formatting',
cb: this.node
@ -11472,18 +11427,16 @@
if (!this.file || this.isClone) {
return;
}
return this.file.text.innerHTML = "<span class=file-info>" + (FileInfo.funk(FileInfo, this)) + "</span>";
return this.file.text.innerHTML = "<span class=file-info>" + (FileInfo.format(Conf['fileInfo'], this)) + "</span>";
},
createFunc: function(format) {
var code;
code = format.replace(/%(.)/g, function(s, c) {
format: function(formatString, post) {
return formatString.replace(/%([A-Za-z])/g, function(s, c) {
if (c in FileInfo.formatters) {
return "' + FileInfo.formatters." + c + ".call(post) + '";
return FileInfo.formatters[c].call(post);
} else {
return s;
}
});
return Function('FileInfo', 'post', "return '" + code + "'");
},
convertUnit: function(size, unit) {
var i;
@ -11498,22 +11451,28 @@
return "" + size + " " + unit;
},
escape: function(name) {
return name.replace(/<|>/g, function(c) {
return c === '<' && '&lt;' || '&gt;';
return name.replace(/[&"'<>]/g, function(c) {
return {
'&': '&amp;',
"'": '&apos;',
'"': '&quot;',
'<': '&lt;',
'>': '&gt;'
}[c];
});
},
formatters: {
t: function() {
return this.file.URL.match(/\d+\..+$/)[0];
return FileInfo.escape(this.file.URL.match(/\d+\..+$/)[0]);
},
T: function() {
return "<a href=" + this.file.URL + " target=_blank>" + (FileInfo.formatters.t.call(this)) + "</a>";
return "<a href=" + (FileInfo.escape(this.file.URL)) + " target=_blank>" + (FileInfo.formatters.t.call(this)) + "</a>";
},
l: function() {
return "<a href=" + this.file.URL + " target=_blank>" + (FileInfo.formatters.n.call(this)) + "</a>";
return "<a href=" + (FileInfo.escape(this.file.URL)) + " target=_blank>" + (FileInfo.formatters.n.call(this)) + "</a>";
},
L: function() {
return "<a href=" + this.file.URL + " target=_blank>" + (FileInfo.formatters.N.call(this)) + "</a>";
return "<a href=" + (FileInfo.escape(this.file.URL)) + " target=_blank>" + (FileInfo.formatters.N.call(this)) + "</a>";
},
n: function() {
var fullname, shortname;
@ -11536,7 +11495,7 @@
}
},
s: function() {
return this.file.size;
return FileInfo.escape(this.file.size);
},
B: function() {
return FileInfo.convertUnit(this.file.sizeInBytes, 'B');
@ -11548,11 +11507,7 @@
return FileInfo.convertUnit(this.file.sizeInBytes, 'MB');
},
r: function() {
if (this.file.isImage || this.file.isVideo) {
return this.file.dimensions;
} else {
return 'PDF';
}
return FileInfo.escape(this.file.dimensions || 'PDF');
}
}
};
@ -12323,7 +12278,6 @@
if (g.VIEW === 'catalog' || !Conf['Time Formatting']) {
return;
}
this.funk = this.createFunc(Conf['time']);
return Post.callbacks.push({
name: 'Time Formatting',
cb: this.node
@ -12333,18 +12287,16 @@
if (this.isClone) {
return;
}
return this.nodes.date.textContent = Time.funk(Time, this.info.date);
return this.nodes.date.textContent = Time.format(Conf['time'], this.info.date);
},
createFunc: function(format) {
var code;
code = format.replace(/%([A-Za-z])/g, function(s, c) {
format: function(formatString, date) {
return formatString.replace(/%([A-Za-z])/g, function(s, c) {
if (c in Time.formatters) {
return "' + Time.formatters." + c + ".call(date) + '";
return Time.formatters[c].call(date);
} else {
return s;
}
});
return Function('Time', 'date', "return '" + code + "'");
},
day: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
@ -13335,15 +13287,13 @@
return Header.generateBoardList(this.value);
},
time: function() {
var funk;
funk = Time.createFunc(this.value);
return this.nextElementSibling.textContent = funk(Time, new Date());
return this.nextElementSibling.textContent = Time.format(this.value, new Date());
},
backlink: function() {
return this.nextElementSibling.textContent = this.value.replace(/%id/, '123456789');
},
fileInfo: function() {
var data, funk;
var data;
data = {
isReply: true,
file: {
@ -13356,8 +13306,7 @@
isSpoiler: true
}
};
funk = FileInfo.createFunc(this.value);
return this.nextElementSibling.innerHTML = funk(FileInfo, data);
return this.nextElementSibling.innerHTML = FileInfo.format(this.value, data);
},
favicon: function() {
Favicon["switch"]();

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/crx.crx' version='1.7.35' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/crx.crx' version='1.7.36' />
</app>
</gupdate>

View File

@ -1,6 +1,6 @@
{
"name": "4chan-X",
"version": "1.7.35",
"version": "1.7.36",
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",