<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-friendlywelcome.js</id>
	<title>MediaWiki:Gadget-friendlywelcome.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-friendlywelcome.js"/>
	<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-friendlywelcome.js&amp;action=history"/>
	<updated>2026-05-04T10:46:48Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-friendlywelcome.js&amp;diff=26370&amp;oldid=prev</id>
		<title>鹿野耕云：​创建页面，内容为“// &lt;nowiki&gt;   (function($) {   /*  ****************************************  *** friendlywelcome.js: Welcome module  ****************************************  * Mode of invocation:     Tab (&quot;Wel&quot;), 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(&#039;friendlywelcome&#039;)) { 		if (mw…”</title>
		<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-friendlywelcome.js&amp;diff=26370&amp;oldid=prev"/>
		<updated>2022-12-06T14:10:52Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“// &amp;lt;nowiki&amp;gt;   (function($) {   &lt;span class=&quot;autocomment&quot;&gt;****************************************  *** friendlywelcome.js: Welcome module  ****************************************  * Mode of invocation:     Tab (&amp;quot;Wel&amp;quot;), or from links on diff pages  * Active on:              Any page with relevant user name (userspace,  *                         contribs, etc.) and diff pages：​&lt;/span&gt;  Twinkle.welcome = function friendlywelcome() { 	if (mw.util.getParamValue(&amp;#039;friendlywelcome&amp;#039;)) { 		if (mw…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(function($) {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 ****************************************&lt;br /&gt;
 *** friendlywelcome.js: Welcome module&lt;br /&gt;
 ****************************************&lt;br /&gt;
 * Mode of invocation:     Tab (&amp;quot;Wel&amp;quot;), or from links on diff pages&lt;br /&gt;
 * Active on:              Any page with relevant user name (userspace,&lt;br /&gt;
 *                         contribs, etc.) and diff pages&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome = function friendlywelcome() {&lt;br /&gt;
	if (mw.util.getParamValue(&amp;#039;friendlywelcome&amp;#039;)) {&lt;br /&gt;
		if (mw.util.getParamValue(&amp;#039;friendlywelcome&amp;#039;) === &amp;#039;auto&amp;#039;) {&lt;br /&gt;
			Twinkle.welcome.auto();&lt;br /&gt;
		} else {&lt;br /&gt;
			Twinkle.welcome.semiauto();&lt;br /&gt;
		}&lt;br /&gt;
	} else {&lt;br /&gt;
		Twinkle.welcome.normal();&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.auto = function() {&lt;br /&gt;
	if (mw.util.getParamValue(&amp;#039;action&amp;#039;) !== &amp;#039;edit&amp;#039;) {&lt;br /&gt;
		// userpage not empty, aborting auto-welcome&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	Twinkle.welcome.welcomeUser();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.semiauto = function() {&lt;br /&gt;
	Twinkle.welcome.callback(Morebits.wiki.flow.relevantUserName());&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.normal = function() {&lt;br /&gt;
	if (mw.util.getParamValue(&amp;#039;diff&amp;#039;)) {&lt;br /&gt;
		// check whether the contributors&amp;#039; talk pages exist yet&lt;br /&gt;
		var $oList = $(&amp;#039;#mw-diff-otitle2&amp;#039;).find(&amp;#039;span.mw-usertoollinks a.new.mw-usertoollinks-talk&amp;#039;).first();&lt;br /&gt;
		var $nList = $(&amp;#039;#mw-diff-ntitle2&amp;#039;).find(&amp;#039;span.mw-usertoollinks a.new.mw-usertoollinks-talk&amp;#039;).first();&lt;br /&gt;
&lt;br /&gt;
		if ($oList.length &amp;gt; 0 || $nList.length &amp;gt; 0) {&lt;br /&gt;
			var spanTag = function(color, content) {&lt;br /&gt;
				var span = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
				span.style.color = color;&lt;br /&gt;
				span.appendChild(document.createTextNode(content));&lt;br /&gt;
				return span;&lt;br /&gt;
			};&lt;br /&gt;
&lt;br /&gt;
			var welcomeNode = document.createElement(&amp;#039;strong&amp;#039;);&lt;br /&gt;
			var welcomeLink = document.createElement(&amp;#039;a&amp;#039;);&lt;br /&gt;
			welcomeLink.appendChild(spanTag(&amp;#039;Black&amp;#039;, &amp;#039;[&amp;#039;));&lt;br /&gt;
			welcomeLink.appendChild(spanTag(&amp;#039;Goldenrod&amp;#039;, wgULS(&amp;#039;欢迎&amp;#039;, &amp;#039;歡迎&amp;#039;)));&lt;br /&gt;
			welcomeLink.appendChild(spanTag(&amp;#039;Black&amp;#039;, &amp;#039;]&amp;#039;));&lt;br /&gt;
			welcomeNode.appendChild(welcomeLink);&lt;br /&gt;
&lt;br /&gt;
			if ($oList.length &amp;gt; 0) {&lt;br /&gt;
				var oHref = $oList.attr(&amp;#039;href&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
				var oWelcomeNode = welcomeNode.cloneNode(true);&lt;br /&gt;
				oWelcomeNode.firstChild.setAttribute(&amp;#039;href&amp;#039;, oHref + &amp;#039;&amp;amp;&amp;#039; + $.param({&lt;br /&gt;
					friendlywelcome: Twinkle.getPref(&amp;#039;quickWelcomeMode&amp;#039;) === &amp;#039;auto&amp;#039; ? &amp;#039;auto&amp;#039; : &amp;#039;norm&amp;#039;,&lt;br /&gt;
					vanarticle: Morebits.pageNameNorm&lt;br /&gt;
				}));&lt;br /&gt;
				$oList[0].parentNode.parentNode.appendChild(document.createTextNode(&amp;#039; &amp;#039;));&lt;br /&gt;
				$oList[0].parentNode.parentNode.appendChild(oWelcomeNode);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if ($nList.length &amp;gt; 0) {&lt;br /&gt;
				var nHref = $nList.attr(&amp;#039;href&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
				var nWelcomeNode = welcomeNode.cloneNode(true);&lt;br /&gt;
				nWelcomeNode.firstChild.setAttribute(&amp;#039;href&amp;#039;, nHref + &amp;#039;&amp;amp;&amp;#039; + $.param({&lt;br /&gt;
					friendlywelcome: Twinkle.getPref(&amp;#039;quickWelcomeMode&amp;#039;) === &amp;#039;auto&amp;#039; ? &amp;#039;auto&amp;#039; : &amp;#039;norm&amp;#039;,&lt;br /&gt;
					vanarticle: Morebits.pageNameNorm&lt;br /&gt;
				}));&lt;br /&gt;
				$nList[0].parentNode.parentNode.appendChild(document.createTextNode(&amp;#039; &amp;#039;));&lt;br /&gt;
				$nList[0].parentNode.parentNode.appendChild(nWelcomeNode);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (Morebits.wiki.flow.relevantUserName()) {&lt;br /&gt;
		Twinkle.addPortletLink(function() {&lt;br /&gt;
			Twinkle.welcome.callback(Morebits.wiki.flow.relevantUserName());&lt;br /&gt;
		}, wgULS(&amp;#039;欢迎&amp;#039;, &amp;#039;歡迎&amp;#039;), &amp;#039;friendly-welcome&amp;#039;, wgULS(&amp;#039;欢迎用户&amp;#039;, &amp;#039;歡迎使用者&amp;#039;));&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.welcomeUser = function welcomeUser() {&lt;br /&gt;
	Morebits.status.init(document.getElementById(&amp;#039;mw-content-text&amp;#039;));&lt;br /&gt;
	$(&amp;#039;#catlinks&amp;#039;).remove();&lt;br /&gt;
&lt;br /&gt;
	var params = {&lt;br /&gt;
		template: Twinkle.getPref(&amp;#039;quickWelcomeTemplate&amp;#039;),&lt;br /&gt;
		article: mw.util.getParamValue(&amp;#039;vanarticle&amp;#039;) || &amp;#039;&amp;#039;,&lt;br /&gt;
		mode: &amp;#039;auto&amp;#039;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var userTalkPage = mw.config.get(&amp;#039;wgFormattedNamespaces&amp;#039;)[3] + &amp;#039;:&amp;#039; + Morebits.wiki.flow.relevantUserName();&lt;br /&gt;
	Morebits.wiki.actionCompleted.redirect = userTalkPage;&lt;br /&gt;
	Morebits.wiki.actionCompleted.notice = wgULS(&amp;#039;欢迎完成，将在几秒内刷新页面&amp;#039;, &amp;#039;歡迎完成，將在幾秒內重新整理頁面&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	var wikipedia_page = new Morebits.wiki.page(userTalkPage, wgULS(&amp;#039;编辑用户讨论页&amp;#039;, &amp;#039;編輯使用者討論頁&amp;#039;));&lt;br /&gt;
	wikipedia_page.setFollowRedirect(true);&lt;br /&gt;
	wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
	wikipedia_page.load(Twinkle.welcome.callbacks.main);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.callback = function friendlywelcomeCallback(uid) {&lt;br /&gt;
	if (uid === mw.config.get(&amp;#039;wgUserName&amp;#039;) &amp;amp;&amp;amp; !confirm(wgULS(&amp;#039;您真的要欢迎您自己吗？&amp;#039;, &amp;#039;您真的要歡迎您自己嗎？&amp;#039;))) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var Window = new Morebits.simpleWindow(600, 420);&lt;br /&gt;
	Window.setTitle(wgULS(&amp;#039;欢迎用户&amp;#039;, &amp;#039;歡迎使用者&amp;#039;));&lt;br /&gt;
	Window.setScriptName(&amp;#039;Twinkle&amp;#039;);&lt;br /&gt;
	Window.addFooterLink(wgULS(&amp;#039;欢迎设置&amp;#039;, &amp;#039;歡迎設定&amp;#039;), &amp;#039;WP:TW/PREF#welcome&amp;#039;);&lt;br /&gt;
	Window.addFooterLink(wgULS(&amp;#039;Twinkle帮助&amp;#039;, &amp;#039;Twinkle說明&amp;#039;), &amp;#039;H:TW#欢迎&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	var form = new Morebits.quickForm(Twinkle.welcome.callback.evaluate);&lt;br /&gt;
&lt;br /&gt;
	form.append({&lt;br /&gt;
		type: &amp;#039;select&amp;#039;,&lt;br /&gt;
		name: &amp;#039;type&amp;#039;,&lt;br /&gt;
		label: wgULS(&amp;#039;欢迎类型：&amp;#039;, &amp;#039;歡迎類別：&amp;#039;),&lt;br /&gt;
		event: Twinkle.welcome.populateWelcomeList,&lt;br /&gt;
		list: [&lt;br /&gt;
			{ type: &amp;#039;option&amp;#039;, value: &amp;#039;standard&amp;#039;, label: wgULS(&amp;#039;标准欢迎&amp;#039;, &amp;#039;標準歡迎&amp;#039;), selected: !mw.util.isIPAddress(Morebits.wiki.flow.relevantUserName()) },&lt;br /&gt;
			{ type: &amp;#039;option&amp;#039;, value: &amp;#039;anonymous&amp;#039;, label: wgULS(&amp;#039;欢迎IP用户&amp;#039;, &amp;#039;歡迎IP使用者&amp;#039;), selected: mw.util.isIPAddress(Morebits.wiki.flow.relevantUserName()) },&lt;br /&gt;
			{ type: &amp;#039;option&amp;#039;, value: &amp;#039;nonChinese&amp;#039;, label: wgULS(&amp;#039;非中文欢迎&amp;#039;, &amp;#039;非中文歡迎&amp;#039;) }&lt;br /&gt;
		]&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	form.append({&lt;br /&gt;
		type: &amp;#039;div&amp;#039;,&lt;br /&gt;
		id: &amp;#039;welcomeWorkArea&amp;#039;,&lt;br /&gt;
		className: &amp;#039;morebits-scrollbox&amp;#039;&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	form.append({&lt;br /&gt;
		type: &amp;#039;input&amp;#039;,&lt;br /&gt;
		name: &amp;#039;article&amp;#039;,&lt;br /&gt;
		label: wgULS(&amp;#039;* 条目链接（如果模板支持）：&amp;#039;, &amp;#039;* 條目連結（如果模板支援）：&amp;#039;),&lt;br /&gt;
		value: mw.util.getParamValue(&amp;#039;vanarticle&amp;#039;) || &amp;#039;&amp;#039;,&lt;br /&gt;
		tooltip: wgULS(&amp;#039;如果模板支持则可以链接到条目，留空则不链接。支持链接的模板以星号标注。&amp;#039;, &amp;#039;如果模板支援則可以連結到條目，留空則不連結。支援連結的模板以星號標註。&amp;#039;)&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// Only displayed when the user viewing the user talk page&lt;br /&gt;
	if (mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) === 3 &amp;amp;&amp;amp; mw.config.get(&amp;#039;wgTitle&amp;#039;) === Morebits.wiki.flow.relevantUserName()) {&lt;br /&gt;
		form.append({&lt;br /&gt;
			type: &amp;#039;checkbox&amp;#039;,&lt;br /&gt;
			list: [&lt;br /&gt;
				{&lt;br /&gt;
					label: wgULS(&amp;#039;欢迎前清空用户讨论页&amp;#039;, &amp;#039;歡迎前清空使用者討論頁&amp;#039;),&lt;br /&gt;
					value: &amp;#039;blank&amp;#039;,&lt;br /&gt;
					name: &amp;#039;blank&amp;#039;,&lt;br /&gt;
					tooltip: wgULS(&amp;#039;适用于用户讨论页面上仅有胡言乱语或编辑测试时。&amp;#039;, &amp;#039;適用於使用者討論頁面上僅有胡言亂語或編輯測試時。&amp;#039;)&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var previewlink = document.createElement(&amp;#039;a&amp;#039;);&lt;br /&gt;
	$(previewlink).click(function() {&lt;br /&gt;
		Twinkle.welcome.callbacks.preview(result);  // |result| is defined below&lt;br /&gt;
	});&lt;br /&gt;
	previewlink.style.cursor = &amp;#039;pointer&amp;#039;;&lt;br /&gt;
	previewlink.textContent = wgULS(&amp;#039;预览&amp;#039;, &amp;#039;預覽&amp;#039;);&lt;br /&gt;
	form.append({ type: &amp;#039;div&amp;#039;, name: &amp;#039;welcomepreview&amp;#039;, label: [ previewlink ] });&lt;br /&gt;
&lt;br /&gt;
	form.append({ type: &amp;#039;submit&amp;#039; });&lt;br /&gt;
&lt;br /&gt;
	var result = form.render();&lt;br /&gt;
	Window.setContent(result);&lt;br /&gt;
	Window.display();&lt;br /&gt;
&lt;br /&gt;
	// initialize the welcome list&lt;br /&gt;
	var evt = document.createEvent(&amp;#039;Event&amp;#039;);&lt;br /&gt;
	evt.initEvent(&amp;#039;change&amp;#039;, true, true);&lt;br /&gt;
	result.type.dispatchEvent(evt);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.populateWelcomeList = function(e) {&lt;br /&gt;
	var type = e.target.value;&lt;br /&gt;
&lt;br /&gt;
	var container = new Morebits.quickForm.element({ type: &amp;#039;fragment&amp;#039; });&lt;br /&gt;
&lt;br /&gt;
	if ((type === &amp;#039;standard&amp;#039; || type === &amp;#039;anonymous&amp;#039;) &amp;amp;&amp;amp; Twinkle.getPref(&amp;#039;customWelcomeList&amp;#039;).length) {&lt;br /&gt;
		container.append({ type: &amp;#039;header&amp;#039;, label: wgULS(&amp;#039;自定义欢迎模板&amp;#039;, &amp;#039;自訂歡迎模板&amp;#039;) });&lt;br /&gt;
		container.append({&lt;br /&gt;
			type: &amp;#039;radio&amp;#039;,&lt;br /&gt;
			name: &amp;#039;template&amp;#039;,&lt;br /&gt;
			list: Twinkle.getPref(&amp;#039;customWelcomeList&amp;#039;),&lt;br /&gt;
			event: function() {&lt;br /&gt;
				e.target.form.article.disabled = false;&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var sets = Twinkle.welcome.templates[type];&lt;br /&gt;
	$.each(sets, function(label, templates) {&lt;br /&gt;
		container.append({ type: &amp;#039;header&amp;#039;, label: label });&lt;br /&gt;
		container.append({&lt;br /&gt;
			type: &amp;#039;radio&amp;#039;,&lt;br /&gt;
			name: &amp;#039;template&amp;#039;,&lt;br /&gt;
			list: $.map(templates, function(properties, template) {&lt;br /&gt;
				return {&lt;br /&gt;
					value: template,&lt;br /&gt;
					label: &amp;#039;{{&amp;#039; + template + &amp;#039;}}：&amp;#039; + properties.description + (properties.linkedArticle ? &amp;#039;\u00A0*&amp;#039; : &amp;#039;&amp;#039;),  // U+00A0 NO-BREAK SPACE&lt;br /&gt;
					tooltip: properties.tooltip  // may be undefined&lt;br /&gt;
				};&lt;br /&gt;
			}),&lt;br /&gt;
			event: function(ev) {&lt;br /&gt;
				ev.target.form.article.disabled = !templates[ev.target.value].linkedArticle;&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	var rendered = container.render();&lt;br /&gt;
	$(e.target.form).find(&amp;#039;div#welcomeWorkArea&amp;#039;).empty().append(rendered);&lt;br /&gt;
&lt;br /&gt;
	var firstRadio = e.target.form.template[0] || e.target.form.template;&lt;br /&gt;
	firstRadio.checked = true;&lt;br /&gt;
	var vals = sets[Object.keys(sets)[0]];&lt;br /&gt;
	e.target.form.article.disabled = vals[firstRadio.value] ? !vals[firstRadio.value].linkedArticle : true;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// A list of welcome templates and their properties and syntax&lt;br /&gt;
&lt;br /&gt;
// The four fields that are available are &amp;quot;description&amp;quot;, &amp;quot;linkedArticle&amp;quot;, &amp;quot;syntax&amp;quot;, and &amp;quot;tooltip&amp;quot;.&lt;br /&gt;
// The three magic words that can be used in the &amp;quot;syntax&amp;quot; field are:&lt;br /&gt;
//   - $USERNAME$  - replaced by the welcomer&amp;#039;s username, depending on user&amp;#039;s preferences&lt;br /&gt;
//   - $ARTICLE$   - replaced by an article name, if &amp;quot;linkedArticle&amp;quot; is true&lt;br /&gt;
//   - $HEADER$    - adds a level 2 header (most templates already include this)&lt;br /&gt;
&lt;br /&gt;
/* eslint-disable quote-props */&lt;br /&gt;
Twinkle.welcome.templates = wgULS({&lt;br /&gt;
	standard: {&lt;br /&gt;
		&amp;#039;一般欢迎模板&amp;#039;: {&lt;br /&gt;
			Welcome: {&lt;br /&gt;
				description: &amp;#039;标准欢迎&amp;#039;,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Welcome}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		&amp;#039;问题用户欢迎模板&amp;#039;: {&lt;br /&gt;
			Firstarticle: {&lt;br /&gt;
				description: &amp;#039;给第一篇条目不符条目创建指引的用户&amp;#039;,&lt;br /&gt;
				linkedArticle: true,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Firstarticle|1=$ARTICLE$}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	anonymous: {&lt;br /&gt;
		&amp;#039;匿名用户欢迎模板&amp;#039;: {&lt;br /&gt;
			Welcomeip: {&lt;br /&gt;
				description: &amp;#039;供匿名用户，鼓励其创建账户&amp;#039;,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Welcomeip}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	nonChinese: {&lt;br /&gt;
		&amp;#039;非中文欢迎模板&amp;#039;: {&lt;br /&gt;
			Welcomeen: {&lt;br /&gt;
				description: &amp;#039;欢迎非中文用户&amp;#039;,&lt;br /&gt;
				linkedArticle: true,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Welcomeen|art=$ARTICLE$}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}, {&lt;br /&gt;
	standard: {&lt;br /&gt;
		&amp;#039;一般歡迎模板&amp;#039;: {&lt;br /&gt;
			Welcome: {&lt;br /&gt;
				description: &amp;#039;標準歡迎&amp;#039;,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Welcome}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		&amp;#039;問題使用者歡迎模板&amp;#039;: {&lt;br /&gt;
			Firstarticle: {&lt;br /&gt;
				description: &amp;#039;給第一篇條目不符條目建立指引的使用者&amp;#039;,&lt;br /&gt;
				linkedArticle: true,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Firstarticle|1=$ARTICLE$}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	anonymous: {&lt;br /&gt;
		&amp;#039;匿名使用者歡迎模板&amp;#039;: {&lt;br /&gt;
			Welcomeip: {&lt;br /&gt;
				description: &amp;#039;供匿名使用者，鼓勵其建立帳戶&amp;#039;,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Welcomeip}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	nonChinese: {&lt;br /&gt;
		&amp;#039;非中文歡迎模板&amp;#039;: {&lt;br /&gt;
			Welcomeen: {&lt;br /&gt;
				description: &amp;#039;歡迎非中文使用者&amp;#039;,&lt;br /&gt;
				linkedArticle: true,&lt;br /&gt;
				syntax: &amp;#039;{{subst:Welcomeen|art=$ARTICLE$}}&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
/* eslint-enable quote-props */&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.getTemplateWikitext = function(type, template, article) {&lt;br /&gt;
	// the iteration is required as the type=standard has two groups&lt;br /&gt;
	var properties;&lt;br /&gt;
	$.each(Twinkle.welcome.templates[type], function(label, templates) {&lt;br /&gt;
		properties = templates[template];&lt;br /&gt;
		if (properties) {&lt;br /&gt;
			return false; // break&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
	if (properties) {&lt;br /&gt;
		return properties.syntax.&lt;br /&gt;
			replace(&amp;#039;$USERNAME$&amp;#039;, Twinkle.getPref(&amp;#039;insertUsername&amp;#039;) ? mw.config.get(&amp;#039;wgUserName&amp;#039;) : &amp;#039;&amp;#039;).&lt;br /&gt;
			replace(&amp;#039;$ARTICLE$&amp;#039;, article ? article : &amp;#039;&amp;#039;).&lt;br /&gt;
			replace(/\$HEADER\$\s*/, &amp;#039;== &amp;#039; + wgULS(&amp;#039;欢迎&amp;#039;, &amp;#039;歡迎&amp;#039;) + &amp;#039; ==\n\n&amp;#039;).&lt;br /&gt;
			replace(&amp;#039;$EXTRA$&amp;#039;, &amp;#039;&amp;#039;);  // EXTRA is not implemented yet&lt;br /&gt;
	}&lt;br /&gt;
	return &amp;#039;{{subst:&amp;#039; + template + (article ? &amp;#039;|art=&amp;#039; + article : &amp;#039;&amp;#039;) + &amp;#039;}}&amp;#039; +&lt;br /&gt;
			(Twinkle.getPref(&amp;#039;customWelcomeSignature&amp;#039;) ? &amp;#039; ~~~~&amp;#039; : &amp;#039;&amp;#039;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.callbacks = {&lt;br /&gt;
	preview: function(form) {&lt;br /&gt;
		var previewDialog = new Morebits.simpleWindow(750, 400);&lt;br /&gt;
		previewDialog.setTitle(wgULS(&amp;#039;预览欢迎模板&amp;#039;, &amp;#039;預覽歡迎模板&amp;#039;));&lt;br /&gt;
		previewDialog.setScriptName(wgULS(&amp;#039;欢迎用户&amp;#039;, &amp;#039;歡迎使用者&amp;#039;));&lt;br /&gt;
		previewDialog.setModality(true);&lt;br /&gt;
&lt;br /&gt;
		var previewdiv = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
		previewdiv.style.marginLeft = previewdiv.style.marginRight = &amp;#039;0.5em&amp;#039;;&lt;br /&gt;
		previewdiv.style.fontSize = &amp;#039;small&amp;#039;;&lt;br /&gt;
		previewDialog.setContent(previewdiv);&lt;br /&gt;
&lt;br /&gt;
		var previewer = new Morebits.wiki.preview(previewdiv);&lt;br /&gt;
		var input = Morebits.quickForm.getInputData(form);&lt;br /&gt;
		previewer.beginRender(Twinkle.welcome.getTemplateWikitext(input.type, input.template, input.article), &amp;#039;User talk:&amp;#039; + Morebits.wiki.flow.relevantUserName()); // Force wikitext/correct username&lt;br /&gt;
&lt;br /&gt;
		var submit = document.createElement(&amp;#039;input&amp;#039;);&lt;br /&gt;
		submit.setAttribute(&amp;#039;type&amp;#039;, &amp;#039;submit&amp;#039;);&lt;br /&gt;
		submit.setAttribute(&amp;#039;value&amp;#039;, wgULS(&amp;#039;关闭&amp;#039;, &amp;#039;關閉&amp;#039;));&lt;br /&gt;
		previewDialog.addContent(submit);&lt;br /&gt;
&lt;br /&gt;
		previewDialog.display();&lt;br /&gt;
&lt;br /&gt;
		$(submit).click(function() {&lt;br /&gt;
			previewDialog.close();&lt;br /&gt;
		});&lt;br /&gt;
	},&lt;br /&gt;
	main: function(pageobj) {&lt;br /&gt;
		var params = pageobj.getCallbackParameters();&lt;br /&gt;
		var text = pageobj.getPageText();&lt;br /&gt;
&lt;br /&gt;
		// abort if mode is auto and form is not empty&lt;br /&gt;
		if (pageobj.exists() &amp;amp;&amp;amp; params.mode === &amp;#039;auto&amp;#039;) {&lt;br /&gt;
			Morebits.status.info(&amp;#039;警告&amp;#039;, wgULS(&amp;#039;用户讨论页不是空的，略过自动欢迎&amp;#039;, &amp;#039;使用者討論頁不是空的，略過自動歡迎&amp;#039;));&lt;br /&gt;
			Morebits.wiki.actionCompleted.event();&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var welcomeText = Twinkle.welcome.getTemplateWikitext(params.type, params.template, params.article);&lt;br /&gt;
&lt;br /&gt;
		if (params.blank) {&lt;br /&gt;
			text = &amp;#039;&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (Twinkle.getPref(&amp;#039;topWelcomes&amp;#039;)) {&lt;br /&gt;
			text = welcomeText + &amp;#039;\n\n&amp;#039; + text;&lt;br /&gt;
		} else {&lt;br /&gt;
			text += &amp;#039;\n&amp;#039; + welcomeText;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var summaryText = wgULS(&amp;#039;欢迎来到维基百科！&amp;#039;, &amp;#039;歡迎來到維基百科！&amp;#039;);&lt;br /&gt;
		pageobj.setPageText(text);&lt;br /&gt;
		pageobj.setEditSummary(summaryText);&lt;br /&gt;
		pageobj.setChangeTags(Twinkle.changeTags);&lt;br /&gt;
		pageobj.setWatchlist(Twinkle.getPref(&amp;#039;watchWelcomes&amp;#039;));&lt;br /&gt;
		pageobj.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
		pageobj.save();&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.welcome.callback.evaluate = function friendlywelcomeCallbackEvaluate(e) {&lt;br /&gt;
	var form = e.target;&lt;br /&gt;
&lt;br /&gt;
	var params = Morebits.quickForm.getInputData(form); // : type, template, article&lt;br /&gt;
	params.mode = &amp;#039;manual&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	Morebits.simpleWindow.setButtonsEnabled(false);&lt;br /&gt;
	Morebits.status.init(form);&lt;br /&gt;
&lt;br /&gt;
	var userTalkPage = mw.config.get(&amp;#039;wgFormattedNamespaces&amp;#039;)[3] + &amp;#039;:&amp;#039; + Morebits.wiki.flow.relevantUserName();&lt;br /&gt;
	Morebits.wiki.actionCompleted.redirect = userTalkPage;&lt;br /&gt;
	Morebits.wiki.actionCompleted.notice = wgULS(&amp;#039;欢迎完成，将在几秒内刷新讨论页面&amp;#039;, &amp;#039;歡迎完成，將在幾秒內重新整理討論頁面&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	var wikipedia_page = new Morebits.wiki.page(userTalkPage, wgULS(&amp;#039;修改用户讨论页&amp;#039;, &amp;#039;修改使用者討論頁&amp;#039;));&lt;br /&gt;
	wikipedia_page.setFollowRedirect(true);&lt;br /&gt;
	wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
	wikipedia_page.load(Twinkle.welcome.callbacks.main);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.addInitCallback(Twinkle.welcome, &amp;#039;welcome&amp;#039;);&lt;br /&gt;
})(jQuery);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>鹿野耕云</name></author>
	</entry>
</feed>