Corrections.

This commit is contained in:
noface 2012-10-20 16:08:11 +02:00
parent dfc703fdfc
commit 5f87b2d849
3 changed files with 147 additions and 154 deletions

View File

@ -4295,7 +4295,11 @@
a.href = "#p" + id; a.href = "#p" + id;
a.className = 'quotelink'; a.className = 'quotelink';
} else { } else {
a.href = Redirect.thread(board, 0, id); a.href = Redirect.to({
board: board,
threadID: 0,
postID: id
});
a.className = 'deadlink'; a.className = 'deadlink';
a.target = '_blank'; a.target = '_blank';
if (Redirect.post(board, id)) { if (Redirect.post(board, id)) {
@ -4499,7 +4503,7 @@
}; };
ArchiveLink = { ArchiveLink = {
init: function(post) { init: function() {
var div, entry, type, _i, _len, _ref; var div, entry, type, _i, _len, _ref;
div = $.el('div', { div = $.el('div', {
textContent: 'Archive' textContent: 'Archive'
@ -4509,9 +4513,14 @@
open: function(post) { open: function(post) {
var path; var path;
path = $('a[title="Highlight this post"]', post.el).pathname.split('/'); path = $('a[title="Highlight this post"]', post.el).pathname.split('/');
if ((Redirect.thread(path[1], path[3], post.ID)) === ("//boards.4chan.org/" + path[1] + "/")) { if ((Redirect.to({
board: path[1],
threadID: path[3],
postID: post.ID
})) === ("//boards.4chan.org/" + path[1] + "/")) {
return false; return false;
} }
post.info = [path[1], path[3]];
return true; return true;
}, },
children: [] children: []
@ -4530,29 +4539,25 @@
target: '_blank' target: '_blank'
}); });
open = function(post) { open = function(post) {
var path, value; var value;
path = $('a[title="Highlight this post"]', post.el).pathname.split('/'); if (type === 'apost') {
if (type !== 'apost') { el.href = Redirect.to({
board: post.info[0],
threadID: post.info[1],
postID: post.ID
});
return true;
}
value = Filter[type](post); value = Filter[type](post);
} if (!value) {
if (value === false) {
return false; return false;
} }
switch (type) { return el.href = Redirect.to({
case 'name': board: post.info[0],
if (value === 'Anonymous' || value.length === 0) { type: type,
return false; value: value,
} isSearch: true
break; });
case 'email':
if (value === 'sage' || value.length === 0) {
return false;
}
break;
case 'apost':
return el.href = Redirect.thread(path[1], path[3], post.ID);
}
return el.href = Redirect.thread(path[1], value, type, true);
}; };
return { return {
el: el, el: el,
@ -4777,33 +4782,12 @@
return "//nsfw.foolz.us/_/api/chan/post/?board=" + board + "&num=" + postID; return "//nsfw.foolz.us/_/api/chan/post/?board=" + board + "&num=" + postID;
} }
}, },
thread: function(board, threadID, postID, AL) { to: function(data) {
var ar, path, url; var board, threadID, url;
ar = function(a) { if (!data.isSearch) {
var path; threadID = data.threadID;
if (AL) {
if (postID === 'name') {
postID = 'username';
} }
if (postID === 'md5') { board = data.board;
postID = 'image';
}
if (a === 'fuuka') {
return "" + board + "/search/" + postID + "/" + (encodeURIComponent(threadID));
} else if (a === 'gentoo') {
if (postID === 'image') {
return "" + board + "/image/" + (encodeURIComponent(threadID));
} else {
return "" + board + "/?task=search2&search_" + postID + "=" + (encodeURIComponent(threadID));
}
}
} else {
if (postID) {
postID = postID.match(/\d+/)[0];
}
return path = threadID ? "" + board + "/thread/" + threadID : "" + board + "/post/" + postID;
}
};
switch (board) { switch (board) {
case 'a': case 'a':
case 'co': case 'co':
@ -4818,46 +4802,26 @@
case 'wsg': case 'wsg':
case 'dev': case 'dev':
case 'foolz': case 'foolz':
path = ar('fuuka'); url = Redirect.path('//archive.foolz.us', 'foolfuuka', data);
url = "//archive.foolz.us/" + path + "/";
if (threadID && postID && !AL) {
url += "#" + postID;
}
break; break;
case 'u': case 'u':
case 'kuku': case 'kuku':
path = ar('fuuka'); url = Redirect.path("//nsfw.foolz.us", 'foolfuuka', data);
url = "//nsfw.foolz.us/" + path + "/";
if (threadID && postID && !AL) {
url += "#" + postID;
}
break; break;
case 'ck': case 'ck':
case 'lit': case 'lit':
path = ar('fuuka'); url = Redirect.path("//fuuka.warosu.org", 'fuuka', data);
url = "//fuuka.warosu.org/" + path;
if (threadID && postID && !AL) {
url += "#" + postID;
}
break; break;
case 'diy': case 'diy':
case 'g': case 'g':
case 'sci': case 'sci':
path = ar('gentoo'); url = Redirect.path("//archive.installgentoo.net", 'fuuka', data);
url = "//archive.installgentoo.net/" + path;
if (threadID && postID && !AL) {
url += "#p" + postID;
}
break; break;
case 'cgl': case 'cgl':
case 'mu': case 'mu':
case 'soc': case 'soc':
case 'w': case 'w':
path = ar('gentoo'); url = Redirect.path("//archive.rebeccablacktech.com", 'fuuka', data);
url = "//archive.rebeccablacktech.com/" + path;
if (threadID && postID && !AL) {
url += "#p" + postID;
}
break; break;
case 'an': case 'an':
case 'fit': case 'fit':
@ -4866,11 +4830,7 @@
case 'r9k': case 'r9k':
case 'toy': case 'toy':
case 'x': case 'x':
path = ar('gentoo'); url = Redirect.path("http://archive.heinessen.com", 'fuuka', data);
url = "http://archive.heinessen.com/" + path;
if (threadID && postID && !AL) {
url += "#p" + postID;
}
break; break;
default: default:
if (threadID) { if (threadID) {
@ -4878,6 +4838,30 @@
} }
} }
return url || null; return url || null;
},
path: function(base, archiver, data) {
var board, path, postID, threadID, type, value;
if (data.isSearch) {
board = data.board, type = data.type, value = data.value;
type = type === 'name' ? 'username' : type === 'md5' ? 'image' : type;
value = encodeURIComponent(value);
if (archiver === 'foolfuuka') {
return "" + base + "/" + board + "/search/" + type + "/" + value;
} else if (type === 'image') {
return "" + base + "/" + board + "/?task=search2&search_media_hash=" + value;
} else {
return "" + base + "/" + board + "/?task=search2&search_" + type + "=" + value;
}
}
board = data.board, threadID = data.threadID, postID = data.postID;
if (postID) {
postID = postID.match(/\d+/)[0];
}
path = threadID ? "" + board + "/thread/" + threadID : "" + board + "/post/" + postID;
if (threadID && postID) {
path += archiver === 'foolfuuka' ? "#" + postID : "#p" + postID;
}
return "" + base + "/" + path;
} }
}; };
@ -5323,7 +5307,11 @@
var MutationObserver, a, board, nav, node, nodes, observer, _i, _j, _len, _len1, _ref, _ref1; var MutationObserver, a, board, nav, node, nodes, observer, _i, _j, _len, _len1, _ref, _ref1;
if (/^4chan - 404/.test(d.title)) { if (/^4chan - 404/.test(d.title)) {
if (Conf['404 Redirect'] && /^\d+$/.test(g.THREAD_ID)) { if (Conf['404 Redirect'] && /^\d+$/.test(g.THREAD_ID)) {
location.href = Redirect.thread(g.BOARD, g.THREAD_ID, location.hash); location.href = Redirect.to({
board: g.BOARD,
threadID: g.THREAD_ID,
postID: location.hash
});
} }
return; return;
} }

View File

@ -1,6 +1,6 @@
master master
- noface - noface
Archives now populate a submenu just like the quicklinks for the Filter. The Menu now has search links for Archivers.
2.36.0 2.36.0
- Mayhem - Mayhem

View File

@ -3522,7 +3522,11 @@ Quotify =
a.href = "#p#{id}" a.href = "#p#{id}"
a.className = 'quotelink' a.className = 'quotelink'
else else
a.href = Redirect.thread board, 0, id a.href =
Redirect.to
board: board
threadID: 0
postID: id
a.className = 'deadlink' a.className = 'deadlink'
a.target = '_blank' a.target = '_blank'
if Redirect.post board, id if Redirect.post board, id
@ -3695,7 +3699,7 @@ DownloadLink =
true true
ArchiveLink = ArchiveLink =
init: (post) -> init: ->
div = $.el 'div', div = $.el 'div',
textContent: 'Archive' textContent: 'Archive'
@ -3703,8 +3707,9 @@ ArchiveLink =
el: div el: div
open: (post) -> open: (post) ->
path = $('a[title="Highlight this post"]', post.el).pathname.split '/' path = $('a[title="Highlight this post"]', post.el).pathname.split '/'
if (Redirect.thread path[1], path[3], post.ID) is "//boards.4chan.org/#{path[1]}/" if (Redirect.to {board: path[1], threadID: path[3], postID: post.ID}) is "//boards.4chan.org/#{path[1]}/"
return false return false
post.info = [path[1], path[3]]
true true
children: [] children: []
@ -3717,32 +3722,34 @@ ArchiveLink =
['Filename', 'filename'] ['Filename', 'filename']
['Image MD5', 'md5'] ['Image MD5', 'md5']
] ]
# Add a sub entry for each filter type. # Add a sub entry for each type.
entry.children.push @createSubEntry type[0], type[1] entry.children.push @createSubEntry type[0], type[1]
Menu.addEntry entry Menu.addEntry entry
createSubEntry: (text, type) -> createSubEntry: (text, type) ->
el = $.el 'a', el = $.el 'a',
textContent: text textContent: text
target: '_blank' target: '_blank'
open = (post) -> open = (post) ->
path = $('a[title="Highlight this post"]', post.el).pathname.split '/' if type is 'apost'
unless type is 'apost' el.href =
Redirect.to
board: post.info[0]
threadID: post.info[1]
postID: post.ID
return true
value = Filter[type] post value = Filter[type] post
# We want to parse the exact same stuff as Filter does already + maybe a few extras. # We want to parse the exact same stuff as Filter does already.
return false if value is false return false unless value
switch type el.href =
when 'name' Redirect.to
if value is 'Anonymous' or value.length is 0 board: post.info[0]
return false type: type
when 'email' value: value
if value is 'sage' or value.length is 0 isSearch: true
return false
when 'apost'
return el.href = Redirect.thread path[1], path[3], post.ID
el.href = Redirect.thread path[1], value, type, true
return el: el, open: open return el: el, open: open
@ -3902,27 +3909,53 @@ Redirect =
"//archive.rebeccablacktech.com/#{board}/full_image/#{filename}" "//archive.rebeccablacktech.com/#{board}/full_image/#{filename}"
when 'an', 'k', 'toy', 'x' when 'an', 'k', 'toy', 'x'
"http://archive.heinessen.com/#{board}/full_image/#{filename}" "http://archive.heinessen.com/#{board}/full_image/#{filename}"
# when 'e'
# "https://www.cliché.net/4chan/cgi-board.pl/#{board}/full_image/#{filename}"
post: (board, postID) -> post: (board, postID) ->
switch board switch board
when 'a', 'co', 'jp', 'm', 'q', 'sp', 'tg', 'tv', 'v', 'vg', 'wsg', 'dev', 'foolz' when 'a', 'co', 'jp', 'm', 'q', 'sp', 'tg', 'tv', 'v', 'vg', 'wsg', 'dev', 'foolz'
"//archive.foolz.us/_/api/chan/post/?board=#{board}&num=#{postID}" "//archive.foolz.us/_/api/chan/post/?board=#{board}&num=#{postID}"
when 'u', 'kuku' when 'u', 'kuku'
"//nsfw.foolz.us/_/api/chan/post/?board=#{board}&num=#{postID}" "//nsfw.foolz.us/_/api/chan/post/?board=#{board}&num=#{postID}"
thread: (board, threadID, postID, AL) -> to: (data) ->
ar = (a) -> unless data.isSearch
if AL {threadID} = data
postID = 'username' if postID is 'name' {board} = data
postID = 'image' if postID is 'md5' switch board
if a is 'fuuka' when 'a', 'co', 'jp', 'm', 'q', 'sp', 'tg', 'tv', 'v', 'vg', 'wsg', 'dev', 'foolz'
return "#{board}/search/#{postID}/#{encodeURIComponent threadID}" url = Redirect.path '//archive.foolz.us', 'foolfuuka', data
else if a is 'gentoo' when 'u', 'kuku'
if postID is 'image' url = Redirect.path "//nsfw.foolz.us", 'foolfuuka', data
"#{board}/image/#{encodeURIComponent threadID}" when 'ck', 'lit'
url = Redirect.path "//fuuka.warosu.org", 'fuuka', data
when 'diy', 'g', 'sci'
url = Redirect.path "//archive.installgentoo.net", 'fuuka', data
when 'cgl', 'mu', 'soc', 'w'
url = Redirect.path "//archive.rebeccablacktech.com", 'fuuka', data
when 'an', 'fit', 'k', 'mlp', 'r9k', 'toy', 'x'
url = Redirect.path "http://archive.heinessen.com", 'fuuka', data
else else
"#{board}/?task=search2&search_#{postID}=#{encodeURIComponent threadID}" if threadID
url = "//boards.4chan.org/#{board}/"
url or null
path: (base, archiver, data) ->
if data.isSearch
{board, type, value} = data
type =
if type is 'name'
'username'
else if type is 'md5'
'image'
else else
type
value = encodeURIComponent value
return if archiver is 'foolfuuka'
"#{base}/#{board}/search/#{type}/#{value}"
else if type is 'image'
"#{base}/#{board}/?task=search2&search_media_hash=#{value}"
else
"#{base}/#{board}/?task=search2&search_#{type}=#{value}"
{board, threadID, postID} = data
# keep the number only if the location.hash was sent f.e. # keep the number only if the location.hash was sent f.e.
postID = postID.match(/\d+/)[0] if postID postID = postID.match(/\d+/)[0] if postID
path = path =
@ -3930,45 +3963,13 @@ Redirect =
"#{board}/thread/#{threadID}" "#{board}/thread/#{threadID}"
else else
"#{board}/post/#{postID}" "#{board}/post/#{postID}"
switch board if threadID and postID
when 'a', 'co', 'jp', 'm', 'q', 'sp', 'tg', 'tv', 'v', 'vg', 'wsg', 'dev', 'foolz' path +=
path = ar 'fuuka' if archiver is 'foolfuuka'
url = "//archive.foolz.us/#{path}/" "##{postID}"
if threadID and postID and !AL
url += "##{postID}"
when 'u', 'kuku'
path = ar 'fuuka'
url = "//nsfw.foolz.us/#{path}/"
if threadID and postID and !AL
url += "##{postID}"
when 'ck', 'lit'
path = ar 'fuuka'
url = "//fuuka.warosu.org/#{path}"
if threadID and postID and !AL
url += "##{postID}"
when 'diy', 'g', 'sci'
path = ar 'gentoo'
url = "//archive.installgentoo.net/#{path}"
if threadID and postID and !AL
url += "#p#{postID}"
when 'cgl', 'mu', 'soc', 'w'
path = ar 'gentoo'
url = "//archive.rebeccablacktech.com/#{path}"
if threadID and postID and !AL
url += "#p#{postID}"
when 'an', 'fit', 'k', 'mlp', 'r9k', 'toy', 'x'
path = ar 'gentoo'
url = "http://archive.heinessen.com/#{path}"
if threadID and postID and !AL
url += "#p#{postID}"
#when 'e'
# url = "https://www.cliché.net/4chan/cgi-board.pl/#{path}"
# if threadID and postID
# url += "#p#{postID}"
else else
if threadID "#p#{postID}"
url = "//boards.4chan.org/#{board}/" "#{base}/#{path}"
url or null
ImageHover = ImageHover =
init: -> init: ->
@ -4300,7 +4301,11 @@ Main =
ready: -> ready: ->
if /^4chan - 404/.test d.title if /^4chan - 404/.test d.title
if Conf['404 Redirect'] and /^\d+$/.test g.THREAD_ID if Conf['404 Redirect'] and /^\d+$/.test g.THREAD_ID
location.href = Redirect.thread g.BOARD, g.THREAD_ID, location.hash location.href =
Redirect.to
board: g.BOARD
threadID: g.THREAD_ID
postID: location.hash
return return
unless $.id 'navtopright' unless $.id 'navtopright'
return return