[Script] NGB Ignore Everyone | alternative Ignorieren-Funktion

accCreturns

Neu angemeldet
Registriert
28 Aug. 2016
Beiträge
2
Nutzer können wahlweise durch eine statische Konfiguration ignoriert werden oder durch eine Cookie-gestützte Liste.

Statische ListenCookie Liste
Vorteile
  • Die Liste kann nicht "verloren" gehen.
  • Die NGB-Forensoftware kann diese Liste nicht manipulieren.
  • Es können zwei Listen zum Ausblenden von Beiträgen verwaltet werden:
    Ausblenden mit bzw. Ausblenden ohne Hinweis

  • Die Liste kann direkt über das Foreninterface verwaltet werden.
  • Das Ein- und Ausblenden der Beiträge geschieht völlig automatisch.
Nachteile
  • Das Anpassen der Liste ist nur direkt über Modifikation des Programmcodes möglich.

  • Die Liste kann beim Löschen von Cookies verloren gehen.
  • Die NGB-Forensoftware kann die Liste erkennen und manipulieren.

Zur statischen Konfiguration den Abschnitt config ausfüllen:
Benutzernamen in Anführungszeichen und durch Komma getrennt in die eckigen Klammern hinter fullHide bzw. hintHide eintragen.
Beispiel:

[src=javascript]var config = {
fullHide: ['Nutzer1', 'Nutzer2'],
hintHide: ['Nutzer3', 'Nutzer4', 'Nutzer5']
};[/src]

Die Konfiguration mit Hilfe eines Cookies erfolgt mit Hilfe der angezeigten Buttons "ban" und "unban", die sich jeweils in unmittelbarer Nähe zu einem Beitrag befinden.


Das Script kann mit jedem gebräuchlichen Browser/ Scriptmanager verwendet werden.

[src=javascript]// ==UserScript==
// @name NGB Ignore Everyone
// @namespace accc/ngb.to/ignoreeveryone
// @version 1.2
// @description Erlaubt das Ignorieren beliebiger Nutzer
// @author accC
// @match https://ngb.to/threads/*
// @grant none
// ==/UserScript==

var config = {
fullHide: [],
hintHide: [],
cookieName: 'ngb_ignore_everyone'
};

(function(config) {
'use strict';

function init(){initCookie(),initIgnoreSystem()}function initCookie(){var e=getCookie(config.cookieName);""==e&&setCookie(config.cookieName,JSON.stringify([]),36500)}function initIgnoreSystem(){for(var e=getPosts(),t=[],n=[],o=0;o<e.length;o++){var i=e[o];addIgnoreLink(i);var r=extractUser(i);switch(isBanned(r)){case 1:t.push(i);break;case 2:n.push(i)}}removeNodes(t),hideNodes👎}function addIgnoreLink(e){var t=extractUser(e),n=(document.location.origin,document.createElement("button")),o=e.getElementsByClassName("userinfo")[0];o.appendChild👎,n.innerHTML="ban",n.setAttribute("class","newcontent_textcontrol"),n.addEventListener("click",function(){if(window.confirm("Möchtest du wirklich "+t+" ignorieren?")){var n=JSON.parse(getCookie(config.cookieName));n.push(t),setCookie(config.cookieName,JSON.stringify👎,36500),hideNode(e)}})}function hideNodes(e){for(var t=[],n=0;n<e.length;n++){var o=e[n];t[n]=hideNode(o)}return t}function hideNode(e){var t=extractUser(e),n=e.getElementsByClassName("postdetails")[0],o=e.getElementsByClassName("postfoot")[0];n.setAttribute("style","display:none"),o.setAttribute("style","display:none");var i=e,r=document.createElement("button");r.setAttribute("class","newcontent_textcontrol"),r.innerHTML="unban",e.getElementsByClassName("date")[0].innerHTML+=" <b>"+t+"</b> wird ignoriert.",e.appendChild(r),r.addEventListener("click",function(){window.confirm("Bist du sicher, dass du "+t+" nicht mehr ignorieren möchtest?")&&(unBanUser(t),showNode(i),removeNode(r))})}function showNode(e){var t=e.getElementsByClassName("postdetails")[0],n=e.getElementsByClassName("postfoot")[0];t.setAttribute("style","display:block"),n.setAttribute("style","display:block")}function removeNodes(e){for(var t=[],n=0;n<e.length;n++){var o=e[n];t[n]=removeNode(o)}return t}function removeNode(e){var t=e.parentNode;return null!=t?(t.removeChild(e),!0):!1}function isBanned(e){var t=JSON.parse(getCookie(config.cookieName));return inArray(e,config.fullHide)?1:inArray(e,config.hintHide)||inArray(e,t)?2:0}function unBanUser(e){for(var t=JSON.parse(getCookie(config.cookieName)),n=[],o=0;o<t.length;o++)t[o]!=e&&n.push(t[o]);setCookie(config.cookieName,JSON.stringify👎,36500)}function extractUser(e){var t=e.getElementsByClassName("username")[0].firstChild.innerHTML;return t}function getPosts(){for(var e=[],t=document.getElementById("posts").childNodes,n=0;n<t.length;n++)1===t[n].nodeType&&e.push(t[n]);return e}function inArray(e,t){for(var n=t.length,o=0;n>o;o++)if(t[o]==e)return!0;return!1}function setCookie(e,t,n){var o=new Date;o.setTime(o.getTime()+24*n*60*60*1e3);var i="expires="+o.toUTCString();document.cookie=e+"="+t+"; "+i}function getCookie(e){for(var t=e+"=",n=document.cookie.split(";"),o=0;o<n.length;o++){for(var i=n[o];" "==i.charAt(0);)i=i.substring(1);if(0==i.indexOf(t))return i.substring(t.length,i.length)}return""}init();
})(config);[/src]

Todos:
  • Codeoptimierung:
    • Geschickterer Zugriff auf Attribute/ Node-Style
    • Vereinfachung
  • Optische Überarbeitung
  • Ignorieren privater Nachrichten
 
Ignorieren privater Nachrichten
Halte das für keine gute Idee, da auch mal Ansagen oder Verwarnungen per PN eintrudeln können. Gleiches gilt auch für Ansagen im Thread. Wenn moderative Ansagen wissentlich ignoriert oder ausblendet werden, dann braucht man sich später auch nicht zu wundern, wenn der Banhammer zuschlägt. You have been warned.
 
  • Thread Starter Thread Starter
  • #3
Wenn ihr eine Möglichkeit bietet moderative Inhalte und normalen, von Moderatoren erstellten Content, zu trennen, könnte ich eine Weiche einbauen.
Solange sich bei den Moderatoren die Inhalte vermischen, ist eine automatisierte Unterscheidung nicht möglich.
 
Wundert mich nur, wieso Du dafür einen Account erstellt hast, mit dem es eigentlich keine Notwendigkeit gibt, irgendjemanden zu ignorieren, da die einzigen beiden Beiträge hier in dem Thread verfasst wurden. Dein Hauptaccount wurde ja auf eigenen Wunsch gesperrt, aber den zweiten hättest Du auch nehmen können, hättest keinen neuen gebraucht. Aber hey, kann ja jeder machen, wie er will... :rolleyes:

Jeder Mod darf - genau wie jeder User auch - seine Meinung posten. Wir verbieten sicher auch niemandem die Benutzung des Scripts aus dem Startbeitrag, sollte es dadurch dann jedoch zu Konflikten mit Verwarnungen oder moderativen Anweisungen kommen, war's eben Pech - nicht für uns, sondern für den betreffenden User.
 
Gleich vorweg, das ist meine private Meinung zu der ganzen Thematik:

Die Forensoftware ist nicht dafür vorgesehen, dass man Moderativen Content und normalen Content mit dem gleichen Account trennen kann. Selbst wenn wir nachträglich etwas einbauen - was verdammt viel Aufwand für wenig Nutzen bedeutet - bedeutet das nicht, dass es zu 100% sicher ist.

Persönlich halte ich das Script für Schwachsinn. Es gibt eine boardinterne Ignore Funktion und es gibt auch gute Gründe, warum man Moderatoren nicht ignorieren sollte. Natürlich kann man das Script verwenden, aber dann muss man halt auch mit den Konsequenzen leben wenn man einen Moderator ignoriert und dessen Hinweise nicht sieht. Benutzung auf eigene Gefahr, wie es so schön heisst.

Ich weiß halt echt nicht, was so schwer ist, sich mal selbst zusammen zu reißen und einen Beitrag auch so zu ignorieren. Mach ich laufend - ansonsten hätte ich wohl das ein oder andere Magengeschwür...
 
Zurück
Oben