• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

User im Forum ignorieren (Firefox und Opera)

London Rain

Geowizard
Huhu,

ich fand's ja so schön, dass man im blauen Forum gewisse User ignorieren kann, was hier leider nicht möglich ist. Vor einiger Zeit wurde ja hier schon einmal auf ein Greasemonkeyskript für Firefox hingewiesen, dass es erlaubt Nutzer in phpbb-Foren zu ignorieren. Dazu braucht man Firefox, die Erweiterung Greasemonkey und das entsprechende Skript. Für Firefoxuser ist alles nötige hier beschrieben. Man muss lediglich einige Zeilen in dem Skript anpassen, da dieses Forum hier eine andere "Anzeigemethode" der Threads hat als ein Standard-phphbb. Die leicht modifizierte Version habe ich mal hier hochgeladen. Sie unterscheidet sich nur in den @include-Zeilen am Anfang und funktioniert so nur in diesem Forum.

Opera kann nun grundsätzlich auch Greasemonkeyskripte nutzen. Man speichert die Datei einfach in irgendeinem Ordner auf seiner Festplatte. Dann geht man auf geoclub.de, macht irgendwo einen Rechtsklick, wählt Seitenspezifische Einstellungen/Skripte/Auswählen, wählt dort den Ordner, wo man das Skript gespeichert hat und bestätigt zwei mal mit OK. Die Version für Opera benötigte allerdings ein paar kleine Änderungen, da es irgendwie Javascript anders frisst, als Firefox (Zeile 136, 137, 158, 159 false anstatt true). Die Version für Opera findet sich hier.

Viel Spaß damit und entspannteres posten! ;)
London Rain
 
OP
London Rain

London Rain

Geowizard
Weiß der Henker wieso, aber als ich der Datei wieder den Originalnamen gegeben habe, ging es wieder. Wieso auch immer die genau so heißen muss...
 

Team GoLa

Geocacher
Vielen Dank Tim!

Das funztioniert fantastisch mit der Mac Version von Firefox. Danke für die damit verbundene Senkung meines Blutdrucks. :D
 

NoobNader

Geomaster
Hmm, funxioniert das Script bei Euch noch? Ich kann ja leider den, den ich blocken will, nicht ignorieren, weil er moderator ist... Habe aber auch keine Möglichkeit gefunden, dessen sinnentleerte Sprechblasen und Theorien per script zu blockieren...
 

jmsanta

Geoguru
maierkurt schrieb:
Ich kann ja leider den, den ich blocken will, nicht ignorieren, weil er moderator ist...
Merkwürdig. Ich weiß zwar nicht welchen Moderator Du meinst, bei mir klappt es mit der Forensoftware.
Das ist letztlich vollkommen irrelevant, welcher Moderator gemeint ist, das Ignorieren klappt bei keinem - du kannst ja probieren mich mittel Forensoftware zu ignorieren...
 
OP
London Rain

London Rain

Geowizard
Bevor mich noch mehr Leute anschreiben: Die Version des Skripts ist natürlich für phpbb2 und funktioniert deshalb unter phpbb3 nicht mehr. Wenn jemand das ganze für die neue Forenversion findet oder ummodelt wäre ich auch interessiert.
 

PHerison

Geowizard
Ich zieh den Fred mal wieder aus der Versenkung...

Hat da irgendjemand schon Fortschritte gemacht? Ich denke mal, dass das Hauptproblem im geaenderten Layout des neuen Forums liegt. Aus diesem Grund findet dieses Statement
Code:
// Find all the usernames quoted in the page
var results = document.evaluate("//td[@class='quote']/parent::*/preceding-sibling::*/td/span/b|"
                              + "//td[@class='quote']/parent::*/preceding-sibling::*/td/span/strong", document, null,XPathResult.ANY_TYPE, null);
nicht mehr die Beitraege und kann sich somit nicht zu den Usernamen hochhangeln.
Allerdings muss ich gestehen, dass ich erst durch dieses Skript von der Existenz des XPath erfahren habe... :eek:ps:
Klingelt da was bei jemandem? Kenn sich damit jemand aus?
 

PHerison

Geowizard
Funktioniert nun auch mit phpbb3 :D

Da ich die Datei mit der Endung ".js" oder ".txt" hier nicht anhaengen kann kommt hier der Quellcode:
Code:
// ==UserScript==
// @name         User Hide for http://www.geoclub.de
// @include      *.geoclub.de/viewtopic.php*
// @include      *.geoclub.de/ftopic*.html
// @description  Hides/unhides a user's posts and quotes
// @exclude
// ==/UserScript==

// original file by Unarmed
// found at: http://s93731204.onlinehome.us/firefox/greasemonkey/phpbb.ignore.user.js
// modified for geoclub.de by London Rain
// modified for phpBB3 by PHerison

(function() {
        // Get stored hidden users from cookie
        var users = [];
        var cookieName = "phpUserHide";
        for (var i = 0; i < document.cookie.split('; ').length; i++) {
                var oneCookie = document.cookie.split('; ')[i].split('=');
                if (oneCookie[0] == cookieName) {
                        users = oneCookie[1].split(', ');
                        break;
                }
        }

        // Cursor functions
        var curPointer = function(event) {
                event.target.style.cursor = 'pointer';
                event.preventDefault();
        };
        var curDefault = function(event) {
                event.target.style.cursor = 'default';
                event.preventDefault();
        };

        // Add or remove a user from the cookie
        var addRemoveUser = function(event) {
                // Parse current cookie
                for(j = 0; j < document.cookie.split('; ').length; j++ ) {
                        var oneCookie = document.cookie.split('; ')[j].split('=');
                        if (oneCookie[0] == cookieName) {
                                users = oneCookie[1].split(', ');
                                break;
                        }
                }
                var user = escape(event.target.nextSibling.innerHTML)
                notFound = true;
                for (var j = 0; j < users.length; j++) {
                        if (users[j] == user) {
                                users.splice(j, 1);
                                notFound = false;
                        }
                }
                if (notFound)
                        users.push(user);
                if (users.length > 0) {
                        var date = new Date();
                        var days = 365;
                        date.setTime(date.getTime() + (days*24*60*60*1000));
                        var expires = '; expires=' + date.toGMTString();
                        var value = users.join(', ');
                        document.cookie = cookieName + '=' + value + expires + '; path=/';
                } else {
                        document.cookie = cookieName + '=;expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/';
                }
                window.alert(unescape(user) + ' has been ' + (notFound ? 'added to' : 'removed from')
                        + ' your hide list\n'
                        + 'You must refresh the page to view the changes.');
                event.preventDefault();
        };
        // Toggle display of user's post
        var togglePost = function(event) {
                var displayState = event.target.getAttribute('displaystate');
                if (displayState == 'none')
                        displayState = '';
                else
                        displayState = 'none';
                event.target.setAttribute('displaystate', displayState);

                containingRow = event.target.parentNode.parentNode.parentNode.parentNode;
                containingRow.firstChild.nextSibling.firstChild.nextSibling.nextSibling.style.display = displayState;
                event.preventDefault();
        };
        // Toggle display of user's quote
        var toggleQuote = function(event) {
                var displayState = event.target.getAttribute('displaystate');
                if (displayState == 'none')
                        displayState = '';
                else
                        displayState = 'none';
                event.target.setAttribute('displaystate', displayState);

                // Jump to quotecontent-<div>
                var containingRow = event.target.parentNode.nextSibling;
                containingRow.style.display = displayState;

                event.preventDefault();
        };

        // Find all the usernames in the page
        var results = document.evaluate("//b[@class='postauthor']", document, null, XPathResult.ANY_TYPE, null);
        var resultNodes = [];
        var aResult;
        while (aResult = results.iterateNext())
                resultNodes.push(aResult);

        // Loop through every user post on the page
        for (var i in resultNodes) {
                // containingRow = <table>
                var containingRow = resultNodes[i].parentNode.parentNode.parentNode.parentNode;
                // the info <tr> in the containing <table>
                var infoRow = resultNodes[i].parentNode.parentNode;
                // the message <tr> in the containing <table>
                var msgRow = resultNodes[i].parentNode.parentNode.nextSibling.nextSibling;
                // the postinfo <tr> in the containing <table>
                var appendixRow = resultNodes[i].parentNode.parentNode.nextSibling.nextSibling.nextSibling.nextSibling;
                // the username <td> in the containing <table>
                var elem = resultNodes[i].parentNode;
                // Format whitespace
                var user = escape(resultNodes[i].innerHTML);

                // Flag whether the user is in our hide list
                var notFound = true;
                for (var j = 0; j < users.length; j++) {
                        if (users[j] == user) {
                                notFound = false;
                        }
                }

                // Add relevant event handlers to user's name and a toggler node
                var toggler = document.createElement('span');
                toggler.setAttribute('title', "click to add or remove this user from your hide list");
                toggler.appendChild(document.createTextNode('[X] '));
                toggler.style.fontSize = "7pt";
                toggler.addEventListener('mouseover', curPointer, true);
                toggler.addEventListener('mouseout', curDefault, true);
                toggler.addEventListener('click', addRemoveUser, true);

                // <td> with Username
                elem.insertBefore(toggler, resultNodes[i]);

                // If this user isn't in our hide list, skip to the next user
                if (notFound)
                        continue;

                // Create a span to control toggling
                var span = document.createElement('span');
                span.appendChild(document.createTextNode('Toggle Display'));
                span.setAttribute('class', 'gensmallbold');
                span.style.textDecoration = 'underline';
                span.setAttribute('displaystate', 'none');
                span.addEventListener('mouseover', curPointer, true);
                span.addEventListener('mouseout', curDefault, true);
                span.addEventListener('click', togglePost, true);

                // Insert a <br> after the username and the span
                elem.appendChild(document.createElement('br'));
                elem.appendChild(span);

                var elemWidth = elem.offsetWidth; // user <td> width to restore later
                msgRow.style.display = 'none'; // hide message <tr>
                elem.style.width = (elemWidth-4) + 'px'; // 4 = padding-right-value: 2px; + padding-left-value: 2px;
                elem.nextSibling.nextSibling.style.width = "0%"; // remove width-information from following <td>
        }

        // Find all the usernames quoted in the page
        var results = document.evaluate("//div[@class='quotetitle']", document, null, XPathResult.ANY_TYPE, null);
        var resultNodes = [];
        var aResult;
        while (aResult = results.iterateNext())
        {
                resultNodes.push(aResult);
        }
        // Loop through every user quote on the page
        for (var i in resultNodes) {
                // Find username
                var usermatch = resultNodes[i].innerHTML.match(/(.*) hat geschrieben:$/);
                if (usermatch)
                        var user = escape(usermatch[1]);
                else
                        continue;

                // Flag whether the user is in our hide list
                var notFound = true;
                for (var j = 0; j < users.length; j++) {
                        if (users[j] == user) {
                                notFound = false;
                        }
                }

                // If this user isn't in our hide list, skip to the next user
                if (notFound)
                        continue;

                // Create a span to control toggling
                var span = document.createElement('span');
                span.appendChild(document.createTextNode('Toggle Display'));
                span.setAttribute('class', 'gensmallbold');
                span.style.textDecoration = 'underline';
                span.setAttribute('displaystate', 'none');
                span.addEventListener('mouseover', curPointer, true);
                span.addEventListener('mouseout', curDefault, true);
                span.addEventListener('click', toggleQuote, true);

                resultNodes[i].appendChild(document.createTextNode(' ')); // space between username and toggler
                resultNodes[i].appendChild(span);

                // Hide the quote
                resultNodes[i].nextSibling.style.display = 'none';
        }

})();

Code per C&P in einen Texteditor kopieren und als text/plain unter "user_hide_for_httpwwwgeo.user.js" abspeichern. Datei mir FF oeffnen und Skript installieren.

Getestet mit: Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Wer noch Fehler findet bitte per PN melden!
 

PHerison

Geowizard
Einen kleinen Bug hat das Skript allerdings noch. Wenn das erste Posting von einem zu ignorierendem geschrieben wurde klappt das "Toggle" bei dieser Nachricht nicht. Ob das nur bei Threads mit 1 Nachricht so ist, oder ob das auch noch passiert, wenn es Antworten gibt habe ich noch nicht herausgefunden.
 
PHerison schrieb:
Einen kleinen Bug hat das Skript allerdings noch. Wenn das erste Posting von einem zu ignorierendem geschrieben wurde klappt das "Toggle" bei dieser Nachricht nicht. Ob das nur bei Threads mit 1 Nachricht so ist, oder ob das auch noch passiert, wenn es Antworten gibt habe ich noch nicht herausgefunden.
Warum öffnet man einen Thread, den eine ignorierte Person gestartet hat, und auf den es noch keine Antwort gibt? :???:
 

PHerison

Geowizard
Christian und die Wutze schrieb:
PHerison schrieb:
Einen kleinen Bug hat das Skript allerdings noch. Wenn das erste Posting von einem zu ignorierendem geschrieben wurde klappt das "Toggle" bei dieser Nachricht nicht. Ob das nur bei Threads mit 1 Nachricht so ist, oder ob das auch noch passiert, wenn es Antworten gibt habe ich noch nicht herausgefunden.
Warum öffnet man einen Thread, den eine ignorierte Person gestartet hat, und auf den es noch keine Antwort gibt? :???:
Deshalb habe ich den Bug auch noch nicht weiter analysiert und ausgebuegelt :D
 
Oben