<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://www.iran-pedia.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-libUtil.js</id>
	<title>مدیاویکی:Gadget-libUtil.js - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://www.iran-pedia.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-libUtil.js"/>
	<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libUtil.js&amp;action=history"/>
	<updated>2026-04-26T05:58:39Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libUtil.js&amp;diff=2651&amp;oldid=prev</id>
		<title>Rootadmin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libUtil.js&amp;diff=2651&amp;oldid=prev"/>
		<updated>2017-12-02T11:14:37Z</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;tr class=&quot;diff-title&quot; lang=&quot;fa&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan=&quot;1&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;2&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;/table&gt;</summary>
		<author><name>Rootadmin</name></author>
	</entry>
	<entry>
		<id>https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libUtil.js&amp;diff=2650&amp;oldid=prev</id>
		<title>Rootadmin: ۱ نسخه واردشده</title>
		<link rel="alternate" type="text/html" href="https://www.iran-pedia.org/w/index.php?title=%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C:Gadget-libUtil.js&amp;diff=2650&amp;oldid=prev"/>
		<updated>2017-08-29T21:41:20Z</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;/**&lt;br /&gt;
 * &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 * This is a library for containing common used functions on Commons &lt;br /&gt;
 *   BUT that could be also useful to other wikis&lt;br /&gt;
 *&lt;br /&gt;
 * Inclusion-scope: &lt;br /&gt;
 *   &amp;quot;used by one or better more of the default or in one of the 5 most popular gadgets&amp;quot;&lt;br /&gt;
 *   &amp;quot;and is potentially useful for other tools on Commons&amp;quot;&lt;br /&gt;
 * Keep in mind: It&amp;#039;s a library. Do not change any variable-state or the UI until a method is called.&lt;br /&gt;
 *&lt;br /&gt;
 * All things that are specific to Commons (as a media hoster) should go into [[MediaWiki:Gadget-libCommons.js]].&lt;br /&gt;
 * &lt;br /&gt;
 * Coding convetion:&lt;br /&gt;
 * Do not self-refer inside a function using &amp;quot;this&amp;quot;; instead use &amp;quot;lc&amp;quot;&lt;br /&gt;
 * to allow reusing these functions in an altered scope&lt;br /&gt;
 *&lt;br /&gt;
 * Derived from [[MediaWiki:Gadgetprototype.js]]&lt;br /&gt;
 *&lt;br /&gt;
 * Invoke jsHint-validation on save.&lt;br /&gt;
 *&lt;br /&gt;
 * @rev 1 (2012-06-21)&lt;br /&gt;
 * @author Rillke, 2012&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*global jQuery:false, mediaWiki:false*/&lt;br /&gt;
/*jshint curly:false*/&lt;br /&gt;
&lt;br /&gt;
( function ( $, mw ) {&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if (!mw.libs.commons) mw.libs.commons = {};&lt;br /&gt;
var lc = mw.libs.commons;&lt;br /&gt;
&lt;br /&gt;
$.extend(mw.libs.commons, {&lt;br /&gt;
	/**&lt;br /&gt;
	* Some pages are related to a user. &lt;br /&gt;
	* For example Special:Contributions/Rillke lists the contributions of [[User:Rillke]].&lt;br /&gt;
	* @author&lt;br /&gt;
	*      Rillke, one RegExp by DieBuche&lt;br /&gt;
	*&lt;br /&gt;
	* @example&lt;br /&gt;
	*      mw.libs.commons.guessUser();&lt;br /&gt;
	*&lt;br /&gt;
	* @context {mw.libs.commons} or any other&lt;br /&gt;
	* @return {string} The user name guessed from URL or wgPageName.&lt;br /&gt;
	*/&lt;br /&gt;
	guessUser: function() {&lt;br /&gt;
		switch (mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;)) {&lt;br /&gt;
			case 3: // User_talk&lt;br /&gt;
			case 2: // User&lt;br /&gt;
				return mw.config.get(&amp;#039;wgPageName&amp;#039;).match(/.*?\:(.*?)(\/.*)*$/)[1];&lt;br /&gt;
			case -1: // Special pages&lt;br /&gt;
				try {&lt;br /&gt;
					switch (mw.config.get(&amp;#039;wgCanonicalSpecialPageName&amp;#039;)) {&lt;br /&gt;
						case &amp;#039;Contributions&amp;#039;:&lt;br /&gt;
						case &amp;#039;DeletedContributions&amp;#039;:&lt;br /&gt;
						case &amp;#039;Block&amp;#039;:&lt;br /&gt;
						case &amp;#039;CentralAuth&amp;#039;:&lt;br /&gt;
							// Extract target from addressline&lt;br /&gt;
							if ( /Special\:(?:DeletedContributions|Contributions|Block|CentralAuth)\//.test(location.href) ) {&lt;br /&gt;
								return decodeURI(location.href.match(/Special\:(?:DeletedContributions|Contributions|Block|CentralAuth)\/(.*?)(?:&amp;amp;.*)?$/)[1]);&lt;br /&gt;
							} else if ( -1 !== location.href.indexOf(mw.config.get(&amp;#039;wgScript&amp;#039;)) ) {&lt;br /&gt;
								return mw.util.getParamValue(&amp;#039;target&amp;#039;);&lt;br /&gt;
							}&lt;br /&gt;
							break;&lt;br /&gt;
						case &amp;#039;Userrights&amp;#039;:&lt;br /&gt;
						case &amp;#039;Listfiles&amp;#039;:&lt;br /&gt;
						case &amp;#039;Log&amp;#039;:&lt;br /&gt;
							// Extract target from addressline&lt;br /&gt;
							if (mw.util.getParamValue(&amp;#039;user&amp;#039;)) {&lt;br /&gt;
								return mw.util.getParamValue(&amp;#039;user&amp;#039;);&lt;br /&gt;
							}&lt;br /&gt;
							if (mw.util.getParamValue(&amp;#039;page&amp;#039;)) { &lt;br /&gt;
								if (/User:+./.test(mw.util.getParamValue(&amp;#039;page&amp;#039;))) {&lt;br /&gt;
									return mw.util.getParamValue(&amp;#039;page&amp;#039;).replace(&amp;quot;User:&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
							if ( /Special\:(?:Log|ListFiles|UserRights)\//.test( location.href )) {&lt;br /&gt;
								return decodeURI(location.href.match(/Special\:(?:Log|ListFiles|UserRights)\/(.*?)(?:&amp;amp;.*)?$/)[1]);&lt;br /&gt;
							}&lt;br /&gt;
							break;&lt;br /&gt;
					}&lt;br /&gt;
				} catch (ex) { }&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	/**&lt;br /&gt;
	* source: [[MediaWiki:Gadget-AjaxQuickDelete.js]]&lt;br /&gt;
	* Very simple date formatter.  Replaces the substrings &amp;quot;YYYY&amp;quot;, &amp;quot;MM&amp;quot; and &amp;quot;DD&amp;quot; in a&lt;br /&gt;
	* given string with the UTC year, month and day numbers respectively.&lt;br /&gt;
	* Also replaces &amp;quot;MON&amp;quot; with the English full month name and &amp;quot;DAY&amp;quot; with the unpadded day.&lt;br /&gt;
	*&lt;br /&gt;
	* wgMonthNames can&amp;#039;t be used because it is in Page content language which is&lt;br /&gt;
	* the user&amp;#039;s language on Special:-pages&lt;br /&gt;
	*&lt;br /&gt;
	* @example&lt;br /&gt;
	*      mw.libs.commons.formatDate(&amp;#039;year=YYYY|month=MON|day=DD&amp;#039;);&lt;br /&gt;
	*&lt;br /&gt;
	* @param {string} fmt The (format) template-string&lt;br /&gt;
	* @param {Date} date A date to use&lt;br /&gt;
	* @param {Date} fallbackDate  If date was empty, use this date instead. If it&amp;#039;s also empty the current date will be used.&lt;br /&gt;
	*&lt;br /&gt;
	* @return {string} A formatted date-string.&lt;br /&gt;
	*/&lt;br /&gt;
	monthNamesInSiteLang: [&amp;#039;January&amp;#039;, &amp;#039;February&amp;#039;, &amp;#039;March&amp;#039;, &amp;#039;April&amp;#039;, &amp;#039;May&amp;#039;, &amp;#039;June&amp;#039;, &amp;#039;July&amp;#039;, &amp;#039;August&amp;#039;, &amp;#039;September&amp;#039;, &amp;#039;October&amp;#039;, &amp;#039;November&amp;#039;, &amp;#039;December&amp;#039;],&lt;br /&gt;
	formatDate: function (fmt, date, fallbackDate) {&lt;br /&gt;
		var pad0 = function (s) {&lt;br /&gt;
				s = &amp;quot;&amp;quot; + s;&lt;br /&gt;
				return (s.length &amp;gt; 1 ? s : &amp;quot;0&amp;quot; + s);&lt;br /&gt;
			}; // zero-pad to two digits&lt;br /&gt;
		date = date || fallbackDate || new Date();&lt;br /&gt;
		fmt = fmt.replace(/YYYY/g, date.getUTCFullYear());&lt;br /&gt;
		fmt = fmt.replace(/MM/g, pad0(date.getUTCMonth() + 1));&lt;br /&gt;
		fmt = fmt.replace(/DD/g, pad0(date.getUTCDate()));&lt;br /&gt;
		fmt = fmt.replace(/MON/g, lc.monthNamesInSiteLang[date.getUTCMonth()]);&lt;br /&gt;
		fmt = fmt.replace(/DAY/g, date.getUTCDate());&lt;br /&gt;
		return fmt;&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	* Get the talk page that belongs to a given page title&lt;br /&gt;
	*&lt;br /&gt;
	*&lt;br /&gt;
	* @example&lt;br /&gt;
	*      // Returns &amp;quot;Commons talk:Foo&amp;quot;&lt;br /&gt;
	*      mw.libs.commons.getTalkPageFromTitle(&amp;#039;Commons:Foo&amp;#039;);&lt;br /&gt;
	*&lt;br /&gt;
	* @param {string} title&lt;br /&gt;
	* @return {string} talk page&lt;br /&gt;
	*/&lt;br /&gt;
	getTalkPageFromTitle: function (title) {&lt;br /&gt;
		var rens = /^(.+)\:/,&lt;br /&gt;
			pref = title.match(rens),&lt;br /&gt;
			nsid = -1,&lt;br /&gt;
			newPref;&lt;br /&gt;
&lt;br /&gt;
		if (pref) {&lt;br /&gt;
			pref = pref[1].toLowerCase().replace(/ /g, &amp;#039;_&amp;#039;);&lt;br /&gt;
		} else {&lt;br /&gt;
			pref = &amp;#039;&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
		nsid = mw.config.get(&amp;#039;wgNamespaceIds&amp;#039;)[pref];&lt;br /&gt;
		// If it was not a talk page, increment namespace id&lt;br /&gt;
		if (0 === nsid % 2) nsid++;&lt;br /&gt;
		newPref = mw.config.get(&amp;#039;wgFormattedNamespaces&amp;#039;)[nsid] + &amp;#039;:&amp;#039;;&lt;br /&gt;
		if (pref) {&lt;br /&gt;
			title = title.replace(/^.+\:/, newPref);&lt;br /&gt;
		} else {&lt;br /&gt;
			title = newPref + title;&lt;br /&gt;
		}&lt;br /&gt;
		return title;&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	* Get the file title from a file source link&lt;br /&gt;
	*&lt;br /&gt;
	*&lt;br /&gt;
	* @example&lt;br /&gt;
	*      mw.libs.commons.titleFromImgSrc($(&amp;#039;img&amp;#039;).attr(&amp;#039;src&amp;#039;));&lt;br /&gt;
	*&lt;br /&gt;
	* @param {string} src The image source (upload.wikimedia.org ...)&lt;br /&gt;
	*&lt;br /&gt;
	* @return {string} Either the file title (without File:-namespace), if successful or undefined&lt;br /&gt;
	* @deprecated&lt;br /&gt;
	*/&lt;br /&gt;
	titleFromImgSrc: function(src) {&lt;br /&gt;
		mw.log.warn( &amp;quot;.titleFromImgSrc() is deprecated. Use mw.Title.newFromImg() instead.&amp;quot; );&lt;br /&gt;
		try {&lt;br /&gt;
			return decodeURIComponent(src).match(/\/[a-f0-9]\/[a-f0-9]{2}\/(\S+\.\S{2,5})\//)[1].replace(/_/g, &amp;#039; &amp;#039;);&lt;br /&gt;
		} catch (ex) {&lt;br /&gt;
			try {&lt;br /&gt;
				return decodeURIComponent(src).match(/thumb\.php.*(?:\?|\&amp;amp;)f=(\S+\.\S{2,5})(?:\&amp;amp;.+)?$/)[1].replace(/_/g, &amp;#039; &amp;#039;);&lt;br /&gt;
			} catch (ex2) {&lt;br /&gt;
				try {&lt;br /&gt;
					return decodeURIComponent(src).match(/\/[a-f0-9]\/[a-f0-9]{2}\/(\S+\.\S{2,5})$/)[1].replace(/_/g, &amp;#039; &amp;#039;);&lt;br /&gt;
				} catch (ex3) {}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&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>Rootadmin</name></author>
	</entry>
</feed>