Benutzer:Totto/common.js: Unterschied zwischen den Versionen

Aus ConanWiki
Zur Navigation springen Zur Suche springen
Inhalt hinzugefügt Inhalt gelöscht
K (localscript Executionj)
K (Änderungen, damit es nicht zu früh geladen wird)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 229: Zeile 229:
   
 
function executeLocalScripts() {
 
function executeLocalScripts() {
  +
if (!window.LocalScript) {
  +
window.LocalScript = {};
  +
}
 
if (window.LocalScript.wiki) {
 
if (window.LocalScript.wiki) {
 
window.LocalScript.wiki();
 
window.LocalScript.wiki();
Zeile 237: Zeile 240:
   
   
  +
function domReady(fn) {
mainTotto();
 
  +
document.addEventListener("DOMContentLoaded", fn);
  +
if (document.readyState === "interactive" || document.readyState === "complete" ) {
  +
fn();
  +
}
  +
}
  +
 
domReady(mainTotto);

Aktuelle Version vom 6. November 2021, 20:42 Uhr

var id = null;

function mainTotto() {

    var tf = document.getElementById("p-personal");
    var containerQuickJump = tf.getElementsByTagName("ul")[0];
    var container = document.createElement("li");
    container.setAttribute("class", "TottoCustomContainer");
    container.innerHTML = '<a href="/wiki/ConanWiki:NextHints" dir="auto" title="Quick Acess Hints" >Hints</a>';
    container.setAttribute("id", "TottoHints");
    containerQuickJump.prepend(container);
    var container2 = document.createElement("li");
    container2.setAttribute("class", "TottoCustomContainer");
    container2.innerHTML = '<a href="/wiki/Vorlage:Anime-JP" dir="auto" title="Quick Acess Vorlage JP" >Vorlage JP</a>';
    container2.setAttribute("id", "TottoVorlageJP");
    containerQuickJump.prepend(container2);
    var container3 = document.createElement("li");
    container3.setAttribute("class", "TottoCustomContainer");
    container3.innerHTML = '<a onclick="scrollToBottom();" dir="auto" title="Quick Acess Down" >Downscroll</a>';
    container3.setAttribute("id", "TottoScrollDown");
    containerQuickJump.prepend(container3);
    var container4 = document.createElement("li");
    container4.setAttribute("class", "TottoCustomContainer");
    container4.innerHTML = '<a onclick="refresh()" dir="auto" title="Online Counter">0</a>';
    container4.setAttribute("id", "TottoOnlineCounter");
    containerQuickJump.prepend(container4);
    //addHotkey("s","scrollToBottom");
    //addHotkey("u","scrollToTop");
    //addHotkey("p","preview");
    //AddAcessKeys();
    onlinecounter();
    id = setInterval(onlinecounter, 60 * 1000)
    alertinit()
    isDatei()
    executeLocalScripts()
}

function preview() {
    var ed = document.getElementsByClassName("editButtons");
    if (ed.length >= 1) {
        ///Auto HotkeyPreview Preview :yum:
        var previewbt = document.getElementById("wpPreview");
        previewbt.click();

    }
}


function addToQuicklink(title, link) {
    var tf = document.getElementById("p-personal");
    var containerQuickJump = tf.getElementsByTagName("ul")[0];
    var container = document.createElement("li");
    container.setAttribute("class", "TottoCustomContainer");
    container.innerHTML = '<a href="' + link + '" dir="auto" title="Quick Acess ' + title + '" >' + title + '</a>';
    container.setAttribute("id", "TottoHints");
    containerQuickJump.prepend(container);






}

function scrollToBottom() {

    window.scrollTo(0, document.body.scrollHeight);
}

function scrollToTop() {
    window.scrollTo(0, document, 0)

}

function addHotkey(hotkey, function_to_call) {
    var num = hotkey.toUpperCase().charCodeAt(0);

    document.addEventListener("keydown", function(event) { const key = event.keyCode; if (key === num && event.altKey && event.shiftKey) { window[function_to_call](); } });

}



function addHotkeyF(hotkey, function_to_call) {
    var num = hotkey.toUpperCase().charCodeAt(0);
    document.addEventListener("keydown", function(event) { const key = event.keyCode; if (key === num && event.altKey && event.shiftKey) { function_to_call(); } });
}


function getAllElementsWithAttribute(attribute) {
    var matchingElements = [];
    var allElements = document.getElementsByTagName('*');
    for (var i = 0, n = allElements.length; i < n; i++) {
        if (allElements[i].getAttribute(attribute) !== null) {
            // Element exists with attribute. Add to array.
            matchingElements.push(allElements[i]);
        }
    }
    return matchingElements;
}

function clickf(elementr) {
    elementr.click();
}

function AddAcessKeys() {
    var t = getAllElementsWithAttribute("accesskey");
    for (var i = 0; i < t.length; i++) {
        var key = t[i].getAttribute("accesskey");
        if (key != "." && key != "") {
            addHotkeyF(key, clickf(t[i]));
        }

    }


}

function refresh() {
    onlinecounter();
    var url = "https://conanwiki.org/wiki/Spezial:Wer_ist_gerade_online"
    window.open(url, "_blank")
}

function onlinecounter() {
    var url = "https://conanwiki.org/wiki/Spezial:Wer_ist_gerade_online"
    fetch(url).then(function(response) {
        // The API call was successful!
        return response.text();
    }).then(function(html) {
        try {
            var num = 0;
            // Convert the HTML string into a document object
            var parser = new DOMParser();
            var doc = parser.parseFromString(html, 'text/html');
            var cont = document.getElementById("TottoOnlineCounter").getElementsByTagName("a")[0];
            var c = doc.getElementById("mw-content-text");
            var t = c.getElementsByTagName("ul")[0].getElementsByTagName("li")
            num = t.length;
            window["users"] = []
            window["nums"] = {}
            for (var i = 0; i < t.length; i++) {
                var r = t[i].getElementsByTagName("a")[0]
                    //console.log(r.innerHTML)
                var u = window.getComputedStyle(r, null).color
                window["users"].push(u);
                var key = u.split(" ").join("")
                if (window["nums"][key]) {
                    window["nums"][key] = window["nums"][key] + 1
                } else {
                    window["nums"][key] = 1
                }
            }
            cont.innerHTML = Object.entries(window["nums"]).map(function(a) { return "<a style='color:" + a[0] + ";margin-left:10px;'>" + a[1] + "</a>" }).join("")
                //console.log(num);
        } catch (err) {
            // There was an error
            console.warn('Something went wrong.', err);
            document.getElementById("TottoOnlineCounter").getElementsByTagName("a")[0].innerHTML = 0;
        }
    });



}

function isDatei() {
    var is = window.location.pathname.split("/").map(function(a) { return a.startsWith("Datei:") }).reduce(function(a, b) { return a || b })
    if (is) {
        document.getElementById("file").addEventListener('contextmenu', getText, false)
    }

}

function getText() {
    // ev.preventDefault();
    // alert('success!');
    // return false;
    var url = "https://conanwiki.org/index.php?title=" + (window.location.pathname.split("/").reduce(function(a, b) { return b })) + "&action=edit"
    fetch(url).then(function(response) {
        // The API call was successful!
        return response.text();
    }).then(function(html) {
        try {
            var num = 0;
            // Convert the HTML string into a document object
            var parser = new DOMParser();
            var doc = parser.parseFromString(html, 'text/html');
            var text = doc.getElementById("wpTextbox1").innerHTML;
            navigator.clipboard.writeText(text);
            alertSucess("Inhalt kopiert");
        } catch (err) {
            // There was an error
            console.warn('Something went wrong.', err);
            document.getElementById("TottoOnlineCounter").getElementsByTagName("a")[0].innerHTML = 0;
        }
    });
}

function alertinit() {
    var div = document.createElement('div');
    var style = document.createElement('style');
    style.innerHTML = '.alert { padding: 20px; background-color: #4bac4f;  color: white; margin-bottom: 15px;}.closebtn {  margin-left: 15px;  color: white;  font-weight: bold;  float: right;  font-size: 22px;  line-height: 20px;  cursor: pointer;  transition: 0.3s;} .closebtn:hover {  color: black;}   .fade-out-20 {  animation: fadeOut ease 20s; -moz-animation: fadeOut ease 20s; }  .fade-out-5 {  animation: fadeOut ease 5s; -moz-animation: fadeOut ease 5s; } @keyframes fadeOut {  0% {    opacity:1;  }  100% {  opacity:0; } } @-moz-keyframes fadeOut {  0% {    opacity:1;  } 100% { opacity:0; } }  ';
    div.innerHTML = ' <div id="alert-box" class="alert" style="display:none;position: fixed;top: 50%;z-index: 100;left: 25%;width: 50%;text-align: center;font-size: 49px;"><span onclick="this.parentElement.style.display=\'none\'" class="closebtn" style="font-size: 63px;">×</span><span id="alert-text">Alert</span></div>';
    document.head.appendChild(style);
    document.body.appendChild(div);
}

function alertSucess(text) {
    alert(text, "#4bac4f");
}

function alert(text, color) {
    var d = document.getElementById("alert-box");
    d.classList.remove("fade-out-20");
    d.style.display = "block";
    d.style.opacity = 1;
    d.style["background-color"] = color;
    d.classList.add("fade-out-20");
    var t = document.getElementById("alert-text");
    t.innerHTML = text;
    setTimeout(function() {
        var d = document.getElementById("alert-box");
        d.style.display = "none";
        d.classList.remove("fade-out-20");
    }, 20 * 1000);

}

function executeLocalScripts() {
    if (!window.LocalScript) {
        window.LocalScript = {};
    }
    if (window.LocalScript.wiki) {
        window.LocalScript.wiki();
    } else {
        window.LocalScript.startWiki = true;
    }
}


function domReady(fn) {
  document.addEventListener("DOMContentLoaded", fn);
  if (document.readyState === "interactive" || document.readyState === "complete" ) {
    fn();
  }
}

domReady(mainTotto);