Community Central
Community Central

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.
importScriptPage('User:Quarenon/quickpreview.js', 'runescape');
importScriptPage('AdvancedOasisUI/code.js', 'dev');
importScriptPage('User:Joeyaa/wham.js','vstf');
importScriptPage('FastDelete/code.js', 'dev');
importScriptPage( 'AjaxUndo/code.js', 'dev' );

//changes the contribute button to a recent changes button
$(function() { $('.WikiHeaderRestyle div.buttons nav').replaceWith('<span class="wikia-menu-button secondary"><a data-id="recentchanges" href="/wiki/Special:RecentChanges" title="Recent Changes"><img height="16" width="22" class="sprite activity" src="'+ wgBlankImgUrl +'"> Recent Changes</a></span>'); });

/*gets rid of the autodelete summary
function removeDeleteSummary() {
if(wgAction == 'delete') {document.getElementById('wpReason').value = '';}
}
addOnloadHook(removeDeleteSummary); */

//suppress undo summary
function removeUndoSummary() {	 	
if(window.location.href.indexOf('&undo=') != -1) {document.getElementById('wpSummary').value = '';}	 	
}	
addOnloadHook(removeUndoSummary);

//gets rid of the admin dash drawer and makes things look better
if(document.getElementById('AdminDashboardDrawer')) {
 $('.AdminDashboardNavigation').prepend($('#WikiaSearch').css('float', 'right').detach());}

//kills the message wall
  importScriptPage('MediaWiki:APIQuery.js', 'monchbox');

function KillMessageWall() {
	if(wgPageName != 'User:' + wgUserName + '/talk' && wgPageName != 'User:' + wgUserName + '/Talk') {
		//check if someone edited your /talk or /Talk page
		var api = new APIQuery({logger: function() {}});
		api.newQuery('GET', {action: 'query', prop: 'info', titles: 'User:' + wgUserName + '/talk|User:' + wgUserName + '/Talk'}, function(result) {
			var pages = result.query.pages;
			for(var i in pages) {
				if(i > 0 && pages[i].lastrevid > readCookie('msgwl_' + pages[i].title.substring(pages[i].title.lastIndexOf('/') + 1))) {
					var sub = pages[i].title.substring(pages[i].title.lastIndexOf('/') + 1);
					if(skin == 'oasis') {
						document.getElementById('WikiaFooter').getElementsByTagName('ul')[0].outerHTML += '<ul id="WikiaNotifications" class="WikiaNotifications"><li><div data-type="1"><a class="sprite close-notification"></a>You have <a href="/index.php?title=User:' + wgUserName + '/' + sub + '&redirect=no" title="User:' + wgUserName + '/' + sub + '">new messages</a>.</div></li></ul>';
					}
					else {
						document.getElementById('contentSub').outerHTML += '<div class="usermessage">You have <a href="/index.php?title=User:' + wgUserName + '/' + sub + '&redirect=no" title="User:' + wgUserName + '/' + sub + '">new messages</a> (<a href="/index.php?title=User:' + wgUserName + '/' + sub + '&diff=cur" title="User:' + wgUserName + '/' + sub + '">show most recent</a>).</div>';
					}
				}
			}
		});
		api.send(0);
	}
	else {createCookie('msgwl_' + wgPageName.substring(wgPageName.lastIndexOf('/') + 1), wgCurRevisionId, 99999);}
 
	if(wgCanonicalNamespace.indexOf('Message_Wall') == 0 || wgCanonicalNamespace == 'Thread') {
		if(document.getElementById('Wall')) { //Page is an actual wall or thread
			if(document.getElementById('WallBrickHeader')) {
				var header = document.getElementById('WallBrickHeader').getElementsByTagName('a')[0];
				header.innerHTML = 'Message Wall:' + header.href.substring(header.href.indexOf('/wiki/Message_Wall:') + '/wiki/Message_Wall:'.length);
			}
 
			var blocks = document.getElementById('Wall').getElementsByTagName('blockquote');
			for(var i = 0; i < blocks.length; i++) {
				if(blocks[i].className == 'speech-bubble-message') {
					var div = blocks[i].getElementsByTagName('div');
					if(div[0] && div[0].className == 'edited-by') {var links = blocks[i].getElementsByTagName('div')[0].getElementsByTagName('a');}
					else if(div[0]) {var links = blocks[i].getElementsByTagName('div')[1].getElementsByTagName('a');}
					if(links[1] && links[1].innerHTML) {
						links[1].className = '';
						links[0].style.display = 'none';
					}
				}
			}
		}
		else { //Page is history
			if(skin == 'oasis') {var page = document.getElementById('WikiaArticle');}
			else {var page = document.getElementById('bodyContent');}
			var header = page.getElementsByTagName('nav')[0].getElementsByTagName('a')[0];
			header.innerHTML = 'Message Wall:' + header.href.substring(header.href.indexOf('/wiki/Message_Wall:') + '/wiki/Message_Wall:'.length);
 
			var entries = document.getElementById('WallHistory').getElementsByTagName('tr');
			for(var i = 0; i < entries.length; i++) {
				if(entries[i].className == 'info-entry') {
					var links = entries[i].getElementsByTagName('a');
					if(links[2] && links[2].parentNode.className != 'threadHistory') {
						links[2].innerHTML = links[2].children[0].innerHTML;
						links[2].className = '';
						links[1].style.display = 'none';
					}
				}
			}
		}
	}
}
addOnloadHook(KillMessageWall);

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

//adds recent Changes and Random page into the new editor
$(function addEditorButtons() {if ($('.checkboxes').length) {
  $('<div style="margin: 0; padding: 0" class="WikiHeader"><div class="buttons" style="float: right; position: relative; right: 0; bottom: 0"><a data-id="randompage" class="wikia-button secondary" accesskey="x" title="Random Page" href="/wiki/Special:Random"><img width="0" height="0" class="sprite random" src="' + wgBlankImgUrl + '"> Random Page</a><a data-id="wikiactivity" class="wikia-button secondary" accesskey="g" title="Recent Changes" href="/wiki/Special:RecentChanges"><img width="0" height="0" src="' + wgBlankImgUrl + '" class="sprite activity">Recent Changes</a></div></div>').insertBefore('.checkboxes');
}
});
//fast delete buttons
var fdButtons = [];
fdButtons[fdButtons.length] = {
  'summary': '[[w:Help:Spam|spam]]',
  'label': 'SP'};
fdButtons[fdButtons.length] = {
  'summary': '[[w:Help:Vandalism|vandalism]]',
  'label': 'VA'};
fdButtons[fdButtons.length] = {
  'summary': 'Housekeeping',
  'label': 'HK'};

 // remove admin link on toolbar
$().ready( function() {
 $('li > a[data-tracking="admindashboard/toolbar/admin"]').remove();
} );

//UrlQuery
function urlQuery(quer) {
	for(i in location.href.split('?')) {
		for(j in location.href.split('?')[i].split('&')) {
			if(location.href.split('?')[i].split('&')[j].split('=')[0] == quer) {
				return location.href.split('?')[i].split('&')[j].split('=')[1];
			}
		}
	}
	return '';
}

//adds a recent changes button next to the WikiActivity button on wikis without the new nav
function AddRecentChanges() {
	$('div.buttons').css({'width': '310px'});
	$('a[data-id="wikiactivity"]').after('<a href="/wiki/Special:RecentChanges" title="Special:RecentChanges" class="wikia-button secondary" data-id="recentchanges" style="margin-left:8px">Recent Changes</a>');
}

addOnloadHook(AddRecentChanges);


//Moncho's dumb chat hacks
    /* get all personal code files in chat */
    /* Important: you must click the chat button in the rail for this to work. */
    /* Very important: Chat is still a beta feature. Chat hacks may break as the feature is changed and updated, as it is a work in progress. */

    $(setTimeout('ChatCheck()', 200));
 
    function ChatCheck() {
            if($('.chat-join button').length != 0) {
                    $('.chat-join button').replaceWith('<a class="wikia-button" onclick="OpenChatWindow()"><img src="http://images.wikia.com/common/__cb36140/extensions/wikia/Chat/images/chat_icon.png" style="margin-right:3px;">Join the Chat</a>');
            } else {
                    setTimeout('ChatCheck()', 200);
            }
    }
 
    function OpenChatWindow() {
            window.chatwindow = window.open('/index.php?title=Special:Chat&useskin=wikia');
            window.chatwindow.onload = function () {
                    //addOnloadHook, importScript, and importStylesheet
                    window.chatwindow.$('body').prepend('<script>\nfunction importScript(b){var a=wgScript+"?title="+encodeURIComponent(b.replace(/ /g,"_")).replace(/%2F/ig,"/").replace(/%3A/ig,":")+"&action=raw&ctype=text/javascript";return importScriptURI(a)}\nfunction importScriptURI(a){var b=document.createElement("script");b.setAttribute("src",a);b.setAttribute("type","text/javascript");document.getElementsByTagName("head")[0].appendChild(b);return b}\nfunction importScriptPage(b,d){var a="/index.php?title="+encodeURIComponent(b.replace(/ /g,"_")).replace("%2F","/").replace("%3A",":")+"&action=raw&ctype=text/javascript";if(typeof d=="string"){if(d.indexOf("://")==-1){a="http://"+d+".wikia.com"+a}else{a=d+a}}return importScriptURI(a)}\nfunction importStylesheet(a){return importStylesheetURI(wgScript+"?action=raw&ctype=text/css&title="+encodeURIComponent(a.replace(/ /g,"_")))}\nfunction importStylesheetURI(b,d){var a=document.createElement("link");a.type="text/css";a.rel="stylesheet";a.href=b;if(d){a.media=d}document.getElementsByTagName("head")[0].appendChild(a);return a}\nfunction importStylesheetPage(b,d){var a="/index.php?title="+encodeURIComponent(b.replace(/ /g,"_")).replace("%2F","/").replace("%3A",":")+"&action=raw&ctype=text/css";if(typeof d=="string"){if(d.indexOf("://")==-1){a="http://"+d+".wikia.com"+a}else{a=d+a}}return importStylesheetURI(a)}\n//This isn\'t the same as the regular addOnloadHook, because the regular one runs from a script tag in the body that I don\'t feel like appending. It\'s easier to just make it $(function), which is essentially equivalent\nfunction addOnloadHook(func) {$(func);}\n</script>');
                    //global.js
                    window.chatwindow.importScriptURI('http://community.wikia.com/index.php?title=User:' + wgUserName + '/global.js&action=raw&ctype=text/javascript');
                    //wikia.js
                    window.chatwindow.importScriptURI(wgServer + '/index.php?title=User:' + wgUserName + '/wikia.js&action=raw&ctype=text/javascript');
                    //global.css
                    window.chatwindow.importStylesheetURI('http://community.wikia.com/index.php?title=User:' + wgUserName + '/global.css&action=raw&ctype=text/css');
                    //wikia.css
                    window.chatwindow.importStylesheetURI(wgServer + '/index.php?title=User:' + wgUserName + '/wikia.css&action=raw&ctype=text/css');
 
                    //These are my chat hacks. If you don't want them, you can delete this line.
                    window.chatwindow.importScriptURI('http://community.wikia.com/index.php?title=User:Monchoman45/ChatHacks.js&action=raw&ctype=text/javascript');
            }
    }
//Custom Rollback buttons
function CustomRollbacks() {
        var Buttons = [{
                text: 'spam',
                title: 'Revert spam',
                summary: 'Reverted [[w:c:help:Help:Spam|spam]]',
                loadtalk: false
        }, {
                text: 'vandalism',
                title: 'Revert vandalism',
                summary: 'Reverted [[w:c:help:Help:Vandalism|vandalism]]',
                loadtalk: false
        }, {
                text: 'null',
                title: 'Revert with no summary',
                summary: ' &bot=1', //This one has no summary, and flags it as a bot edit
                loadtalk: false
        }];
 
        var list = document.getElementsByTagName('span');
        for(i in list) {
                if(list[i].className == 'mw-rollback-link') {
                        var link = list[i];
                        var rollback = link.innerHTML;
                        for(j in Buttons) {
                                var customlink = document.createElement('span');
                                customlink.innerHTML = rollback;
                                customlink.className = 'customrollback'; //we do this to avoid an infinite loop, because when we insert a <span> into the DOM, the list variable includes it
                                customlink.getElementsByTagName('a')[0].title = Buttons[j].title;
                                customlink.getElementsByTagName('a')[0].href += '&summary=' + Buttons[j].summary;
                                customlink.getElementsByTagName('a')[0].innerHTML = Buttons[j].text;
                                if(Buttons[j].loadtalk == true) {customlink.getElementsByTagName('a')[0].className = 'loadtalk';}
                                if(urlQuery('action') == 'history') {
                                        link.parentNode.insertBefore(customlink, link.nextSibling);
                                        customlink.outerHTML = ' | ' + customlink.outerHTML;
                                }
                                else {
                                        link.parentNode.appendChild(customlink);
                                        customlink.outerHTML = ' ' + customlink.outerHTML;
                                }
                        }
                }
        }
        for(i in list) { //why another one of these? we're fixing the class that we set to avoid an infinite loop
                if(list[i].className == 'customrollback') {
                        list[i].className = 'mw-rollback-link';
                }
        }
        /* Grunny's function for opening up a user's talkpage when rollbacking (http://community.wikia.com/wiki/User:Grunny) */
        $( '.mw-rollback-link .loadtalk' ).click( function (e) {
                e.preventDefault();
                var $rblink = $( this );
                $.ajax( {
                        url: $rblink.attr( 'href' ),
                        success: function () {
                                var     user = $rblink.attr( 'href' ).replace( /.*[&?]from=([^&]*).*/, '$1' ).replace( /\+/g, '_' ),
                                        newurl = wgServer + wgArticlePath.replace( '$1', 'User_talk:' + user + '?action=edit&section=new' );
                                location.href = newurl;
                        },
                        error: function () {
                                $rblink.text( function ( i, val ) {
                                        return val + ' [failed]';
                                } );           
                        }
                } );
        } );
}
 
addOnloadHook(CustomRollbacks);

/* shrink the side rail to add content space when rail is present - 2/1/11 */
/* only works with proper css  */
function ShrinkRail() {
	if( $('article#WikiaMainContent.WikiaMainContent').width() < 1000 ) {
		$('header#WikiaPageHeader.WikiaPageHeader details').css({"width": '750px'});
		$('article#WikiaMainContent.WikiaMainContent').css({"width": '760px'});
		$('div#catlinks.catlinks').css({"width": '718px'});
 
		$('div#WikiaRail.WikiaRail').css({"width": '220px'});
		$('form#WikiaSearch').css({"width": '218px'});
		$('form#WikiaSearch input[type="text"]').css({"width": '210px'});
 
		$('div#WikiaRail a.wikia-button.upphotos').replaceWith('<a href="/wiki/Special:Upload" title="Add a Photo" class="wikia-button upphotos" style="width:30px; margin-top:0;"> <img src="http://images1.wikia.nocookie.net/__cb32790/common/skins/common/blank.gif" height="0" width="0" class="sprite photo" style="margin:0;"> </a>');
		$('div#WikiaRail a.wikia-button.createpage').replaceWith('<a href="/wiki/Special:CreatePage" title="Create a new page on this wiki" class="wikia-button createpage" style="width:25px; margin-top:0;"> <img src="http://images1.wikia.nocookie.net/__cb32790/common/skins/common/blank.gif" height="0" width="0" class="sprite new" style="margin:0;"> </a>');
		$('div#WikiaRail a.wikia-button[href="/wiki/Special:CreateBlogPage"]').replaceWith('<a href="/wiki/Special:CreateBlogPage" title="Create blog post" class="wikia-button" style="width:25px"><img src="http://images1.wikia.nocookie.net/__cb32790/common/skins/common/blank.gif" height="0" width="0" class="sprite blog" style="margin-left:4px;"></a>');
	}
}
 
addOnloadHook(ShrinkRail);

//changes links on image from image popup to the actual page
$(function changeimagelinks() {
 
    if (window.skin == 'oasis') {
        var article = $('#WikiaArticle, .LatestPhotosModule, #article-comments');
    }
    else {
        var article = $('#bodyContent');
    }
 
    article.unbind('click.lightbox');
 
    var a = document.getElementsByTagName("a");
    for ( var t = 0; t < a.length; ++t ) {
        var a2 = a[t];
        var img = a2.getElementsByTagName("img");
        if ( img[0] != null ) {
            if ( a2.href.indexOf("images.wikia.com") != -1 ) {
                var link = wgServer + '/wiki/File:' + a2.href.substring(a2.href.lastIndexOf('/') + 1);
                a2.setAttribute('href',link);
            }
        }
    }
});

//Ajax RC
AjaxRCRefreshText = 'Auto-refresh';
AjaxRCRefreshHoverText = 'Automatically refresh the page';
ajaxCallAgain = [CustomRollbacks];
importScriptPage('AjaxRC/code.js', 'dev');
var ajaxRefresh = 20000;

//Timer, needs to be adjusted for new nav
// ============================================================
// displayTimer - 2/1/11
// ============================================================
 
//Add a clock to the WikiHeader
//Modified from work by Patrick Westerhoff [poke]:
//http://bulbapedia.bulbagarden.net/wiki/MediaWiki:Monobook.js
 
hookEvent( 'load', displayTimer );
 
function displayTimer ()
{
    if ( typeof( timerDisplay ) !== 'undefined' && timerDisplay === false )
        return;
 
    var date;
 
    if (skin == 'oasis')
    {
    var timerParent = document.getElementById( 'WikiHeader' ).getElementsByTagName( 'div' )[0];
    }
 
    if (skin == 'monobook')
    {
    var timerParent = document.getElementById( 'p-personal' ).getElementsByTagName( 'ul' )[0];
    }
 
    var timerLink   = document.createElement( 'a' );
    var timerObj    = document.createElement( 'li' );
    timerLink.href               = '/wiki/' + wgPageName + '?action=purge';
    timerLink.title              = 'Purge the server cache and update the contents of this page.'
    timerObj.id                  = 'displayTimer';
    timerObj.style.textTransform = 'none';
    timerObj.style.fontWeight    = 'bold';
    timerObj.style.fontSize      = '100%';
    timerObj.appendChild( timerLink );
    timerParent.insertBefore( timerObj, timerParent.firstChild );
 
    if (skin == 'oasis')
    {
        $('#displayTimer').css({'position': "inherit", 'right': "0px", 'top': "-28px"});
    }
 
    var month = new Array(12);
        month[0]  = "Jan";
        month[1]  = "Feb";
        month[2]  = "Mar";
        month[3]  = "Apr";
        month[4]  = "May";
        month[5]  = "Jun";
        month[6]  = "Jul";
        month[7]  = "Aug";
        month[8]  = "Sep";
        month[9]  = "Oct";
        month[10] = "Nov";
        month[11] = "Dec";
 
    function actualizeUTC ()
    {
        timerDate           = new Date();
        timerLink.innerHTML = ( timerDate.getUTCDate()     < 10 ? '0' : '' ) + timerDate.getUTCDate()     + ' '
                            + ( timerDate.getUTCMonth()    < 10 ? '' : ''  ) + month[timerDate.getUTCMonth()] + ' '
                            + ( timerDate.getUTCFullYear() < 10 ? '0' : '' ) + timerDate.getUTCFullYear() + ' '
                            + ( timerDate.getUTCHours()    < 10 ? '0' : '' ) + timerDate.getUTCHours()    + ':'
                            + ( timerDate.getUTCMinutes()  < 10 ? '0' : '' ) + timerDate.getUTCMinutes()  + ':'
                            + ( timerDate.getUTCSeconds()  < 10 ? '0' : '' ) + timerDate.getUTCSeconds()  + ' (UTC)';
    }
 
    function actualizeCustom ()
    {
        timerDate           = new Date();
        timerDate.setMinutes  ( timerDate.getMinutes() + timerDate.getTimezoneOffset() + timerTimezone * 60 );
        timerLink.innerHTML = ( timerDate.getDate()     < 10 ? '0' : '' ) + timerDate.getDate()     + ' '
                            + ( timerDate.getMonth()    < 10 ? '' : ''  ) + month[timerDate.getMonth()] + ' '
                            + ( timerDate.getFullYear() < 10 ? '0' : '' ) + timerDate.getFullYear() + ' '
                            + ( timerDate.getHours()    < 10 ? '0' : '' ) + timerDate.getHours()    + ':'
                            + ( timerDate.getMinutes()  < 10 ? '0' : '' ) + timerDate.getMinutes()  + ':'
                            + ( timerDate.getSeconds()  < 10 ? '0' : '' ) + timerDate.getSeconds()
                            + ' (UTC' + ( timerTimezone  < 0 ? '' : '+' ) + timerTimezone + ')';
    }
 
    // start
    if ( typeof( timerTimezone ) !== 'number' )
    {
        actualizeUTC();
        setInterval( actualizeUTC, 1000 );
    }
    else
    {
        actualizeCustom();
        setInterval( actualizeCustom, 1000 );
    }
}