User:Who/monobook.js

// // User:Lupin/popups.js - please include this line

document.write(' ');

popupAdminLinks=true; popupDelay=2.5; popupStructure='original';

// Filter changes live // User:Lupin/recent2.js - please include this line document.write(' ');

function addlilink(tabs, url, name){ var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); li.appendChild(na); tabs.appendChild(li); return li; }

function vfdlinks{ var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; if(document.title.indexOf("Wikipedia:Votes for deletion") == 0){ addlilink(tabs, 'javascript:hidevfd', 'Hide'); addlilink(tabs, 'javascript:showvfd', 'Show'); } }

if (window.addEventListener) window.addEventListener("load",vfdlinks,false); else if (window.attachEvent) window.attachEvent("onload",vfdlinks);

////////////////////////////////////////// // Tabs by Korath // returns  name ///////////////////////////////////////// function addlilink(url, name) { var na = document.createElement('a'); na.setAttribute('href', url);

var txt = document.createTextNode(name); na.appendChild(txt);

var li = document.createElement('li'); li.appendChild(na); return li; }

// appends msg to the currently-editted page, sets the summary to summ, // and marks or unmarks the Watch this page checkbox according to watch. function edit_summary_watch(msg, summ, watch) { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value += msg; f.wpSummary.value = summ; f.wpWatchthis.checked = watch; }

// adds various tabs to call the above function add_tabs { var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

// Only add for pages with "Editing User talk:" somewhere in the title if (document.title.indexOf("Editing User talk:") != -1) {     tabs.appendChild(addlilink('javascript:edit_summary_watch("~" + "~" + "~" + "~",  "Welcome anon", false, 0)',"Anon")); tabs.appendChild(addlilink('javascript:edit_summary_watch("~" + "~" + "~" + "~", "Welcome note", false, 0)',"Welc")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"Test")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"Test2")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"Test3")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"Test4")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"T5")); tabs.appendChild(addlilink('javascript:edit_summary_watch("~" + "~" + "~" + "~", "", true, 1)',"Blatantvandal")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"Spam1")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"Spam2")); tabs.appendChild(addlilink('javascript:edit_summary_watch(" ~" + "~" + "~" + "~", "", true, 1)',"Blank")); tabs.appendChild(addlilink('javascript:edit_summary_watch("*See /archive for previous messages and warnings.", "archive", true, )',"archive"));

}

if (document.title.indexOf("Editing Category talk:") != -1) {     tabs.appendChild(addlilink('javascript:edit_summary_watch("~" + "~" + "~" + "~", "WP:CFD closure note", false, 0)',"Cfdend")); }

}

if (window.addEventListener) window.addEventListener("load", add_tabs, false); else if (window.attachEvent) window.attachEvent("onload", add_tabs);

/////////////////////////////////////////////////////////////////// // AutoVFD by Korath // This needs to change depending on skin used. ////////////////////////////////////////////////////////////////// function add_link2(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); na.appendChild(document.createTextNode(name));

var li = document.createElement('li'); li.appendChild(na);

var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; tabs.appendChild(li); }

function strip_namespace(target) { var colon = target.indexOf(':'); if (colon != -1) {     var spaces = new Array('User', 'Wikipedia', 'Image', 'MediaWiki', 'Template', 'Help', 'Category'); var ns = target.substring(0, colon); if (ns == '' || ns == 'Talk') return target.substring(colon + 1); else for (var i = 0; i < spaces.length; ++i) {           if (ns == spaces[i]                || ns == spaces[i] + '_talk') return target.substring(colon + 1); }   }

return target; }

// Returns  name function addlilink(url, name) { var na = document.createElement('a'); na.setAttribute('href', url);

var txt = document.createTextNode(name); na.appendChild(txt);

var li = document.createElement('li'); li.appendChild(na); return li; }

// Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&faketarget=username" is present. function do_blockip_stuff { // focus on Reason field document.getElementsByName('wpBlockReason')[0].focus;

// Look for a &faketarget= for the username/ip var l = location.search.substring(1).split('&'); var target = ''; for (var i = 0; i < l.length; ++i) {     var n = l[i].indexOf('='); if (l[i].substring(0, n) == 'faketarget') {	 target = l[i].substring(n + 1); break; }   }

if (target == '') return;

// put account name in "IP Address/username" field var addr = document.getElementsByName('wpBlockAddress')[0]; addr.value = unescape(target);

// add "blocklog" tab var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target, 'blocklog')); }

// Opens the block log in the current window, and Special:Blockip in a popup. // Width, height, top, and left are chosen for a 1600x1200 display. //function blockpage_and_log(target) //{ // window.open('Special_Blockip.html?foo=blarg&faketarget=' + target, 'Block', 'width=1600,height=600,top=600,left=0'); // document.location.href = 'http://en.wikipedia.org/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target; //}

function arin_look(target) { window.open('http://ws.arin.net/whois/?queryinput=' + target, 'Arin', 'width=600,height=400,top=400,left=0'); }

// Adds "block" and "blocklog" tabs to User: and User talk: pages. function add_block_tab { var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

// use the "edit this page" tab to get already-tidied url var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href; // cut everything up to "title=" from the start and everything past "&action=edit" from the end editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit')); editlk = editlk.substring(editlk.indexOf(':') + 1); var slloc = editlk.indexOf('/'); if (slloc > 0) editlk = editlk.substring(0, slloc);

// add "block" tab tabs.appendChild(addlilink('/w/index.php?title=Special%3ABlockip&faketarget=' + editlk, 'block'));

// To open the block page and block log simultaneously, replace the above line with: // tabs.appendChild(addlilink('javascript:blockpage_and_log("' + editlk + '")', 'Block')); // and uncomment the blockpage_and_log function above.

// add "blocklog" tab tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + editlk, 'blocklog'));

//add "contributions" tab tabs.appendChild(addlilink('/w/wiki.phtml?title=Special:Contributions&target=' + editlk, 'contributions'));

// add "arin" tab tabs.appendChild(addlilink('javascript:arin_look("' + editlk + '")', 'Arin'));

}

function do_onload { if (document.title.indexOf('User:') == 0      || document.title.indexOf('User talk:') == 0) add_block_tab; else if (document.title.indexOf('Block user') == 0) // could stand to be more robust do_blockip_stuff; }

if (window.addEventListener) window.addEventListener("load", do_onload, false); else if (window.attachEvent) window.attachEvent("onload", do_onload);

if ( document.createElement && window.addEventListener ) {	function SoFixItInit // pre-load, (don't want to slow down loading of article's content, though) {

}

function SoFixItLoad // post-load {		UserMenu = new PortletMenu( 'p-personal'  ); PageMenu = new PortletMenu( 'p-cactions'  ); NavMenu = new PortletMenu( 'p-navigation' ); //ToolMenu = new PortletMenu( 'p-tb'        );

//	This is inefficient and not particularly robust. //	This comes first, I want this link to come up as //	fast as possible. //		function GetByClass( sElem, sClass ) {	var i, a2 = [], a = document.getElementsByTagName( sElem ); for ( i = 0; i < a.length; i++ ) if ( a[ i ].className == sClass ) a2.push( a[ i ] ); return a2; }		var a, td = GetByClass( 'td', 'diff-otitle' ); if ( ( td = td[ 0 ] ) && ( a = td.getElementsByTagName( 'a' )[ 0 ] ) ) a.href = a.href + '&action=edit'; // need to change text, later

var userName = UserMenu.getText( 'pt-userpage' );

// personal (top-most) menu //			//		Func Talk  Prefs  Watch  List  Edits  Kate  Logs  #IRC  Out //		UserMenu.setText( 'pt-mytalk'   , 'Talk'  ); UserMenu.setText( 'pt-preferences', 'Prefs' ); UserMenu.setText( 'pt-watchlist', 'Watch' ); UserMenu.setText( 'pt-mycontris', 'Edits' ); UserMenu.setText( 'pt-logout'   , 'Out'   ); //		UserMenu.setHref( 'pt-mycontris',			'http://en.wikipedia.org/w/index.php?title=Special:Contributions&target=' +			userName + '&offset=0&limit=500' ); //			//			//	it seems there is a stylesheet that makes them lowercase //			//		ok, the lowercased menu items are starting to really bug me: //		document.getElementById( 'p-personal' ).getElementsByTagName( 'ul' )[0].style.textTransform = 'none'; //		UserMenu.insertBefore( 'pt-mycontris', 'pt-list', 'List', '/wiki/Special:Watchlist/edit' ); UserMenu.insertBefore( 'pt-logout' , 'pt-logs', 'Logs',			'/w/index.php?title=Special%3ALog&user=' + userName ); UserMenu.insertBefore( 'pt-logs'   , 'pt-kate', 'Kate',			'javascript:void InlineKate( "' + userName + '" )' );

//	so I always know what time it is in UTC land: //		UserMenu.append( 'pt-utc', UTCTime, 'javascript:void UserMenu.setText("pt-utc",UTCTime)' );

//	article-actions menu, (the "tabs") //		if ( PageMenu[ 'ca-history' ] ) // theory: if it has a history tab, then it's purgable {			PageMenu.insertBefore( 'ca-history', 'ca-lastdiff', 'Last Diff',				PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'diff=0' ) );

PageMenu.append( 'ca-purge', 'Purge',				PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'action=purge' ) ); }

var x = 1; NavMenu.append( 'n-' + x++, 'WP:CFD', '/wiki/Wikipedia:Categories for deletion' ); NavMenu.append( 'n-' + x++, 'Recent userpage', '/w/index.php?title=Special%3ARecentchanges&namespace=2' ); NavMenu.append( 'n-' + x++, 'Cat:Wikipedia', '/wiki/Category:Wikipedia' ); NavMenu.append( 'n-' + x++, 'Cat:Policies', '/wiki/Category:Wikipedia_policies_and_guidelines' ); NavMenu.append( 'n-' + x++, 'Cat:Official', '/wiki/Category:Wikipedia_official_policy' ); NavMenu.append( 'n-' + x++, 'WP:Templates', '/wiki/Wikipedia:Template' ); NavMenu.append( 'n-' + x++, 'Whobot edits', '/wiki/Special:Contributions/Whobot' ); NavMenu.append( 'n-' + x++, 'monobook.js', '/wiki/User:' + userName + '/monobook.js' );

}

function PortletMenu( id ) // constructor {		this.menu = document.getElementById( id ); this.list = this.menu.getElementsByTagName( 'ul' )[ 0 ]; // bypass " Views ", etc.

//	sigh...as far as I can figure, there is empty whitespace being treated //	as TextNodes.... //		var LIs = this.list.getElementsByTagName( 'li' );

for ( var i = 0; i < LIs.length; i++ ) {			this[ LIs[ i ].id ] = LIs[ i ]; }

this.newItem = function( id, txt, url ) {	var li = document.createElement( 'li' ); li.id  = id; var a = document.createElement( 'a'  );  a.href = url;

a.appendChild( document.createTextNode( txt ) ); li.appendChild( a );

this[ id ] = li; // watch this!!!

return li; }

this.append = function( id, txt, url ) {	this.list.appendChild( this.newItem( id, txt, url ) ); }		this.insertBefore = function( old, id, txt, url ) {	this.list.insertBefore( this.newItem( id, txt, url ), this[ old ] ); }

//	the ByTagName here is a bit annoying, but in Safari, I was picking //	up TextNodes by using this[ id ].firstChild.firstChild //		this.getText = function( id     ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data } this.setText = function( id, txt ) {       this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data = txt }

this.getHref = function( id     ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].href       } this.setHref = function( id, url ) {       this[ id ].getElementsByTagName( 'a' )[ 0 ].href = url } //	I add em as I need em.... }

function InlineKate( user ) {		var kate = 'http://tools.wikimedia.de/~kate/cgi-bin/count_edits?dbname=enwiki&user=' + user;

var div = document.createElement( 'div' ); div.id = 'inlineKateDiv'; div.style.position = 'absolute'; div.style.zIndex  = 1000; div.style.left    =  '20px'; div.style.top     =  '20px'; div.style.backgroundColor = '#FFFFFF'; div.style.borderStyle    = 'solid'; div.style.borderWidth    = ' medium'; div.style.borderColor    = '#000000';

var top = document.createElement( 'div' ); top.id = 'inlineKateTop'; top.style.textAlign = 'right'; top.style.margin = '8px'; top.style.backgroundColor = '#DDDDDD';

var a = document.createElement( 'a' ); a.appendChild( document.createTextNode( "Go to Kate's" ) ); a.href   = kate; a.target = '_parent'; a.style.margin = '8px';

top.appendChild( a );

a = document.createElement( 'a' ); a.appendChild( document.createTextNode( 'Close' ) ); a.href   = "javascript:void RemoveNode('inlineKateDiv')"; a.style.margin = '8px';

top.appendChild( a );

div.appendChild( top );

var iframe = document.createElement( 'iframe' ); iframe.id  = 'inlineKateBot'; iframe.style.width = '300px'; iframe.style.height = '400px'; iframe.style.margin =  '8px'; iframe.style.borderStyle = 'solid'; iframe.style.borderWidth = 'thin'; iframe.style.borderColor = '#000000'; iframe.src = kate;

div.appendChild( iframe );

document.body.appendChild( div ); }

function RemoveNode( id ) {	var node = document.getElementById( id ) node.parentNode.removeChild( node ); }

function UTCTime {			//	Get a date stamp for the time in UTC-land. //			//	for the future: a format arg //		var s = '', d = new Date, a = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '); return	d.getUTCDate + ' ' + a[ d.getUTCMonth ] + ' ' + d.getUTCFullYear + ' ' + ( '0' + d.getUTCHours  ).substr( -2 ) + ':' + ( '0' + d.getUTCMinutes ).substr( -2 ) + ' ' + 'UTC'; }

SoFixItInit; window.addEventListener( 'load', SoFixItLoad, false ); } //