MediaWiki:Common.js

From SCA Lochac
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Note: After saving, 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: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* Any JavaScript here will be loaded for all users on every page load. */

var ruleBooks = [
    {
        namespace: "Armoured_Combat",
        label: "Armoured Combat - Fighters' Handbook",
        banner: "https://seneschal.lochac.sca.org/files/2017/12/warfield1.jpg",
        logo: "https://sca.org.nz/wiki/images/f/f4/Fightershandbookcover-al.svg",
        webVersion:
            "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Handbook",
        pdfVersion:
            "https://sca.org.nz/wiki/index.php?title=Armoured_combat:pdf",
        chapters: [
            ["Classes of Participant and combat",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Classes_of_Participant_and_Combat"],
            ["Combat Authorisation Requirements",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Combat_Authorisation_Requirements"],
            ["Rules of the Lists",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Rules_of_the_Lists"],
            ["Conventions of Combat",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Conventions_of_Combat"],
            ["The Use of Weapons and Shields",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:The_Use_of_Weapons_and_Shields"],
            ["Target Areas and Acknowledgement of Blows",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Target_Areas_and_Acknowledgement_of_Blows"],
            ["Armour Requirements",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Armour_Requirements"],
            ["Melee Weapon Standards",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Melee_Weapon_Standards"],
            ["Throwing Weapon Standards",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Throwing_Weapon_Standards"],
            ["Missile Weapon Standards",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Missile_Weapon_Standards"],
            ["Grievances and Sanctions",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Grievances_and_Sanctions"],
            ["Procedures for Changes to These Rules",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Procedures_for_Changes_to_These_Rules"],
            ["Glossary",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Glossary"],
            ["Change log",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Change_Log"]
        ]
    },
    {
        namespace: "Armoured_Combat",
        label: "Armoured Combat - Marshals' Handbook",
        banner: "http://seneschal.sca.org.au/files/2017/12/warfield1.jpg",
        logo: "https://sca.org.nz/wiki/images/f/f4/Fightershandbookcover-al.svg",
        webVersion:
            "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Handbook",
        pdfVersion:
            "https://sca.org.nz/wiki/index.php?title=Armoured_combat:Marshals_pdf",
        chapters: [
            ["Introduction",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Introduction"],
            ["Structure of the Marshallate",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Structure"],
            ["Authorisation of Marshals",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Authorisation_Of_Marshals"],
            ["Inspecting Equipment",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Inspecting_Equipment"],
            ["Marshalling Combat",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Marshalling_Combat"],
            ["Combat Injury Procedures",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Combat_Injury_Procedures"],
            ["Experimental Weapons and Materials Procedures",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Experimental"],
            ["Chain of Command and Procedures for Reporting",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Chain_Of_Command"],
            ["Sanctions and Appeals",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Sanctions"],
            ["Changing These Rules",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Procedures_for_Changes_to_These_Rules"],
            ["Marshals' Handbook Change Log",
                "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Marshals_Handbook_Change_Log"],
        ]
    },
 {
        namespace: "Fencing",
        logo: "https://sca.org.nz/wiki/images/3/34/Rapierhandbook.svg",
        banner: "https://sca.org.nz/wiki/images/b/b9/Rapier_banner.jpg",
        label: "Fencing Combat Handbook",
        webVersion: "https://sca.org.nz/wiki/index.php?title=Fencing:Fencing_Combat_Handbook",
        pdfVersion:
            "https://sca.org.nz/wiki/index.php?title=Fencing:pdf",
        chapters: [
            ["Introduction",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Introduction"],   
            ["Types of fencing",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Types_Of_Fencing"],
            ["Single combat, melee and gunners",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Single_Combat_Melee_and_Gunners"],
            ["When you are allowed to fence",
                "https://sca.org.nz/wiki/index.php?title=Fencing:When_You_Are_Allowed_To_Fence"],
            ["Behaviour on the field",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Behaviour_On_The_Field"],
            ["Using weapons and defensive objects",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Using_Weapons_And_Defensive_Objects"],
            ["Taking blows",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Taking_Blows"],
            ["Protective equipment",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Protective_Equipment"],
            ["Weapons and defensive equipment",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Weapons_And_Defensive_Equipment"],
            ["Types of marshalling",
                "https://sca.org.nz/wiki/index.php?title=Types_Of_Marshalling"],
            ["Supervising combat",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Supervising_Combat"],
            ["Inspections",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Inspections"],
            ["Rules for managing incidents",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Rules_For_Managing_Incidents"],
            ["Authorisation procedures",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Authorisation_Procedures"],
            ["Safety tests",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Safety_Tests"],
            ["Marshals as officers",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Marshals_As_Officers"],
            ["Changing the rules",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Changing_The_Rules"],
            ["Glossary",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Glossary"],
            ["Concussion Recognition Tool",
                "https://sca.org.nz/wiki/index.php?title=Concussion_Recognition_Tool"],
            ["Change log and Notes",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Change_Log_and_Notes"]
            ]
    },
{
        namespace: "Archery",
        logo: "https://sca.org.nz/wiki/images/0/05/ArcheryHandbookCover.svg",
        banner: "https://sca.org.nz/wiki/images/2/21/St-Sebs-Ian-Piddington-3.jpg",
        label: "Target Archery / Thrown Weapons",
        webVersion: "https://sca.org.nz/wiki/index.php?title=Archery:Handbook",
        pdfVersion:
            "https://sca.org.nz/wiki/index.php?title=Archery:pdf",
        chapters: [
            ["Basic Rules",
                "https://sca.org.nz/wiki/index.php?title=Archery:Basic_Rules"],
            ["Equipment standards",
                "https://sca.org.nz/wiki/index.php?title=Archery:Equipment_standards"],
            ["Range safety",
                "https://sca.org.nz/wiki/index.php?title=Archery:Range_safety"],
            ["Officers",
                "https://sca.org.nz/wiki/index.php?title=Archery:Officers"],
            ["Authorising as a Target Archery Marshal",
                "https://sca.org.nz/wiki/index.php?title=Archery:Authorising"]
        ]
    }
];

function showToolBox() {
    var toolBox = document.getElementById("p-tb");
    toolBox.style.visibility = "visible";
}

var defaultBanner = "https://sca.org.nz/wiki/images/f/f2/Lochac_marshal_banner.svg";
var defaultLogo = "https://sca.org.nz/wiki/images/8/8f/Lochaclarge_320x320.png";

function setBannerImage(nameSpace) {
    var namespaceObj = ruleBooks.find(function (obj) { return 'namespace' in obj && obj.namespace === nameSpace });

    var banner;
    var logo;

    if (namespaceObj === undefined) {
        banner = defaultBanner;
        logo = defaultLogo;
    } else {
        banner = namespaceObj.banner ? namespaceObj.banner : defaultBanner;
        logo = namespaceObj.logo ? namespaceObj.logo : defaultLogo;
    }
    document.getElementById("mw-head-base").style.backgroundImage = "url(\"" + banner + "\")";
    document.getElementById("mw-head-base").style.backgroundRepeat = "no-repeat";
    document.getElementsByClassName("mw-wiki-logo")[0].style.backgroundImage = "url(\"" + logo + "\")";
   // document.getElementsByClassName("mw-wiki-logo")[0].style.backgroundRepeat = "no-repeat";
}

function buildSideMenu() {
    currentNamespace = mw.config.get("wgCanonicalNamespace");
    var navigationMenu = document.getElementById("mw-panel");

    for (var ruleBook in ruleBooks) {
        var bookObj = ruleBooks[ruleBook];

        var bookDiv = document.createElement("div");
        bookDiv.setAttribute("class", "portal");
        navigationMenu.insertBefore(bookDiv, document.getElementById("p-tb"));

        var title = document.createElement("h3");

        if ("webVersion" in bookObj) {
            var titleLink = document.createElement("a");
            titleLink.setAttribute("href", bookObj.webVersion);
            titleLink.appendChild(document.createTextNode(bookObj.label));
            title.appendChild(titleLink);
        } else {
            title.appendChild(document.createTextNode(bookObj.label));
        }
        bookDiv.appendChild(title);

        var navBody = document.createElement("div");
        navBody.setAttribute("class", "body");
        bookDiv.appendChild(navBody);

        var entries = document.createElement("ul");
        navBody.appendChild(entries);

        if (
            bookObj.namespace === mw.config.get("wgCanonicalNamespace") &&
            "chapters" in bookObj
        ) {
            var chapterCount = bookObj.chapters.length;
            for (var i = 0; i < chapterCount; i++) {
                chapter = bookObj.chapters[i];
                var chapterLink = document.createElement("a");
                var chapterNumber = i + 1;
                var chapterTitle = chapterNumber + ". " + chapter[0];
                chapterLink.appendChild(document.createTextNode(chapterTitle));
                chapterLink.setAttribute("href", chapter[1]);
                var li = document.createElement("li");
                li.appendChild(chapterLink);
                entries.appendChild(li);
            }
        }

        if ("pdfVersion" in bookObj) {
            var pdfLink = document.createElement("a");
            pdfLink.appendChild(document.createTextNode("PDF version"));
            pdfLink.setAttribute("href", bookObj.pdfVersion);
            var h3 = document.createElement("h3");
            h3.appendChild(pdfLink);
            bookDiv.appendChild(h3);
        }
    }
}
function markAsDraft() {
    var topDiv = document.getElementById("top");
    var h1 = document.createElement("h1");
    h1.style.fontsize = "xx-large";
    h1.style.color = "red";

    h1.appendChild(document.createTextNode("This page is a draft only"));
    topDiv.appendChild(h1);

    watermark = document.createElement("div");
    document.getElementById("content").prepend(watermark)

    watermark.append("Draft");

    watermark.style.zIndex = 0;
    watermark.style.position = "fixed";
    watermark.style.display = "block";
    watermark.style.color = "#eeeeee";
    watermark.style.fontSize = "250px";
    watermark.style.transform = "rotate(310deg)";
    watermark.style.left = "40%";
    watermark.style.fontWeight = "bolder";

    document.title = "Draft " + document.title;


}

function ModifyPage() {
    var isLoggedIn;

    try {
        isLoggedIn = mw.config.get("wgUserId");
        if (isLoggedIn === null) {
            isLoggedIn = false;
        } else {
            isLoggedIn = true;
        }
    } catch (ReferenceError) {
        isLoggedIn = false;
    }

    var isDraft;
    var nameSpace = mw.config.get("wgCanonicalNamespace");

    try {
        if (nameSpace.toLowerCase().search("draft") === -1) {
            isDraft = false;
        } else {
            isDraft = true;
        }
    } catch (Exception) {
        isDraft = false;
    }

    if (isLoggedIn) {
        showToolBox();
    }
    buildSideMenu();

    if (isDraft) {
        markAsDraft();
    }
    setBannerImage(nameSpace);
}

jQuery(ModifyPage);