<link href="../fonts/font.css" rel="stylesheet" type="text/css">

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
		<id>https://wiki.imaroof.ir/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-libGlobalReplace.js</id>
		<title>مدیاویکی:Gadget-libGlobalReplace.js - تاریخچهٔ ویرایش‌ها</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.imaroof.ir/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-libGlobalReplace.js"/>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libGlobalReplace.js&amp;action=history"/>
		<updated>2026-08-03T19:17:51Z</updated>
		<subtitle>تاریخچهٔ ویرایش‌های این صفحه در ویکی</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://wiki.imaroof.ir/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libGlobalReplace.js&amp;diff=327&amp;oldid=prev</id>
		<title>Admin: صفحه‌ای تازه حاوی «/**  * MediaWiki:Gadget-GlobalReplace.js  * Replaces a file on all wikis, including Wikimedia Commons  * Uses either CORS under the cur...» ایجاد کرد</title>
		<link rel="alternate" type="text/html" href="https://wiki.imaroof.ir/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libGlobalReplace.js&amp;diff=327&amp;oldid=prev"/>
				<updated>2016-03-01T08:43:31Z</updated>
		
		<summary type="html">&lt;p&gt;صفحه‌ای تازه حاوی «/**  * &lt;a href=&quot;/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-GlobalReplace.js&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;مدیاویکی:Gadget-GlobalReplace.js (صفحه وجود ندارد)&quot;&gt;MediaWiki:Gadget-GlobalReplace.js&lt;/a&gt;  * Replaces a file on all wikis, including Wikimedia Commons  * Uses either CORS under the cur...» ایجاد کرد&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * [[MediaWiki:Gadget-GlobalReplace.js]]&lt;br /&gt;
 * Replaces a file on all wikis, including Wikimedia Commons&lt;br /&gt;
 * Uses either CORS under the current user account&lt;br /&gt;
 * or deputes the task to Commons Delinker&lt;br /&gt;
 *&lt;br /&gt;
 * The method used is determined by&lt;br /&gt;
 * -Browser capabilities (CORS required)&lt;br /&gt;
 * -The usage count: More than the given number&lt;br /&gt;
 *                   aren't attempted to be replaced&lt;br /&gt;
 *                   under the user account&lt;br /&gt;
 *&lt;br /&gt;
 * It adds only one public method to the mw.libs - object:&lt;br /&gt;
 * @example&lt;br /&gt;
 *      var $jQuery_Deferred_Object;&lt;br /&gt;
 *      $jQuery_Deferred_Object = mw.libs.globalReplace(oldFile, newFile, shortReason, fullReason);&lt;br /&gt;
 *      $jQuery_Deferred_Object.done(function() { alert(&amp;quot;Good news! &amp;quot; + oldFile + &amp;quot; has been replaced by &amp;quot; + newFile + &amp;quot;!&amp;quot;) });&lt;br /&gt;
 *&lt;br /&gt;
 * Internal stuff:&lt;br /&gt;
 * Since we don't use instances of classes, we have to pass around all the parameters&lt;br /&gt;
 *&lt;br /&gt;
 * TODO: I18n (progress messages) when Krinkle is ready with Gadgets 2.0 :-)&lt;br /&gt;
 *&lt;br /&gt;
 * @rev 1 (2012-11-26)&lt;br /&gt;
 * @author Rillke, 2012&lt;br /&gt;
 * &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
// List the global variables for jsHint-Validation. Please make sure that it passes http://jshint.com/&lt;br /&gt;
// Scheme: globalVariable:allowOverwriting[, globalVariable:allowOverwriting][, globalVariable:allowOverwriting]&lt;br /&gt;
/*global jQuery:false, mediaWiki:false*/&lt;br /&gt;
&lt;br /&gt;
// Set jsHint-options. You should not set forin or undef to false if your script does not validate.&lt;br /&gt;
/*jshint forin:true, noarg:true, noempty:true, eqeqeq:true, bitwise:true, strict:true, undef:true, curly:false, browser:true*/&lt;br /&gt;
&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// Config&lt;br /&gt;
	// When this number is exceeded or reached, use CommonsDelinker&lt;br /&gt;
	// This number must not be higher than 50&lt;br /&gt;
	// (can't query more than 50 titles at once)&lt;br /&gt;
	var usageThreshold = 200;&lt;br /&gt;
&lt;br /&gt;
	// Internal stuff&lt;br /&gt;
	var CORSsupported = false;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * TODO: Outsource to library as I often use them OR does jQuery provide something like that?&lt;br /&gt;
	 **/&lt;br /&gt;
	var getObjLen = function (obj) {&lt;br /&gt;
		var x, i = 0;&lt;br /&gt;
		for (x in obj) {&lt;br /&gt;
			if (obj.hasOwnProperty(x)) {&lt;br /&gt;
				i++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return i;&lt;br /&gt;
	};&lt;br /&gt;
	var firstItem = function (o) {&lt;br /&gt;
		for (var i in o) {&lt;br /&gt;
			if (o.hasOwnProperty(i)) {&lt;br /&gt;
				return o[i];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// TODO: Keep in sync with CommonsDelinker source&lt;br /&gt;
	// http://svn.wikimedia.org/viewvc/pywikipedia/trunk/pywikipedia/commonsdelinker/delinker.py?revision=9053&amp;amp;view=markup#l172&lt;br /&gt;
	var getFileRegEx = function (title) {&lt;br /&gt;
		return new RegExp('([\\n\\[\\:\\=\\&amp;gt;\\|]\\s*)[' + mw.RegExp.escape(title.charAt(0).toUpperCase()) + mw.RegExp.escape(title.charAt(0).toLowerCase()) + ']' + mw.RegExp.escape(&lt;br /&gt;
			title.slice(1)).replace(/ /g, '[ _]'), 'g');&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var queryGET = function (params, cb, errCb) {&lt;br /&gt;
		mw.loader.using(['ext.gadget.libAPI', 'ext.gadget.libWikiDOM'], function () {&lt;br /&gt;
			mw.libs.commons.api.query(params, {&lt;br /&gt;
				method: 'GET',&lt;br /&gt;
				cache: true,&lt;br /&gt;
				cb: cb,&lt;br /&gt;
				errCb: errCb&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var testCORS = function (done) {&lt;br /&gt;
		if (CORSsupported) return done();&lt;br /&gt;
		doCORSReq({&lt;br /&gt;
			action: 'query',&lt;br /&gt;
			meta: 'userinfo'&lt;br /&gt;
		}, 'www.mediawiki.org', function (data, textStatus, jqXHR) {&lt;br /&gt;
			if (!data.query.userinfo.id) {&lt;br /&gt;
				CORSsupported = 'CORS supported but not logged-in';&lt;br /&gt;
			} else {&lt;br /&gt;
				CORSsupported = 'OK';&lt;br /&gt;
			}&lt;br /&gt;
			done();&lt;br /&gt;
		}, function (jqXHR, textStatus, errorThrown) {&lt;br /&gt;
			CORSsupported = 'CORS not supported: ' + textStatus + ' \nError: ' + errorThrown;&lt;br /&gt;
			done();&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var doCORSReq = function (params, wiki, cb, errCb, method) {&lt;br /&gt;
		$.support.cors = true;&lt;br /&gt;
		// Format parameter first!&lt;br /&gt;
		var newParams = {&lt;br /&gt;
			format: 'json',&lt;br /&gt;
			origin: document.location.protocol + '//' + document.location.hostname&lt;br /&gt;
		};&lt;br /&gt;
		params = $.extend(newParams, params);&lt;br /&gt;
		$.ajax({&lt;br /&gt;
			'url': '//' + wiki + '/w/api.php',&lt;br /&gt;
			'data': params,&lt;br /&gt;
			'xhrFields': {&lt;br /&gt;
				'withCredentials': true&lt;br /&gt;
			},&lt;br /&gt;
			'type': method || 'GET',&lt;br /&gt;
			'success': function (r) {&lt;br /&gt;
				cb(r, wiki);&lt;br /&gt;
			},&lt;br /&gt;
			'error': errCb,&lt;br /&gt;
			'dataType': 'json'&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var updateReplaceStatus = function ($prog) {&lt;br /&gt;
		// If we are using CommonsDelinker (CD),&lt;br /&gt;
		// it will mark this progress object&lt;br /&gt;
		// as resolved as soon as the requst was placed in the queue; &lt;br /&gt;
		// Don't know whether we should&lt;br /&gt;
		// stop replacement under user account&lt;br /&gt;
		// when we request CD to do our job; but see no&lt;br /&gt;
		// pressing need to&lt;br /&gt;
		if (0 === $prog.remaining &amp;amp;&amp;amp; !$prog.usingCD) {&lt;br /&gt;
			$prog.resolve(&amp;quot;All usages replaced&amp;quot;);&lt;br /&gt;
			// Kill the timer: Everything worked in time!&lt;br /&gt;
			if ($prog.CDtimeout) clearTimeout($prog.CDtimeout);&lt;br /&gt;
		}&lt;br /&gt;
		$prog.notify(&amp;quot;Replacing usage - &amp;quot; + Math.round(($prog.total - $prog.remaining) * 100 / $prog.total) +&lt;br /&gt;
			&amp;quot;% \nDo not close this window until the task is completed.&amp;quot;);&lt;br /&gt;
	};&lt;br /&gt;
	var decrementAndUpdate = function ($prog) {&lt;br /&gt;
		$prog.remaining--;&lt;br /&gt;
		updateReplaceStatus($prog);&lt;br /&gt;
	};&lt;br /&gt;
	var checkPage = function ($prog, pg, wiki, cb) {&lt;br /&gt;
		if (!pg.revisions) {&lt;br /&gt;
			$prog.notify(&amp;quot;No page text for &amp;quot; + pg.title + &amp;quot; - &amp;quot; + wiki + &amp;quot; - private wiki or out of date?&amp;quot;);&lt;br /&gt;
			if (cb &amp;amp;&amp;amp; $.isFunction(cb)) cb();&lt;br /&gt;
			decrementAndUpdate($prog);&lt;br /&gt;
			return false;&lt;br /&gt;
		} else {&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	var compareTexts = function ($prog, oldT, newT, title, wiki) {&lt;br /&gt;
		if (oldT === newT) {&lt;br /&gt;
			$prog.notify(&amp;quot;No changes at &amp;quot; + title + &amp;quot; - &amp;quot; + wiki + &amp;quot; - template use?&amp;quot;);&lt;br /&gt;
			decrementAndUpdate($prog);&lt;br /&gt;
			return false;&lt;br /&gt;
		} else {&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 *  Replace usage at Wikimedia Commons.&lt;br /&gt;
	 **/&lt;br /&gt;
	var localReplace = function (re, localUsage, of, nf, sr, fr, $prog) {&lt;br /&gt;
		$.each(localUsage, function (id, pg) {&lt;br /&gt;
			if (!checkPage($prog, pg, 'Commons')) return;&lt;br /&gt;
&lt;br /&gt;
			var isEditable = true,&lt;br /&gt;
				summary = sr + ' [[File:' + of + ']] → [[File:' + nf + ']] ' + fr,&lt;br /&gt;
				edit;&lt;br /&gt;
&lt;br /&gt;
			$.each(pg.protection, function (i, pr) {&lt;br /&gt;
				if ('edit' === pr.type) {&lt;br /&gt;
					if ($.inArray(pr.level, mw.config.get('wgUserGroups')) === -1) isEditable = false;&lt;br /&gt;
					return false;&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
			if (isEditable) {&lt;br /&gt;
				var oldText = pg.revisions[0]['*'],&lt;br /&gt;
					nwe1 = mw.libs.wikiDOM.nowikiEscaper(pg.revisions[0]['*']),&lt;br /&gt;
					newText = nwe1.secureReplace(re, '$1' + nf).getText();&lt;br /&gt;
&lt;br /&gt;
				if (!compareTexts($prog, oldText, newText, pg.title, &amp;quot;Commons&amp;quot;)) return;&lt;br /&gt;
&lt;br /&gt;
				edit = {&lt;br /&gt;
					cb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
					},&lt;br /&gt;
					errCb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
						$prog.notify(&amp;quot;Unable to update &amp;quot; + pg.title);&lt;br /&gt;
						//$prog.notify(&amp;quot;Using CommonsDelinker&amp;quot;);&lt;br /&gt;
						//commonsDelinker(of, nf, sr, fr, $prog);&lt;br /&gt;
					},&lt;br /&gt;
					title: pg.title,&lt;br /&gt;
					text: newText,&lt;br /&gt;
					editType: 'text',&lt;br /&gt;
					watchlist: 'nochange',&lt;br /&gt;
					minor: true,&lt;br /&gt;
					summary: summary,&lt;br /&gt;
					basetimestamp: pg.revisions[0].timestamp&lt;br /&gt;
				};&lt;br /&gt;
			} else {&lt;br /&gt;
				// If page is protected, post a request to the talk page&lt;br /&gt;
				edit = {&lt;br /&gt;
					cb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
					},&lt;br /&gt;
					errCb: function () {&lt;br /&gt;
						decrementAndUpdate($prog);&lt;br /&gt;
					},&lt;br /&gt;
					title: mw.libs.commons.getTalkPageFromTitle(pg.title),&lt;br /&gt;
					text: &amp;quot;== Please replace [[:File:&amp;quot; + of + &amp;quot;]] ==\n{{edit request}}\nThis page is protected while posting this message. &amp;quot; +&lt;br /&gt;
						&amp;quot;Please replace &amp;lt;code&amp;gt;[[:File:&amp;quot; + of + &amp;quot;]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;[[:File:&amp;quot; + nf + &amp;quot;]]&amp;lt;/code&amp;gt; because &amp;quot; + sr + &amp;quot; &amp;quot; + fr + &amp;quot;\nThank you. &amp;quot; +&lt;br /&gt;
						&amp;quot;&amp;lt;small&amp;gt;Message by [[MediaWiki:Gadget-GlobalReplace.js]]&amp;lt;/small&amp;gt; -- ~~~~&amp;quot;,&lt;br /&gt;
					editType: 'appendtext',&lt;br /&gt;
					watchlist: 'nochange',&lt;br /&gt;
					minor: true,&lt;br /&gt;
					summary: summary&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			mw.loader.using(['ext.gadget.libAPI'], function () {&lt;br /&gt;
				mw.libs.commons.api.editPage(edit);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var sanitizeFileName = function (fn) {&lt;br /&gt;
		return $.trim(fn.replace(/_/g, ' ')).replace(/^(?:File|Image)\:/, '');&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param {string} of Old file name. The old file name will be replaced with the new file name.&lt;br /&gt;
	 * @param {string} nf New file name.&lt;br /&gt;
	 * @param {string} sr Short reason like &amp;quot;file renamed&amp;quot;. Will be prefixed to the edit summary.&lt;br /&gt;
	 * @param {string} fr Full reason like &amp;quot;file renamed because it was offending&amp;quot;. Will be appended to the edit summary.&lt;br /&gt;
	 * @param {$.Deferred} $prog Deferred object reflecting the current progress.&lt;br /&gt;
	 **/&lt;br /&gt;
	var replace = function (of, nf, sr, fr, $prog) {&lt;br /&gt;
		var pending = 0,&lt;br /&gt;
			localResult,&lt;br /&gt;
			globalResult;&lt;br /&gt;
&lt;br /&gt;
		of = sanitizeFileName(of);&lt;br /&gt;
		nf = sanitizeFileName(nf);&lt;br /&gt;
&lt;br /&gt;
		var _queryLocal = function (result) {&lt;br /&gt;
			pending--;&lt;br /&gt;
			if (result) localResult = result;&lt;br /&gt;
			if (pending &amp;gt; 0) return;&lt;br /&gt;
			_selectMethod();&lt;br /&gt;
		};&lt;br /&gt;
		var _queryGlobal = function (result) {&lt;br /&gt;
			pending--;&lt;br /&gt;
			if (result) globalResult = result;&lt;br /&gt;
			if (pending &amp;gt; 0) return;&lt;br /&gt;
			_selectMethod();&lt;br /&gt;
		};&lt;br /&gt;
		var _selectMethod = function () {&lt;br /&gt;
			var globalUsage = firstItem(globalResult.query.pages).globalusage,&lt;br /&gt;
				globalUsageCount = globalUsage.length,&lt;br /&gt;
				localUsage = localResult.query ? localResult.query.pages : {},&lt;br /&gt;
				usageCount = getObjLen(localUsage) + globalUsageCount;&lt;br /&gt;
&lt;br /&gt;
			$prog.remaining = usageCount;&lt;br /&gt;
			$prog.total = usageCount;&lt;br /&gt;
			if (0 === usageCount) {&lt;br /&gt;
				$prog.resolve(&amp;quot;File was not in use. Nothing replaced.&amp;quot;);&lt;br /&gt;
			} else if ((usageCount &amp;gt;= usageThreshold || (CORSsupported !== 'OK' &amp;amp;&amp;amp; globalUsageCount)) &amp;amp;&amp;amp; !$prog.dontUseCD) {&lt;br /&gt;
				//commonsDelinker(of, nf, sr, fr, $prog);&lt;br /&gt;
				//$prog.notify(&amp;quot;Instructing CommonsDelinker to replace this file&amp;quot;);&lt;br /&gt;
			} else {&lt;br /&gt;
				var re = getFileRegEx(of);&lt;br /&gt;
				localReplace(re, localUsage, of, nf, sr, fr, $prog);&lt;br /&gt;
				// globalReplace(re, globalUsage, of, nf, sr, fr, $prog);&lt;br /&gt;
				$prog.notify(&amp;quot;Replacing usage immediately using your user account. Do not close this window until the process completed.&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			// Finally, set a timeout that will instruct CommonsDelinker if it takes too long&lt;br /&gt;
			$prog.CDtimeout = setTimeout(function () {&lt;br /&gt;
				//commonsDelinker(of, nf, sr, fr, $prog);&lt;br /&gt;
			}, 60000);&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		$prog.notify(&amp;quot;Query usage and selecting replace-method&amp;quot;);&lt;br /&gt;
		pending++;&lt;br /&gt;
		queryGET({&lt;br /&gt;
			action: 'query',&lt;br /&gt;
			generator: 'imageusage',&lt;br /&gt;
			giufilterredir: 'nonredirects',&lt;br /&gt;
			giulimit: usageThreshold,&lt;br /&gt;
			prop: 'info|revisions',&lt;br /&gt;
			inprop: 'protection',&lt;br /&gt;
			rvprop: 'content|timestamp',&lt;br /&gt;
			giutitle: 'File:' + of&lt;br /&gt;
		}, _queryLocal);&lt;br /&gt;
		pending++;&lt;br /&gt;
		queryGET({&lt;br /&gt;
			action: 'query',&lt;br /&gt;
			prop: 'globalusage',&lt;br /&gt;
			guprop: '',&lt;br /&gt;
			gulimit: usageThreshold,&lt;br /&gt;
			gufilterlocal: 1,&lt;br /&gt;
			titles: 'File:' + of&lt;br /&gt;
		}, _queryGlobal);&lt;br /&gt;
&lt;br /&gt;
		pending++;&lt;br /&gt;
		testCORS(function () {&lt;br /&gt;
			pending--;&lt;br /&gt;
			if (pending &amp;gt; 0) return;&lt;br /&gt;
			_selectMethod();&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// Expose globally&lt;br /&gt;
	/**&lt;br /&gt;
	 * @param {string} oldFile Old file name. The old file name will be replaced with the new file name.&lt;br /&gt;
	 *                         Can be in any format (both &amp;quot;File:Abc def.png&amp;quot; and &amp;quot;Abc_def.png&amp;quot; work)&lt;br /&gt;
	 * @param {string} newFile New file name.&lt;br /&gt;
	 *                         Can be in any format (both &amp;quot;File:Abc def.png&amp;quot; and &amp;quot;Abc_def.png&amp;quot; work)&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param {string} shortReason Short reason like &amp;quot;file renamed&amp;quot;. Will be prefixed to the edit summary.&lt;br /&gt;
	 * @param {string} fullReason Full reason like &amp;quot;file renamed because it was offending&amp;quot;. Will be appended to the edit summary.&lt;br /&gt;
	 * @param {boolean} dontUseDelinker Prevents usage of CommonsDelinker (only provided for debugging/scripting)&lt;br /&gt;
	 * @return {$.Deferred} $prog jQuery deferred-object reflecting the current progress. See http://api.jquery.com/category/deferred-object/ for more info.&lt;br /&gt;
	 * @examle See this gadget's introduction.&lt;br /&gt;
	 **/&lt;br /&gt;
	mw.libs.globalReplace = function (oldFile, newFile, shortReason, fullReason, dontUseDelinker) {&lt;br /&gt;
		var $progress = $.Deferred();&lt;br /&gt;
		$progress.pendingQueries = 0;&lt;br /&gt;
		$progress.dontUseCD = dontUseDelinker;&lt;br /&gt;
		var args = Array.prototype.slice.call(arguments, 0);&lt;br /&gt;
		// Delete &amp;quot;dontUseDelinker&amp;quot;&lt;br /&gt;
		if (args.length &amp;gt; 4) args.pop();&lt;br /&gt;
		// Add progress&lt;br /&gt;
		args.push($progress);&lt;br /&gt;
		replace.apply(this, args);&lt;br /&gt;
		return $progress;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
}(jQuery, mediaWiki));&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>