MediaWiki:Common.js

From The iPhone Wiki
Revision as of 17:26, 14 November 2013 by 5urd (talk | contribs)
Jump to: navigation, search

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.
/**
 * The iPhone Wiki MediaWiki:Common.js
 *   - JavaScript to fix common issues on The iPhone Wiki
 * Copyright (c) 2013 Cole Johnson <coleharrisjohnson@gmail.com>
 **/

// Removes the "1 This is an Archive Page" element from the TOC on Talk Archives
function fixTalkArchiveToc() {
    // Is there a "This is an Archive Page" header block?
    if ($("table[id=archive-page-notice]").length != 0) {
        var toc = $("table[id=toc]"); // Is there a TOC?
        if (toc.length != 0) {
            // relocate to the children of the TOC table
            toc = toc[0].children;
            // MediaWiki is consistent, so no need to check length
            if (toc[0].localName == "tbody") {
                toc = toc[0].children; // skip the tbody tag
            }
            // Nav to the "ul"; 
            toc = toc[0].children[0].children[1].children; // "ul" -> "{li}"
            
            // remove "This is an Archive Page" entry
            toc[0].remove();
            
            // Decrement the outermost section number for each TOC entry
            var sec = $("span[class=tocnumber]");
            var len = sec.length;
            var split;
            for (var i = 0; i < len; i++) {
                split = sec[i].innerText.split(".");
                split[0]--;
                sec[i].innerText = split.join(".");
            }
        }
    }
}

// Removes the "/20##" part of the "Page" link on talk archives
function fixTalkArchiveNSLinks() {
    var match = $("#firstHeading")[0].innerText.match(/\/20[0-9]{2}$/);
    if (match != null && match.length != 0) {
        var ns = $("#p-namespaces li[class!=selected] a");
        if (ns != null && ns.length != 0) {
            // Vector skin
            // TODO: Change link color back to blue
            ns[0].href = ns[0].href.replace(
                /w[\/\\]index.php\?title=(.*?)(\/20[0-9]{2}).*$/,
                "wiki/$1");
            return;
        }
        ns = $("li[class=new]");
        if (ns != null && ns.length != 0) {
            // Modern skin
            ns.className = ns.className.replace("new", "");
            ns = ns.find("a");
            ns[0].href = ns[0].href.replace(
                /w[\/\\]index.php\?title=(.*?)(\/20[0-9]{2}).*$/,
                "wiki/$1");
            return;
        }
    }
}

fixTalkArchiveToc();
fixTalkArchiveNSLinks();