مدیاویکی:Gadget-ajaxundo.js

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
/**
 * Ajax Undo links
 *
 * Adds an Ajax undo link next to the normal undo link on page histories
 * and on diff pages
 */
 
jQuery(document).ready( function ( $ ) {
	"use strict";
 
	function createUndoLink( diffUndoUrl ) {
		var $ajaxUndoLink = $( '<a />' ).text( 'خنثی سازی سریع ' ).attr( 'href', '#' ).click( function () {
			var	$ajaxUndoLinkob = $( this ),
				undoIdRegex = /&undo=([^&]*)/,
				undoId = undoIdRegex.exec( diffUndoUrl )[1],
				editToken,
				etUrl = mw.config.get('wgServer') + wgScriptPath + '/api.php?action=query&prop=info|revisions&intoken=edit&titles=' + encodeURIComponent( mw.config.get('wgPageName') ) + '&format=json';
			$ajaxUndoLinkob.html( ' <img src="http://images2.wikia.nocookie.net/dev/images/8/82/Facebook_throbber.gif" style="vertical-align: baseline;" border="0" alt="...درحال خنثی سازی" />' );
			$.getJSON( etUrl, function ( data ) {
				editToken = data.query.pages[wgArticleId].edittoken;
				$.ajax( {
					url: wgScriptPath + '/api.php?',
					data: 'action=edit&format=json&title=' + encodeURIComponent( mw.config.get('wgPageName') ) + '&undo=' + encodeURIComponent( undoId ) + '&bot=1&token=' + encodeURIComponent( editToken ),
					dataType: 'json',
					type: 'POST',
					success: function ( data ) {
						if ( data.edit && data.edit.result === 'Success' ) {
							$ajaxUndoLinkob.text( '(undone)' );
						} else if ( data.error && data.error.code === 'undofailure' ) {
							$ajaxUndoLinkob.text( '(error)' );
							alert( data.error.info );
						} else {
							$ajaxUndoLinkob.text( '(error)' );
							alert( 'Error: Unknown result from API.' );
						}
					},
					error: function () {
						$ajaxUndoLinkob.text( '(error)' );
					}
				} );
			} );
		} );
		return $ajaxUndoLink;
	}
 
	if ( $( '.mw-history-undo > a' ).length && mw.config.get('wgAction') === 'history' ) {
		$( '.mw-history-undo > a' ).each( function () {
			var	diffUndoUrl = $( this ).attr( 'href' ),
				$ajaxUndoLink = createUndoLink( diffUndoUrl );
			$( this ).parent().after( ' | ', $ajaxUndoLink );
		} );
	} else if ( $( 'table.diff' ).length && typeof $.getUrlVar( 'diff' ) !== 'undefined' ) {
		var	$diffUndoLink = $( 'table.diff' ).find( '.diff-ntitle > #mw-diff-ntitle1 a:last' ),
			diffUndoUrl = $diffUndoLink.attr( 'href' ),
			$ajaxDiffUndoLink = createUndoLink( diffUndoUrl );
		$diffUndoLink.parent().append( ' (', $ajaxDiffUndoLink, ')' );
	}
} );