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.
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:
Statische Listen | Cookie Liste | |
Vorteile |
|
|
Nachteile |
|
|
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

})(config);[/src]
Todos:
- Codeoptimierung:
- Geschickterer Zugriff auf Attribute/ Node-Style
- Vereinfachung
- Optische Überarbeitung
- Ignorieren privater Nachrichten