MediaWiki:Common.js

From Galaxypedia
Revision as of 13:51, 5 October 2023 by Smallketchup82 (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */

//Note that while loading content, appending "/wiki" or "/w" before the "/index..." statement may cause 404 errors or mime type mismatch errors (403)

//Import the Navbox.js scripts for the navbox price/name sorting functionality
mw.loader.load( '/index.php?title=MediaWiki:Navbox.js&action=raw&ctype=text/javascript' );

// Sitenotice
var sitenotice = document.querySelector('#siteNotice .mw-dismissable-notice');
if (!sitenotice) sitenotice = document.querySelector('#siteNotice');
if (sitenotice) {
	sitenotice.classList.add('sitenoticestyling');
}

// Add extra info to infobox's cost header to notify users to take it with a grain of salt
const headers = document.querySelectorAll('.pi-header');

if (headers) {
    headers.forEach(function(header) {
        const paragraph = header.querySelector('p');

        if (paragraph.textContent.includes('Cost')) {
            header.style.textDecoration = 'underline dashed';
            header.style.cursor = "help";
            header.title = "The Cost section is meant to be taken with a grain of salt. Price fluctuates based on the economy, and the stats listed are meant to serve as a rough estimate.\nNote: KetchupBot does not automatically update this section.";
        	console.log("Added styling to Cost header on infobox");
        }
    })
}

// Experimental donator user group checker
var api = new mw.Api();

// Get all user links on the page. Filter out non-user links (e.g. "talk" links)
var userelements = Array.from(document.getElementsByTagName("a")).filter(function (el) {
    return el.href.includes("User:");
});

if (userelements.length != 0) {
    var users = userelements.map(function (el) {
        var match = el.href.match(new RegExp("/(?<=\/wiki\/User:).*/gis"))
        if (match) {
            return match[0];
        } else {
            return null;
        }
    }).filter(function (el) {
        return el != null;
    });

    api.get( {
        action: "query",
        list: "users",
        usprop: "groups",
        ususers: users.join("|"),
        format: "json"
    } ).done( function ( data ) {
        var users = data.query.users;

        for (var user in users) {
            if (users[user].groups.includes("donator")) {
                console.log(users[user].name + "is a donator");
            }
        }

    } );
}