Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Planescape: Torment: Enhanced Edition has been released! Visit www.planescape.com to purchase and check for details. Planescape: Torment: Enhanced Edition Official Soundtrack is available.
Soundtracks for BG:EE, SoD, BG2:EE, IWD:EE are now available in the Beamdog store.
Attention, new and old users! Please read the new rules of conduct for the forums, and we hope you enjoy your stay!

Finally an ignore feature!

ShandaxxShandaxx Member Posts: 6,752
edited August 2016 in Site Resources
YES! Finally finally finally!

There is no inherent ignore function on this forum, but as @Nathan told me several years ago, there is the option of custom scripts in greasemonkey :smiley:

Yes, and I have found just a script for that:
http://userscripts-mirror.org/scripts/review/174750

If you take that and put it into greasemonkey in firefox and you change it so it works on this forum - then yes
it actually does work.
For testing purposes I entered my own nick, and suddenly all of my posts were gone :smiley:

That script was not written by me. Using someone else's code might be dangerous. Be aware of that.
I do not take responsibility.

Anyway, it is not "perfect" yet for this forum in the sense that a person's entire existence is not yet erased from the forum. You will still see some traces of their activity.

But the most important thing works: You do not see their posts anymore.

Maybe I will pick up on javascript and teach myself how to expand that script.
So that you don't see anything of that person anymore. As if they had been completely erased.

Now this thread is NOT meant to discuss the ethics of an ignore feature.
There are advantages and disadvantages. I do NOT want them to be discussed here.
Please make a seperate thread for that if you are interested in that.

I just want to make one small comment on that:
This forum has rules. And moderators. I have been here since 2012.
I have seen many times that it is very easy to annoy someone even within the forum rules.
Recently it has gotten so bad that I do not wish to be on the same forum anymore as a certain member.
And this is my solution so that I don't have to leave.

I feel like a huge burden has fallen off my chest!

Goodbye! Goodbye to those who I will put on ignore from now on.
And to those that will put me on their ignore list. Finally, goodbye!

Edit:
You can find my enhanced version of that script and instructions on how to use it below, in the thread.
Post edited by Shandaxx on
ButtercheesedeltagololienCrevsDaakTroodon80NonnahswriterJuliusBorisovAlonsoMirandel
«1

Comments

  • ShandaxxShandaxx Member Posts: 6,752
    Haha, that was funny. Right after posting the opening post I saw nothing...
    Because I still had myself on ignore for testing purposes :smiley:

    So this is what I saw:

    image
    ButtercheeseCrevsDaakNonnahswritertbone1
  • ShandaxxShandaxx Member Posts: 6,752
    Alright playing around a bit with javascript. I don't have a clue what I am doing.
    Nah it's not that bad. It's been fun so far. I managed to delete the entire left control panel on the forum :smiley:

    image

    Actually I think that for pros on javascript, html and css it would be possible to build entire forum skins and completely redesign the forum to their liking. Of course the skin would always depend on the underlying markup structure of the forum.

    Anyway I am a complete beginner on this, so I'm just playing around a bit.
    Oh yes and I have found a way to switch off the "Who's online" box.
    But not individual names inside yet... (that's the thing that does not work in the script that I found)

  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Alright some progress: I have managed to blend off the members on ignore inside the "Who's online" box.

    Edit: Counter works now correctly too. That is when someone is online who is on ignore the counter will decrease accordingly.

    The next thing is the activity page. Because the forum for which the code from the OP was written does not have an activity page (Yes, I know those poor guys). So, I'm going to look into that and see if I can turn posts of ignored members invisble on the activity page. No promises here ;)
    Post edited by Shandaxx on
    Buttercheese
  • ShandaxxShandaxx Member Posts: 6,752
    Please, someone quote this message. And then someome else quote the quoted message.
    Because I want to test how the ignore function works on quotes. Especially nested ones.
    Troodon80
  • joluvjoluv Member Posts: 1,555
    Shandyr said:

    Please, someone quote this message. And then someome else quote the quoted message.
    Because I want to test how the ignore function works on quotes. Especially nested ones.

    I quoted your message.
    ShandaxxTroodon80
  • Mr2150Mr2150 Member Posts: 1,170

    joluv said:

    Shandyr said:

    Please, someone quote this message. And then someome else quote the quoted message.
    Because I want to test how the ignore function works on quotes. Especially nested ones.

    I quoted your message.
    I herd u leik quotes
    Quotey McQuoteface...
    ShandaxxsmeagolheartTroodon80
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Thank you guys.

    Well that is interesting because what the ignore script does at the moment depends on your custom settings of quotes on the forum.

    If you go to "Edit Profile" -> "Quote Settings" you have several options to fold up quotes and depending on that the ignore script will act differently.

    If I set myself on ignore this happens in this case:

    For "Dont fold quotes" (and "3 levels deep" and beyond):
    Note that "3 levels deep" and beyond would probably behave differently if the quotes were even more nested.
    image


    For "1 level deep":
    image


    For "2 levels deep":
    image


    Ideally the ignore script should work independently from your quote settings.
    I don't know if that's possible. For the moment I'd ask anyone who wishes to use it to adjust their quote setings accordingly. I may have a look into this in some time, but first I wanna deal with the activity page.

    ButtercheeseMr2150Troodon80
  • ShandaxxShandaxx Member Posts: 6,752
  • Mr2150Mr2150 Member Posts: 1,170
    Is that what happens when you ignore everyone?
    Shandaxx
  • ShandaxxShandaxx Member Posts: 6,752
    edited March 19
    No, that is what happens when I mess up :tongue:
    Post edited by Shandaxx on
    Mr2150mlnevese
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Okay, the ignore script now works on the activity page for the following classes:
    Activity-WallPost (these are posts to or from other members),
    Activity-Status (this is when you post on your own wall),
    ActivityComment (any answer comment on the activity page).

    Note that the first two are completely deleted for an ignored member.
    So if you ignore let's say me. And I have made a WallPost to @JuliusBorisov, and Julius replies, and other members reply too - that doesn't matter - the entire post and all its answers vanish because the original poster, I, is on ignore.

    Same goes for Activity-Status. The original message will be deleted and any answers to it.

    Alright, what does not work yet on the activity page are the following classes:
    Activity-Registration ( it's the question if this is even worth ignoring),
    Activity-Badge (when you earn a badge),
    Activity-PictureChange (when you change your avatar).

    I do not consider the 3 latter ones to be the most important ones. My priority was to block any written content ASAP by those you put on ignore.

    The long term goal, of course, is to hide the entire existence of the person you have put on ignore.

    Of course it will not be completely possible because other members will still react to the person you ignore. So you will see other people react to them. That is the natural limit of any ignore function, really.
    JuliusBorisov
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Update: Threads from persons who are on ignore will be invisible from now on.

    Also a remark:
    I do plan on publishing my code. I will not keep this for myself if you may have though that.
    However, I cannot publish it before I at least try to contact the original author and get approval.
    And once I'm finished with the core of the script I'd like someone to check if the script offers any ways for attacks. It has to be secure of course.

    I do not mind if you will use "my own" script to ignore me. That is fine for me.
    Otherwise I don't want to digress, because as I said in the OP the ethics of an ignore feature are to be considered off topic in this thread.

    Also I do plan on publishing step-by-step instructions on how to make it work in Firefox.
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    So a little illustration. What happens to the thread overview when you put someone, for example me, on ignore:

    Without ignore:
    image


    With ignore:
    image
    ButtercheeseNonnahswriter
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Update:

    From now on people on ignore are not shown on the leaderboards anymore, neither alltime nor weekly.
    Also if they change their avatar, the message on the activity page is invisible.
    Lastly, their posts are removed from the "bestof" page.

    Even if that punches ugly holes in the bestof page^^

    image

    (I only put some on ignore for demonstration purposes here ;) )
    ButtercheeseTroodon80
  • Troodon80Troodon80 Member, Developer Posts: 4,109
  • ShandaxxShandaxx Member Posts: 6,752
    So I think the first version of the script has been finalized. I have got the permission of the original author to expand upon his script and publish the result.

    So what the next step would be is to get the panda secruity check approval of my script. (I will simply refer to it as "my" script from now on. It does contain a note and mention the original author. It's not meant to be disrespectful when I say "my".)

    Well and then I'd say I post a little instructions on how to install it. And then I need many many testers :tongue:

    Note, the script does have its limitations. Don't expect too much. But for someone who wishes to have the option to ignore someone this is better than nothing.

    The latest changes are:
    Badge activites are completely deleted if the message contains the ignored person, same for forum registration message.
    Also private messages from the ignored person are invisible, with some limitations.

    You will still get a notification for a PM though. So you may consider switching notifications off.

    Also I have not yet worked on the nested quotes issue.
    Buttercheese
  • ShandaxxShandaxx Member Posts: 6,752
    So my script can be found here:

    https://greasyfork.org/en/scripts/22114-beamdog-forums-ignore-script

    @Troodon80
    Would you check it out for me, please? I would like you to post here if you think the script is safe or contains secruity risks.

    Other than that keep in mind I do not program often. And it's my first time with javascript so...
    The most important aspect right now is that it's working.
    And the style of the code is to be neglected for the moment... ;)
    joluv
  • Troodon80Troodon80 Member, Developer Posts: 4,109
    That works, though I will say that the nested quotes won't work simply by setting the display to none. Nested quotes already have that setting, it's when you press on the Show link that it then sets display to block. The only way to get rid of that would be to replace this:
    quotesToHide[i].parentNode.style.display = 'none';
    with this:
    quotesToHide[i].parentNode.innerHTML = '';
    This will actually remove/replace the body of the quote and the username from the markup code after the page has loaded—you won't even see it if you inspect using Firebug or Chrome. You could do an extra sweep and set the display for the Show link to none instead. Those are your two options. This will still not change the fact that actually quoting someone is an SQL query and will always pull the most up to date version of the post, user content and all.

    Security-wise, it's fine. :-)
    ShandaxxjoluvButtercheese
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Alright, so I have posted my ignore script. Now you would like to put someone on ignore. Just how to do it?

    You'd need 3 things:

    1.) Mozilla Firefox as a browser.
    2.) "Greasemonkey" as an add-on to Firefox.
    3.) My ignore script.

    Note: The script mostly seems to work on Chrome too with "Tampermonkey", although some features do not work as intended. For the moment I'm only gonna support Firefox.

    step 1) Have a look here on how to install Mozilla Firefox. Under point "3." in the installation description you may want to check out "options" to be sure everything is set there exactly as you want it...

    step 2) Go here and get Greasemonkey. Be sure to read the "privacy policy" first. Don't install Greasemonkey if you don't want to agree to it. Otherwise, click on "Add to firefox". A little pop-up should appear where you press "Install".
    Then you should be notified that Firefox needs a restart.

    step 3)
    Go here and click "install this script". A pop-up will appear. Press "Install". After that the script is installed.
    When you reload any forum page after that, I should already have vanished from your view.
    Because I'm the default ignored in the script :tongue:

    You can always press on the little monkey symbol in Firefox to deactivate Greasemonkey altogether and then reload the forum page and I should be visible again. Of course you can also deactivate just a single script.

    step 4) How to add/remove someone from ignore?
    Press the arrow next to the little monkey head icon. Then go to "manage user scripts".
    Alternatively, you can go to your Firefox add-ons manager page.
    For example by typing "about:addons" in the address bar of the browser.
    Or just click on "open menu" and then "Add ons".

    You should find a little monkey head on the left panel of the screen. Click on it.
    On the main screen you should see the entry "Beamdog forums ignore script".
    Click on "options". A new windows should pop up.

    At the bottom you will find a bar with the text "Edit this user script", click on it.
    A new window should open with the code.

    Go to
    //add a person to this list, enclosing their name with "" and ending with , var userlist = [ "Shandyr", ];

    Delete my name if you wish to remove me from ignore.
    Or replace my name with someone else's if you want to ignore someone else instead.
    If you'd like to ignore several people, it should look like this:

    //add a person to this list, enclosing their name with "" and ending with , var userlist = [ "Shandyr", "GrumpyToadstool", "EvilMummyMan", "CookieMonster", ];

    (The names are just there for demonstration purposes. I do not intent to insult anyone who may have chosen one of the names.)

    Click on "save". Go to the Beamdog forum and reload the website. And there we are. You hopefully have successfully put someone on ignore.
    ButtercheeseTroodon80lolienMirandel
  • ShandaxxShandaxx Member Posts: 6,752
    If you have any questions, if anything has been left unclear, let me know. I am always ready to help out.
  • ButtercheeseButtercheese Member Posts: 3,531
    I haven't tested it thrououtly yet, but it seems to be working fine with Chrome as well, at least I have not spotted any glitches/ issues yet.

    Instead of Greasmonkey you need the equal plugin for Chrome, called Tampermonkey.
    ShandaxxTroodon80
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Yeah so I tried it out in Chrome too, with Tampermonkey there and it worked just fine. I didn't notice anything that didn't work.

    Uhm yeah anyway, what I just noticed is:
    Public polls! You can still see the thumbnail of an ignored member in results of public polls.
    I will be going to remedy that.

    The other point is:
    Let's say you put me on ignore. But then someone else mentions me, most probably with the @ tag.
    Unless that user is on ignore too you would see that.
    So I will look into a way to erase a forum member's name from posts of other forum members.

    The name could be replaced with some general term.
    So instead of "Shandyr" maybe you would read "user" or "forum member".

    Actually as my ignore script is highly adjustable you can enter a term on your own.

    This is something that I haven't highlighted yet. You can of course adjust the ignore script to your own needs.
    You can switch off individual ignore functions if you like so.

    It can be done be either deleting blocks of code in my script or by commenting them out which works as followed:

    /* block of code */
    That block of code inside "/* ... */" is not going to be executed.
    Buttercheese
  • ShandaxxShandaxx Member Posts: 6,752
    Let's say you like my ignore script as it is but you would still like to see ignored members on the leaderboards for some reason. Then you can comment out the code in my script as followed:

    //delete from leaderboards /* for (var i=0; i < leaderBoxesToDelete.length; i++) { if (userlist.indexOf(leaderBoxesToDelete[i].querySelector(".Username").textContent) > -1 ) { leaderBoxesToDelete[i].parentNode.parentNode.style.display = 'none'; } } */

    Anyway, if you try to adjust my script and something doesn't work, just let me know :)
    Troodon80
  • Troodon80Troodon80 Member, Developer Posts: 4,109
    edited August 2016
    Shandyr said:

    So I will look into a way to erase a forum member's name from posts of other forum members.

    There are not going to be very many ways to do this that will be 'good'; as in resource efficient. Continuing along the same lines to what you already have, this will work:
    var tagsToDelete = document.querySelectorAll("a"); for (var i=0; i < tagsToDelete.length; i++) { var inner = tagsToDelete[i].innerHTML; if (userlist.indexOf(inner.substring(1,inner.length)) > -1 ) { // uncomment the line you want to use // option 1: replace text and link //tagsToDelete[i].outerHTML = '<a href="#">@blockeduser</a>'; // option 2: replace just the visible text in the tag //tagsToDelete[i].innerHTML = '@blockeduser'; } }You have two options here:
    • One that changes the URL as well as the tag text; and
    • One that changes just the tag text but still allows you to follow the link to the users' profile.
    This won't remove a person's name where someone is simply referring to someone else without tagging, though (e.g. "I'd like to refer back to what Shandyr said on the first page about X."). For that, you'd need a much more thorough (also generic) search and replace function.
    Shandaxx
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Troodon80 said:


    This won't remove a person's name where someone is simply referring to someone else without tagging, though (e.g. "I'd like to refer back to what Shandyr said on the first page about X."). For that, you'd need a much more thorough (also generic) search and replace function.

    I have thought about this a bit. One problem is when a forum member has a name that has another meaning than just being a forum member's name.

    For example let's say someone called themselves "Viconia".
    Now you put that user on ignore. Then "Viconia" written in plain text would be replaced by, for example, "blockeduser"

    That would be a problem if you just would like to follow a discussion about Viconia...

    So you would have to make sure that the name is being used as a forum member's name.
    And the way to assure that is the @ tag.

    Of course that will not catch the cases where a forum member is being referenced with plain text.
    However, I don't see a way to have it both ways.
    Troodon80
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Another example, what if someone wanted to talk about Anduin or Anduin but not @Anduin.
    lolienAnduin
  • ButtercheeseButtercheese Member Posts: 3,531
    Maybe instead of the username, the link to the user page could be blocked?
    (I don't know jackshit about jawascript.)
    Troodon80
  • ShandaxxShandaxx Member Posts: 6,752

    Maybe instead of the username, the link to the user page could be blocked?
    (I don't know jackshit about jawascript.)

    That is also possible, yes.

    Based on Troodon's code that'd be option 3:

    var tagsToDelete = document.querySelectorAll("a"); for (var i=0; i < tagsToDelete.length; i++) { var inner = tagsToDelete[i].innerHTML; if (userlist.indexOf(inner.substring(1,inner.length)) > -1 ) { // uncomment the line you want to use // option 1: replace text and link // tagsToDelete[i].outerHTML = '<a href="#">@blockeduser</a>'; // option 2: replace just the visible text in the tag // tagsToDelete[i].innerHTML = '@blockeduser'; // option 3: only block the link // tagsToDelete[i].setAttribute("href","#"); } }

    ButtercheeseTroodon80
  • ShandaxxShandaxx Member Posts: 6,752
    edited August 2016
    Alright, this is just testing: FAnduin

    It's just a link to google, don't be surprised. I just wanted to check what happens in that case.

    The case here is that someone names a link after a username with one additional character in front of the name.
    In that rare case, that link would be blocked too, because we don't check for the "@" tag specifically.

    I do not know if this rare, exceptional case is even worth catching... :sweat_smile:
    Troodon80
«1
Sign In or Register to comment.