MediaWiki:Gadget-UserMessages.js

From Wikipedia

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.
//<nowiki>
/**
 ** This is the installer-Script for MediaWiki:AxUserMsg.js
 ** Using LOD (Load on demand) to increase the overall page-loading time.
 ** Written in 2011 by Rillke
 **
**/

// This Code is jsHint valid!
/*global jQuery:false, mw:false, importScript:false */
(function($) {
'use strict';

if (3 === mw.config.get('wgNamespaceNumber') ||
	2 === mw.config.get('wgNamespaceNumber') || 
	( -1 === mw.config.get('wgNamespaceNumber') && ('Log' === mw.config.get('wgCanonicalSpecialPageName') || 'Contributions' === mw.config.get('wgCanonicalSpecialPageName')) )) {

var loadFullScript = function() {
	mw.loader.load( mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' ) + '?title=MediaWiki:AxUserMsg.js&action=raw&ctype=text/javascript&dummy=5' );
};
	
if (window.installOldLinks || window.AxUserMsgFireAsYouClick) {
	if (window.AxUserMsgFireAsYouClick) {
		window.installOldLinks = true;
	}
	// User wants old links - therefore we have to load the whole script each time
	loadFullScript();
	return;
} else {
	$(document).ready(function () {
		mw.loader.using(['mediawiki.util'], function () {
			if (window.installOldLinks || window.AxUserMsgFireAsYouClick) {
				if (window.AxUserMsgFireAsYouClick) {
					window.installOldLinks = true;
				}
				// User js was loaded later, so do it now!
				loadFullScript();
				return;
			}

			if (0 === $('#t-AjaxUserMessage').length && 0 === $('#t-AjaxUserMessageLOD').length) {
				var linktext = "Notify this user";
				var pHref = mw.util.addPortletLink('p-tb', '#', linktext, 't-AjaxUserMessageLOD', null);
				$(pHref).click(function(e) {
					var $linknode = $(this).find('a');
					e.preventDefault();
					$linknode.text('Loading...');
					$(document).on('scriptLoaded', function(evt, st, o) {
						if (st) {
							if ('AxUserMsg' === st && o) {
								$linknode.text(linktext);
								o.umNotifyUser();
							}
						}
					});
					$(this).off('click');
					loadFullScript();
				});
			}
			
		});
	});
}

} // Namespace Guard
})(jQuery);
//</nowiki>