// ==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