<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-libUtil.js</id>
		<title>مدیاویکی:Gadget-libUtil.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-libUtil.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-libUtil.js&amp;action=history"/>
		<updated>2026-08-01T20:51:35Z</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-libUtil.js&amp;diff=328&amp;oldid=prev</id>
		<title>Admin: صفحه‌ای تازه حاوی «/**  * &lt;nowiki&gt;  * This is a library for containing common used functions on Commons   *   BUT that could be also useful to other wikis  *...» ایجاد کرد</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-libUtil.js&amp;diff=328&amp;oldid=prev"/>
				<updated>2016-03-01T08:43:46Z</updated>
		
		<summary type="html">&lt;p&gt;صفحه‌ای تازه حاوی «/**  * &amp;lt;nowiki&amp;gt;  * This is a library for containing common used functions on Commons   *   BUT that could be also useful to other wikis  *...» ایجاد کرد&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'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('wgNamespaceNumber')) {&lt;br /&gt;
			case 3: // User_talk&lt;br /&gt;
			case 2: // User&lt;br /&gt;
				return mw.config.get('wgPageName').match(/.*?\:(.*?)(\/.*)*$/)[1];&lt;br /&gt;
			case -1: // Special pages&lt;br /&gt;
				try {&lt;br /&gt;
					switch (mw.config.get('wgCanonicalSpecialPageName')) {&lt;br /&gt;
						case 'Contributions':&lt;br /&gt;
						case 'DeletedContributions':&lt;br /&gt;
						case 'Block':&lt;br /&gt;
						case 'CentralAuth':&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('wgScript')) ) {&lt;br /&gt;
								return mw.util.getParamValue('target');&lt;br /&gt;
							}&lt;br /&gt;
							break;&lt;br /&gt;
						case 'Userrights':&lt;br /&gt;
						case 'Listfiles':&lt;br /&gt;
						case 'Log':&lt;br /&gt;
							// Extract target from addressline&lt;br /&gt;
							if (mw.util.getParamValue('user')) {&lt;br /&gt;
								return mw.util.getParamValue('user');&lt;br /&gt;
							}&lt;br /&gt;
							if (mw.util.getParamValue('page')) { &lt;br /&gt;
								if (/User:+./.test(mw.util.getParamValue('page'))) {&lt;br /&gt;
									return mw.util.getParamValue('page').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't be used because it is in Page content language which is&lt;br /&gt;
	* the user's language on Special:-pages&lt;br /&gt;
	*&lt;br /&gt;
	* @example&lt;br /&gt;
	*      mw.libs.commons.formatDate('year=YYYY|month=MON|day=DD');&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'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: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],&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('Commons:Foo');&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, '_');&lt;br /&gt;
		} else {&lt;br /&gt;
			pref = '';&lt;br /&gt;
		}&lt;br /&gt;
		nsid = mw.config.get('wgNamespaceIds')[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('wgFormattedNamespaces')[nsid] + ':';&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($('img').attr('src'));&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, ' ');&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, ' ');&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, ' ');&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>Admin</name></author>	</entry>

	</feed>