<?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-asbox.js</id>
	<title>مدیاویکی:Gadget-asbox.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-asbox.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-asbox.js&amp;action=history"/>
	<updated>2026-04-26T12:25:11Z</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-asbox.js&amp;diff=2250&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-asbox.js&amp;diff=2250&amp;oldid=prev"/>
		<updated>2017-12-02T10:45:00Z</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-asbox.js&amp;diff=2249&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-asbox.js&amp;diff=2249&amp;oldid=prev"/>
		<updated>2017-08-29T15:58:48Z</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;/*global jQuery, mediaWiki*/&lt;br /&gt;
/* &amp;lt;nowiki&amp;gt; */&lt;br /&gt;
/*!&lt;br /&gt;
 * Developed by: [[User:Ebrahim]]&lt;br /&gt;
 */&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) !== 0 || mw.config.get(&amp;#039;wgAction&amp;#039;) !== &amp;#039;view&amp;#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function savePage(summary, content) {&lt;br /&gt;
		return new mw.Api().post({&lt;br /&gt;
			action: &amp;#039;edit&amp;#039;,&lt;br /&gt;
			title: mw.config.get(&amp;#039;wgPageName&amp;#039;),&lt;br /&gt;
			summary: summary,&lt;br /&gt;
			text: content,&lt;br /&gt;
			format: &amp;#039;json&amp;#039;,&lt;br /&gt;
			token: mw.user.tokens.get(&amp;#039;editToken&amp;#039;)&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function loadPage() {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			prop: &amp;#039;revisions&amp;#039;,&lt;br /&gt;
			titles: mw.config.get(&amp;#039;wgPageName&amp;#039;),&lt;br /&gt;
			rvprop: &amp;#039;content&amp;#039;,&lt;br /&gt;
			format: &amp;#039;json&amp;#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			return $.map(data.query.pages, function (value) { return value; })[0].revisions[0][&amp;#039;*&amp;#039;];&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This will help on better sorting on Persian string array&lt;br /&gt;
	 */&lt;br /&gt;
	function dePersian(input) { // solve persian problem on sorting by replace characters in strings&lt;br /&gt;
		return input.replace(/ی/g, &amp;quot;ي&amp;quot;)&lt;br /&gt;
			.replace(/ک/g, &amp;quot;ك&amp;quot;)&lt;br /&gt;
			.replace(/گ/g, &amp;quot;كی&amp;quot;)&lt;br /&gt;
			.replace(/ژ/g, &amp;quot;زی&amp;quot;)&lt;br /&gt;
			.replace(/چ/g, &amp;quot;جی&amp;quot;)&lt;br /&gt;
			.replace(/پ/g, &amp;quot;بی&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * String comparator for Persian&lt;br /&gt;
	 */&lt;br /&gt;
	function customComparator(a, b) {&lt;br /&gt;
		var keyA = dePersian(a),&lt;br /&gt;
			keyB = dePersian(b);&lt;br /&gt;
&lt;br /&gt;
		if (keyA &amp;lt; keyB) {&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
		if (keyA &amp;gt; keyB) {&lt;br /&gt;
			return 1;&lt;br /&gt;
		}&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Is a recursive function to retrieve all stub templates consequently&lt;br /&gt;
	 */&lt;br /&gt;
	function getAllStubTemplates(array, eicontinue) {&lt;br /&gt;
		return new mw.Api().get({&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			list: &amp;#039;embeddedin&amp;#039;,&lt;br /&gt;
			eititle: &amp;#039;Template:Asbox&amp;#039;,&lt;br /&gt;
			eilimit: 500,&lt;br /&gt;
			einamespace: 10,&lt;br /&gt;
			format: &amp;#039;json&amp;#039;,&lt;br /&gt;
			eicontinue: eicontinue,&lt;br /&gt;
			&amp;#039;continue&amp;#039;: &amp;#039;&amp;#039;&lt;br /&gt;
		}).then(function (data) {&lt;br /&gt;
			if (!array) { array = []; }&lt;br /&gt;
			array = array.concat($.map(data.query.embeddedin, function (value) {&lt;br /&gt;
				return value.title;&lt;br /&gt;
			}));&lt;br /&gt;
			if (!data[&amp;#039;continue&amp;#039;]) {&lt;br /&gt;
				return array;&lt;br /&gt;
			}&lt;br /&gt;
			return getAllStubTemplates(array, data[&amp;#039;continue&amp;#039;].eicontinue);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * check if is expired, currently expires in three days&lt;br /&gt;
	 */&lt;br /&gt;
	function isExpired(cacheTime) {&lt;br /&gt;
		return (new Date().getTime() - cacheTime) &amp;gt; (1000 * 60 * 60 * 24 * 3);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * If browser support localStorage, this would use it&lt;br /&gt;
	 */&lt;br /&gt;
	function cachedGetAllStubTemplates() {&lt;br /&gt;
		if (window.localStorage !== undefined) {&lt;br /&gt;
			var object, defer;&lt;br /&gt;
			try {&lt;br /&gt;
				object = JSON.parse(localStorage.getItem(&amp;#039;allStubTemplates&amp;#039;));&lt;br /&gt;
			} catch (ignore) {}&lt;br /&gt;
			if (object &amp;amp;&amp;amp; !isExpired(parseInt(object.timestamp))) {&lt;br /&gt;
				defer = $.Deferred();&lt;br /&gt;
				return $.Deferred().resolve(object.value);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return getAllStubTemplates().then(function (array) {&lt;br /&gt;
			if (array.length &amp;gt; 0 &amp;amp;&amp;amp; window.localStorage !== undefined) {&lt;br /&gt;
				try {&lt;br /&gt;
					window.localStorage.setItem(&amp;#039;allStubTemplates&amp;#039;, JSON.stringify({&lt;br /&gt;
						value: array,&lt;br /&gt;
						timestamp: new Date().getTime()&lt;br /&gt;
					}));&lt;br /&gt;
				} catch(ignore) {}&lt;br /&gt;
			}&lt;br /&gt;
			return array;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getParsedTemplate(template) {&lt;br /&gt;
		return new mw.Api().post({&lt;br /&gt;
			action: &amp;#039;parse&amp;#039;,&lt;br /&gt;
			text: &amp;#039;{&amp;#039; + &amp;#039;{&amp;#039; + template + &amp;#039;}}&amp;#039;,&lt;br /&gt;
			contentmodel: &amp;#039;wikitext&amp;#039;,&lt;br /&gt;
			prop: &amp;#039;text&amp;#039;&lt;br /&gt;
		}).then(function (data) { return data.parse.text[&amp;#039;*&amp;#039;]; });&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$.when($.ready, mw.loader.using(&amp;#039;oojs-ui&amp;#039;)).then(function () {&lt;br /&gt;
		$(&amp;#039;#ca-stub-adder&amp;#039;).remove();&lt;br /&gt;
		$(mw.util.addPortletLink(&amp;#039;p-cactions&amp;#039;, &amp;#039;#&amp;#039;, &amp;#039;خرد&amp;#039;, &amp;#039;ca-stub-adder&amp;#039;, &amp;#039;افزودن الگوی خرد&amp;#039;)).click(function (e) {&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			&lt;br /&gt;
			var stubSelect = $(&amp;#039;&amp;lt;select&amp;gt;&amp;#039;, {&lt;br /&gt;
				style: &amp;#039;padding: 1px; vertical-align: baseline; font-family: inherit&amp;#039;,&lt;br /&gt;
				html: &amp;#039;&amp;lt;option value=&amp;quot;&amp;quot; selected=&amp;quot;selected&amp;quot;&amp;gt;در حال بارگیری فهرست الگوها، کمی درنگ کنید&amp;lt;/option&amp;gt;&amp;#039;&lt;br /&gt;
			});&lt;br /&gt;
			var asboxPreviewPlaceholder = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;, { style: &amp;#039;padding-top: 1em; height: 3em&amp;#039; });&lt;br /&gt;
			&lt;br /&gt;
			var form = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;, {&lt;br /&gt;
				style: &amp;#039;position: relative;&amp;#039;&lt;br /&gt;
			}).append($(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;, {&lt;br /&gt;
				style: &amp;#039;margin-top: 0.4em;&amp;#039;,&lt;br /&gt;
				html: &amp;#039;انتخاب الگوی خرد: &amp;#039;&lt;br /&gt;
			}).append(stubSelect, asboxPreviewPlaceholder));&lt;br /&gt;
			&lt;br /&gt;
			// Hack&lt;br /&gt;
			mw.util.addCSS(&amp;#039;.oo-ui-window-frame { width: 600px!important; }&amp;#039;);&lt;br /&gt;
			&lt;br /&gt;
			OO.ui.confirm(form).then(function (confirmed) {&lt;br /&gt;
				if (!confirmed) return;&lt;br /&gt;
	&lt;br /&gt;
				var template = stubSelect.val();&lt;br /&gt;
				if (!template) { return; }&lt;br /&gt;
				&lt;br /&gt;
				mw.notify(&amp;#039;افزودن الگوی خرد…&amp;#039;);&lt;br /&gt;
	&lt;br /&gt;
				loadPage().then(function (content) {&lt;br /&gt;
					content = content.replace(&lt;br /&gt;
						new RegExp(&amp;#039;{&amp;#039; + &amp;#039;{\\s*([^:}]*:)?(خرد|ناقص|&amp;#039; + mw.RegExp.escape(template) + &amp;#039;)\\s*}}\\n*&amp;#039;, &amp;#039;g&amp;#039;),&lt;br /&gt;
						&amp;#039;&amp;#039;&lt;br /&gt;
					).replace(/\n+$/, &amp;#039;&amp;#039;);&lt;br /&gt;
					if (!/خرد\}\}$/.test(content)) {&lt;br /&gt;
						content = content + &amp;#039;\n\n&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
					return savePage(&amp;#039;افزودن الگوی خرد به کمک ابزار&amp;#039;, content + &amp;#039;\n&amp;#039; + &amp;#039;{&amp;#039; + &amp;#039;{&amp;#039; + template + &amp;#039;}}&amp;#039;);&lt;br /&gt;
				}).then(function (data) {&lt;br /&gt;
					if (data.edit.result === &amp;#039;Success&amp;#039;) {&lt;br /&gt;
						window.location.reload();&lt;br /&gt;
					} else {&lt;br /&gt;
						mw.notify(&amp;#039;Unknown result from API.&amp;#039;);&lt;br /&gt;
					}&lt;br /&gt;
				}, function () {&lt;br /&gt;
					mw.notify(&amp;#039;Edit failed.&amp;#039;);&lt;br /&gt;
				});&lt;br /&gt;
			});&lt;br /&gt;
	&lt;br /&gt;
			cachedGetAllStubTemplates().then(function (stubs) {&lt;br /&gt;
				stubs = stubs&lt;br /&gt;
					.filter(function (x) { return x !== &amp;#039;الگو:خرد&amp;#039;; })&lt;br /&gt;
					.filter(function (x) {&lt;br /&gt;
						return !/^الگو:(\w|فرودگاه-)/.exec(x);&lt;br /&gt;
					});&lt;br /&gt;
				stubs.push(&amp;#039;&amp;#039;);&lt;br /&gt;
				stubs.sort(customComparator);&lt;br /&gt;
				stubSelect.empty().change(function () {&lt;br /&gt;
					var template = stubSelect.val();&lt;br /&gt;
					if (!template) {&lt;br /&gt;
						asboxPreviewPlaceholder.html(&amp;#039;&amp;#039;);&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
					asboxPreviewPlaceholder.html(&amp;#039;&amp;lt;center&amp;gt;&amp;lt;img src=&amp;quot;//upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif&amp;quot; /&amp;gt;&amp;lt;/center&amp;gt;&amp;#039;);&lt;br /&gt;
					getParsedTemplate(template).then(function (html) {&lt;br /&gt;
						asboxPreviewPlaceholder.html(html);&lt;br /&gt;
					});&lt;br /&gt;
				}).append($.map(stubs, function (value) {&lt;br /&gt;
					return $(&amp;#039;&amp;lt;option&amp;gt;&amp;#039;, {&lt;br /&gt;
						html: value.replace(/^[^:]*:/, &amp;quot;&amp;quot;),&lt;br /&gt;
						val: value.replace(/^[^:]*:/, &amp;quot;&amp;quot;)&lt;br /&gt;
					});&lt;br /&gt;
				}));&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Rootadmin</name></author>
	</entry>
</feed>