Difference between revisions of "MediaWiki:Common.js"

From The iPhone Wiki
Jump to: navigation, search
m (whoops)
(attempting to fix the problem of clicking "Page" while on a talk archive)
Line 38: Line 38:
 
split[0]--;
 
split[0]--;
 
sec[i].innerText = split.join(".");
 
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() {
  +
if ($("#firstHeading")[0].innerText.match(/\/20[0-9]{2}$/).length != 0) {
  +
var ns = $("#p-namespaces li[class!=selected] a")[0];
  +
// MediaWiki is predictable - don't check length
  +
ns.href = ns.href.replace(
  +
/w[\/\\]index.php\?title=(.*?)(\/20[0-9]{2}).*$/,
  +
"wiki/$1");
 
}
 
}
 
}
 
}
   
 
fixTalkArchiveToc();
 
fixTalkArchiveToc();
  +
fixTalkArchiveNSLinks();

Revision as of 21:04, 17 August 2013

// @name        fixTalkArchiveToc
// @version     1.0
// @description Removes the "1 This is an Archive Page" element from the TOC on Talk Archives
// @copyright   (c) 2013, Cole Johnson <coleharrisjohnson@gmail.com>
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();
		}
    }
}

// @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() {
	if ($("#firstHeading")[0].innerText.match(/\/20[0-9]{2}$/).length != 0) {
		var ns = $("#p-namespaces li[class!=selected] a")[0];
		// MediaWiki is predictable - don't check length
		ns.href = ns.href.replace(
			/w[\/\\]index.php\?title=(.*?)(\/20[0-9]{2}).*$/,
			"wiki/$1");
	}
}

fixTalkArchiveToc();
fixTalkArchiveNSLinks();