<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://imamreza.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C%3AGadget-rollback.js</id>
	<title>مدیاویکی:Gadget-rollback.js - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://imamreza.org/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C%3AGadget-rollback.js"/>
	<link rel="alternate" type="text/html" href="https://imamreza.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-rollback.js&amp;action=history"/>
	<updated>2026-09-10T20:02:05Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://imamreza.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-rollback.js&amp;diff=396&amp;oldid=prev</id>
		<title>Admin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://imamreza.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-rollback.js&amp;diff=396&amp;oldid=prev"/>
		<updated>2026-09-03T16:42:30Z</updated>

		<summary type="html">&lt;p&gt;۱ نسخه واردشده&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fa&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;نسخهٔ ‏۳ سپتامبر ۲۰۲۶، ساعت ۲۰:۱۲&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;fa&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(بدون تفاوت)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_fa:diff:1.41:old-395:rev-396 --&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://imamreza.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-rollback.js&amp;diff=395&amp;oldid=prev</id>
		<title>*&gt;Ebrahim: جزئی</title>
		<link rel="alternate" type="text/html" href="https://imamreza.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-rollback.js&amp;diff=395&amp;oldid=prev"/>
		<updated>2025-03-05T07:59:52Z</updated>

		<summary type="html">&lt;p&gt;جزئی&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// From: https://hu.wikipedia.org/w/index.php?title=MediaWiki:Gadget-rollback.js&amp;amp;oldid=18322106&lt;br /&gt;
( function ( $, mw ) {&lt;br /&gt;
	var rollbackDelay = 1000; // ms&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Displays success or failure with an icon at the end of each link.&lt;br /&gt;
	 * @param {jQuery} $link&lt;br /&gt;
	 * @param {String} status One of &amp;#039;working&amp;#039;, &amp;#039;success&amp;#039;, &amp;#039;error&amp;#039;&lt;br /&gt;
	 * @param {String} [errorCode] Error code, if status is &amp;#039;error&amp;#039;&lt;br /&gt;
	 * @param {String} [errorMessage] Error message, if status is &amp;#039;error&amp;#039;&lt;br /&gt;
	 */&lt;br /&gt;
	function updateLinkStatus( $link, status, errorCode, errorMessage ) {&lt;br /&gt;
		$link.removeClass( &amp;#039;api-working api-success api-error&amp;#039; );&lt;br /&gt;
		if ( status in { working: 1, success: 1, error: 1 } ) {&lt;br /&gt;
			$link.addClass( &amp;#039;api-&amp;#039; + status );&lt;br /&gt;
			if ( status === &amp;#039;error&amp;#039; ) {&lt;br /&gt;
				mw.log( &amp;#039;gadget-rollback: &amp;#039; + errorCode );&lt;br /&gt;
				errorMessage = $.parseHTML( errorMessage );&lt;br /&gt;
				errorMessage = $( &amp;#039;&amp;lt;span&amp;gt;&amp;#039; ).append( errorMessage );&lt;br /&gt;
				errorText = errorMessage.text();&lt;br /&gt;
				errorMessage.prepend( &amp;#039;خطا: &amp;#039; );&lt;br /&gt;
				mw.notify( errorMessage );&lt;br /&gt;
				$link.attr( &amp;#039;title&amp;#039;, errorText );&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			mw.log( &amp;#039;gadget-rollback: invalid link status&amp;#039; );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Given some rollback links, sends an API request which does the same thing&lt;br /&gt;
	 * the links would have done. Displays success or failure with an icon&lt;br /&gt;
	 * at the end of each link.&lt;br /&gt;
	 * @param {jQuery} $links&lt;br /&gt;
	 */&lt;br /&gt;
	function submitRollbackLink( $links ) {&lt;br /&gt;
		var deferreds = [];&lt;br /&gt;
		&lt;br /&gt;
		$links.each( function ( i, el ) {&lt;br /&gt;
			var errorMessage,&lt;br /&gt;
				api = new mw.Api(),&lt;br /&gt;
				deferred = new $.Deferred(),&lt;br /&gt;
				uri = new URL( el.href, window.location ),&lt;br /&gt;
				$el = $( el ),&lt;br /&gt;
				title = uri.searchParams.get(&amp;quot;title&amp;quot;),&lt;br /&gt;
				user = uri.searchParams.get(&amp;quot;from&amp;quot;),&lt;br /&gt;
				bot = uri.searchParams.get(&amp;quot;bot&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			deferreds.push( deferred );&lt;br /&gt;
			&lt;br /&gt;
			if ( !title || ! user ) { // Rollback info not found in link&lt;br /&gt;
				errorMessage = &amp;#039;Belső hiba: nem sikerült értelmezni a linket&amp;#039;;&lt;br /&gt;
				updateLinkStatus( $el, &amp;#039;error&amp;#039;, &amp;#039;rollback-info-not-found-in-link&amp;#039;, errorMessage );&lt;br /&gt;
				deferred.reject( errorMessage );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			updateLinkStatus( $el, &amp;#039;working&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
			api.postWithToken( &amp;#039;rollback&amp;#039;, {&lt;br /&gt;
				action: &amp;#039;rollback&amp;#039;,&lt;br /&gt;
				title: title,&lt;br /&gt;
				user: user,&lt;br /&gt;
				markbot: bot,&lt;br /&gt;
				formatversion: 2,&lt;br /&gt;
				errorformat: &amp;#039;html&amp;#039;,&lt;br /&gt;
				errorsuselocal: true,&lt;br /&gt;
				uselang: mw.config.get( &amp;#039;wgUserLanguage&amp;#039; )&lt;br /&gt;
			} ).done( function ( result, jqXHR ) {&lt;br /&gt;
				updateLinkStatus( $el, &amp;#039;success&amp;#039; );&lt;br /&gt;
				deferred.resolve();&lt;br /&gt;
			} ).fail( function ( code, result ) {&lt;br /&gt;
				if ( result.errors &amp;amp;&amp;amp; result.errors[0] ) {&lt;br /&gt;
					errorMessage = result.errors[0].html;&lt;br /&gt;
				} else {&lt;br /&gt;
					errorMessage = &amp;#039;خطای API: &amp;#039; +  code;&lt;br /&gt;
				}&lt;br /&gt;
				updateLinkStatus( $el, &amp;#039;error&amp;#039;, code, errorMessage );&lt;br /&gt;
				deferred.reject( errorMessage );&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
		&lt;br /&gt;
		return $.when.apply( $, deferreds );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function rollbackAll() {&lt;br /&gt;
		var $links = $( &amp;#039;.mw-rollback-link a.rollback&amp;#039; ),&lt;br /&gt;
			$button = $( &amp;#039;#rollback-all&amp;#039; ),&lt;br /&gt;
			oldButtonText = $button.text();&lt;br /&gt;
&lt;br /&gt;
		if ( !confirm( &amp;#039;آیا می‌خواهید همه را واگردانی کنید؟&amp;#039; ) ) {&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Preload the notification module for mw.notify&lt;br /&gt;
		mw.loader.load( &amp;#039;mediawiki.notification&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		$button&lt;br /&gt;
			.attr( &amp;#039;disabled&amp;#039;, true )&lt;br /&gt;
			.text( &amp;#039;در حال واگردانی&amp;#039; );&lt;br /&gt;
		submitRollbackLink( $links ).always( function () {&lt;br /&gt;
			$button&lt;br /&gt;
				.attr( &amp;#039;disabled&amp;#039;, false )&lt;br /&gt;
				.text( oldButtonText );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Remove NavPopups from a link&lt;br /&gt;
	 * Copied from en:MediaWiki:Gadget-popups.js&lt;br /&gt;
	 * @param {jQuery} $link&lt;br /&gt;
	 */&lt;br /&gt;
	function removeTooltip( $link ) {&lt;br /&gt;
		var a = $link.get( 0 );&lt;br /&gt;
		if ( !a ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		a.onmouseover = null;&lt;br /&gt;
		a.onmouseout = null;&lt;br /&gt;
		if ( a.originalTitle ) {&lt;br /&gt;
			a.title = a.originalTitle;&lt;br /&gt;
		}&lt;br /&gt;
		a.hasPopup = false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets up individual rollback links&lt;br /&gt;
	 */&lt;br /&gt;
	function installLinks() {&lt;br /&gt;
		var $botLink,&lt;br /&gt;
			isAdmin = ( $.inArray( &amp;#039;sysop&amp;#039;, mw.config.get( &amp;#039;wgUserGroups&amp;#039; ) ) !== -1 ),&lt;br /&gt;
			$rollbackSpans = $( &amp;#039;.mw-rollback-link&amp;#039; ),&lt;br /&gt;
			clickHandler = function( e ) {&lt;br /&gt;
				// Preload the notification module for mw.notify&lt;br /&gt;
				mw.loader.load( &amp;#039;mediawiki.notification&amp;#039; );&lt;br /&gt;
				submitRollbackLink( $( this ) );&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
			};&lt;br /&gt;
		&lt;br /&gt;
		$rollbackSpans.each( function ( i, el ) {&lt;br /&gt;
			var $span = $( el ),&lt;br /&gt;
				$link = $span.find( &amp;#039;a:eq(0)&amp;#039; );&lt;br /&gt;
				&lt;br /&gt;
			$span.off( &amp;#039;click&amp;#039;, &amp;#039;a[data-mw=&amp;quot;interface&amp;quot;]&amp;#039; ); // stop MediaWiki&amp;#039;s own rollback.js from interfering @TODO when that script becomes more intelligent, a lot of this code will be unnecessary&lt;br /&gt;
&lt;br /&gt;
			$link&lt;br /&gt;
				.addClass( &amp;#039;rollback&amp;#039; )&lt;br /&gt;
				.attr( &amp;#039;nopopup&amp;#039;, 1 ) // stop NavPopups from interfering&lt;br /&gt;
				.attr( &amp;#039;data-mw&amp;#039;, false ) // stop MW rollback.js even if it&amp;#039;s loaded late&lt;br /&gt;
				.click( clickHandler );&lt;br /&gt;
				&lt;br /&gt;
			// if NavPopups was loaded first, the link is already processed and nopopup is ignored, we need to unprocess it&lt;br /&gt;
			removeTooltip( $link );&lt;br /&gt;
			&lt;br /&gt;
			if ( isAdmin ) {&lt;br /&gt;
				$botLink = $( &amp;#039;&amp;lt;a&amp;gt;&amp;#039; ).attr( {&lt;br /&gt;
					title: &amp;#039;واگردانی با پرچم ربات&amp;#039;,&lt;br /&gt;
					href: $link.attr( &amp;#039;href&amp;#039; ).replace( &amp;#039;&amp;amp;action=rollback&amp;#039;, &amp;#039;&amp;amp;action=rollback&amp;amp;bot=1&amp;#039; ),&lt;br /&gt;
					class: &amp;#039;bot-rollback&amp;#039;,&lt;br /&gt;
					nopopup: 1&lt;br /&gt;
				} );&lt;br /&gt;
				&lt;br /&gt;
				$botLink&lt;br /&gt;
					.text( &amp;#039;ربات&amp;#039; )&lt;br /&gt;
					.click( clickHandler );&lt;br /&gt;
				$link&lt;br /&gt;
					.after( $botLink )&lt;br /&gt;
					.after( &amp;#039; | &amp;#039; );&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets up a &amp;quot;rollback all&amp;quot; button&lt;br /&gt;
	 */&lt;br /&gt;
	function installButton() {&lt;br /&gt;
		var $rollbackAllDiv = $( &amp;#039;&amp;lt;div&amp;gt;&amp;#039; ).css( &amp;#039;float&amp;#039;, &amp;#039;right&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		$rollbackAllDiv.appendTo( &amp;#039;.firstHeading&amp;#039; ).append(&lt;br /&gt;
			$( &amp;#039;&amp;lt;button&amp;gt;&amp;#039; )&lt;br /&gt;
				.attr( &amp;#039;id&amp;#039;, &amp;#039;rollback-all&amp;#039; )&lt;br /&gt;
				.text( &amp;#039;واگردانی همه ویرایش‌ها&amp;#039; )&lt;br /&gt;
				.click( rollbackAll )&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main setup function&lt;br /&gt;
	 */&lt;br /&gt;
	function install() {&lt;br /&gt;
		if ( mw.config.get( &amp;#039;wgAction&amp;#039; ) === &amp;#039;history&amp;#039; || mw.config.get( &amp;#039;wgCanonicalNamespace&amp;#039; ) === &amp;#039;Special&amp;#039; ) {&lt;br /&gt;
			installLinks();&lt;br /&gt;
			if ( mw.config.get( &amp;#039;wgCanonicalSpecialPageName&amp;#039; ) === &amp;#039;Contributions&amp;#039; ) {&lt;br /&gt;
				installButton();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	$( install );&lt;br /&gt;
} ) ( jQuery, mediaWiki );&lt;/div&gt;</summary>
		<author><name>*&gt;Ebrahim</name></author>
	</entry>
</feed>