# MediaWiki:Gadget-friendlywelcome-2020.js

From faraghaib
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.

    // <nowiki>

    (function($) {

    /*
     ****************************************
     *** friendlywelcome.js: Welcome module
     ****************************************
     * Mode of invocation:     Tab ("Wel"), or from links on diff pages
     * Active on:              Any page with relevant user name (userspace,
     *                         contribs, etc.) and diff pages
     */

    Twinkle.welcome = function friendlywelcome() {
    	if (mw.util.getParamValue('friendlywelcome')) {
    		if (mw.util.getParamValue('friendlywelcome') === 'auto') {
    			Twinkle.welcome.auto();
    		} else {
    			Twinkle.welcome.semiauto();
    		}
    	} else {
    		Twinkle.welcome.normal();
    	}
    };

    Twinkle.welcome.auto = function() {
    	if (mw.util.getParamValue('action') !== 'edit') {
    		// userpage not empty, aborting auto-welcome
    		return;
    	}

    	Twinkle.welcome.welcomeUser();
    };

    Twinkle.welcome.semiauto = function() {
    	Twinkle.welcome.callback(mw.config.get('wgRelevantUserName'));
    };

    Twinkle.welcome.normal = function() {
    	if (mw.util.getParamValue('diff')) {
    		// check whether the contributors' talk pages exist yet
    		var $oList = $('#mw-diff-otitle2').find('span.mw-usertoollinks a.new:contains(talk)').first();
    		var $nList = $('#mw-diff-ntitle2').find('span.mw-usertoollinks a.new:contains(talk)').first();

    		if ($oList.length > 0 || $nList.length > 0) {
    			var spanTag = function(color, content) {
    				var span = document.createElement('span');
    				span.style.color = color;
    				span.appendChild(document.createTextNode(content));
    				return span;
    			};

    			var welcomeNode = document.createElement('strong');
    			var welcomeLink = document.createElement('a');
    			welcomeLink.appendChild(spanTag('Black', '['));
    			welcomeLink.appendChild(spanTag('Goldenrod', 'خوشامد')); // localized
    			welcomeLink.appendChild(spanTag('Black', ']'));
    			welcomeNode.appendChild(welcomeLink);

    			if ($oList.length > 0) {
    				var oHref = $oList.attr('href');

    				var oWelcomeNode = welcomeNode.cloneNode(true);
    				oWelcomeNode.firstChild.setAttribute('href', oHref + '&' + $.param({
    					'friendlywelcome': Twinkle.getPref('quickWelcomeMode') === 'auto' ? 'auto' : 'norm',
    					'vanarticle': Morebits.pageNameNorm
    				}));
    				$oList[0].parentNode.parentNode.appendChild(document.createTextNode(' '));
    				$oList[0].parentNode.parentNode.appendChild(oWelcomeNode);
    			}

    			if ($nList.length > 0) {
    				var nHref = $nList.attr('href');

    				var nWelcomeNode = welcomeNode.cloneNode(true);
    				nWelcomeNode.firstChild.setAttribute('href', nHref + '&' + $.param({
    					'friendlywelcome': Twinkle.getPref('quickWelcomeMode') === 'auto' ? 'auto' : 'norm',
    					'vanarticle': Morebits.pageNameNorm
    				}));
    				$nList[0].parentNode.parentNode.appendChild(document.createTextNode(' '));
    				$nList[0].parentNode.parentNode.appendChild(nWelcomeNode);
    			}
    		}
    	}
    	if (mw.config.get('wgRelevantUserName')) {
    		Twinkle.addPortletLink(function() {
    			Twinkle.welcome.callback(mw.config.get('wgRelevantUserName'));
    		}, 'خوشامد', 'friendly-welcome', 'خوشامدگویی به کاربر'); // localized
    	}
    };

    Twinkle.welcome.welcomeUser = function welcomeUser() {
    	Morebits.status.init(document.getElementById('mw-content-text'));
    	$('#catlinks').remove();

    	var params = {
    		value: Twinkle.getPref('quickWelcomeTemplate'),
    		article: mw.util.getParamValue('vanarticle') || '',
    		mode: 'auto'
    	};

    	var userTalkPage = mw.config.get('wgFormattedNamespaces')[3] + ':' + mw.config.get('wgRelevantUserName');
    	Morebits.wiki.actionCompleted.redirect = userTalkPage;
    	Morebits.wiki.actionCompleted.notice = 'خوشامدگویی انجام شد، در حال بارگزاری دوبارهٔ صفحه بحث تا چند ثانیهٔ دیگر'; // localized

    	var wikipedia_page = new Morebits.wiki.page(userTalkPage, 'ویرایش صفحهٔ بحث کاربر'); // localized
    	wikipedia_page.setFollowRedirect(true);
    	wikipedia_page.setCallbackParameters(params);
    	wikipedia_page.load(Twinkle.welcome.callbacks.main);
    };

    Twinkle.welcome.callback = function friendlywelcomeCallback(uid) {
    	if (uid === mw.config.get('wgUserName') && !confirm('آیا از خوشامدگویی به خودتان مطمئن هستید؟...')) { // localized
    		return;
    	}

    	var Window = new Morebits.simpleWindow(600, 420);
    	Window.setTitle('خوشامدگویی به کاربر'); // localized
    	Window.setScriptName('توینکل'); // localiezd
    	// Window.addFooterLink('Welcoming Committee', 'WP:WC'); // localized [removed]
    	Window.addFooterLink('راهنمای توینکل', 'en:WP:TW/DOC#welcome'); // localized

    	var form = new Morebits.quickForm(Twinkle.welcome.callback.evaluate);

    	form.append({
    		type: 'select',
    		name: 'type',
    		label: 'نوع خوشامدگویی: ',
    		event: Twinkle.welcome.populateWelcomeList,
    		list: [
    			{ type: 'option', value: 'standard', label: 'خوشامدهای استاندارد', selected: !mw.util.isIPAddress(mw.config.get('wgRelevantUserName')) }, // localized
    			{ type: 'option', value: 'anonymous', label: 'خوشامد به کاربران ناشناس', selected: mw.util.isIPAddress(mw.config.get('wgRelevantUserName')) } // , // localized
    			// { type: 'option', value: 'wikiProject', label: 'WikiProject welcomes' }, // localized [removed]
    			// { type: 'option', value: 'nonEnglish', label: 'Non-English welcomes' } // localiezd [removed]
    		]
    	});

    	form.append({
    		type: 'div',
    		id: 'welcomeWorkArea',
    		className: 'morebits-scrollbox'
    	});

    	form.append({
    		type: 'input',
    		name: 'article',
    		label: '* مقالهٔ پیوند شده (در صورت پشتیبانی توسط الگو):', // localized
    		value: mw.util.getParamValue('vanarticle') || '',
    		tooltip: 'در صورت پشتیبانی توسط الگو، می‌توان یک مقاله را از درون پیام خوشامد پیوند داد. برای اینکه به هیچ مقاله‌ای پیوند داده نشود، جعبه را خالی بگذارید. الگوهایی که از پیونددهی به یک مقاله پشتیبانی می‌کنند با یک ستاره علامت‌گذاری شده‌اند.' // localized
    	});

    	var previewlink = document.createElement('a');
    	$(previewlink).click(function() {
    		Twinkle.welcome.callbacks.preview(result);  // |result| is defined below
    	});
    	previewlink.style.cursor = 'pointer';
    	previewlink.textContent = 'پیش‌نمایش'; // localized
    	form.append({ type: 'div', name: 'welcomepreview', label: [ previewlink ] });

    	form.append({ type: 'submit' });

    	var result = form.render();
    	Window.setContent(result);
    	Window.display();

    	// initialize the welcome list
    	var evt = document.createEvent('Event');
    	evt.initEvent('change', true, true);
    	result.type.dispatchEvent(evt);
    };

    Twinkle.welcome.populateWelcomeList = function(e) {
    	var type = e.target.value;

    	var container = new Morebits.quickForm.element({ type: 'fragment' });

    	if ((type === 'standard' || type === 'anonymous') && Twinkle.getPref('customWelcomeList').length) {
    		container.append({ type: 'header', label: 'الگوهای خوشامد سفارشی' }); // localized
    		container.append({
    			type: 'radio',
    			name: 'template',
    			list: Twinkle.getPref('customWelcomeList'),
    			event: function() {
    				e.target.form.article.disabled = false;
    			}
    		});
    	}

    	var sets = Twinkle.welcome.templates[type];
    	$.each(sets, function(label, templates) {
    		container.append({ type: 'header', label: label });
    		container.append({
    			type: 'radio',
    			name: 'template',
    			list: $.map(templates, function(properties, template) {
    				return {
    					value: template,
    					label: '{{' + template + '}}: ' + properties.description + (properties.linkedArticle ? '\u00A0*' : ''),  // U+00A0 NO-BREAK SPACE
    					tooltip: properties.tooltip  // may be undefined
    				};
    			}),
    			event: function(ev) {
    				ev.target.form.article.disabled = !templates[ev.target.value].linkedArticle;
    			}
    		});
    	});

    	var rendered = container.render();
    	$(e.target.form).find('div#welcomeWorkArea').empty().append(rendered);

    	var firstRadio = e.target.form.template[0];
    	firstRadio.checked = true;
    	var vals = sets[Object.keys(sets)[0]];
    	e.target.form.article.disabled = vals[firstRadio.value] ? !vals[firstRadio.value].linkedArticle : true;
    };

    // A list of welcome templates and their properties and syntax

    // The four fields that are available are "description", "linkedArticle", "syntax", and "tooltip".
    // The three magic words that can be used in the "syntax" field are:
    //   - $USERNAME$  - replaced by the welcomer's username, depending on user's preferences
    //   - $ARTICLE$   - replaced by an article name, if "linkedArticle" is true
    //   - $HEADER$    - adds a level 2 header (most templates already include this)

    Twinkle.welcome.templates = {
    	'standard': {
    		'الگوهای خوشامد عمومی': { // localized
    			'خوشامد': { // localized
    				description: 'خوشامد استاندارد', // localized
    				linkedArticle: true,
    				syntax: '{{subst:خوشامد|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized
    			}, /*
    			'welcome-retro': {
    				description: 'پیام خوشامد با یک فهرست کوچک از پیوندهای کاربردی', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-retro|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized
    			}, */ // localized [removed]
    			'خوشامد-کوتاه': { // localized
    				description: 'یک پیام خوشامد کوتاه‌تر', // localized
    				syntax: '{{subst:خوشامد-کوتاه|heading=yes|$EXTRA$}}' // localized
    			}/* ,
    			'welcome-personal': {
    				description: 'یک خوشامدگویی صمیمی‌تر، شامل بشقابی پر از کلوچه', // localized
    				syntax: '{{subst:Welcome-personal|$USERNAME$}} ~~~~'
    			},
    			'welcome-graphical': {
    				description: 'پیام رنگارنگ خوشامد با جدولی تشکیل‌شده از حدود ۲۰ پیوند', // localized
    				syntax: '$HEADER$ {{subst:خوشامد-رنگی|$EXTRA$}}' // localized
    			},
    			'welcome-menu': {
    				description: 'پیام خوشامد با جدولی بزرگ، تشکیل‌شده از حدود ۶۰ پیوند', // localized
    				syntax: '{{subst:welcome-menu}}'
    			},
    			'welcome-screen': {
    				description: 'پیام خوشامد با یک جدول تخت و حاشیه‌نویسی‌شده، تشکیل‌شده از ۱۰ پیوند', // localized
    				syntax: '$HEADER$ {{subst:welcome-screen}}'
    			},
    			'welcome-belated': {
    				description: 'خوشامد برای کاربرانی با مشارکت‌های قابل توجه‌تر', // localized
    				syntax: '{{subst:Welcome-belated|$USERNAME$}}' // localized
    			},
    			'welcome student': {
    				description: 'خوشامد برای دانش‌آموزانی که به‌عنوان بخشی از یک پروژهٔ کلاس تحصیلی به ویرایش می‌پردازند',
    				syntax: '$HEADER$ {{subst:Welcome student|$USERNAME$}} ~~~~' // localized
    			},
    			'welcome teacher': {
    				description: 'خوشامد برای مدرسان دوره‌ای که در یک پروژهٔ کلاس تحصیلی نقش دارند', // localized
    				syntax: '$HEADER$ {{subst:Welcome teacher|$USERNAME$}} ~~~~' // localized
    			},
    			'welcome non-latin': {
    				description: 'welcome for users with a username containing non-Latin characters',
    				syntax: '{{subst:welcome non-latin|$USERNAME$}} ~~~~'
    			} */ // localized [removed]
    		},

    		'الگوهای خوشامد به کاربر مشکلساز': { // localized
    			/*'welcomelaws': {
    				description: 'خوشامد با اطلاعاتی دربارهٔ حق تکثیر، دیدگاه بی‌طرف، صفحهٔ تمرین و خرابکاری', // localized
    				syntax: '{{subst:Welcomelaws|$USERNAME$}} ~~~~' // localized
    			},*/ // localized [removed]
    			'نخستین نوشتار': { // localized
    				description: 'برای شخصی که نخستین مقاله‌اش با رهنمودهای ایجاد صفحه‌ها مطابقت نداشته‌است', // localized
    				linkedArticle: true,
    				syntax: '{{subst:نخستین نوشتار|$ARTICLE$|$USERNAME$}}' // localized
    			}/*,
    			'welcometest': {
    				description: 'برای شخصی که نخستین تلاش‌های او به‌نظر آزمایشی هستند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcometest|$ARTICLE$|$USERNAME$}} ~~~~' // localized
    			},
    			'welcomevandal': {
    				description: 'برای شخصی که نخستین تلاش‌های او به‌نظر خرابکاری هستند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcomevandal|$ARTICLE$|$USERNAME$}}'
    			},
    			'welcomenpov': {
    				description: 'برای شخصی که تلاش‌های اولیهٔ او با سیاست دیدگاه بی‌طرف سازگار نیست', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcomenpov|$ARTICLE$|$USERNAME$}} ~~~~' // localized
    			},
    			'welcomespam': {
    				description: 'خوشامد با بحث‌های بیشتر در مورد سیاست‌های ضد هرزنگاری', // localized
    				linkedArticle: true,
    				syntax: '{{subst:خوشامد به هرزه‌نگار|$ARTICLE$|$USERNAME$}} ~~~~' // localized
    			},
    			'welcomeunsourced': {
    				description: 'برای شخصی که ویرایش‌های اولیهٔ او فاقد منبع هستند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcomeunsourced|$ARTICLE$|$USERNAME$}} ~~~~' // localized
    			},
    			'welcomeauto': {
    				description: 'برای شخصی که یک مقالهٔ خودزندگی‌نامه را ایجاد کرده‌است', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcomeauto|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized
    			},
    			'welcome-COI': {
    				description: 'برای شخصی که در زمینه‌هایی که ممکن است با آن‌ها تعارض منافع داشته‌باشد، ویرایش کرده‌است', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcome-COI|$USERNAME$|art=$ARTICLE$}} ~~~~' // localized
    			},
    			'welcome-delete': {
    				description: 'برای شخصی که مشغول به حذف اطلاعات از مقاله‌های بوده‌است', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcome-delete|$ARTICLE$|$USERNAME$}} ~~~~' // localized
    			},
    			'welcome-image': {
    				description: 'خوشامد با اطلاعات بیشتر دربارهٔ تصاویر (سیاست و فرایند)', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcome-image|$USERNAME$|art=$ARTICLE$}}' // localized
    			}*/ // localized [removed]
    		}
    	},

    	'anonymous': {
    		'الگوهای خوشامد به کاربران گمنام': { // localized
    			'خوشامد-آی‌پی': { // localized
    				description: 'برای کاربران ناشناس؛ تشویق به ساخت حساب کاربری', // localized
    				linkedArticle: true,
    				syntax: '{{subst:خوشامد-آی‌پی|art=$ARTICLE$}} ~~~~' // localized
    			}/*,
    			'welcome-anon-test': {
    				description: 'برای کاربران ناشناسی که ویرایش‌های آزمایشی انجام داده‌اند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcome-anon-test|$ARTICLE$|$USERNAME$}} ~~~~' // localized
    			},
    			'welcome-anon-unconstructive': {
    				description: 'برای کاربران ناشناسی که ویرایش‌های خرابکارانه یا غیرسازنده انجام داده‌اند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcome-anon-unconstructive|$ARTICLE$|$USERNAME$}}' // localized
    			},
    			'welcome-anon-constructive': {
    				description: 'برای کاربران ناشناسی که با خرابکاری مبارزه می‌کنند یا ویرایش‌های سازنده انجام می‌دهند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcome-anon-constructive|art=$ARTICLE$}}' // localized
    			},
    			'welcome-anon-delete': {
    				description: 'برای کاربران ناشناسی که محتوایی را از صفحه‌ها حذف کرده‌اند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:Welcome-anon-delete|$ARTICLE$|$USERNAME$}} ~~~~' // localized
    			}*/ // localized [removed]
    		}
    	}/*,

    	'wikiProject': {
    		'WikiProject-specific welcome templates': {
    			'welcome-anatomy': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات کالبدشناسی', // localized
    				syntax: '{{subst:welcome-anatomy}} ~~~~'
    			},
    			'welcome-athletics': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات ورزشی (دو و میدانی)', // localized
    				syntax: '{{subst:welcome-athletics}}'
    			},
    			'welcome-au': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با استرالیا', // localized
    				syntax: '{{subst:Welcome-au}} ~~~~' // localized
    			},
    			'welcome-bd': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با بنگلادش', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-bd|$USERNAME$||$EXTRA$|art=$ARTICLE$}} ~~~~'
    			},
    			'welcome-bio': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات زندگی‌نامه', // localized
    				syntax: '{{subst:Welcome-bio}} ~~~~' // localized
    			},
    			'welcome-cal': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با کالیفرنیا', // localized
    				syntax: '{{subst:welcome-cal}} ~~~~'
    			},
    			'welcome-conserv': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات محافظه‌کاری', // localized
    				syntax: '{{subst:welcome-conserv}}'
    			},
    			'welcome-cycling': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات دوچرخه‌سواری', // localized
    				syntax: '{{subst:welcome-cycling}} ~~~~'
    			},
    			'welcome-dbz': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات دراگون بال', // localized
    				syntax: '{{subst:welcome-dbz|$EXTRA$|sig=~~~~}}'
    			},
    			'welcome-et': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با استونی', // localized
    				syntax: '{{subst:welcome-et}}'
    			},
    			'welcome-de': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با آلمان', // localized
    				syntax: '{{subst:welcome-de}} ~~~~'
    			},
    			'welcome-in': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با هند', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-in|$USERNAME$|art=$ARTICLE$}} ~~~~'
    			},
    			'welcome-math': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات ریاضی', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-math|$USERNAME$|art=$ARTICLE$}} ~~~~'
    			},
    			'welcome-med': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات پزشکی', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-med|$USERNAME$|art=$ARTICLE$}} ~~~~'
    			},
    			'welcome-no': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با نروژ', // localized
    				syntax: '{{subst:Welcome-no}} ~~~~' // localized
    			},
    			'welcome-pk': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با پاکستان', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-pk|$USERNAME$|art=$ARTICLE$}} ~~~~'
    			},
    			'welcome-phys': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات فیزیک', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-phys|$USERNAME$|art=$ARTICLE$}} ~~~~'
    			},
    			'welcome-pl': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با لهستان', // localized
    				syntax: '{{subst:welcome-pl}} ~~~~'
    			},
    			'welcome-rugbyunion': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات اتحادیه راگبی', // localized
    				syntax: '{{subst:welcome-rugbyunion}} ~~~~'
    			},
    			'welcome-ru': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با روسیه', // localized
    				syntax: '{{subst:welcome-ru}} ~~~~'
    			},
    			'welcome-starwars': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات جنگ ستارگان', // localized
    				syntax: '{{subst:welcome-starwars}} ~~~~'
    			},
    			'welcome-ch': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با سوئیس', // localized
    				linkedArticle: true,
    				syntax: '{{subst:welcome-ch|$USERNAME$|art=$ARTICLE$}} ~~~~'
    			},
    			'welcome-uk': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات مرتبط با اکراین', // localized
    				syntax: '{{subst:welcome-uk}} ~~~~'
    			},
    			'welcome-roads': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات جاده‌ها و بزرگراه‌ها', // localized
    				syntax: '{{subst:Welcome-roads}}' // localized
    			},
    			'welcome-videogames': {
    				description: 'خوشامد برای کاربرانی با علاقهٔ آشکار به موضوعات بازی‌های ویدئویی', // localized
    				syntax: '{{subst:welcome-videogames}}'
    			},
    			'TWA invite': {
    				description: 'دعوت کردن کاربر به ماجراجویی در ویکی‌پدیا (این یک الگوی خوشامد نیست)', // localized
    				syntax: '{{وپ:مدو/دعوت|امضا=~~~~}}' // localized
    			}
    		}
    	},

    	'nonEnglish': {
    		'Non-English welcome templates': {
    			'welcomeen': {
    				description: 'خوشامد به کاربرانی که زبان مادری آن‌ها در این فهرست نیامده‌است', // localized
    				syntax: '{{subst:welcomeen}}'
    			},
    			'welcomeen-ar': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها عربی است', // localized
    				syntax: '{{subst:welcomeen-ar}}'
    			},
    			'welcomeen-sq': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها آلبانیایی است', // localized
    				syntax: '{{subst:welcomeen-sq}}'
    			},
    			'welcomeen-zh': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها چینی است', // localized
    				syntax: '{{subst:welcomeen-zh}}'
    			},
    			'welcomeen-nl': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها هلندی است', // localized
    				syntax: '{{subst:welcomeen-nl}}'
    			},
    			'welcomeen-fi': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها فنلاندی است', // localized
    				syntax: '{{subst:welcomeen-fi}}'
    			},
    			'welcomeen-fr': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها فرانسوی است', // localized
    				syntax: '{{subst:welcomeen-fr}}'
    			},
    			'welcomeen-de': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها آلمانی است', // localized
    				syntax: '{{subst:welcomeen-de}}'
    			},
    			'welcomeen-he': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها عبری است', // localized
    				syntax: '{{subst:welcomeen-he}}'
    			},
    			'welcomeen-ja': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها ژاپنی است', // localized
    				syntax: '{{subst:welcomeen-ja}}'
    			},
    			'welcomeen-ko': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها کره‌ای است', // localized
    				syntax: '{{subst:welcomeen-ko}}'
    			},
    			'welcomeen-ml': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها مالایالم است', // localized
    				syntax: '{{subst:welcomeen-ml}}'
    			},
    			'welcomeen-mr': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها مراتی', // localized
    				syntax: '{{subst:welcomeen-mr}}'
    			},
    			'welcomeen-or': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها اوریه (اودیه) است', // localized
    				syntax: '{{subst:welcomeen-or}}'
    			},
    			'welcomeen-pt': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها پرتغالی است', // localized
    				syntax: '{{subst:welcomeen-pt}}'
    			},
    			'welcomeen-ro': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها رومانیایی است', // localized
    				syntax: '{{subst:welcomeen-ro}}'
    			},
    			'welcomeen-ru': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها روسی است', // localized
    				syntax: '{{subst:welcomeen-ru}}'
    			},
    			'welcomeen-es': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها اسپانیایی است', // localized
    				syntax: '{{subst:welcomeen-es}}'
    			},
    			'welcomeen-sv': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها سوئدی است', // localized
    				syntax: '{{subst:welcomeen-sv}}'
    			},
    			'welcomeen-uk': {
    				description: 'خوشامد به کاربرانی ظاهراً زبان مادری آن‌ها اکراینی است', // localized
    				syntax: '{{subst:welcomeen-uk}}'
    			}
    		}
    	}*/ // localized [removed]

    };

    Twinkle.welcome.getTemplateWikitext = function(type, template, article) {
    	// the iteration is required as the type=standard has two groups
    	var properties;
    	$.each(Twinkle.welcome.templates[type], function(label, templates) {
    		properties = templates[template];
    		if (properties) {
    			return false; // break
    		}
    	});
    	if (properties) {
    		return properties.syntax.
    			replace('$USERNAME$', Twinkle.getPref('insertUsername') ? mw.config.get('wgUserName') : '').
    			replace('$ARTICLE$', article ? article : '').
    			replace(/\$HEADER\$\s*/, '== خوش آمدید ==\n\n').
    			replace('$EXTRA$', '');  // EXTRA is not implemented yet
    	}
    	return '{{subst:' + template + (article ? '|art=' + article : '') + '}}' +
    			(Twinkle.getPref('customWelcomeSignature') ? ' ~~~~' : '');
    };

    Twinkle.welcome.callbacks = {
    	preview: function(form) {
    		var previewDialog = new Morebits.simpleWindow(750, 400);
    		previewDialog.setTitle('پیش‌نمایش الگوی خوشامد'); // localized
    		previewDialog.setScriptName('خوشامد به کاربر'); // localized
    		previewDialog.setModality(true);

    		var previewdiv = document.createElement('div');
    		previewdiv.style.marginLeft = previewdiv.style.marginRight = '0.5em';
    		previewdiv.style.fontSize = 'small';
    		previewDialog.setContent(previewdiv);

    		var previewer = new Morebits.wiki.preview(previewdiv);
    		previewer.beginRender(Twinkle.welcome.getTemplateWikitext(form.type.value, form.getChecked('template'), form.article.value), 'بحث کاربر:' + mw.config.get('wgRelevantUserName')); // Force wikitext/correct username

    		var submit = document.createElement('input');
    		submit.setAttribute('type', 'submit');
    		submit.setAttribute('value', 'Close');
    		previewDialog.addContent(submit);

    		previewDialog.display();

    		$(submit).click(function() {
    			previewDialog.close();
    		});
    	},
    	main: function(pageobj) {
    		var params = pageobj.getCallbackParameters();
    		var text = pageobj.getPageText();

    		// abort if mode is auto and form is not empty
    		if (pageobj.exists() && params.mode === 'auto') {
    			Morebits.status.info('Warning', 'صفحهٔ بحث کاربر خالی نیست؛ در حال چشم‌پوشی از خوشامدگویی خودکار'); // localized
    			Morebits.wiki.actionCompleted.event();
    			return;
    		}

    		var welcomeText = Twinkle.welcome.getTemplateWikitext(params.type, params.value, params.article);

    		if (Twinkle.getPref('topWelcomes')) {
    			text = welcomeText + '\n\n' + text;
    		} else {
    			text += '\n' + welcomeText;
    		}

    		var summaryText = 'به ویکی‌پدیا خوش‌آمدید!'; // localized
    		pageobj.setPageText(text);
    		pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd'));
    		pageobj.setWatchlist(Twinkle.getPref('watchWelcomes'));
    		pageobj.setCreateOption('recreate');
    		pageobj.save();
    	}
    };

    Twinkle.welcome.callback.evaluate = function friendlywelcomeCallbackEvaluate(e) {
    	var form = e.target;

    	var params = {
    		type: form.type.value,
    		value: form.getChecked('template'),
    		article: form.article.value,
    		mode: 'manual'
    	};

    	Morebits.simpleWindow.setButtonsEnabled(false);
    	Morebits.status.init(form);

    	var userTalkPage = mw.config.get('wgFormattedNamespaces')[3] + ':' + mw.config.get('wgRelevantUserName');
    	Morebits.wiki.actionCompleted.redirect = userTalkPage;
    	Morebits.wiki.actionCompleted.notice = 'خوشامدگویی انجام شد، در حال بارگزاری دوبارهٔ صفحهٔ بحث تا چند لحظه دیگر'; // localized

    	var wikipedia_page = new Morebits.wiki.page(userTalkPage, 'ویرایش صفحهٔ بحث کاربر');
    	wikipedia_page.setFollowRedirect(true);
    	wikipedia_page.setCallbackParameters(params);
    	wikipedia_page.load(Twinkle.welcome.callbacks.main);
    };
    })(jQuery);

    // </nowiki>

Retrieved from "https://en.faraghaib.ir/w/index.php?title=MediaWiki:Gadget-friendlywelcome-2020.js&oldid=298"