Release 4chan X v1.13.14.4.
This commit is contained in:
parent
13449ae431
commit
102ae2fb01
@ -4,6 +4,10 @@
|
|||||||
|
|
||||||
### v1.13.14
|
### v1.13.14
|
||||||
|
|
||||||
|
**v1.13.14.4** *(2017-10-27)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.14.4/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.14.4/builds/4chan-X-noupdate.crx)]
|
||||||
|
- Merge v1.13.13.2: Drop now redundant /qa/ message.
|
||||||
|
- Read /pol/ flags from 4chan API instead of hardcoding them.
|
||||||
|
|
||||||
**v1.13.14.3** *(2017-10-23)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.14.3/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.14.3/builds/4chan-X-noupdate.crx)]
|
**v1.13.14.3** *(2017-10-23)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.14.3/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.14.3/builds/4chan-X-noupdate.crx)]
|
||||||
- CSS tweaks to bottom backlinks.
|
- CSS tweaks to bottom backlinks.
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X beta
|
// @name 4chan X beta
|
||||||
// @version 1.13.14.3
|
// @version 1.13.14.4
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X beta
|
// @name 4chan X beta
|
||||||
// @version 1.13.14.3
|
// @version 1.13.14.4
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -144,7 +144,7 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, BoardConfig, BoardTips, Build, CSS, Callbacks, Captcha, CatalogLinks, CatalogThread, Config, Connection, CopyTextLink, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, IDPostCount, ImageCommon, ImageExpand, ImageHost, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, ReplyPruning, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume;
|
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, BoardConfig, Build, CSS, Callbacks, Captcha, CatalogLinks, CatalogThread, Config, Connection, CopyTextLink, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, IDPostCount, ImageCommon, ImageExpand, ImageHost, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, ReplyPruning, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume;
|
||||||
|
|
||||||
var Conf, E, c, d, doc, docSet, g;
|
var Conf, E, c, d, doc, docSet, g;
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ docSet = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.13.14.3',
|
VERSION: '1.13.14.4',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
boards: {}
|
boards: {}
|
||||||
};
|
};
|
||||||
@ -7648,6 +7648,17 @@ Filter = (function() {
|
|||||||
return new Notice('info', 'MD5 filtered.', 2);
|
return new Notice('info', 'MD5 filtered.', 2);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
escape: function(value) {
|
||||||
|
return value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
|
||||||
|
if (c === '\n') {
|
||||||
|
return '\\n';
|
||||||
|
} else if (c === '\\') {
|
||||||
|
return '\\\\';
|
||||||
|
} else {
|
||||||
|
return "\\" + c;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
menu: {
|
menu: {
|
||||||
init: function() {
|
init: function() {
|
||||||
var div, entry, i, len, ref, ref1, type;
|
var div, entry, i, len, ref, ref1, type;
|
||||||
@ -7694,15 +7705,7 @@ Filter = (function() {
|
|||||||
var re, type, value;
|
var re, type, value;
|
||||||
type = this.dataset.type;
|
type = this.dataset.type;
|
||||||
value = Filter[type](Filter.menu.post);
|
value = Filter[type](Filter.menu.post);
|
||||||
re = type === 'uniqueID' || type === 'MD5' ? value : value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
|
re = type === 'uniqueID' || type === 'MD5' ? value : Filter.escape(value);
|
||||||
if (c === '\n') {
|
|
||||||
return '\\n';
|
|
||||||
} else if (c === '\\') {
|
|
||||||
return '\\\\';
|
|
||||||
} else {
|
|
||||||
return "\\" + c;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
re = type === 'uniqueID' || type === 'MD5' ? "/" + re + "/" : "/^" + re + "$/";
|
re = type === 'uniqueID' || type === 'MD5' ? "/" + re + "/" : "/^" + re + "$/";
|
||||||
return Filter.addFilter(type, re, function() {
|
return Filter.addFilter(type, re, function() {
|
||||||
var section, select;
|
var section, select;
|
||||||
@ -8418,18 +8421,19 @@ BoardConfig = (function() {
|
|||||||
BoardConfig = {
|
BoardConfig = {
|
||||||
cbs: [],
|
cbs: [],
|
||||||
init: function() {
|
init: function() {
|
||||||
var now, ref;
|
var boards, now, ref, ref1, troll_flags;
|
||||||
now = Date.now();
|
now = Date.now();
|
||||||
if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now))) {
|
if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now) && Conf['boardConfig'].troll_flags)) {
|
||||||
return $.ajax(location.protocol + "//a.4cdn.org/boards.json", {
|
return $.ajax(location.protocol + "//a.4cdn.org/boards.json", {
|
||||||
onloadend: this.load
|
onloadend: this.load
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return this.set(Conf['boardConfig'].boards);
|
ref1 = Conf['boardConfig'], boards = ref1.boards, troll_flags = ref1.troll_flags;
|
||||||
|
return this.set(boards, troll_flags);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
load: function() {
|
load: function() {
|
||||||
var board, boards, err, i, len, ref;
|
var board, boards, err, i, len, ref, ref1, troll_flags;
|
||||||
if (this.status === 200 && this.response && this.response.boards) {
|
if (this.status === 200 && this.response && this.response.boards) {
|
||||||
boards = {};
|
boards = {};
|
||||||
ref = this.response.boards;
|
ref = this.response.boards;
|
||||||
@ -8437,12 +8441,14 @@ BoardConfig = (function() {
|
|||||||
board = ref[i];
|
board = ref[i];
|
||||||
boards[board.board] = board;
|
boards[board.board] = board;
|
||||||
}
|
}
|
||||||
|
troll_flags = this.response.troll_flags;
|
||||||
$.set('boardConfig', {
|
$.set('boardConfig', {
|
||||||
boards: boards,
|
boards: boards,
|
||||||
|
troll_flags: troll_flags,
|
||||||
lastChecked: Date.now()
|
lastChecked: Date.now()
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
boards = Conf['boardConfig'].boards;
|
ref1 = Conf['boardConfig'], boards = ref1.boards, troll_flags = ref1.troll_flags;
|
||||||
err = (function() {
|
err = (function() {
|
||||||
switch (this.status) {
|
switch (this.status) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -8455,11 +8461,12 @@ BoardConfig = (function() {
|
|||||||
}).call(this);
|
}).call(this);
|
||||||
new Notice('warning', "Failed to load board configuration. " + err, 20);
|
new Notice('warning', "Failed to load board configuration. " + err, 20);
|
||||||
}
|
}
|
||||||
return BoardConfig.set(boards);
|
return BoardConfig.set(boards, troll_flags);
|
||||||
},
|
},
|
||||||
set: function(boards1) {
|
set: function(boards1, troll_flags1) {
|
||||||
var ID, board, cb, i, len, ref, ref1;
|
var ID, board, cb, i, len, ref, ref1;
|
||||||
this.boards = boards1;
|
this.boards = boards1;
|
||||||
|
this.troll_flags = troll_flags1;
|
||||||
ref = g.boards;
|
ref = g.boards;
|
||||||
for (ID in ref) {
|
for (ID in ref) {
|
||||||
board = ref[ID];
|
board = ref[ID];
|
||||||
@ -15981,35 +15988,6 @@ Banner = (function() {
|
|||||||
|
|
||||||
}).call(this);
|
}).call(this);
|
||||||
|
|
||||||
BoardTips = (function() {
|
|
||||||
var BoardTips;
|
|
||||||
|
|
||||||
BoardTips = {
|
|
||||||
tips: {
|
|
||||||
qa: [
|
|
||||||
1, {
|
|
||||||
innerHTML: "New to /qa/?<br>/qa/ is NOT an effective way to contact the mods.<br>Message a mod on <a href=\"https://www.rizon.net/chat\" target=\"_blank\">IRC</a> or use <a href=\"https://www.4chan.org/feedback\" target=\"_blank\">feedback</a> instead. More details <a href=\"https://www.4chan-x.net/qa_instructions.png\" target=\"_blank\">here</a>."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
init: function() {
|
|
||||||
var el, seen, tip;
|
|
||||||
tip = BoardTips.tips[g.BOARD.ID];
|
|
||||||
seen = Conf['BoardTips.seen'];
|
|
||||||
if (!tip || (seen[g.BOARD.ID] && seen[g.BOARD.ID] >= tip[0])) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
seen[g.BOARD.ID] = tip[0];
|
|
||||||
$.set('BoardTips.seen', seen);
|
|
||||||
el = $.el('span', tip[1]);
|
|
||||||
return new Notice('info', el);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return BoardTips;
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
CatalogLinks = (function() {
|
CatalogLinks = (function() {
|
||||||
var CatalogLinks;
|
var CatalogLinks;
|
||||||
|
|
||||||
@ -22150,21 +22128,22 @@ QR = (function() {
|
|||||||
return $.event('QRDialogCreation', null, dialog);
|
return $.event('QRDialogCreation', null, dialog);
|
||||||
},
|
},
|
||||||
flags: function() {
|
flags: function() {
|
||||||
var flag, fn, j, len, ref, select;
|
var addFlag, ref, select, textContent, value;
|
||||||
select = $.el('select', {
|
select = $.el('select', {
|
||||||
name: 'flag',
|
name: 'flag',
|
||||||
className: 'flagSelector'
|
className: 'flagSelector'
|
||||||
});
|
});
|
||||||
fn = function(val) {
|
addFlag = function(value, textContent) {
|
||||||
return $.add(select, $.el('option', {
|
return $.add(select, $.el('option', {
|
||||||
value: val[0],
|
value: value,
|
||||||
textContent: val[1]
|
textContent: textContent
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
ref = [['0', 'Geographic Location'], ['AC', 'Anarcho-Capitalist'], ['AN', 'Anarchist'], ['BL', 'Black Nationalist'], ['CF', 'Confederate'], ['CM', 'Communist'], ['DM', 'Democrat'], ['EU', 'European'], ['FC', 'Fascist'], ['GN', 'Gadsden'], ['GY', 'Gay'], ['JH', 'Jihadi'], ['KN', 'Kekistani'], ['MF', 'Muslim'], ['NB', 'National Bolshevik'], ['NZ', 'Nazi'], ['PC', 'Hippie'], ['PR', 'Pirate'], ['RE', 'Republican'], ['TM', 'Templar'], ['TR', 'Tree Hugger'], ['UN', 'United Nations'], ['WP', 'White Supremacist']];
|
addFlag('0', 'Geographic Location');
|
||||||
for (j = 0, len = ref.length; j < len; j++) {
|
ref = BoardConfig.troll_flags;
|
||||||
flag = ref[j];
|
for (value in ref) {
|
||||||
fn(flag);
|
textContent = ref[value];
|
||||||
|
addFlag(value, textContent);
|
||||||
}
|
}
|
||||||
return select;
|
return select;
|
||||||
},
|
},
|
||||||
@ -24665,7 +24644,6 @@ Main = (function() {
|
|||||||
Conf['selectedArchives'] = {};
|
Conf['selectedArchives'] = {};
|
||||||
Conf['cooldowns'] = {};
|
Conf['cooldowns'] = {};
|
||||||
Conf['Index Sort'] = {};
|
Conf['Index Sort'] = {};
|
||||||
Conf['BoardTips.seen'] = {};
|
|
||||||
for (i = k = 0; k < 2; i = ++k) {
|
for (i = k = 0; k < 2; i = ++k) {
|
||||||
Conf["Last Long Reply Thresholds " + i] = {};
|
Conf["Last Long Reply Thresholds " + i] = {};
|
||||||
}
|
}
|
||||||
@ -25143,7 +25121,7 @@ Main = (function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
features: [['Polyfill', Polyfill], ['Board Configuration', BoardConfig], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Image Host Rewriting', ImageHost], ['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], ['Count Posts by ID', IDPostCount], ['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 Personas', QR.persona], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Copy Text Link', CopyTextLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.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], ['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], ['Reply Pruning', ReplyPruning], ['Board Tips', BoardTips]]
|
features: [['Polyfill', Polyfill], ['Board Configuration', BoardConfig], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Image Host Rewriting', ImageHost], ['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], ['Count Posts by ID', IDPostCount], ['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 Personas', QR.persona], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Copy Text Link', CopyTextLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.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], ['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], ['Reply Pruning', ReplyPruning]]
|
||||||
};
|
};
|
||||||
|
|
||||||
return Main;
|
return Main;
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.13.14.3
|
// @version 1.13.14.4
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -144,7 +144,7 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, BoardConfig, BoardTips, Build, CSS, Callbacks, Captcha, CatalogLinks, CatalogThread, Config, Connection, CopyTextLink, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, IDPostCount, ImageCommon, ImageExpand, ImageHost, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, ReplyPruning, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume;
|
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, BoardConfig, Build, CSS, Callbacks, Captcha, CatalogLinks, CatalogThread, Config, Connection, CopyTextLink, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, IDPostCount, ImageCommon, ImageExpand, ImageHost, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, ReplyPruning, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume;
|
||||||
|
|
||||||
var Conf, E, c, d, doc, docSet, g;
|
var Conf, E, c, d, doc, docSet, g;
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ docSet = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.13.14.3',
|
VERSION: '1.13.14.4',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
boards: {}
|
boards: {}
|
||||||
};
|
};
|
||||||
@ -7648,6 +7648,17 @@ Filter = (function() {
|
|||||||
return new Notice('info', 'MD5 filtered.', 2);
|
return new Notice('info', 'MD5 filtered.', 2);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
escape: function(value) {
|
||||||
|
return value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
|
||||||
|
if (c === '\n') {
|
||||||
|
return '\\n';
|
||||||
|
} else if (c === '\\') {
|
||||||
|
return '\\\\';
|
||||||
|
} else {
|
||||||
|
return "\\" + c;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
menu: {
|
menu: {
|
||||||
init: function() {
|
init: function() {
|
||||||
var div, entry, i, len, ref, ref1, type;
|
var div, entry, i, len, ref, ref1, type;
|
||||||
@ -7694,15 +7705,7 @@ Filter = (function() {
|
|||||||
var re, type, value;
|
var re, type, value;
|
||||||
type = this.dataset.type;
|
type = this.dataset.type;
|
||||||
value = Filter[type](Filter.menu.post);
|
value = Filter[type](Filter.menu.post);
|
||||||
re = type === 'uniqueID' || type === 'MD5' ? value : value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
|
re = type === 'uniqueID' || type === 'MD5' ? value : Filter.escape(value);
|
||||||
if (c === '\n') {
|
|
||||||
return '\\n';
|
|
||||||
} else if (c === '\\') {
|
|
||||||
return '\\\\';
|
|
||||||
} else {
|
|
||||||
return "\\" + c;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
re = type === 'uniqueID' || type === 'MD5' ? "/" + re + "/" : "/^" + re + "$/";
|
re = type === 'uniqueID' || type === 'MD5' ? "/" + re + "/" : "/^" + re + "$/";
|
||||||
return Filter.addFilter(type, re, function() {
|
return Filter.addFilter(type, re, function() {
|
||||||
var section, select;
|
var section, select;
|
||||||
@ -8418,18 +8421,19 @@ BoardConfig = (function() {
|
|||||||
BoardConfig = {
|
BoardConfig = {
|
||||||
cbs: [],
|
cbs: [],
|
||||||
init: function() {
|
init: function() {
|
||||||
var now, ref;
|
var boards, now, ref, ref1, troll_flags;
|
||||||
now = Date.now();
|
now = Date.now();
|
||||||
if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now))) {
|
if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now) && Conf['boardConfig'].troll_flags)) {
|
||||||
return $.ajax(location.protocol + "//a.4cdn.org/boards.json", {
|
return $.ajax(location.protocol + "//a.4cdn.org/boards.json", {
|
||||||
onloadend: this.load
|
onloadend: this.load
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return this.set(Conf['boardConfig'].boards);
|
ref1 = Conf['boardConfig'], boards = ref1.boards, troll_flags = ref1.troll_flags;
|
||||||
|
return this.set(boards, troll_flags);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
load: function() {
|
load: function() {
|
||||||
var board, boards, err, i, len, ref;
|
var board, boards, err, i, len, ref, ref1, troll_flags;
|
||||||
if (this.status === 200 && this.response && this.response.boards) {
|
if (this.status === 200 && this.response && this.response.boards) {
|
||||||
boards = {};
|
boards = {};
|
||||||
ref = this.response.boards;
|
ref = this.response.boards;
|
||||||
@ -8437,12 +8441,14 @@ BoardConfig = (function() {
|
|||||||
board = ref[i];
|
board = ref[i];
|
||||||
boards[board.board] = board;
|
boards[board.board] = board;
|
||||||
}
|
}
|
||||||
|
troll_flags = this.response.troll_flags;
|
||||||
$.set('boardConfig', {
|
$.set('boardConfig', {
|
||||||
boards: boards,
|
boards: boards,
|
||||||
|
troll_flags: troll_flags,
|
||||||
lastChecked: Date.now()
|
lastChecked: Date.now()
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
boards = Conf['boardConfig'].boards;
|
ref1 = Conf['boardConfig'], boards = ref1.boards, troll_flags = ref1.troll_flags;
|
||||||
err = (function() {
|
err = (function() {
|
||||||
switch (this.status) {
|
switch (this.status) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -8455,11 +8461,12 @@ BoardConfig = (function() {
|
|||||||
}).call(this);
|
}).call(this);
|
||||||
new Notice('warning', "Failed to load board configuration. " + err, 20);
|
new Notice('warning', "Failed to load board configuration. " + err, 20);
|
||||||
}
|
}
|
||||||
return BoardConfig.set(boards);
|
return BoardConfig.set(boards, troll_flags);
|
||||||
},
|
},
|
||||||
set: function(boards1) {
|
set: function(boards1, troll_flags1) {
|
||||||
var ID, board, cb, i, len, ref, ref1;
|
var ID, board, cb, i, len, ref, ref1;
|
||||||
this.boards = boards1;
|
this.boards = boards1;
|
||||||
|
this.troll_flags = troll_flags1;
|
||||||
ref = g.boards;
|
ref = g.boards;
|
||||||
for (ID in ref) {
|
for (ID in ref) {
|
||||||
board = ref[ID];
|
board = ref[ID];
|
||||||
@ -15981,35 +15988,6 @@ Banner = (function() {
|
|||||||
|
|
||||||
}).call(this);
|
}).call(this);
|
||||||
|
|
||||||
BoardTips = (function() {
|
|
||||||
var BoardTips;
|
|
||||||
|
|
||||||
BoardTips = {
|
|
||||||
tips: {
|
|
||||||
qa: [
|
|
||||||
1, {
|
|
||||||
innerHTML: "New to /qa/?<br>/qa/ is NOT an effective way to contact the mods.<br>Message a mod on <a href=\"https://www.rizon.net/chat\" target=\"_blank\">IRC</a> or use <a href=\"https://www.4chan.org/feedback\" target=\"_blank\">feedback</a> instead. More details <a href=\"https://www.4chan-x.net/qa_instructions.png\" target=\"_blank\">here</a>."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
init: function() {
|
|
||||||
var el, seen, tip;
|
|
||||||
tip = BoardTips.tips[g.BOARD.ID];
|
|
||||||
seen = Conf['BoardTips.seen'];
|
|
||||||
if (!tip || (seen[g.BOARD.ID] && seen[g.BOARD.ID] >= tip[0])) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
seen[g.BOARD.ID] = tip[0];
|
|
||||||
$.set('BoardTips.seen', seen);
|
|
||||||
el = $.el('span', tip[1]);
|
|
||||||
return new Notice('info', el);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return BoardTips;
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
CatalogLinks = (function() {
|
CatalogLinks = (function() {
|
||||||
var CatalogLinks;
|
var CatalogLinks;
|
||||||
|
|
||||||
@ -22150,21 +22128,22 @@ QR = (function() {
|
|||||||
return $.event('QRDialogCreation', null, dialog);
|
return $.event('QRDialogCreation', null, dialog);
|
||||||
},
|
},
|
||||||
flags: function() {
|
flags: function() {
|
||||||
var flag, fn, j, len, ref, select;
|
var addFlag, ref, select, textContent, value;
|
||||||
select = $.el('select', {
|
select = $.el('select', {
|
||||||
name: 'flag',
|
name: 'flag',
|
||||||
className: 'flagSelector'
|
className: 'flagSelector'
|
||||||
});
|
});
|
||||||
fn = function(val) {
|
addFlag = function(value, textContent) {
|
||||||
return $.add(select, $.el('option', {
|
return $.add(select, $.el('option', {
|
||||||
value: val[0],
|
value: value,
|
||||||
textContent: val[1]
|
textContent: textContent
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
ref = [['0', 'Geographic Location'], ['AC', 'Anarcho-Capitalist'], ['AN', 'Anarchist'], ['BL', 'Black Nationalist'], ['CF', 'Confederate'], ['CM', 'Communist'], ['DM', 'Democrat'], ['EU', 'European'], ['FC', 'Fascist'], ['GN', 'Gadsden'], ['GY', 'Gay'], ['JH', 'Jihadi'], ['KN', 'Kekistani'], ['MF', 'Muslim'], ['NB', 'National Bolshevik'], ['NZ', 'Nazi'], ['PC', 'Hippie'], ['PR', 'Pirate'], ['RE', 'Republican'], ['TM', 'Templar'], ['TR', 'Tree Hugger'], ['UN', 'United Nations'], ['WP', 'White Supremacist']];
|
addFlag('0', 'Geographic Location');
|
||||||
for (j = 0, len = ref.length; j < len; j++) {
|
ref = BoardConfig.troll_flags;
|
||||||
flag = ref[j];
|
for (value in ref) {
|
||||||
fn(flag);
|
textContent = ref[value];
|
||||||
|
addFlag(value, textContent);
|
||||||
}
|
}
|
||||||
return select;
|
return select;
|
||||||
},
|
},
|
||||||
@ -24665,7 +24644,6 @@ Main = (function() {
|
|||||||
Conf['selectedArchives'] = {};
|
Conf['selectedArchives'] = {};
|
||||||
Conf['cooldowns'] = {};
|
Conf['cooldowns'] = {};
|
||||||
Conf['Index Sort'] = {};
|
Conf['Index Sort'] = {};
|
||||||
Conf['BoardTips.seen'] = {};
|
|
||||||
for (i = k = 0; k < 2; i = ++k) {
|
for (i = k = 0; k < 2; i = ++k) {
|
||||||
Conf["Last Long Reply Thresholds " + i] = {};
|
Conf["Last Long Reply Thresholds " + i] = {};
|
||||||
}
|
}
|
||||||
@ -25143,7 +25121,7 @@ Main = (function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
features: [['Polyfill', Polyfill], ['Board Configuration', BoardConfig], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Image Host Rewriting', ImageHost], ['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], ['Count Posts by ID', IDPostCount], ['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 Personas', QR.persona], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Copy Text Link', CopyTextLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.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], ['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], ['Reply Pruning', ReplyPruning], ['Board Tips', BoardTips]]
|
features: [['Polyfill', Polyfill], ['Board Configuration', BoardConfig], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Image Host Rewriting', ImageHost], ['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], ['Count Posts by ID', IDPostCount], ['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 Personas', QR.persona], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Copy Text Link', CopyTextLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.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], ['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], ['Reply Pruning', ReplyPruning]]
|
||||||
};
|
};
|
||||||
|
|
||||||
return Main;
|
return Main;
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.13.14.3
|
// @version 1.13.14.4
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.13.14.3
|
// @version 1.13.14.4
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -144,7 +144,7 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, BoardConfig, BoardTips, Build, CSS, Callbacks, Captcha, CatalogLinks, CatalogThread, Config, Connection, CopyTextLink, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, IDPostCount, ImageCommon, ImageExpand, ImageHost, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, ReplyPruning, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume;
|
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, BoardConfig, Build, CSS, Callbacks, Captcha, CatalogLinks, CatalogThread, Config, Connection, CopyTextLink, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, IDPostCount, ImageCommon, ImageExpand, ImageHost, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, ReplyPruning, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume;
|
||||||
|
|
||||||
var Conf, E, c, d, doc, docSet, g;
|
var Conf, E, c, d, doc, docSet, g;
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ docSet = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.13.14.3',
|
VERSION: '1.13.14.4',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
boards: {}
|
boards: {}
|
||||||
};
|
};
|
||||||
@ -7648,6 +7648,17 @@ Filter = (function() {
|
|||||||
return new Notice('info', 'MD5 filtered.', 2);
|
return new Notice('info', 'MD5 filtered.', 2);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
escape: function(value) {
|
||||||
|
return value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
|
||||||
|
if (c === '\n') {
|
||||||
|
return '\\n';
|
||||||
|
} else if (c === '\\') {
|
||||||
|
return '\\\\';
|
||||||
|
} else {
|
||||||
|
return "\\" + c;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
menu: {
|
menu: {
|
||||||
init: function() {
|
init: function() {
|
||||||
var div, entry, i, len, ref, ref1, type;
|
var div, entry, i, len, ref, ref1, type;
|
||||||
@ -7694,15 +7705,7 @@ Filter = (function() {
|
|||||||
var re, type, value;
|
var re, type, value;
|
||||||
type = this.dataset.type;
|
type = this.dataset.type;
|
||||||
value = Filter[type](Filter.menu.post);
|
value = Filter[type](Filter.menu.post);
|
||||||
re = type === 'uniqueID' || type === 'MD5' ? value : value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
|
re = type === 'uniqueID' || type === 'MD5' ? value : Filter.escape(value);
|
||||||
if (c === '\n') {
|
|
||||||
return '\\n';
|
|
||||||
} else if (c === '\\') {
|
|
||||||
return '\\\\';
|
|
||||||
} else {
|
|
||||||
return "\\" + c;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
re = type === 'uniqueID' || type === 'MD5' ? "/" + re + "/" : "/^" + re + "$/";
|
re = type === 'uniqueID' || type === 'MD5' ? "/" + re + "/" : "/^" + re + "$/";
|
||||||
return Filter.addFilter(type, re, function() {
|
return Filter.addFilter(type, re, function() {
|
||||||
var section, select;
|
var section, select;
|
||||||
@ -8418,18 +8421,19 @@ BoardConfig = (function() {
|
|||||||
BoardConfig = {
|
BoardConfig = {
|
||||||
cbs: [],
|
cbs: [],
|
||||||
init: function() {
|
init: function() {
|
||||||
var now, ref;
|
var boards, now, ref, ref1, troll_flags;
|
||||||
now = Date.now();
|
now = Date.now();
|
||||||
if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now))) {
|
if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now) && Conf['boardConfig'].troll_flags)) {
|
||||||
return $.ajax(location.protocol + "//a.4cdn.org/boards.json", {
|
return $.ajax(location.protocol + "//a.4cdn.org/boards.json", {
|
||||||
onloadend: this.load
|
onloadend: this.load
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return this.set(Conf['boardConfig'].boards);
|
ref1 = Conf['boardConfig'], boards = ref1.boards, troll_flags = ref1.troll_flags;
|
||||||
|
return this.set(boards, troll_flags);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
load: function() {
|
load: function() {
|
||||||
var board, boards, err, i, len, ref;
|
var board, boards, err, i, len, ref, ref1, troll_flags;
|
||||||
if (this.status === 200 && this.response && this.response.boards) {
|
if (this.status === 200 && this.response && this.response.boards) {
|
||||||
boards = {};
|
boards = {};
|
||||||
ref = this.response.boards;
|
ref = this.response.boards;
|
||||||
@ -8437,12 +8441,14 @@ BoardConfig = (function() {
|
|||||||
board = ref[i];
|
board = ref[i];
|
||||||
boards[board.board] = board;
|
boards[board.board] = board;
|
||||||
}
|
}
|
||||||
|
troll_flags = this.response.troll_flags;
|
||||||
$.set('boardConfig', {
|
$.set('boardConfig', {
|
||||||
boards: boards,
|
boards: boards,
|
||||||
|
troll_flags: troll_flags,
|
||||||
lastChecked: Date.now()
|
lastChecked: Date.now()
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
boards = Conf['boardConfig'].boards;
|
ref1 = Conf['boardConfig'], boards = ref1.boards, troll_flags = ref1.troll_flags;
|
||||||
err = (function() {
|
err = (function() {
|
||||||
switch (this.status) {
|
switch (this.status) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -8455,11 +8461,12 @@ BoardConfig = (function() {
|
|||||||
}).call(this);
|
}).call(this);
|
||||||
new Notice('warning', "Failed to load board configuration. " + err, 20);
|
new Notice('warning', "Failed to load board configuration. " + err, 20);
|
||||||
}
|
}
|
||||||
return BoardConfig.set(boards);
|
return BoardConfig.set(boards, troll_flags);
|
||||||
},
|
},
|
||||||
set: function(boards1) {
|
set: function(boards1, troll_flags1) {
|
||||||
var ID, board, cb, i, len, ref, ref1;
|
var ID, board, cb, i, len, ref, ref1;
|
||||||
this.boards = boards1;
|
this.boards = boards1;
|
||||||
|
this.troll_flags = troll_flags1;
|
||||||
ref = g.boards;
|
ref = g.boards;
|
||||||
for (ID in ref) {
|
for (ID in ref) {
|
||||||
board = ref[ID];
|
board = ref[ID];
|
||||||
@ -15981,35 +15988,6 @@ Banner = (function() {
|
|||||||
|
|
||||||
}).call(this);
|
}).call(this);
|
||||||
|
|
||||||
BoardTips = (function() {
|
|
||||||
var BoardTips;
|
|
||||||
|
|
||||||
BoardTips = {
|
|
||||||
tips: {
|
|
||||||
qa: [
|
|
||||||
1, {
|
|
||||||
innerHTML: "New to /qa/?<br>/qa/ is NOT an effective way to contact the mods.<br>Message a mod on <a href=\"https://www.rizon.net/chat\" target=\"_blank\">IRC</a> or use <a href=\"https://www.4chan.org/feedback\" target=\"_blank\">feedback</a> instead. More details <a href=\"https://www.4chan-x.net/qa_instructions.png\" target=\"_blank\">here</a>."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
init: function() {
|
|
||||||
var el, seen, tip;
|
|
||||||
tip = BoardTips.tips[g.BOARD.ID];
|
|
||||||
seen = Conf['BoardTips.seen'];
|
|
||||||
if (!tip || (seen[g.BOARD.ID] && seen[g.BOARD.ID] >= tip[0])) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
seen[g.BOARD.ID] = tip[0];
|
|
||||||
$.set('BoardTips.seen', seen);
|
|
||||||
el = $.el('span', tip[1]);
|
|
||||||
return new Notice('info', el);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return BoardTips;
|
|
||||||
|
|
||||||
}).call(this);
|
|
||||||
|
|
||||||
CatalogLinks = (function() {
|
CatalogLinks = (function() {
|
||||||
var CatalogLinks;
|
var CatalogLinks;
|
||||||
|
|
||||||
@ -22150,21 +22128,22 @@ QR = (function() {
|
|||||||
return $.event('QRDialogCreation', null, dialog);
|
return $.event('QRDialogCreation', null, dialog);
|
||||||
},
|
},
|
||||||
flags: function() {
|
flags: function() {
|
||||||
var flag, fn, j, len, ref, select;
|
var addFlag, ref, select, textContent, value;
|
||||||
select = $.el('select', {
|
select = $.el('select', {
|
||||||
name: 'flag',
|
name: 'flag',
|
||||||
className: 'flagSelector'
|
className: 'flagSelector'
|
||||||
});
|
});
|
||||||
fn = function(val) {
|
addFlag = function(value, textContent) {
|
||||||
return $.add(select, $.el('option', {
|
return $.add(select, $.el('option', {
|
||||||
value: val[0],
|
value: value,
|
||||||
textContent: val[1]
|
textContent: textContent
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
ref = [['0', 'Geographic Location'], ['AC', 'Anarcho-Capitalist'], ['AN', 'Anarchist'], ['BL', 'Black Nationalist'], ['CF', 'Confederate'], ['CM', 'Communist'], ['DM', 'Democrat'], ['EU', 'European'], ['FC', 'Fascist'], ['GN', 'Gadsden'], ['GY', 'Gay'], ['JH', 'Jihadi'], ['KN', 'Kekistani'], ['MF', 'Muslim'], ['NB', 'National Bolshevik'], ['NZ', 'Nazi'], ['PC', 'Hippie'], ['PR', 'Pirate'], ['RE', 'Republican'], ['TM', 'Templar'], ['TR', 'Tree Hugger'], ['UN', 'United Nations'], ['WP', 'White Supremacist']];
|
addFlag('0', 'Geographic Location');
|
||||||
for (j = 0, len = ref.length; j < len; j++) {
|
ref = BoardConfig.troll_flags;
|
||||||
flag = ref[j];
|
for (value in ref) {
|
||||||
fn(flag);
|
textContent = ref[value];
|
||||||
|
addFlag(value, textContent);
|
||||||
}
|
}
|
||||||
return select;
|
return select;
|
||||||
},
|
},
|
||||||
@ -24665,7 +24644,6 @@ Main = (function() {
|
|||||||
Conf['selectedArchives'] = {};
|
Conf['selectedArchives'] = {};
|
||||||
Conf['cooldowns'] = {};
|
Conf['cooldowns'] = {};
|
||||||
Conf['Index Sort'] = {};
|
Conf['Index Sort'] = {};
|
||||||
Conf['BoardTips.seen'] = {};
|
|
||||||
for (i = k = 0; k < 2; i = ++k) {
|
for (i = k = 0; k < 2; i = ++k) {
|
||||||
Conf["Last Long Reply Thresholds " + i] = {};
|
Conf["Last Long Reply Thresholds " + i] = {};
|
||||||
}
|
}
|
||||||
@ -25143,7 +25121,7 @@ Main = (function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
features: [['Polyfill', Polyfill], ['Board Configuration', BoardConfig], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Image Host Rewriting', ImageHost], ['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], ['Count Posts by ID', IDPostCount], ['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 Personas', QR.persona], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Copy Text Link', CopyTextLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.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], ['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], ['Reply Pruning', ReplyPruning], ['Board Tips', BoardTips]]
|
features: [['Polyfill', Polyfill], ['Board Configuration', BoardConfig], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Image Host Rewriting', ImageHost], ['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], ['Count Posts by ID', IDPostCount], ['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 Personas', QR.persona], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Copy Text Link', CopyTextLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.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], ['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], ['Reply Pruning', ReplyPruning]]
|
||||||
};
|
};
|
||||||
|
|
||||||
return Main;
|
return Main;
|
||||||
|
|||||||
Binary file not shown.
@ -3,7 +3,7 @@
|
|||||||
"4chan-x@4chan-x.net": {
|
"4chan-x@4chan-x.net": {
|
||||||
"updates": [
|
"updates": [
|
||||||
{
|
{
|
||||||
"version": "1.13.14.3",
|
"version": "1.13.14.4",
|
||||||
"update_link": "https://www.4chan-x.net/builds/4chan-X-beta.crx"
|
"update_link": "https://www.4chan-x.net/builds/4chan-X-beta.crx"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.14.3' />
|
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.14.4' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
"4chan-x@4chan-x.net": {
|
"4chan-x@4chan-x.net": {
|
||||||
"updates": [
|
"updates": [
|
||||||
{
|
{
|
||||||
"version": "1.13.14.3",
|
"version": "1.13.14.4",
|
||||||
"update_link": "https://www.4chan-x.net/builds/4chan-X.crx"
|
"update_link": "https://www.4chan-x.net/builds/4chan-X.crx"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.14.3' />
|
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.14.4' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"version": "1.13.14.3",
|
"version": "1.13.14.4",
|
||||||
"date": "2017-10-23T08:42:35.195Z"
|
"date": "2017-10-27T16:19:03.316Z"
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user