BetterAltervista

Migliora Altervista.org

// ==UserScript==
// @name         BetterAltervista
// @namespace    https://pizidavi.altervista.org/
// @version      2.0
// @description  Migliora Altervista.org
// @author       pizidavi
// @require      https://cdn.jsdelivr.net/gh/soufianesakhi/node-creation-observer-js@edabdee1caaee6af701333a527a0afd95240aa3b/release/node-creation-observer-latest.min.js
// @match        https://en.altervista.org/*
// @match        https://it.altervista.org/*
// @match        https://s407.altervista.org/*
// @grant        GM_xmlhttpRequest
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const url = location.origin;

    if (url.includes('s407.altervista.org')) {
        const SID = getURLParam('sid');

        NodeCreationObserver.onCreation('#header > div > ul', function (element) {
            const TEMPLATE = '<li id="devmode"> <a href="/cloudflare.pl?sid='+SID+'"> <div><span class="font-icon icon-pencil"></span></div> <span id="devmode-span" class="nav-header-label">Dev-Mode</span> </a> </li><style>#devmode-span.on { font-size: 14px; font-weight: 700; }</style>'
            element.innerHTML += TEMPLATE;

            let devmode = undefined;
            let devmode_timeout = null;

            const _ = url+'/cloudflare.pl?sid='+SID;
            ajax(_, '', function(data){
                var el = document.createElement('html');
                el.innerHTML = data;

                const input = el.querySelector('#content > div > ul > li > div > div.widget-content > div > div > div > div:nth-child(2) > form > input[type=hidden]:nth-child(4)');
                devmode = (input.value == 'off' ? true : false);
                updateText(devmode);
            });

            document.querySelector('#devmode').onclick = function(e){
                e.preventDefault(); e.stopPropagation();
                if(devmode == undefined) return;

                const data = 'a=devmode&v='+(devmode ? 'off' : 'on');
                ajax(_, data, function(data){
                    devmode = !devmode;
                    updateText(devmode);

                    clearTimeout(devmode_timeout);
                    devmode_timeout = setTimeout(function(){
                        devmode = !devmode;
                        updateText(devmode);
                    }, 10800000); // 3 ore
                });
            };
        });
    }
    else {
        const _ = document.querySelector('#login > a').getAttribute('href');
        location.href = _;
    }


    // Function
    function updateText(mode) {
        const classList = document.querySelector('#devmode-span').classList;
        if(mode)
            classList.add('on');
        else
            classList.remove('on');
    }

    function ajax(url, data, success) {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                success(this.responseText); }
        };
        xhttp.open('POST', url, true);
        xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xhttp.send(data);
    }

    function getURLParam(param) {
        const url = new URL(window.location.href);
        return url.searchParams.get(param);
    }

})();