User:Psl85/global.js

ShoutWiki — express yourself and be heard!
Jump to navigation Jump to search

Note: After saving, 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: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* Auto-refresh button on Special:RecentChanges */
function setCookie(c_name, value, expiredays) {
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}
function getCookie(c_name) {
	if (document.cookie.length > 0) {
		c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1) {
			c_start = c_start + c_name.length + 1;
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) c_end = document.cookie.length;
			return unescape(document.cookie.substring(c_start, c_end));
		}
	}
	return "";
}
var ajaxPages = new Array("Special:RecentChanges");
var ajaxRCOverride = false;
var rcRefresh = 30000;
function ajaxRC() {
	appTo = $(".firstHeading");
	appTo.append('&nbsp;<span style="position:absolute; right:75px;"><span style="position:relative; top:2px;"><span style="position:relative; top:-12px; right:-15px;" id="autoRefreshProgress"><img src="/images/loader.gif" border="0" alt="AJAX operation in progress" /></span><span style="font-size: xx-small; cursor:help;" title="Automatically refresh the current page every ' + Math.floor(rcRefresh / 1000) + ' seconds">AUTO-REFRESH:</span><input type="checkbox" id="autoRefreshToggle"></span></span>');
	$("#autoRefreshToggle").click(function () {
		setCookie("ajaxRC", $("#autoRefreshToggle").is(":checked") ? "on" : "off")
		loadRCData()
	});
	$("#autoRefreshProgress").hide();
	if (getCookie("ajaxRC") == "on" || ajaxRCOverride) {
		$("#autoRefreshToggle").attr("checked", "checked");
		setTimeout("loadRCData();", rcRefresh);
	}
}
function loadRCData() {
	if (!$("#autoRefreshToggle").is(":checked")) return;
	$('#autoRefreshProgress').show()
	$(article).load(location.href + " " + article + " > *", function (data) {
		$(article + " .mw-collapsible").makeCollapsible();
		$('#autoRefreshProgress').hide()
		if ($("#autoRefreshToggle").is(":checked")) setTimeout("loadRCData();", rcRefresh);
	});
}
$(function () {
	article = "#bodyContent";
	for (x in ajaxPages) {
		if (mw.config.get('wgPageName') == ajaxPages[x] && $("#autoRefreshToggle").length == 0) ajaxRC();
	}
});

function setUpSynchTable () {
  var tables = document.getElementsByClassName("awardsSynchronisedTable");
  for (var k = 0; k < tables.length; k++) {
    var rows = tables[k].rows;
    for (var i = 0; i < rows.length; i++) {
      var cells = rows[i].cells;
      for (var j = 0; j < cells.length; j++) {
        cells[j].style.verticalAlign = "top";
        var synchDiv = document.createElement("DIV");
        synchDiv.style.position = "relative";
        synchDiv.className = "synchDiv";
        var childs = cells[j].childNodes;
        while (childs.length > 0) {
          synchDiv.appendChild(childs[0]);
        }
        cells[j].appendChild(synchDiv);
      }
    }
  }
  if (tables.length > 0) {
    document.onscroll = synchTableOnScroll;
  }
}

function synchTableOnScroll() {
  
  var divs = document.getElementsByClassName("synchDiv");
  for (var i = 0; i < divs.length; i++) {
    var parent = divs[i].parentNode;
    var parentRect = parent.getBoundingClientRect();
    var offset;
    if (window.innerHeight > divs[i].offsetHeight) {
      offset = Math.min(Math.max(-1 * parentRect.top, 0), parent.clientHeight - divs[i].offsetHeight);
    } else {
      offset = Math.min(Math.max(-1 * parentRect.top / (parent.clientHeight - window.innerHeight) * (parent.clientHeight - divs[i].offsetHeight), 0), parent.clientHeight - divs[i].offsetHeight);
    }
    divs[i].style.top = offset + "px";
  }
}

mw.loader.load( '//minecraft.gamepedia.com/index.php?title=User:Majr/goToTop.js&action=raw&ctype=text/javascript' );


/* Add image at the top right corner to blocked users' userpages */

if ( mw.config.get( 'wgRelevantUserName' ) ) {
	$( function() {
		'use strict';
		var title = 'This username/IP is blocked from editing';
		( new mw.Api() ).get( {
			action: 'query',
			format: 'json',
			list: 'blocks',
			formatversion: 2,
			bkusers: mw.config.get( 'wgRelevantUserName' )
		} ).done( function( data ) {
			if ( data.query.blocks.length ) {
				$( '.mw-indicators' ).prepend(
					'<a href="//commons.wikimedia.org/wiki/File:Blocked_user.svg" class="mw-indicator" id="gadget-blockindicator" title="' + title + '">' +
						'<img src="//upload.wikimedia.org/wikipedia/commons/4/4f/Blocked_user.svg" height="20">' +
					'</a>'
				);
			}
		} );
	} );
}

// Scripts, some imported from Wiki Pedia, and modified to use on this wiki //


mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );

mw.loader.load('//meta.wikimedia.org/w/index.php?title=Mediawiki:Gadget-popups.js&action=raw&ctype=text/javascript');

mw.loader.load('//meta.wikimedia.org/w/index.php?title=Mediawiki:Gadget-markblocked.js&action=raw&ctype=text/javascript');

mw.loader.load('//en.wikipedia.org/w/index.php?title=Mediawiki:Gadget-edittop.js&action=raw&ctype=text/javascript');

mw.loader.load('//en.wikipedia.org/w/index.php?title=Mediawiki:Gadget-charinsert.js&action=raw&ctype=text/javascript');

mw.loader.load('//en.wikipedia.org/w/index.php?title=Mediawiki:Gadget-extlinks.js&action=raw&ctype=text/javascript');

mw.loader.load('//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-ReferenceTooltips.js&action=raw&ctype=text/javascript');

mw.loader.load( '//minecraft.gamepedia.com/index.php?title=User:Psl85/smartwatchlist.js&action=raw&ctype=text/javascript' );

mw.loader.load( '//minecraft.gamepedia.com/index.php?title=User:Psl85/rc.js&action=raw&ctype=text/javascript' );

mw.loader.load( '//minecraft.gamepedia.com/index.php?title=User:Psl85/dropdownmenu.js&action=raw&ctype=text/javascript' );
/**
 * charinsert loader
 */

$( function () {
    var tab, tablink;

    tab = document.getElementById('ca-addsection');
    if ( !tab ) {
        return;
    }

    tablink = tab.getElementsByTagName('a')[0];
    if ( !tablink ) {
        return;
    }

    tablink.firstChild.nodeValue = '+';
    if ( mw.config.get( 'skin' ) === 'monobook' ) {
      tablink.style.paddingLeft = ".4em";
      tablink.style.paddingRight = ".4em";
    }
});

// This only shows alerts for things after this handler is installed of course.
// Because this is a gadget, error reporting can thus be inconsistent.
var originalErrorHandler = window.onerror || null;
// Column and error args are optional
window.onerror = function ( message, url, line, colomn, error ) {
	var $msg = $( '<p>' );
	if ( url ) {
		$( '<span>' )
			.text( url + ' at line ' + line + ': ' )
			.appendTo( $msg );
	}
	$( '<span>' )
		.text( message )
		.appendTo( $msg );

	mw.notify( $msg, {
		autoHide: true,
		autoHideSeconds: 10,
		tag: null,
		title: 'Whoops! An error occured:',
		type: 'error'
	} );
	if (originalErrorHandler) {
		return originalErrorHandler.apply(this, arguments);
	}
};
// unbind on leaving the page
$( window )
	.on( 'unload', function () {
		window.onerror = originalErrorHandler;
	} );

$( function() {
	'use strict';
	var restrictions = mw.config.get( 'wgRestrictionEdit' );
	if ( restrictions ) {
		if ( restrictions.indexOf( 'sysop' ) !== -1 ) {
			$( '.mw-indicators' ).prepend( '<img title="This page is fully protected." id="gadget-protectionindicators-' + restrictions[ 0 ] + '" src="//upload.wikimedia.org/wikipedia/commons/5/59/Padlock.svg" height="20" />' );
		} else if ( restrictions.indexOf( 'autoconfirmed' ) !== -1 ) {
			$( '.mw-indicators' ).prepend( '<img title="This page is semi-protected." id="gadget-protectionindicators-' + restrictions[ 0 ] + '" src="//upload.wikimedia.org/wikipedia/commons/f/fc/Padlock-silver.svg" height="20" />' );
		} else if ( restrictions.indexOf( 'director' ) !== -1 ) {
			$( 'mw-indicators' ).prepend( '<img title="This page is director-protected so only directors can edit it." id="gadget-protectionindicators-' + restrictions[ 0 ] + '" src="//upload.wikimedia.org/wikipedia/commons/4/4f/Padlock-purple.svg" height="20" />' );
		}
		}
	}
);

( function( $, mw ) {
$alert = '<div id="mw-echo-sliding-alert">';
$alert += '<div id="mw-echo-close-box" style="color:red">CLOSE</div>';
$alert += '<div id="mw-echo-alert-text" style="font-family: Trebuchet MS">you have<a href="#" id="mw-echo-talk-link">new unread messages</a> on your discussion page. (<a href="#" id="mw-echo-talk-diff-link">diff</a>)</div>';
$alert += '</div>';
$(document).ready(function() {
	var newMsgRevisionId = mw.config.get( 'wgUserNewMsgRevisionId' );
	if ( newMsgRevisionId ) {
		var userName = mw.config.get( 'wgUserName' );
		var talkLink = '/wiki/User_talk:' + userName + '?redirect=no';
		var diffLink = '/w/index.php?title=User_talk:' + userName + '&oldid=' + newMsgRevisionId + '&diff=cur';
		$( 'body' ).append( $alert );
		$( '#mw-echo-close-box' ).click( function( e ) {
			$( '#mw-echo-sliding-alert' ).hide();
			e.preventDefault();
		} );
		$( 'a#mw-echo-talk-link' ).attr( 'href', talkLink );
		$( 'a#mw-echo-talk-diff-link' ).attr( 'href', diffLink );
		mw.config.set( 'echoNewMsgAlertDisplayed', true );
	}
} );
} )( jQuery, mediaWiki );
//<nowiki>[[Category:Wikipedia scripts]]</nowiki>

function addExtraButtons () {
	mw.toolbar.addButtons(
	{
		imageId: 'button-redirect',
		imageFile: '//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png',
		speedTip: 'Redirect',
		tagOpen: '#REDIRECT[[',
		tagClose: ']]',
		sampleText: 'Target page name'
	},
	{
		imageId: 'button-strike',
		imageFile: '//upload.wikimedia.org/wikipedia/en/c/c9/Button_strike.png',
		speedTip: 'Strike',
		tagOpen: '<s>',
		tagClose: '</s>',
		sampleText: 'Strike-through text'
	},
	{
		imageId: 'button-enter',
		imageFile: '//upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png',
		speedTip: 'Line break',
		tagOpen: '<br/>',
		tagClose: '',
		sampleText: ''
	},
	{
		imageId: 'button-subscript',
		imageFile: '//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png',
		speedTip: 'Subscript',
		tagOpen: '<sub>',
		tagClose: '</sub>',
		sampleText: 'Subscript text'
	},
	{
		imageId: 'button-superscript',
		imageFile: '//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png',
		speedTip: 'Superscript',
		tagOpen: '<sup>',
		tagClose: '</sup>',
		sampleText: 'Superscript text'
	},
	{
		imageId: 'button-small',
		imageFile: '//upload.wikimedia.org/wikipedia/en/5/58/Button_small.png',
		speedTip: 'Small',
		tagOpen: '<small>',
		tagClose: '</small>',
		sampleText: 'Small text'
	},
	{
		imageId: 'button-hide-comment',
		imageFile: '//upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png',
		speedTip: 'Insert hidden Comment',
		tagOpen: '<!-- ',
		tagClose: ' -->',
		sampleText: 'Comment'
	},
	{
		imageId: 'button-gallery',
		imageFile: '//upload.wikimedia.org/wikipedia/en/1/12/Button_gallery.png',
		speedTip: 'Insert a picture gallery',
		tagOpen: '\n<gallery>\n',
		tagClose: '\n</gallery>',
		sampleText: 'File:Example.svg|Caption1\nFile:Example.jpg|Caption2'
	},
	{
		imageId: 'button-blockquote',
		imageFile: '//upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png',
		speedTip: 'Insert block of quoted text',
		tagOpen: '<blockquote>\n',
		tagClose: '\n</blockquote>',
		sampleText: 'Block quote'
	},
	{
		imageId: 'button-insert-table',
		imageFile: '//upload.wikimedia.org/wikipedia/en/6/60/Button_insert_table.png',
		speedTip: 'Insert a table',
		tagOpen: '{| class="wikitable"\n|',
		tagClose: '\n|}',
		sampleText: '-\n! header 1\n! header 2\n! header 3\n|-\n| row 1, cell 1\n| row 1, cell 2\n| row 1, cell 3\n|-\n| row 2, cell 1\n| row 2, cell 2\n| row 2, cell 3'
	},
	{
		imageId: 'button-insert-reflink',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png',
		speedTip: 'Insert a reference',
		tagOpen: '<ref>',
		tagClose: '</ref>',
		sampleText: 'Insert footnote text here'
	},
	{
		imageId: 'button-insert-template',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/4/43/Button-template.png',
		speedTip: 'Insert template braces',
		tagOpen: '{{',
		tagClose: '}}',
		sampleText: 'Insert template name'
	},
	{
		imageId: 'button-insert-gallery',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/4/43/Button-gallery.png',
		speedTip: 'Insert template braces',
		tagOpen: '{{',
		tagClose: '}}',
		sampleText: 'Insert template name'
	},
	{
		imageId: 'button-insert-underline',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/f/fd/Button_underline.png',
		speedTip: 'Insert underlined text',
		tagOpen: '<u>',
		tagClose: '</u>',
		sampleText: 'Underlined text'
	},
	{
		imageId: 'button-insert-gallery',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png',
		speedTip: 'Insert a gallery',
		tagOpen: '<gallery>',
		tagClose: '</gallery>',
		sampleText: 'Insert gallery images'
	},
	{
		imageId: 'button-insert-wplink',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/7/7f/Button_link_to_Wikipedia.png',
		speedTip: 'Insert a link to a Wikipedia article',
		tagOpen: '[[wikipedia:',
		tagClose: ']]',
		sampleText: 'Wikipedia article name'
	},
	{
		imageId: 'button-insert-wplink',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/0/0d/Button_wikification.png',
		speedTip: 'Insert a link to a Wiktionary word definition',
		tagOpen: '[[wikt:',
		tagClose: ']]',
		sampleText: 'Wiktionary definition'
	},
	{
		imageId: 'button-insert-poem',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/d/d3/Button_definition_list.png',
		speedTip: 'Insert a poem',
		tagOpen: '<poem>',
		tagClose: '</poem>',
		sampleText: 'Text'
	},
	{
		imageId: 'button-insert-subpage',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/0/0c/Button_Link_DifferentName.png',
		speedTip: 'Link to a subpage',
		tagOpen: '[[/',
		tagClose: ']]',
		sampleText: 'Subpage'
	},
	{
		imageId: 'button-insert-textcenter',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/5/5f/Button_center.png',
		speedTip: 'Text centered',
		tagOpen: '<center>',
		tagClose: '</center>',
		sampleText: 'Centered text'
	},
	{
		imageId: 'button-insert-textcenter',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/d/d5/Button_noinclude.png',
		speedTip: 'noinclude',
		tagOpen: '<noinclude>',
		tagClose: '</noinclude>',
		sampleText: 'noinclude text'
	},
	{
		imageId: 'button-insert-plainlink',
		imageFile: '//upload.wikimedia.org/wikipedia/commons/2/26/Button_plainlinks.png',
		speedTip: 'Insert a external link without the external link icon',
		tagOpen: '<span class="plainlinks">',
		tagClose: '</span>',
		sampleText: 'Enter URL here'
	}
	);
}

mw.loader.using( 'user.options', function () {
	// This can be the string "0" if the user disabled the preference ([[bugzilla:52542#c3]])
	if ( mw.user.options.get( 'usebetatoolbar' ) != 1 && mw.user.options.get( 'showtoolbar' ) == 1 ) {
		$.when(
			mw.loader.using( 'mediawiki.toolbar' ),
			$.ready
		).then( addExtraButtons );
	}
} );