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({
value = Filter[type](post); board: post.info[0],
threadID: post.info[1],
postID: post.ID
});
return true;
} }
if (value === false) { value = Filter[type](post);
if (!value) {
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') { board = data.board;
postID = 'username';
}
if (postID === 'md5') {
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,21 +3699,22 @@ DownloadLink =
true true
ArchiveLink = ArchiveLink =
init: (post) -> init: ->
div = $.el 'div', div = $.el 'div',
textContent: 'Archive' textContent: 'Archive'
entry = entry =
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: []
for type in [ for type in [
['Post', 'apost'] ['Post', 'apost']
['Name', 'name'] ['Name', 'name']
['Tripcode', 'tripcode'] ['Tripcode', 'tripcode']
['E-mail', 'email'] ['E-mail', 'email']
@ -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 =
value = Filter[type] post Redirect.to
# We want to parse the exact same stuff as Filter does already + maybe a few extras. board: post.info[0]
return false if value is false threadID: post.info[1]
switch type postID: post.ID
when 'name' return true
if value is 'Anonymous' or value.length is 0 value = Filter[type] post
return false # We want to parse the exact same stuff as Filter does already.
when 'email' return false unless value
if value is 'sage' or value.length is 0 el.href =
return false Redirect.to
when 'apost' board: post.info[0]
return el.href = Redirect.thread path[1], path[3], post.ID type: type
el.href = Redirect.thread path[1], value, type, true value: value
isSearch: true
return el: el, open: open return el: el, open: open
@ -3902,74 +3909,68 @@ 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'
if a is 'fuuka'
return "#{board}/search/#{postID}/#{encodeURIComponent threadID}"
else if a is 'gentoo'
if postID is 'image'
"#{board}/image/#{encodeURIComponent threadID}"
else
"#{board}/?task=search2&search_#{postID}=#{encodeURIComponent threadID}"
else
# keep the number only if the location.hash was sent f.e.
postID = postID.match(/\d+/)[0] if postID
path =
if threadID
"#{board}/thread/#{threadID}"
else
"#{board}/post/#{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'
path = ar 'fuuka' url = Redirect.path '//archive.foolz.us', 'foolfuuka', data
url = "//archive.foolz.us/#{path}/"
if threadID and postID and !AL
url += "##{postID}"
when 'u', 'kuku' when 'u', 'kuku'
path = ar 'fuuka' url = Redirect.path "//nsfw.foolz.us", 'foolfuuka', data
url = "//nsfw.foolz.us/#{path}/"
if threadID and postID and !AL
url += "##{postID}"
when 'ck', 'lit' when 'ck', 'lit'
path = ar 'fuuka' url = Redirect.path "//fuuka.warosu.org", 'fuuka', data
url = "//fuuka.warosu.org/#{path}"
if threadID and postID and !AL
url += "##{postID}"
when 'diy', 'g', 'sci' when 'diy', 'g', 'sci'
path = ar 'gentoo' url = Redirect.path "//archive.installgentoo.net", 'fuuka', data
url = "//archive.installgentoo.net/#{path}"
if threadID and postID and !AL
url += "#p#{postID}"
when 'cgl', 'mu', 'soc', 'w' when 'cgl', 'mu', 'soc', 'w'
path = ar 'gentoo' url = Redirect.path "//archive.rebeccablacktech.com", 'fuuka', data
url = "//archive.rebeccablacktech.com/#{path}"
if threadID and postID and !AL
url += "#p#{postID}"
when 'an', 'fit', 'k', 'mlp', 'r9k', 'toy', 'x' when 'an', 'fit', 'k', 'mlp', 'r9k', 'toy', 'x'
path = ar 'gentoo' url = Redirect.path "http://archive.heinessen.com", 'fuuka', data
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 if threadID
url = "//boards.4chan.org/#{board}/" url = "//boards.4chan.org/#{board}/"
url or null 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
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.
postID = postID.match(/\d+/)[0] if postID
path =
if threadID
"#{board}/thread/#{threadID}"
else
"#{board}/post/#{postID}"
if threadID and postID
path +=
if archiver is 'foolfuuka'
"##{postID}"
else
"#p#{postID}"
"#{base}/#{path}"
ImageHover = ImageHover =
init: -> init: ->
Main.callbacks.push @node Main.callbacks.push @node
@ -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