Jump to content

User:Mattflaschen/Compare link.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/**
 * Convert the "Compare selected versions" button to a link
 * (Based on [[w:en:User:Superm401/Compare_link.js]])
 * @source: http://www.mediawiki.org/wiki/Snippets/Compare_link
 * @rev: 2
 * @see: [[bugzilla:16165]]
 * 
 * Copyright 2006-2013 Matthew Flaschen ([[User:Superm401]]), [[User:Helder.wiki]]
 *
 * In addition to the GFDL and CC-BY-SA:
 * 
 * This function (compare link) is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This function is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * A copy of the GPL is available at https://www.gnu.org/licenses/gpl-2.0.txt .
 * 
 * By modifying [[Snippets/Compare_link]]:
 * You agree to dual-license your contributions under both the
 * GFDL (http://en.wikipedia.org/wiki/WP:GFDL) and version 2 of the GPL
 * (https://www.gnu.org/licenses/gpl-2.0.txt) or any later version
 * of the GPL published by the FSF.
 * 
 */
function fixCompare() {
	var	$histForm = $('#mw-history-compare'),
		$diffList = $('#pagehistory'),
		$buttons = $histForm.find('input.historysubmit'),
		buttonText, $compareLink;
		if ( $buttons.length === 0 ) {
			// Only one version, so do nothing
			return;
		}
                buttonText = $buttons
			.remove()
			.first().val();
		$compareLink = $('<a></a>', {
			'class': 'compare-link',
			'text': buttonText
		});
	$histForm
		.prepend($compareLink)
		.append($compareLink.clone());
	var updateCompare = function(){
		var	$radio = $histForm.find('input[type=radio]:checked'),
			genLink = mw.config.get('wgScript')
				+ '?title=' + mw.util.wikiUrlencode( mw.config.get( 'wgPageName' ) )
				+ '&diff=' + $radio.eq(0).val()
				+ '&oldid=' + $radio.eq(1).val();
		$('.compare-link').each(function() {
			$(this).attr('href', genLink);
		});
	};
	updateCompare();
	$diffList.change(updateCompare);
}

if ( mw.config.get('wgAction') === 'history' ) {
	mw.util.addCSS( '.compare-link { border-radius:5px; color:black; text-decoration:none; border-width:1px 2px 2px 1px; border-style:solid; border-color:#DDDDDD #BBBBBB #BBBBBB #DDDDDD; padding:0.2em 1em; background-color:#EEEEEE; white-space:nowrap; } .compare-link:active{ border-width:0.1em; margin:0.1em; }' );
	$(fixCompare);
}