From a961c993a2b2599b2839c8ae29a90281641c125e Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Tue, 2 Apr 2013 11:04:18 +0200 Subject: [PATCH] Better consistency with board and boardID. --- src/features.coffee | 168 ++++++++++++++++++++++---------------------- src/main.coffee | 6 +- 2 files changed, 87 insertions(+), 87 deletions(-) diff --git a/src/features.coffee b/src/features.coffee index 54081eeda..19522f86f 100644 --- a/src/features.coffee +++ b/src/features.coffee @@ -1642,8 +1642,8 @@ ArchiveLink = type: 'post' el: div order: 90 - open: ({ID: postID, thread: threadID, board}) -> - redirect = Redirect.to {postID, threadID, board} + open: ({ID, thread, board}) -> + redirect = Redirect.to {ID, threadID: thread.ID, boardID: board.ID} redirect isnt "//boards.4chan.org/#{board}/" subEntries: [] @@ -1667,8 +1667,8 @@ ArchiveLink = target: '_blank' if type is 'post' - open = ({ID: postID, thread: threadID, board}) -> - el.href = Redirect.to {postID, threadID, board} + open: ({ID, thread, board}) -> + el.href = Redirect.to {ID, threadID: thread.ID, boardID: board.ID} true else open = (post) -> @@ -1676,7 +1676,7 @@ ArchiveLink = # We want to parse the exact same stuff as the filter does already. return false unless value el.href = Redirect.to - board: post.board + boardID: post.board.ID type: type value: value isSearch: true @@ -1934,36 +1934,36 @@ Nav = window.scrollBy 0, top Redirect = - image: (board, filename) -> + image: (boardID, filename) -> # Do not use g.BOARD, the image url can originate from a cross-quote. - switch "#{board}" + switch boardID when 'a', 'gd', 'jp', 'm', 'q', 'tg', 'vg', 'vp', 'vr', 'wsg' - "//archive.foolz.us/#{board}/full_image/#{filename}" + "//archive.foolz.us/#{boardID}/full_image/#{filename}" when 'u' - "//nsfw.foolz.us/#{board}/full_image/#{filename}" + "//nsfw.foolz.us/#{boardID}/full_image/#{filename}" when 'po' - "//archive.thedarkcave.org/#{board}/full_image/#{filename}" + "//archive.thedarkcave.org/#{boardID}/full_image/#{filename}" when 'ck', 'lit' - "//fuuka.warosu.org/#{board}/full_image/#{filename}" + "//fuuka.warosu.org/#{boardID}/full_image/#{filename}" when 'cgl', 'g', 'mu', 'w' - "//rbt.asia/#{board}/full_image/#{filename}" + "//rbt.asia/#{boardID}/full_image/#{filename}" when 'an', 'k', 'toy', 'x' - "http://archive.heinessen.com/#{board}/full_image/#{filename}" + "http://archive.heinessen.com/#{boardID}/full_image/#{filename}" when 'c' - "//archive.nyafuu.org/#{board}/full_image/#{filename}" - post: (board, postID) -> - switch "#{board}" + "//archive.nyafuu.org/#{boardID}/full_image/#{filename}" + post: (boardID, postID) -> + switch boardID when 'a', 'co', 'gd', 'jp', 'm', 'q', 'sp', 'tg', 'tv', 'v', 'vg', 'vp', 'vr', 'wsg' - "//archive.foolz.us/_/api/chan/post/?board=#{board}&num=#{postID}" + "//archive.foolz.us/_/api/chan/post/?board=#{boardID}&num=#{postID}" when 'u' - "//nsfw.foolz.us/_/api/chan/post/?board=#{board}&num=#{postID}" + "//nsfw.foolz.us/_/api/chan/post/?board=#{boardID}&num=#{postID}" when 'c', 'int', 'out', 'po' - "//archive.thedarkcave.org/_/api/chan/post/?board=#{board}&num=#{postID}" + "//archive.thedarkcave.org/_/api/chan/post/?board=#{boardID}&num=#{postID}" # for fuuka-based archives: # https://github.com/eksopl/fuuka/issues/27 to: (data) -> - {board} = data - switch "#{board}" + {boardID} = data + switch boardID when 'a', 'co', 'gd', 'jp', 'm', 'q', 'sp', 'tg', 'tv', 'v', 'vg', 'vp', 'vr', 'wsg' url = Redirect.path '//archive.foolz.us', 'foolfuuka', data when 'u' @@ -1982,11 +1982,11 @@ Redirect = url = Redirect.path '//archive.nyafuu.org', 'fuuka', data else if data.threadID - url = "//boards.4chan.org/#{board}/" + url = "//boards.4chan.org/#{boardID}/" url or '' path: (base, archiver, data) -> if data.isSearch - {board, type, value} = data + {boardID, type, value} = data type = if type is 'name' 'username' @@ -1996,20 +1996,20 @@ Redirect = type value = encodeURIComponent value return if archiver is 'foolfuuka' - "#{base}/#{board}/search/#{type}/#{value}" + "#{base}/#{boardID}/search/#{type}/#{value}" else if type is 'image' - "#{base}/#{board}/?task=search2&search_media_hash=#{value}" + "#{base}/#{boardID}/?task=search2&search_media_hash=#{value}" else - "#{base}/#{board}/?task=search2&search_#{type}=#{value}" + "#{base}/#{boardID}/?task=search2&search_#{type}=#{value}" - {board, threadID, postID} = data + {boardID, threadID, postID} = data # keep the number only if the location.hash was sent f.e. postID = postID.match(/\d+/)[0] if postID and typeof postID is 'string' path = if threadID - "#{board}/thread/#{threadID}" + "#{boardID}/thread/#{threadID}" else - "#{board}/post/#{postID}" + "#{boardID}/post/#{postID}" if archiver is 'foolfuuka' path += '/' if threadID and postID @@ -2031,12 +2031,12 @@ Build = "#{filename[...threshold - 5]}(...).#{filename[-3..]}" else filename - postFromObject: (data, board) -> + postFromObject: (data, boardID) -> o = # id postID: data.no threadID: data.resto or data.no - board: board + boardID: boardID # info name: data.name capcode: data.capcode @@ -2057,12 +2057,12 @@ Build = o.file = name: data.filename + data.ext timestamp: "#{data.tim}#{data.ext}" - url: "//images.4chan.org/#{board}/src/#{data.tim}#{data.ext}" + url: "//images.4chan.org/#{boardID}/src/#{data.tim}#{data.ext}" height: data.h width: data.w MD5: data.md5 size: data.fsize - turl: "//thumbs.4chan.org/#{board}/thumb/#{data.tim}s.jpg" + turl: "//thumbs.4chan.org/#{boardID}/thumb/#{data.tim}s.jpg" theight: data.tn_h twidth: data.tn_w isSpoiler: !!data.spoiler @@ -2074,7 +2074,7 @@ Build = @license: https://github.com/4chan/4chan-JS/blob/master/LICENSE ### { - postID, threadID, board + postID, threadID, boardID name, capcode, tripcode, uniqueID, email, subject, flagCode, flagName, date, dateUTC isSticky, isClosed comment @@ -2129,7 +2129,7 @@ Build = flag = if flagCode - " #{flagCode}" else '' @@ -2157,13 +2157,13 @@ Build = fileSize = "Spoiler Image, #{fileSize}" unless isArchived fileThumb = '//static.4chan.org/image/spoiler' - if spoilerRange = Build.spoilerRange[board] + if spoilerRange = Build.spoilerRange[boardID] # Randomize the spoiler image. - fileThumb += "-#{board}" + Math.floor 1 + spoilerRange * Math.random() + fileThumb += "-#{boardID}" + Math.floor 1 + spoilerRange * Math.random() fileThumb += '.png' file.twidth = file.theight = 100 - if board.ID isnt 'f' + if boardID.ID isnt 'f' imgSrc = "" + "#{fileSize}" @@ -2228,12 +2228,12 @@ Build = capcodeStart + capcode + userID + flag + sticky + closed + "
#{subject}" + "#{date}" + - "No." + + "No." + "#{postID}" + '' + '' + @@ -2250,12 +2250,12 @@ Build = ' ' + "#{date} " + "" + - "No." + + "No." + "#{postID}" + '' + '' + @@ -2269,7 +2269,7 @@ Build = for quote in $$ '.quotelink', container href = quote.getAttribute 'href' continue if href[0] is '/' # Cross-board quote, or board link - quote.href = "/#{board}/res/#{href}" # Fix pathnames + quote.href = "/#{boardID}/res/#{href}" # Fix pathnames container @@ -2282,11 +2282,11 @@ Get = $('.nameBlock', OP.nodes.info).textContent.trim() "/#{thread.board}/ - #{excerpt}" postFromRoot: (root) -> - link = $ 'a[title="Highlight this post"]', root - board = link.pathname.split('/')[1] - postID = link.hash[2..] - index = root.dataset.clone - post = g.posts["#{board}.#{postID}"] + link = $ 'a[title="Highlight this post"]', root + boardID = link.pathname.split('/')[1] + postID = link.hash[2..] + index = root.dataset.clone + post = g.posts["#{boardID}.#{postID}"] if index then post.clones[index] else post postFromNode: (root) -> Get.postFromRoot $.x 'ancestor::div[contains(@class,"postContainer")][1]', root @@ -2299,7 +2299,7 @@ Get = threadID = path[3] postID = link.hash[2..] else # resurrected quote - boardID = link.dataset.board + boardID = link.dataset.boardid threadID = link.dataset.threadid or 0 postID = link.dataset.postid return { @@ -2333,18 +2333,18 @@ Get = quotelinks.filter (quotelink) -> {boardID, postID} = Get.postDataFromLink quotelink boardID is post.board.ID and postID is post.ID - postClone: (board, threadID, postID, root, context) -> - if post = g.posts["#{board}.#{postID}"] + postClone: (boardID, threadID, postID, root, context) -> + if post = g.posts["#{boardID}.#{postID}"] Get.insert post, root, context return root.textContent = "Loading post No.#{postID}..." if threadID - $.cache "//api.4chan.org/#{board}/res/#{threadID}.json", -> - Get.fetchedPost @, board, threadID, postID, root, context - else if url = Redirect.post board, postID + $.cache "//api.4chan.org/#{boardID}/res/#{threadID}.json", -> + Get.fetchedPost @, boardID, threadID, postID, root, context + else if url = Redirect.post boardID, postID $.cache url, -> - Get.archivedPost @, board, postID, root, context + Get.archivedPost @, boardID, postID, root, context insert: (post, root, context) -> # Stop here if the container has been removed while loading. return unless root.parentNode @@ -2358,19 +2358,19 @@ Get = root.innerHTML = null $.add root, nodes.root - fetchedPost: (req, board, threadID, postID, root, context) -> + fetchedPost: (req, boardID, threadID, postID, root, context) -> # In case of multiple callbacks for the same request, # don't parse the same original post more than once. - if post = g.posts["#{board}.#{postID}"] + if post = g.posts["#{boardID}.#{postID}"] Get.insert post, root, context return {status} = req if status not in [200, 304] # The thread can die by the time we check a quote. - if url = Redirect.post board, postID + if url = Redirect.post boardID, postID $.cache url, -> - Get.archivedPost @, board, postID, root, context + Get.archivedPost @, boardID, postID, root, context else $.addClass root, 'warning' root.textContent = @@ -2381,30 +2381,30 @@ Get = return posts = JSON.parse(req.response).posts - Build.spoilerRange[board] = posts[0].custom_spoiler + Build.spoilerRange[boardID] = posts[0].custom_spoiler for post in posts break if post.no is postID # we found it! if post.no > postID # The post can be deleted by the time we check a quote. - if url = Redirect.post board, postID + if url = Redirect.post boardID, postID $.cache url, -> - Get.archivedPost @, board, postID, root, context + Get.archivedPost @, boardID, postID, root, context else $.addClass root, 'warning' root.textContent = "Post No.#{postID} was not found." return - board = g.boards[board] or - new Board board - thread = g.threads["#{board}.#{threadID}"] or + board = g.boards[boardID] or + new Board boardID + thread = g.threads["#{boardID}.#{threadID}"] or new Thread threadID, board - post = new Post Build.postFromObject(post, board), thread, board + post = new Post Build.postFromObject(post, boardID), thread, board Main.callbackNodes Post, [post] Get.insert post, root, context - archivedPost: (req, board, postID, root, context) -> + archivedPost: (req, boardID, postID, root, context) -> # In case of multiple callbacks for the same request, # don't parse the same original post more than once. - if post = g.posts["#{board}.#{postID}"] + if post = g.posts["#{boardID}.#{postID}"] Get.insert post, root, context return @@ -2461,7 +2461,7 @@ Get = # id postID: "#{postID}" threadID: "#{threadID}" - board: board + boardID: boardID # info name: data.name_processed capcode: switch data.capcode @@ -2487,14 +2487,14 @@ Get = width: data.media.media_w MD5: data.media.media_hash size: data.media.media_size - turl: data.media.thumb_link or "//thumbs.4chan.org/#{board}/thumb/#{data.media.preview_orig}" + turl: data.media.thumb_link or "//thumbs.4chan.org/#{boardID}/thumb/#{data.media.preview_orig}" theight: data.media.preview_h twidth: data.media.preview_w isSpoiler: data.media.spoiler is '1' - board = g.boards[board] or - new Board board - thread = g.threads["#{board}.#{threadID}"] or + board = g.boards[boardID] or + new Board boardID + thread = g.threads["#{boardID}.#{threadID}"] or new Thread threadID, board post = new Post Build.post(o, true), thread, board, isArchived: true @@ -2518,13 +2518,13 @@ Quotify = continue quote = deadlink.textContent - continue unless ID = quote.match(/\d+$/)?[0] - board = + continue unless postID = quote.match(/\d+$/)?[0] + boardID = if m = quote.match /^>>>\/([a-z\d]+)/ m[1] else @board.ID - quoteID = "#{board}.#{ID}" + quoteID = "#{boardID}.#{postID}" # \u00A0 is nbsp if post = g.posts[quoteID] @@ -2532,31 +2532,31 @@ Quotify = # Don't (Dead) when quotifying in an archived post, # and we know the post still exists. a = $.el 'a', - href: "/#{board}/#{post.thread}/res/#p#{ID}" + href: "/#{boardID}/#{post.thread}/res/#p#{postID}" className: 'quotelink' textContent: quote else # Replace the .deadlink span if we can redirect. a = $.el 'a', - href: "/#{board}/#{post.thread}/res/#p#{ID}" + href: "/#{boardID}/#{post.thread}/res/#p#{postID}" className: 'quotelink deadlink' target: '_blank' textContent: "#{quote}\u00A0(Dead)" - a.setAttribute 'data-board', board + a.setAttribute 'data-boardid', boardID a.setAttribute 'data-threadid', post.thread.ID - a.setAttribute 'data-postid', ID - else if redirect = Redirect.to {board, threadID: 0, postID: ID} + a.setAttribute 'data-postid', postID + else if redirect = Redirect.to {boardID, threadID: 0, postID} # Replace the .deadlink span if we can redirect. a = $.el 'a', href: redirect className: 'deadlink' target: '_blank' textContent: "#{quote}\u00A0(Dead)" - if Redirect.post board, ID + if Redirect.post boardID, postID # Make it function as a normal quote if we can fetch the post. $.addClass a, 'quotelink' - a.setAttribute 'data-board', board - a.setAttribute 'data-postid', ID + a.setAttribute 'data-boardid', boardID + a.setAttribute 'data-postid', postID unless quoteID in @quotes @quotes.push quoteID diff --git a/src/main.coffee b/src/main.coffee index 303232774..49517b02b 100644 --- a/src/main.coffee +++ b/src/main.coffee @@ -428,9 +428,9 @@ Main = if d.title is '4chan - 404 Not Found' if Conf['404 Redirect'] and g.VIEW is 'thread' href = Redirect.to - board: g.BOARD - threadID: g.THREAD - postID: location.hash + boardID: g.BOARD.ID + threadID: g.THREAD.ID + postID: location.hash location.href = href or "/#{g.BOARD}/" return