PostHiding = init: -> return if g.VIEW is 'catalog' or !Conf['Reply Hiding Buttons'] and !Conf['Reply Hiding Link'] if Conf['Reply Hiding Buttons'] $.addClass doc, "reply-hide" @db = new DataBoard 'hiddenPosts' Post.callbacks.push name: 'Reply Hiding' cb: @node node: -> return if !@isReply or @isClone or @isFetchedQuote if data = PostHiding.db.get {boardID: @board.ID, threadID: @thread.ID, postID: @ID} if data.thisPost PostHiding.hide @, data.makeStub, data.hideRecursively else Recursive.apply PostHiding.hide, @, data.makeStub, true Recursive.add PostHiding.hide, @, data.makeStub, true return unless Conf['Reply Hiding Buttons'] $.replace $('.sideArrows', @nodes.root), PostHiding.makeButton @, 'hide' menu: init: -> return if g.VIEW is 'catalog' or !Conf['Menu'] or !Conf['Reply Hiding Link'] # Hide div = $.el 'div', className: 'hide-reply-link' textContent: 'Hide reply' apply = $.el 'a', textContent: 'Apply' href: 'javascript:;' $.on apply, 'click', PostHiding.menu.hide thisPost = UI.checkbox 'thisPost', ' This post', true replies = UI.checkbox 'replies', ' Hide replies', Conf['Recursive Hiding'] makeStub = UI.checkbox 'makeStub', ' Make stub', Conf['Stubs'] Menu.menu.addEntry el: div order: 20 open: (post) -> if !post.isReply or post.isClone or post.isHidden return false PostHiding.menu.post = post true subEntries: [ el: apply , el: thisPost , el: replies , el: makeStub ] # Show div = $.el 'div', className: 'show-reply-link' textContent: 'Show reply' apply = $.el 'a', textContent: 'Apply' href: 'javascript:;' $.on apply, 'click', PostHiding.menu.show thisPost = UI.checkbox 'thisPost', ' This post', false replies = UI.checkbox 'replies', ' Show replies', false hideStubLink = $.el 'a', textContent: 'Hide stub' href: 'javascript:;' $.on hideStubLink, 'click', PostHiding.menu.hideStub Menu.menu.addEntry el: div order: 20 open: (post) -> if !post.isReply or post.isClone or !post.isHidden return false unless data = PostHiding.db.get {boardID: post.board.ID, threadID: post.thread.ID, postID: post.ID} return false PostHiding.menu.post = post thisPost.firstChild.checked = post.isHidden replies.firstChild.checked = if data?.hideRecursively? then data.hideRecursively else Conf['Recursive Hiding'] true subEntries: [ el: apply , el: thisPost , el: replies ] Menu.menu.addEntry el: hideStubLink order: 15 open: (post) -> if !post.isReply or post.isClone or !post.isHidden return false unless data = PostHiding.db.get {boardID: post.board.ID, threadID: post.thread.ID, postID: post.ID} return false PostHiding.menu.post = post hide: -> parent = @parentNode thisPost = $('input[name=thisPost]', parent).checked replies = $('input[name=replies]', parent).checked makeStub = $('input[name=makeStub]', parent).checked {post} = PostHiding.menu if thisPost PostHiding.hide post, makeStub, replies else if replies Recursive.apply PostHiding.hide, post, makeStub, true Recursive.add PostHiding.hide, post, makeStub, true else return PostHiding.saveHiddenState post, true, thisPost, makeStub, replies $.event 'CloseMenu' show: -> parent = @parentNode thisPost = $('input[name=thisPost]', parent).checked replies = $('input[name=replies]', parent).checked {post} = PostHiding.menu if thisPost PostHiding.show post, replies else if replies Recursive.apply PostHiding.show, post, true Recursive.rm PostHiding.hide, post, true else return if data = PostHiding.db.get {boardID: post.board.ID, threadID: post.thread.ID, postID: post.ID} PostHiding.saveHiddenState post, !(thisPost and replies), !thisPost, data.makeStub, !replies $.event 'CloseMenu' hideStub: -> {post} = PostHiding.menu if data = PostHiding.db.get {boardID: post.board.ID, threadID: post.thread.ID, postID: post.ID} PostHiding.show post, data.hideRecursively PostHiding.hide post, false, data.hideRecursively PostHiding.saveHiddenState post, true, true, false, data.hideRecursively $.event 'CloseMenu' return makeButton: (post, type) -> span = $.el 'span', className: "fa fa-#{if type is 'hide' then 'minus' else 'plus'}-square-o" textContent: "" a = $.el 'a', className: "#{type}-reply-button" href: 'javascript:;' $.add a, span $.on a, 'click', PostHiding.toggle a saveHiddenState: (post, isHiding, thisPost, makeStub, hideRecursively) -> data = boardID: post.board.ID threadID: post.thread.ID postID: post.ID if isHiding data.val = thisPost: thisPost isnt false # undefined -> true makeStub: makeStub hideRecursively: hideRecursively PostHiding.db.set data else PostHiding.db.delete data toggle: -> post = Get.postFromNode @ PostHiding[(if post.isHidden then 'show' else 'hide')] post PostHiding.saveHiddenState post, post.isHidden hide: (post, makeStub=Conf['Stubs'], hideRecursively=Conf['Recursive Hiding']) -> return if post.isHidden post.isHidden = true if hideRecursively Recursive.apply PostHiding.hide, post, makeStub, true Recursive.add PostHiding.hide, post, makeStub, true for quotelink in Get.allQuotelinksLinkingTo post $.addClass quotelink, 'filtered' unless makeStub post.nodes.root.hidden = true return a = PostHiding.makeButton post, 'show' $.add a, $.tn " #{post.info.nameBlock}" post.nodes.stub = $.el 'div', className: 'stub' $.add post.nodes.stub, a if Conf['Menu'] $.add post.nodes.stub, Menu.makeButton post $.prepend post.nodes.root, post.nodes.stub show: (post, showRecursively=Conf['Recursive Hiding']) -> if post.nodes.stub $.rm post.nodes.stub delete post.nodes.stub else post.nodes.root.hidden = false post.isHidden = false if showRecursively Recursive.apply PostHiding.show, post, true Recursive.rm PostHiding.hide, post for quotelink in Get.allQuotelinksLinkingTo post $.rmClass quotelink, 'filtered' return