User:Fumple/common.js: Difference between revisions

From Inkipedia, the Splatoon wiki
m (Oops)
(Removed DarkMode js)
 
(30 intermediate revisions by 2 users not shown)
Line 1: Line 1:
//Page-specific script
// ================================================================================
//Define vars
// Page specific JS/CSS
var mwSkin = mw.config.get("skin")
// ================================================================================
var pageTypes = {};
pageTypes.globalJS = 'MediaWiki:Common.js/' + mw.config.get("wgPageName");
pageTypes.globalCSS = 'MediaWiki:Common.css/' + mw.config.get("wgPageName");
pageTypes.skinJS = 'MediaWiki:' + mwSkin + '.js/' + mw.config.get("wgPageName");
pageTypes.skinCSS = 'MediaWiki:' + mwSkin + '.css/' + mw.config.get("wgPageName");
pageTypes.userJS = 'User:' + mw.config.get("wgUserName") + '/common.js/' + mw.config.get("wgPageName");
pageTypes.userCSS = 'User:' + mw.config.get("wgUserName") + '/common.css/' + mw.config.get("wgPageName");
pageTypes.userSkinJS = 'User:' + mw.config.get("wgUserName") + '/' + mwSkin + '.js/' + mw.config.get("wgPageName");
pageTypes.userSkinCSS = 'User:' + mw.config.get("wgUserName") + '/' + mwSkin + '.css/' + mw.config.get("wgPageName");


function userCheckPage(type, exist) {
//Check page specific files
    if (exist == null) {
mw.loader.using("mediawiki.api", function () {
    var skin = mw.config.get("skin"),
        page = mw.config.get("wgPageName"),
        user = mw.config.get("wgUserName");
 
    var pages = [
        ['MediaWiki:Common.js/' + page + ".js", "globaljs"],
        ['MediaWiki:Common.css/' + page + ".css", "globalcss"],
        ['MediaWiki:' + skin + '.js/' + page + ".js", "skinjs"],
        ['MediaWiki:' + skin + '.css/' + page + ".css", "skincss"]
    ];
    if (user != null) pages.push(
        ['User:' + user + '/common.js/' + page + ".js", "userjs"],
        ['User:' + user + '/common.css/' + page + ".css", "usercss"],
        ['User:' + user + '/' + skin + '.js/' + page + ".js", "userskinjs"],
        ['User:' + user + '/' + skin + '.css/' + page + ".css", "userskincss"]
    );
    pages.forEach(function (el) {
        if (el[1] == "js") {
            if (new URL(window.location).searchParams.get("disable-page-js") != null) return;
            mw.loader.load('/w/index.php?title=' + encodeURIComponent(el[0]) + '&action=raw&ctype=text/javascript');
        }
        else {
            if (new URL(window.location).searchParams.get("disable-page-css") != null) return;
            mw.loader.load('/w/index.php?title=' + encodeURIComponent(el[0]) + '&action=raw&ctype=text/css', 'text/css');
        }
         new mw.Api().get({
         new mw.Api().get({
             action: 'parse',
             action: 'parse',
             page: type,
             page: el[0],
             prop: ""
             prop: ""
         }).done(function (data) {
         }).done(function (data) {
             userCheckPage(type, true)
             $("#p-namespaces ul").append('<li><span><a href="/w/index.php?title=' + encodeURIComponent(el[0]) + '">' + el[1] + '</a></span></li>');
         }).fail(function (data) {
         }).fail(function (data) {
             userCheckPage(type, false)
             $("#p-namespaces ul").append('<li class="new"><span><a href="/w/index.php?title=' + encodeURIComponent(el[0]) + '&amp;action=edit&amp;redlink=1">' + el[1] + '</a></span></li>');
         });
         });
     }
     });
    else if (exist) {
        $("#p-namespaces ul").append('<li><span><a href="/w/index.php?title=' + pageEnc(type) + '">' + getTypeByValue(type) + '</a></span></li>');
        userCheckNextPage(type)
    }
    else if (!exist) {
        $("#p-namespaces ul").append('<li class="new"><span><a href="/w/index.php?title=' + pageEnc(type) + '&amp;action=edit&amp;redlink=1">' + getTypeByValue(type) + '</a></span></li>');
        userCheckNextPage(type)
    }
}
 
function userCheckNextPage(type) {
    switch (type) {
        case pageTypes.globalJS:
            userCheckPage(pageTypes.globalCSS);
            break;
        case pageTypes.globalCSS:
            userCheckPage(pageTypes.skinJS);
            break;
        case pageTypes.skinJS:
            userCheckPage(pageTypes.skinCSS);
            break;
        case pageTypes.skinCSS:
            if (mw.config.get("wgUserName") != null) {
                userCheckPage(pageTypes.userJS);
            }
            break;
        case pageTypes.userJS:
            if (mw.config.get("wgUserName") != null) {
                userCheckPage(pageTypes.userCSS);
            }
            break;
        case pageTypes.userCSS:
            if (mw.config.get("wgUserName") != null) {
                userCheckPage(pageTypes.userSkinJS);
            }
            break;
        case pageTypes.userSkinJS:
            if (mw.config.get("wgUserName") != null) {
                userCheckPage(pageTypes.userSkinCSS);
            }
            break;
    }
}
 
function pageEnc(string) {
    return encodeURIComponent(string);
}
 
function getTypeByValue(value) {
    return Object.keys(pageTypes).find(function (key) { return pageTypes[key] === value });
}
 
//Check page specific files
onApiReady(function () {
    userCheckPage(pageTypes.globalJS);
});
});


function onApiReady(callback) {
//Page owner
    if (mw.Api != null) {
$(".ns-2 #content a, .ns-3 #content a").each(function () {
        setTimeout(callback, 0);
    if ($(this).attr("href") == ("/wiki/User:" + mw.config.get("wgRelevantUserName")).replace(/\s/g, "_")) $(this).addClass("page-owner")
    } else {
})
        setTimeout(onApiReady.bind(null, callback), 0);
    }
}
 
//PRETTY VISIBLE NOTICES
/*<nowiki>*/
 
//Check notices
var user = mw.config.get("wgUserName");
if (user != null) {
    waitForApi();
}
 
function showNotice(){
    console.log("Ready to show")
    new mw.Api().get({
        "action": "parse",
        "format": "json",
        "page": "MediaWiki:Notice/"+user,
        "prop": "text"
    }).done(function (data) {
        console.log("Got notice")
        //Create
        var el = document.createElement("div");
        var el2 = document.createElement("div");
        var el2center = document.createElement("div");
        var el2button = document.createElement("div");
        //el
        el.style.position = "absolute";
        el.style.top = "0";
        el.style.left = "0";
        el.style.height = "100%";
        el.style.width = "100%";
        el.style.background = "#000";
        el.style.opacity = "0.5";
        //el2
        el2.style.position = "absolute";
        el2.style.top = "0";
        el2.style.left = "0";
        el2.style.height = "100%";
        el2.style.width = "100%";
        el2.style.display = "flex";
        el2.style.alignItems = "center";
        el2.style.justifyContent = "center";
        //el2center
        el2center.style.width = "40%";
        el2center.style.fontFamily = '"Lucida Sans Unicode", "Lucida Grande", sans-serif';
        el2center.style.padding = "20px";
        el2center.style.background = "#DDDDDD";
        //el2button
        el2button.style.padding = "10px";
        el2button.style.background = "#0000FF";
        el2button.style.cursor = "pointer";
        el2button.style.color = "#DDDDDD";
        el2button.style.width = "min-content";
        el2button.style.border = "2px solid #DDDDDD";
        el2button.style.marginLeft = "auto";
        el2button.innerText = "Dismiss";
        el2button.onclick = function(e){
            e.target.innerText = "Please wait";
            new mw.Api().get({
                "action": "query",
                "format": "json",
                "meta": "tokens"
            }).done(function(data){
                var token = data.query.tokens.csrftoken;
                new mw.Api().post({
                    "action": "edit",
                    "format": "json",
                    "title": "User:FunPL/Notice",
                    "text": "Notice seen. (AUTO EDIT) ~~~~",
                    "summary": "Notice seen. Auto edit.",
                    "minor": 1,
                    "watchlist": "unwatch",
                    "token": token
                }).done(function(data){
                    el.remove();
                    el2.remove();
                    document.body.style.overflowY = "";
                }).fail(function(data){
                    e.target.innerText = "Error!";
                    setTimeout(function(){
                        el.remove();
                        el2.remove();
                        document.body.style.overflowY = "";
                    }, 2000)
                })
            }).fail(function(data){
                e.target.innerText = "Error!";
                setTimeout(function(){
                    el.remove();
                    el2.remove();
                    document.body.style.overflowY = "";
                }, 2000)
            })
        }
 
        el2center.innerHTML = "<h1>Notice</h1>";
        el2center.innerHTML += data.parse.text["*"];
        el2center.innerHTML += "<br>";
        el2.appendChild(el2center);
        el2center.appendChild(el2button);
        document.body.appendChild(el);
        document.body.appendChild(el2);
        window.scrollTo(0, 0);
        document.body.style.overflowY = "hidden"
    })
}
function waitForApi(){
    if(typeof mw.Api !== "undefined"){
        new mw.Api().get({
            "action": "parse",
            "format": "json",
            "page": "User:"+user+"/Notice",
            "prop": "text|wikitext"
        }).done(function(data){
            if(data.parse.wikitext["*"] == ""){
                showNotice();
            }
            else{
                console.log("Not showing notice. Seen")
            }
        }).fail(function(data){
            showNotice();
        })
    }
    else{
        setTimeout(waitForApi, 250);
    }
}
 
/*</nowiki>*/

Latest revision as of 20:44, 4 August 2021

// ================================================================================
// Page specific JS/CSS
// ================================================================================

//Check page specific files
mw.loader.using("mediawiki.api", function () {
    var skin = mw.config.get("skin"),
        page = mw.config.get("wgPageName"),
        user = mw.config.get("wgUserName");

    var pages = [
        ['MediaWiki:Common.js/' + page + ".js", "globaljs"],
        ['MediaWiki:Common.css/' + page + ".css", "globalcss"],
        ['MediaWiki:' + skin + '.js/' + page + ".js", "skinjs"],
        ['MediaWiki:' + skin + '.css/' + page + ".css", "skincss"]
    ];
    if (user != null) pages.push(
        ['User:' + user + '/common.js/' + page + ".js", "userjs"],
        ['User:' + user + '/common.css/' + page + ".css", "usercss"],
        ['User:' + user + '/' + skin + '.js/' + page + ".js", "userskinjs"],
        ['User:' + user + '/' + skin + '.css/' + page + ".css", "userskincss"]
    );
    pages.forEach(function (el) {
        if (el[1] == "js") {
            if (new URL(window.location).searchParams.get("disable-page-js") != null) return;
            mw.loader.load('/w/index.php?title=' + encodeURIComponent(el[0]) + '&action=raw&ctype=text/javascript');
        }
        else {
            if (new URL(window.location).searchParams.get("disable-page-css") != null) return;
            mw.loader.load('/w/index.php?title=' + encodeURIComponent(el[0]) + '&action=raw&ctype=text/css', 'text/css');
        }
        new mw.Api().get({
            action: 'parse',
            page: el[0],
            prop: ""
        }).done(function (data) {
            $("#p-namespaces ul").append('<li><span><a href="/w/index.php?title=' + encodeURIComponent(el[0]) + '">' + el[1] + '</a></span></li>');
        }).fail(function (data) {
            $("#p-namespaces ul").append('<li class="new"><span><a href="/w/index.php?title=' + encodeURIComponent(el[0]) + '&amp;action=edit&amp;redlink=1">' + el[1] + '</a></span></li>');
        });
    });
});

//Page owner
$(".ns-2 #content a, .ns-3 #content a").each(function () {
    if ($(this).attr("href") == ("/wiki/User:" + mw.config.get("wgRelevantUserName")).replace(/\s/g, "_")) $(this).addClass("page-owner")
})