Bigger forum text

Tool to let you raise or lower the size of forum's text

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name         Bigger forum text
// @version      1.2
// @description  Tool to let you raise or lower the size of forum's text
// @author       A Meaty Alt
// @include      /fairview\.deadfrontier\.com\/onlinezombiemmo\/index.php\?board=/
// @include      /fairview\.deadfrontier\.com\/onlinezombiemmo\/index.php\?topic=/
// @grant        none
// @namespace    https://greatest.deepsurf.us/users/150647
// ==/UserScript==

(function() {
    'use strict';
    var holder = document.createElement("div");
    
    var btnPlusQuotes = document.createElement("button");
    btnPlusQuotes.setAttribute("onclick", "plusQuotes()");
    btnPlusQuotes.textContent = "+";
    var btnMinusQuotes = document.createElement("button");
    btnMinusQuotes.setAttribute("onclick", "minusQuotes()");
    btnMinusQuotes.textContent = "-";
    var txtQuotes = document.createElement("input");
    txtQuotes.value = "Quotes";
    txtQuotes.setAttribute("disabled", true);
    
    var btnPlusMsgs = document.createElement("button");
    btnPlusMsgs.setAttribute("onclick", "plusMsgs()");
    btnPlusMsgs.textContent = "+";
    var btnMinusMsgs = document.createElement("button");
    btnMinusMsgs.setAttribute("onclick", "minusMsgs()");
    btnMinusMsgs.textContent = "-";
    var txtMsgs = document.createElement("input");
    txtMsgs.value = "Messages";
    txtMsgs.setAttribute("disabled", true);
    
    var btnPlusTitles = document.createElement("button");
    btnPlusTitles.setAttribute("onclick", "plusTitles()");
    btnPlusTitles.textContent = "+";
    var btnMinusTitles = document.createElement("button");
    btnMinusTitles.setAttribute("onclick", "minusTitles()");
    btnMinusTitles.textContent = "-";
    var txtTitles = document.createElement("input");
    txtTitles.value = "Titles";
    txtTitles.setAttribute("disabled", true);
    
    var script = document.createElement("script");
    
    function plusQuotes(){
        var quotes = document.getElementsByClassName("quote");
        setQuotes(getSize(quotes[0]) +1 + "px");
    }
    function minusQuotes(){
        var quotes = document.getElementsByClassName("quote");
        setQuotes(getSize(quotes[0]) -1 + "px");
    }
    
    function plusMsgs(){
        var msgs = document.getElementsByClassName("row11");
        setMsgs(getSize(msgs[0]) +1 + "px");
    }
    function minusMsgs(){
        var msgs = document.getElementsByClassName("row11");
        setMsgs(getSize(msgs[0]) -1 + "px");
    }
    
    function plusTitles(){
        var topicTitles = document.getElementsByClassName("topictitle");
        setTitles(getSize(topicTitles[0]) +1 + "px");
    }
    function minusTitles(){
        var topicTitles = document.getElementsByClassName("topictitle");
        setTitles(getSize(topicTitles[0]) -1 + "px");
    }
    
    function getSize(element){
        return getNumber(element.style.fontSize);
    }
    function getNumber(string){
        return parseInt(string.match(/\d+/)[0]);
    }
    
    function setTextSize(size, elements, storage){
        for(var i=0;i<elements.length;i++){
            if(elements[i].children.length > 0){
                setTextSizeOfChildren(size, elements[i].children, storage);
            }
            elements[i].style.fontSize = size;
        }
        localStorage.setItem(storage, size);
    }
    function setTextSizeOfChildren(size, children, storage){
        //Using queues for being iterative? Ain't nobody got time fo' dat
        for(var i=0; i<children.length; i++){
            if(children[i].style.fontSize != ""){
                var newSize = sizeMagic(size, children[i].style.fontSize, storage);
                children[i].style.fontSize = newSize;
            }
            else if(children[i].children.length > 0){
                setTextSizeOfChildren(size, children[i].children, storage);
            }
        }
    }
    function sizeMagic(normalSize, oldSize, storage){
        var parsedNormalSize = getNumber(normalSize);
        var parsedOldSize = getNumber(oldSize);
        var parsedOldSizePx = parsedOldSize;
        var parsedOldNormalSize;
        if(oldSize.indexOf("pt") > -1){
            parsedOldSizePx *= 1.33;
            parsedOldNormalSize = getNumber(original[storage]);
        }
        else{
            parsedOldNormalSize = localStorage.getItem(storage)? 
                getNumber(localStorage.getItem(storage)): getNumber(original[storage]);
        }
        var finalSize = parsedOldSizePx + (parsedNormalSize - parsedOldNormalSize);
        return finalSize + "px";
    }
    
    function setQuotes(size){
        var quotes = document.getElementsByClassName("quote");
        setTextSize(size, quotes, "sizeQuotes2");
    }
    
    function setMsgs(size){
        var msgs = document.getElementsByClassName("row11");
        setTextSize(size, msgs, "sizeMsgs2");
    }
    
    function setTitles(size){
        var topicTitles = document.getElementsByClassName("topictitle");
        setTextSize(size, topicTitles, "sizeTitles2");
    }
    
    
    var original = {};
    original.sizeTitles2 = "11px";
    original.sizeMsgs2 = "12px";
    original.sizeQuotes2 = "11px";
    localStorage.removeItem("sizeQuotes");
    localStorage.removeItem("sizeTitles");
    localStorage.removeItem("sizeMsgs");
    
    var sizeTitles = localStorage.getItem("sizeTitles2")? 
        localStorage.getItem("sizeTitles2"): "14px";
    var sizeMsgs = localStorage.getItem("sizeMsgs2")? 
        localStorage.getItem("sizeMsgs2"): "18px";
    var sizeQuotes = localStorage.getItem("sizeQuotes2")? 
        localStorage.getItem("sizeQuotes2"): "18px";
    setMsgs(sizeMsgs);
    setQuotes(sizeQuotes);
    setTitles(sizeTitles);
    
    script.text += plusQuotes.toString();
    script.text += minusQuotes.toString();
    script.text += plusTitles.toString();
    script.text += minusTitles.toString();
    script.text += plusMsgs.toString();
    script.text += minusMsgs.toString();
    script.text += setQuotes.toString();
    script.text += setTitles.toString();
    script.text += setMsgs.toString();
    script.text += getSize.toString();
    script.text += sizeMagic.toString();
    script.text += getNumber.toString();
    script.text += setTextSize.toString();
    script.text += setTextSizeOfChildren.toString();
    
    document.getElementsByTagName("body")[0].appendChild(script);
    var dst = document.getElementsByTagName("table")[10];
    
    holder.appendChild(btnMinusTitles);
    holder.appendChild(txtTitles);
    holder.appendChild(btnPlusTitles);
    
    holder.appendChild(btnMinusMsgs);
    holder.appendChild(txtMsgs);
    holder.appendChild(btnPlusMsgs);
    
    holder.appendChild(btnMinusQuotes);
    holder.appendChild(txtQuotes);
    holder.appendChild(btnPlusQuotes);
    
    dst.appendChild(holder);
})();