Common.js on mediawiki

⇠ Back to Blog:Hacks

Each mediawiki web has a MediaWiki:Common.js page (see, e.g., that of Wikipedia) that runs java script on each page. That's a powerful tool (apparently to be deprecated at some point). Installation should be straightforward but for some reason, can sometimes be frustratingly painful, so I give a particular example that should work on its own.

Visit the page MediaWiki:Common.js (create the page if it doesn't exist, you may have to put

$wgAllowUserJs = true;
$wgUserSiteJs = true;

in your LocalSettings.php to do so, although in my case, even putting this to false does nothing) and add the following (from [1]):

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'
	}
	);
}

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 );
	}
} );

and then, refreshing the cache of the browser (?action=purge is apparently not enough) by doing:

  • 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Clear the cache in Tools → Preferences

you extend the wiki-editor to useful buttons, in particular the much needed stroke-out.