Snippets/Compare link
< Snippets
Compare link | |
---|---|
Language(s): | JavaScript , CSS |
Compatible with: | MediaWiki 1.17+ (Vector) |
Description
editModify history pages changing the default "Compare selected versions" button to a link (bug 16165). This is useful to open diffs in a new window/tab. Based on script at en:User:Superm401/Compare link.js and work by User:Helder.wiki and others
Code
edit/**
* Convert the "Compare selected versions" button to a link
* (Based on [[w:en:User:Superm401/Compare_link.js]])
* @source: https://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 (https://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);
}