// ==UserScript== // @name FAForumSFWversion // @namespace http://tampermonkey.net/ // @version 1.2 // @description Allow you to hide NSFW topics or mark them with a red prefix, you can specify tags to filter in order to take new words in account // @author MissNook // @match http://forums.furaffinity.net/* // @match https://forums.furaffinity.net/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/368376/FAForumSFWversion.user.js // @updateURL https://update.greasyfork.icu/scripts/368376/FAForumSFWversion.meta.js // ==/UserScript== (function() { 'use strict'; var tagsToCheck = localStorage.tagsToCheck ? localStorage.tagsToCheck.split(",") : ["nsfw", "nswf", "not sfw", "fetish", "diaper", "inflation", "vore", "bondage"]; var content = document.getElementById("top"); function addNSFWPrefix(){ var threads = content.getElementsByClassName("structItem--thread"); var prefixNSFW = document.createElement("a"); prefixNSFW.className = "prefixLink prefixForNSFW label label--red"; prefixNSFW.innerHTML = "NSFW" prefixNSFW.style.marginRight = ".35em"; var len = threads.length, i = 0; for(; i 1 ? 1 : 0; var currThreadTitle = threadTitleContents[idTitle]; if(matchInArray(currThreadTitle.innerText, tagsToCheck)){ threads[i].className += " NSFWtagged"; currThreadTitle.parentNode.insertBefore(prefixNSFW.cloneNode(true), currThreadTitle); } } } addNSFWPrefix(); function addTagInput(){ var nav = content.getElementsByClassName("block-outer")[0]; var divTag = document.createElement("div"); divTag.className = "primaryControls"; divTag.style = "text-align:right;"; var validateButtonClass = "button--primary button"; var hideButtonClass = "button button--icon button--icon--preview"; var inputClass = "input"; divTag.innerHTML = "Tags to filter for NSFW : "; var input = divTag.getElementsByClassName(inputClass)[0]; input.value = tagsToCheck.join(";"); input.style = "width:20em;"; input.style.display = "inline"; input.addEventListener("keyup", function(event) { event.preventDefault(); //press enter if (event.keyCode === 13) { manageNewTags(); } }); var btnValidInput = divTag.childNodes[2]; btnValidInput.onclick = manageNewTags; btnValidInput.style.cursor = "pointer"; btnValidInput.style.marginLeft = "10px"; var hideBtn = divTag.lastChild; hideBtn.style.cursor = "pointer"; hideBtn.style.marginLeft = "10px"; hideBtn.onclick = showHideNSFW; nav.appendChild(divTag); } addTagInput(); function showHideNSFW(){ var nsfwTaggedContents = content.getElementsByClassName("NSFWtagged"); var toggleBtn = document.getElementById("btnHideNSFW"); var hide = toggleBtn.innerText == "Hide NSFW"; toggleBtn.innerText = hide ? "Show NSFW" : "Hide NSFW"; var len = nsfwTaggedContents.length, i = 0; for(; i