User:MrIPAddress/addtools.js

From Meta, a Wikimedia project coordination wiki

Note: After publishing, 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: Press Ctrl-F5.
//addtabs.js
//getqueryvalue.js
function get_query_value(query, name){
	if (typeof query != "string" || typeof name != "string")
		return "";
	var value = query.match('[&?]' + name + '=([^&]*)');
	if (value)
		return decodeURIComponent(value[1]);
	else
		return "";
}
function lastdiff() {
	mw.util.addPortletLink("p-cactions", mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "&diff=cur&oldid=prev", "last", "ca-last", "Show most recent diff");
}
function userlogs() {
	if (wgIsArticle == true && wgPageName.indexOf("/") == -1) mw.util.addPortletLink("p-cactions", mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=Special:Log/block&page=User:" + encodeURIComponent(wgTitle), "blocklog", "ca-blocklog", "block log");
}
function addtoolboxlinks() {
	mw.util.addPortletLink("p-tb", mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Special:Log&page=' + encodeURIComponent(mw.config.get('wgPageName')), "PageLogs", "pt-logs");
	mw.util.addPortletLink("p-tb", '/wiki/Special:NewPages', 'NewPages', '');
	mw.util.addPortletLink("p-tb", '/wiki/Special:Log/newusers', 'NewUsers', '');
	if (wgIsArticle==true && wgNamespaceNumber != 6 && wgNamespaceNumber != 7) mw.util.addPortletLink("p-tb", '/wiki/Special:PrefixIndex/'+wgPageName, 'PrefixIndex', '');
}
function contribstools() {
	var href = document.getElementById('t-contributions');
	if (href) href = href.getElementsByTagName('a');
	if (href) href = href[0];
	if (href) href = href.href;
	else href = window.location.href;
	var addr = /(\/wiki\/|[?&]title=)Special:Contributions(\/([^\/?&#]*)|[?&#]|$)/.exec(href);
	if (!addr) return;
	addr = addr[3];
	if (!addr) {
		addr = /^[^?#]*\?([^&#]*&)*target=([^&#]*)/.exec(href);
		if (!addr) return;
		addr = addr[2];
	}
	mw.util.addPortletLink("p-tb", "http://tools.wikimedia.de/~luxo/contributions/contributions.php?user=" + addr + "&blocks=true&lang=", "Luxo's", 't-luxos', "Luxo's global contribs", null, 't-contributions');
	if (!/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/.test(addr)) mw.util.addPortletLink("p-tb", "http://toolserver.org/~vvv/sulutil.php?user=" + addr, "VVV's", "t-vvv", "VVV's SUL tool", null, "t-luxos");
	if (/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/.test(addr)){
		mw.util.addPortletLink('p-tb', 'http://www.robtex.com/rbls/'+addr+'.html', 'RBL check', 't-rblcheck', 'Multi-RBL check', null, 't-vvv');
		mw.util.addPortletLink('p-tb', 'http://tools.wikimedia.de/~chm/whois.php?ip='+addr, 'WHOIS', 't-whois', 'Toolserver WHOIS', null, 't-rblcheck');
		mw.util.addPortletLink('p-tb', 'http://toolserver.org/~krimpet/torcheck.php?ip='+addr, 'TOR?', 't-tor', 'TOR check', null, 't-whois');
	}
}
function purge() {
	var hist; var url;
	if (!(hist = document.getElementById('ca-history') )) return;
	if (!(url = hist.getElementsByTagName('a')[0] )) return;
	if (!(url = url.href )) return;
	mw.util.addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'), 'purge', 'ca-purge', 'Purge server cache for this page', '0');
}
function edittop() {
	if(wgPageName == "Main_Page") return;//not on main page
	if (wgIsArticle == false || document.getElementById("ca-viewsource")) {// if this is preview page or generated page, stop
		var section = get_query_value(window.location.href, "section");
		if (wgAction == "edit" && section == "0")
		document.getElementById("wpSummary").value = "/* Intro */ ";
		return;
	}
	
	// create div and set innerHTML to link
	var divString = '<div class="editsection">[<a href="' + wgScript + '?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=edit&section=0" title="';
	divString += 'Edit section: '+wgPageName+'">edit</a>]</div>';
	var divContainer = document.createElement("div");
	divContainer.innerHTML = divString;
	// insert divContainer into the DOM below the h1
	document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]);
}
function blockhist() {
	var ul = document.getElementById('bodyContent').getElementsByTagName('ul')[0];
	if (!ul || !ul.getElementsByTagName('li')[0]){return;}//nothing to do
	var l = ul.getElementsByTagName('li');
	if (l[0].innerHTML.indexOf('">block</a>)') ==-1){//non-admin
		//somehow get the user and create links as for the admin section below
		return;
	}
	//use unblock links
	if (location.href.search(/&page=[^&]/) ==-1) {
//		alert("add stuff");
		for (var i=0; i<l.length; i++) {
			if (l[i].getElementsByTagName('a')[4]) {
			var name = l[i].getElementsByTagName('a')[4].innerHTML;
			l[i].innerHTML = '(<a href="/w/index.php?title=Special%3ALog&type=block&page=User:' + name + '">hist</a>) (<a href="/w/index.php?title=Special%3AIpblocklist&action=search&limit=&ip=' + name + '">status</a>) ' + l[i].innerHTML;
			}
		}
	}
	else {
		var name = l[0].getElementsByTagName('a')[4].innerHTML;
		l[0].innerHTML = '(<a href="/w/index.php?title=Special%3AIpblocklist&action=search&limit=&ip=' + name + '">status</a>) ' + l[0].innerHTML;
	}
}

if ( wgCanonicalNamespace != "Special" ) addOnloadHook(purge);
if ( wgCanonicalSpecialPageName == "Contributions" ) addOnloadHook(contribstools);
if (wgCanonicalSpecialPageName == 'IPBlockList' || wgCanonicalSpecialPageName == 'Log' && (location.href.search(/\/block|type=block/) != -1 )) addOnloadHook(blockhist);
if (wgIsArticle == true && (wgAction == "history" || wgAction == "view" || wgAction == "purge")) addOnloadHook(lastdiff);
if (wgNamespaceNumber == 2 || wgNamespaceNumber == 3) addOnloadHook(userlogs);
$(addtoolboxlinks);
$(edittop);
//end addtools.js