Difference between revisions of "MediaWiki:Common.js"

From The iPhone Wiki
Jump to: navigation, search
(attempting to fix the problem of clicking "Page" while on a talk archive)
(Redirect bots to new url)
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
/**
// @name fixTalkArchiveToc
 
  +
* The iPhone Wiki MediaWiki:Common.js
// @version 1.0
 
  +
* - JavaScript to fix common issues on The iPhone Wiki
// @description Removes the "1 This is an Archive Page" element from the TOC on Talk Archives
 
// @copyright (c) 2013, Cole Johnson <coleharrisjohnson@gmail.com>
+
* Copyright (c) 2013-2017 Cole Johnson <coleharrisjohnson@gmail.com>
  +
* Licensed under CC-BY-SA 4.0 <https://creativecommons.org/licenses/by-sa/4.0/>
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 don't check length first
 
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();
 
 
// Cleanup
 
fixTocSectionNums();
 
}
 
}
 
}
 
   
  +
// Removes the "/20##" part of the "Page" link on talk archives
// @name fixTocSectionNums
 
// @version 1.0
 
// @description Decrements the section number of each TOC entry
 
// @copyright (c) 2013, Cole Johnson <coleharrisjohnson@gmail.com>
 
function fixTocSectionNums() {
 
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(".");
 
}
 
}
 
 
// @name fixTalkArchiveNSLinks
 
// @version 1.0
 
// @description Removes the "/20##" part of the "Page" link on talk archives
 
// @copyright (c) 2013, Cole Johnson <coleharrisjohnson@gmail.com>
 
 
function fixTalkArchiveNSLinks() {
 
function fixTalkArchiveNSLinks() {
  +
// Are we an archive?
if ($("#firstHeading")[0].innerText.match(/\/20[0-9]{2}$/).length != 0) {
 
  +
// Would work by checking $(".archive-page-notice").length
var ns = $("#p-namespaces li[class!=selected] a")[0];
 
  +
var page = $(".firstHeading")[0].innerHTML;
// MediaWiki is predictable - don't check length
 
  +
if (page.trim().match(/\/20[0-9]{2}$/) == null)
ns.href = ns.href.replace(
 
  +
return;
/w[\/\\]index.php\?title=(.*?)(\/20[0-9]{2}).*$/,
 
  +
"wiki/$1");
 
  +
var ns = $("#p-namespaces .new");
}
 
  +
if (ns.length == 0) {
  +
console.log("Can't find namespace selector link.");
  +
return;
  +
}
  +
  +
ns[0].className = ns[0].className.replace("new", "");
  +
ns = ns.find("a")[0];
  +
ns.href = ns.href.replace(
  +
/w[\/\\]index.php\?title=(.*?)(\/20[0-9]{2}).*$/,
  +
"wiki/$1");
 
}
 
}
   
fixTalkArchiveToc();
 
 
fixTalkArchiveNSLinks();
 
fixTalkArchiveNSLinks();
  +
  +
// The Apple Wiki migration sitenotice link
  +
(function() {
  +
var url = location.href
  +
.replace(location.origin, "https://theapplewiki.com")
  +
.replace("https://theapplewiki.com/w/", "https://theapplewiki.com/");
  +
var pageName = mw.config.get("wgPageName");
  +
var categories = mw.config.get("wgCategories");
  +
if (categories.indexOf("Filesystem") != -1) {
  +
url = url.replace(/(\/wiki\/|title=)\//, "$1Filesystem:/");
  +
} else if (categories.indexOf("All Key Pages") != -1) {
  +
url = url.replace(pageName, "Keys:" + pageName);
  +
}
  +
$("#siteNotice a[href='https://theapplewiki.com/']")
  +
.attr("href", url);
  +
if ((/bot/i).test(navigator.userAgent)) {
  +
location.replace(url);
  +
}
  +
})();

Latest revision as of 10:08, 24 May 2024

/**
 * The iPhone Wiki MediaWiki:Common.js
 *   - JavaScript to fix common issues on The iPhone Wiki
 * Copyright (c) 2013-2017 Cole Johnson <coleharrisjohnson@gmail.com>
 * Licensed under CC-BY-SA 4.0 <https://creativecommons.org/licenses/by-sa/4.0/>
 **/

// Removes the "/20##" part of the "Page" link on talk archives
function fixTalkArchiveNSLinks() {
    // Are we an archive?
    // Would work by checking $(".archive-page-notice").length
    var page = $(".firstHeading")[0].innerHTML;
    if (page.trim().match(/\/20[0-9]{2}$/) == null)
        return;
    
    var ns = $("#p-namespaces .new");
    if (ns.length == 0) {
        console.log("Can't find namespace selector link.");
        return;
    }
    
    ns[0].className = ns[0].className.replace("new", "");
    ns = ns.find("a")[0];
    ns.href = ns.href.replace(
        /w[\/\\]index.php\?title=(.*?)(\/20[0-9]{2}).*$/,
        "wiki/$1");
}

fixTalkArchiveNSLinks();

// The Apple Wiki migration sitenotice link
(function() {
    var url = location.href
        .replace(location.origin, "https://theapplewiki.com")
        .replace("https://theapplewiki.com/w/", "https://theapplewiki.com/");
    var pageName = mw.config.get("wgPageName");
    var categories = mw.config.get("wgCategories");
    if (categories.indexOf("Filesystem") != -1) {
        url = url.replace(/(\/wiki\/|title=)\//, "$1Filesystem:/");
    } else if (categories.indexOf("All Key Pages") != -1) {
        url = url.replace(pageName, "Keys:" + pageName);
    }
    $("#siteNotice a[href='https://theapplewiki.com/']")
        .attr("href", url);
    if ((/bot/i).test(navigator.userAgent)) {
        location.replace(url);
    }
})();