Greasy Fork is available in English.

Forum WS - Corrige les topics non-lus

Corrige le bug des topics non-lus sur le forum WS

// ==UserScript==
// @name         Forum WS - Corrige les topics non-lus
// @namespace    Forum-WS
// @version      1.0
// @description  Corrige le bug des topics non-lus sur le forum WS
// @author       Micdu70
// @match        https://www.wareziens.net/forum*
// @match        https://wareziens.net/forum*
// @match        http://www.wareziens.net/forum*
// @match        http://wareziens.net/forum*
// @grant        none
// ==/UserScript==

function INIT()
{
    var getProfileUrl;
    var check_v3 = document.getElementById('noxContent');
    if (check_v3)
    {
        getProfileUrl = document.getElementsByClassName('status')[0];
    }
    else
    {
        getProfileUrl = document.getElementById('navprofile');
    }
    if (getProfileUrl)
    {
        var loggedUsername, iconStyle;
        var welcomeMessage = getProfileUrl.textContent;
        check_v3 = getProfileUrl.getElementsByTagName('span')[0];
        if (check_v3)
        {
            loggedUsername = welcomeMessage.slice(21);
            iconStyle = "url(https://static.wareziens.net/wp-content/forum/style/v3/img/noNewMessage.png) no-repeat";
        }
        else
        {
            loggedUsername = welcomeMessage.slice(10);
            iconStyle = "url(https://static.wareziens.net/forum/style/v4/img/old.png) 0px 0px no-repeat scroll rgba(0, 0, 0, 0)";
        }
        updateTopics(loggedUsername, iconStyle);
        checkTopics(loggedUsername, iconStyle, true);
    }
}

function updateTopics(loggedUsername, iconStyle)
{
    var getTopics = document.getElementById('ajax');
    if (getTopics)
    {
        console.log("Updating Topics...");
        var request = new XMLHttpRequest();
        request.open('GET', 'https://www.wareziens.net/forum/topics_ajax.php', true);
        request.setRequestHeader('Cache-Control', 'no-cache');
        request.onload = function() {
            if (this.status >= 200 && this.status < 400)
            {
                getTopics.innerHTML = this.responseText;
                checkTopics(loggedUsername, iconStyle, false);
            }
        };
        request.send();
    }
}

function checkTopics(loggedUsername, iconStyle, ajax)
{
    var getTopics = document.getElementById('ajax');
    if (getTopics)
    {
        console.log("Checking Topics...");
        var topicsNotRead = document.getElementsByClassName('inew');
        for (var i = 0; i < topicsNotRead.length; i++)
        {
            var lastMessageUsername = topicsNotRead[i].getElementsByClassName('byuser')[1];
            if (!lastMessageUsername)
            {
                lastMessageUsername = topicsNotRead[i].getElementsByClassName('byuser')[0];
            }
            lastMessageUsername = lastMessageUsername.getElementsByTagName('a')[0].textContent;
            if (lastMessageUsername === loggedUsername)
            {
                var icon = topicsNotRead[i].getElementsByClassName('icon-new')[0];
                icon.style.background = iconStyle;
                var title = topicsNotRead[i].getElementsByClassName('tclcon')[0];
                var getTitle = title.innerHTML;
                var newTitle = getTitle.replace(/<\/?strong>/g, '');
                title.innerHTML = newTitle;
                var newMessage = topicsNotRead[i].getElementsByClassName('newtext')[0];
                newMessage.style.display = 'none';
            }
        }
        if (ajax)
        {
            console.log("Starting AJAX Checker...");
            var oldXHR = window.XMLHttpRequest;
            var stateChangeHandler = function() {
                var ajaxFile = this.responseURL.split('/').pop();
                if (ajaxFile === 'topics_ajax.php' && this.readyState == 4 && this.status == 200)
                {
                    console.log("AJAX Topics Update Detected!");
                    setTimeout(function() {checkTopics(loggedUsername, iconStyle, false);}, 500);
                }
            };
            var newXHR = function() {
                var xhr = new oldXHR();
                xhr.addEventListener('readystatechange', stateChangeHandler);
                return xhr;
            };
            window.XMLHttpRequest = newXHR;
        }
    }
}

INIT();