Skip to content

Instantly share code, notes, and snippets.

@Donaigas
Last active October 2, 2020 08:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Donaigas/b8fc56bdd30398d9c8fe3fb38c2eec84 to your computer and use it in GitHub Desktop.
Save Donaigas/b8fc56bdd30398d9c8fe3fb38c2eec84 to your computer and use it in GitHub Desktop.
VGDNuke2.user.js
/*******************************************************************************
Jeg er ingen stor koder, men i rein forargelse over enkelte VGD-troll har jeg
med mye kaffe og mye googling satt sammen et lite brukerskript for å slippe å
gå fullstendig fra vettet:
VGDNuke legger til to knapper på alle brukerprofiler: «Blokker innlegg» og
«Blokker sitater». Det burde være ganske selvforklarende, men merk at
sistnevnte bare fanger opp siteringer som er gjort på riktig måte via
sitatknappen.
På din egen profil finner du i tillegg nederst en liste over alle blokkeringer
du har gjort, samt en knapp for å tømme blokkeringslista helt.
Jeg har testa det på Mac i Chrome og Safari (med tillegget Tampermonkey --
https://tampermonkey.net/) og i Firefox (med tillegget Greasemonkey --
https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/), og det funker som
en drøm.
Installasjon:
1. Installer et brukerskripttillegg i nettleseren din, for eksempel et av de to
ovennevnte.
2. Når du har installert Tampermonkey, Greasemonkey eller tilsvarende, skal det
holde å trykke på «raw» oppe til høyre på denne siden (gitt at du leser dette på
GitHub) og følge instruksjonene. Hvis det ikke fungerer kan du kopiere hele
denne teksten og legge den inn i tillegget manuelt.
Oppdatert juli 2018 for at scriptet skal fungere etter at vdg la over til https
Oppdatert sept 2020 etter endringer hos vg
*******************************************************************************/
// ==UserScript==
// @name VGDNuke2
// @version 0.4
// @author Rhesus Kristus - update by Jallaskar
// @include https://vgd.no/*
// @include http://vgd.no/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
// @run-at document-idle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// ==/UserScript==
var nukeAuthorNames = GM_getValue("nukeAuthorNames");
var nukeQuotedNames = GM_getValue("nukeQuotedNames");
var profilePageName = $( ".profilePictureContainer img" ).attr('alt');
// If arrays empty, make them
if (typeof nukeAuthorNames == 'undefined') {
nukeAuthorNames = [];
}
if (typeof nukeQuotedNames == 'undefined') {
nukeQuotedNames = [];
}
// Remove item from array
function removeItem(array, item){
for (var i in array) {
if (array[i] == item) {
array.splice(i, 1);
break;
}
}
}
// arrayUnique
function arrayUnique(array) {
var a = array.concat();
for (var i = 0; i < a.length; ++i) {
for (var j = i + 1; j < a.length; ++j) {
if(a[i] === a[j])
a.splice(j--, 1);
}
}
return a;
}
// Remove posts by nuked authors
if (nukeAuthorNames.length > 0) {
nukeAuthorNames.forEach(function(authorName) {
var nukeAuthorSpans = $("div.postHeader a:contains(" + authorName + ")");
nukeAuthorSpans.parentsUntil(".postList").remove ();
});
}
// Remove posts with nuked quotes
if (nukeQuotedNames.length > 0) {
nukeQuotedNames.forEach(function(quotedName) {
var nukeQuotedStrongs = $("div.qCont strong:contains(" + quotedName + ")");
nukeQuotedStrongs.parentsUntil(".postList").remove ();
});
}
// On user profiles
if (profilePageName != null) {
var authorIsNuked = false;
var quotedIsNuked = false;
// Check if nuked
if (nukeAuthorNames.length > 0) {
nukeAuthorNames.forEach(function(authorName) {
if (authorName == profilePageName) { authorIsNuked = true; }
});
}
if (nukeQuotedNames.length > 0) {
nukeQuotedNames.forEach(function(quotedName) {
if (quotedName == profilePageName) { quotedIsNuked = true; }
});
}
if (authorIsNuked == true) {
// User's posts are nuked, make clear button
$( "#profileSummaryBox .simpleBox" ).append (
"<br />" +
"<p><a href=\"javascript: void();\" id=\"clearAuthor\" class=\"largeButton centerblock btn btnBgLarge\">Vis innlegg</a></p>"
);
document.getElementById('clearAuthor').onclick = function clearAuthor () {
removeItem(nukeAuthorNames, profilePageName);
GM_setValue("nukeAuthorNames", nukeAuthorNames);
location.reload();
};
} else {
// User's posts are not nuked, make nuke button
$( "#profileSummaryBox .simpleBox" ).append (
"<br />" +
"<p><a href=\"javascript: void();\" id=\"nukeAuthor\" class=\"largeButton centerblock btn btnBgLarge\">Blokker innlegg</a></p>"
);
document.getElementById('nukeAuthor').onclick = function nukeAuthor () {
nukeAuthorNames.push(profilePageName);
GM_setValue("nukeAuthorNames", nukeAuthorNames);
location.reload();
};
}
if (quotedIsNuked == true) {
// User's quotes are nuked, make clear button
$( "#profileSummaryBox .simpleBox" ).append (
"" +
"<p><a href=\"javascript: void();\" id=\"clearQuoted\" " +
"class=\"largeButton centerblock btn btnBgLarge\">Vis sitater</a></p>"
);
document.getElementById('clearQuoted').onclick = function clearAuthor () {
removeItem(nukeQuotedNames, profilePageName);
GM_setValue("nukeQuotedNames", nukeQuotedNames);
location.reload();
};
} else {
// User's quotes are not nuked, make nuke button
$( "#profileSummaryBox .simpleBox" ).append (
"" +
"<p><a href=\"javascript: void();\" id=\"nukeQuoted\" " +
"class=\"largeButton centerblock btn btnBgLarge\">Blokker sitater</a></p>"
);
document.getElementById('nukeQuoted').onclick = function nukeQuoted () {
nukeQuotedNames.push(profilePageName);
GM_setValue("nukeQuotedNames", nukeQuotedNames);
location.reload();
};
}
}
// Show list of nuked users
if ($(location).attr('href') == "https://vgd.no/system/profile/") {
$("#tabContent").append (
"<div class=\"profileList profileListReplies\"><h2>Blokkerte brukere</h2>" +
"<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"width100p messageList\">" +
"<thead><tr><td>Brukernavn</td></tr></thead><tbody id=\"blockedUsers\"></tbody></table></div>"
);
var uniqueNames = arrayUnique(nukeAuthorNames.concat(nukeQuotedNames));
uniqueNames.forEach(function(authorName) {
$("#blockedUsers").append (
"<tr><td><a href=\"https://vgd.no/profile/" + authorName + "\">" + authorName + "</a></td></tr>"
);
});
$("#blockedUsers").append (
"<tr><td class=\"listBottom\"><div class=\"pagination\">" +
"<a href=\"javascript: void();\" id=\"unNukeAll\">Fjern alle blokkeringer</a></div></td></tr>");
document.getElementById('unNukeAll').onclick = function unNukeAll() {
GM_deleteValue("nukeAuthorNames");
GM_deleteValue("nukeQuotedNames");
location.reload();
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment