Add ability to hide forum posts
// ==UserScript== // @name PTH hide forum posts // @version 0.4 // @description Add ability to hide forum posts // @author Chameleon // @include http*://redacted.ch/* // @grant none // @namespace https://greasyfork.org/users/87476 // ==/UserScript== (function() { 'use strict'; var script=document.createElement('script'); script.src='https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js'; document.body.appendChild(script); var hiddenPosts=getHiddenPosts(); var forumHeads=document.getElementsByClassName('colhead_dark'); for(var i=0; i<forumHeads.length; i++) { var f=forumHeads[i]; var post_id=f.getElementsByTagName('a')[0].textContent; if(hiddenPosts.indexOf(post_id) != -1) { f.nextElementSibling.style.display='none'; f.nextElementSibling.setAttribute('stayHidden', 'true'); } f.addEventListener('click', toggleHide.bind(undefined, f), false); } })(); function toggleHide(f, event) { if(event.srcElement !== f.firstElementChild && event.target !== f.firstElementChild) return; var post_id=f.getElementsByTagName('a')[0].textContent; var hideable=f.nextElementSibling; if(hideable.style.display=='none') { removeHiddenPost(post_id); $(hideable).show("blind", { direction: "up" }, "slow"); hideable.setAttribute('stayHidden', 'false'); } else { addHiddenPost(post_id); $(hideable).hide("blind", { direction: "up" }, "slow"); hideable.setAttribute('stayHidden', 'true'); } } function getHiddenPosts() { var h=window.localStorage.hiddenPosts; if(!h) h=[]; else h=JSON.parse(h); return h; } function addHiddenPost(post_id) { var h=getHiddenPosts(); h.push(post_id); window.localStorage.hiddenPosts=JSON.stringify(h); } function removeHiddenPost(post_id) { var h=getHiddenPosts(); var index=h.indexOf(post_id); if(index != -1) h.splice(index, 1); window.localStorage.hiddenPosts=JSON.stringify(h); }