MediaWiki:Common.js: Difference between revisions

From SCA Lochac
Jump to navigation Jump to search
No edit summary
No edit summary
(3 intermediate revisions by the same user not shown)
Line 71: Line 71:
                 "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Sanctions"],
                 "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Sanctions"],
             ["Changing These Rules",
             ["Changing These Rules",
                 "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Changing_These_Rules"],
                 "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Procedures_for_Changes_to_These_Rules"],
             ["Marshals' Handbook Change Log",
             ["Marshals' Handbook Change Log",
                 "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Marshals_Handbook_Change_Log"],
                 "https://sca.org.nz/wiki/index.php?title=Armoured_Combat:Marshals_Handbook_Change_Log"],
Line 81: Line 81:
         banner: "https://sca.org.nz/wiki/images/b/b9/Rapier_banner.jpg",
         banner: "https://sca.org.nz/wiki/images/b/b9/Rapier_banner.jpg",
         label: "Fencing Combat Handbook",
         label: "Fencing Combat Handbook",
         webVersion: "https://sca.org.nz/wiki/index.php?title=Fencing:Handbook",
         webVersion: "https://sca.org.nz/wiki/index.php?title=Fencing:Fencing_Combat_Handbook",
         pdfVersion:
         pdfVersion:
             "https://sca.org.nz/wiki/index.php?title=Fencing:pdf",
             "https://sca.org.nz/wiki/index.php?title=Fencing:pdf",
Line 87: Line 87:
             ["Introduction",
             ["Introduction",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Introduction"],   
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Introduction"],   
             ["Rules for fencers",
             ["Types of fencing",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Rules_For_Fencers"],
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Types_Of_Fencing"],
             ["Rules for marshals",
             ["Single combat, melee and gunners",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Rules_For_Marshals"],
                "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",
             ["Rules for managing incidents",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Rules_For_Managing_Incidents"],
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Rules_For_Managing_Incidents"],
             ["Rules for equipment",
             ["Authorisation procedures",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Rules_For_Equipment"],
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Authorisation_Procedures"],
            ["Inspections",
                "https://sca.org.nz/wiki/index.php?title=Fencing:Inspections"],
             ["Safety tests",
             ["Safety tests",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Safety_Tests"],
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Safety_Tests"],
             ["Authorisation procedures",
             ["Marshals as officers",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Authorisation_Procedures"],
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Marshals_As_Officers"],
             ["Changing the rules",
             ["Changing the rules",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Changing_The_Rules"],
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Changing_The_Rules"],
             ["Glossary",
             ["Glossary",
                 "https://sca.org.nz/wiki/index.php?title=Fencing: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",
             ["Change log and Notes",
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Change_Log_and_Notes"]
                 "https://sca.org.nz/wiki/index.php?title=Fencing:Change_Log_and_Notes"]

Revision as of 10:35, 23 December 2023

/* 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);