<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://tnfshwiki.tfcis.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-twinklexfd.js</id>
	<title>MediaWiki:Gadget-twinklexfd.js - 修訂歷史</title>
	<link rel="self" type="application/atom+xml" href="https://tnfshwiki.tfcis.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-twinklexfd.js"/>
	<link rel="alternate" type="text/html" href="https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;action=history"/>
	<updated>2026-04-08T18:28:17Z</updated>
	<subtitle>本 Wiki 上此頁面的修訂歷史</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;diff=4377&amp;oldid=prev</id>
		<title>Xiplus-bot：​繁簡轉換</title>
		<link rel="alternate" type="text/html" href="https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;diff=4377&amp;oldid=prev"/>
		<updated>2016-04-10T07:27:20Z</updated>

		<summary type="html">&lt;p&gt;繁簡轉換&lt;/p&gt;
&lt;a href=&quot;https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;amp;diff=4377&amp;amp;oldid=3923&quot;&gt;顯示變更&lt;/a&gt;</summary>
		<author><name>Xiplus-bot</name></author>
	</entry>
	<entry>
		<id>https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;diff=3923&amp;oldid=prev</id>
		<title>Xiplus：​已匯入 1 筆修訂：Twinkle</title>
		<link rel="alternate" type="text/html" href="https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;diff=3923&amp;oldid=prev"/>
		<updated>2016-03-25T06:03:18Z</updated>

		<summary type="html">&lt;p&gt;已匯入 1 筆修訂：Twinkle&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hant-TW&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上個修訂&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;於 2016年3月25日 (五) 14:03 的修訂&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key tnfshwiki-tnfshwiki_:diff:wikidiff2:1.12:old-3922:rev-3923:1.13.0 --&gt;
&lt;/table&gt;</summary>
		<author><name>Xiplus</name></author>
	</entry>
	<entry>
		<id>https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;diff=3922&amp;oldid=prev</id>
		<title>zhwiki&gt;Jimmy Xu：​v2.0-1046-g9a958a1</title>
		<link rel="alternate" type="text/html" href="https://tnfshwiki.tfcis.org/index.php?title=MediaWiki:Gadget-twinklexfd.js&amp;diff=3922&amp;oldid=prev"/>
		<updated>2015-10-05T23:15:53Z</updated>

		<summary type="html">&lt;p&gt;v2.0-1046-g9a958a1&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;
// vim: set noet sts=0 sw=8:&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;
 *** twinklexfd.js: XFD module&lt;br /&gt;
 ****************************************&lt;br /&gt;
 * Mode of invocation:     Tab (&amp;quot;XFD&amp;quot;)&lt;br /&gt;
 * Active on:              Existing, non-special pages, except for file pages with no local (non-Commons) file which are not redirects&lt;br /&gt;
 * Config directives in:   TwinkleConfig&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd = function twinklexfd() {&lt;br /&gt;
	// Disable on:&lt;br /&gt;
	// * special pages&lt;br /&gt;
	// * non-existent pages&lt;br /&gt;
	// * files on Commons, whether there is a local page or not (unneeded local pages of files on Commons are eligible for CSD F2)&lt;br /&gt;
	// * file pages without actual files (these are eligible for CSD G8)&lt;br /&gt;
	if ( mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) &amp;lt; 0 || !mw.config.get(&amp;#039;wgArticleId&amp;#039;) || (mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) === 6 &amp;amp;&amp;amp; (document.getElementById(&amp;#039;mw-sharedupload&amp;#039;) || (!document.getElementById(&amp;#039;mw-imagepage-section-filehistory&amp;#039;) &amp;amp;&amp;amp; !Morebits.wiki.isPageRedirect()))) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	Twinkle.addPortletLink( Twinkle.xfd.callback, &amp;quot;提删&amp;quot;, &amp;quot;tw-xfd&amp;quot;, &amp;quot;提交删除讨论&amp;quot; );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd.currentRationale = null;&lt;br /&gt;
&lt;br /&gt;
// error callback on Morebits.status.object&lt;br /&gt;
Twinkle.xfd.printRationale = function twinklexfdPrintRationale() {&lt;br /&gt;
	if (Twinkle.xfd.currentRationale) {&lt;br /&gt;
		Morebits.status.printUserText(Twinkle.xfd.currentRationale, &amp;quot;您的理由已在下方提供，如果您想重新提交，请将其复制到一新窗口中：&amp;quot;);&lt;br /&gt;
		// only need to print the rationale once&lt;br /&gt;
		Twinkle.xfd.currentRationale = null;&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd.callback = function twinklexfdCallback() {&lt;br /&gt;
	var Window = new Morebits.simpleWindow( 600, 350 );&lt;br /&gt;
	Window.setTitle( &amp;quot;提交存废讨论&amp;quot; );&lt;br /&gt;
	Window.setScriptName( &amp;quot;Twinkle&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;关于存废讨论&amp;quot;, &amp;quot;WP:XFD&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Twinkle帮助&amp;quot;, &amp;quot;WP:TW/DOC#xfd&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
	var form = new Morebits.quickForm( Twinkle.xfd.callback.evaluate );&lt;br /&gt;
	var categories = form.append( {&lt;br /&gt;
			type: &amp;#039;select&amp;#039;,&lt;br /&gt;
			name: &amp;#039;category&amp;#039;,&lt;br /&gt;
			label: &amp;#039;提交类型：&amp;#039;,&lt;br /&gt;
			event: Twinkle.xfd.callback.change_category&lt;br /&gt;
		} );&lt;br /&gt;
	categories.append( {&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;页面存废讨论&amp;#039;,&lt;br /&gt;
			selected: mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) === 0,  // Main namespace&lt;br /&gt;
			value: &amp;#039;afd&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
	categories.append( {&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;文件存废讨论&amp;#039;,&lt;br /&gt;
			selected: mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) === 6,  // File namespace&lt;br /&gt;
			value: &amp;#039;ffd&amp;#039;&lt;br /&gt;
		} );&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: &amp;#039;如可能，通知页面创建者&amp;#039;,&lt;br /&gt;
					value: &amp;#039;notify&amp;#039;,&lt;br /&gt;
					name: &amp;#039;notify&amp;#039;,&lt;br /&gt;
					tooltip: &amp;quot;在页面创建者对话页上放置一通知模板。&amp;quot;,&lt;br /&gt;
					checked: true&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		}&lt;br /&gt;
	);&lt;br /&gt;
	form.append( {&lt;br /&gt;
			type: &amp;#039;field&amp;#039;,&lt;br /&gt;
			label:&amp;#039;工作区&amp;#039;,&lt;br /&gt;
			name: &amp;#039;work_area&amp;#039;&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;
	// We must init the controls&lt;br /&gt;
	var evt = document.createEvent( &amp;quot;Event&amp;quot; );&lt;br /&gt;
	evt.initEvent( &amp;#039;change&amp;#039;, true, true );&lt;br /&gt;
	result.category.dispatchEvent( evt );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd.previousNotify = true;&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd.callback.change_category = function twinklexfdCallbackChangeCategory(e) {&lt;br /&gt;
	var value = e.target.value;&lt;br /&gt;
	var form = e.target.form;&lt;br /&gt;
	var old_area = Morebits.quickForm.getElements(e.target.form, &amp;quot;work_area&amp;quot;)[0];&lt;br /&gt;
	var work_area = null;&lt;br /&gt;
&lt;br /&gt;
	var oldreasontextbox = form.getElementsByTagName(&amp;#039;textarea&amp;#039;)[0];&lt;br /&gt;
	var oldreason = (oldreasontextbox ? oldreasontextbox.value : &amp;#039;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	var appendReasonBox = function twinklexfdAppendReasonBox() {&lt;br /&gt;
		work_area.append( {&lt;br /&gt;
			type: &amp;#039;textarea&amp;#039;,&lt;br /&gt;
			name: &amp;#039;xfdreason&amp;#039;,&lt;br /&gt;
			label: &amp;#039;理由：&amp;#039;,&lt;br /&gt;
			value: oldreason,&lt;br /&gt;
			tooltip: &amp;#039;您可以使用维基格式，Twinkle将自动为您加入签名。&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
		// TODO possible future &amp;quot;preview&amp;quot; link here&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	switch( value ) {&lt;br /&gt;
	case &amp;#039;afd&amp;#039;:&lt;br /&gt;
		work_area = new Morebits.quickForm.element( {&lt;br /&gt;
				type: &amp;#039;field&amp;#039;,&lt;br /&gt;
				label: &amp;#039;页面存废讨论&amp;#039;,&lt;br /&gt;
				name: &amp;#039;work_area&amp;#039;&lt;br /&gt;
			} );&lt;br /&gt;
		work_area.append( {&lt;br /&gt;
				type: &amp;#039;checkbox&amp;#039;,&lt;br /&gt;
				list: [&lt;br /&gt;
						{&lt;br /&gt;
							label: &amp;#039;使用&amp;lt;noinclude&amp;gt;包裹模板&amp;#039;,&lt;br /&gt;
							value: &amp;#039;noinclude&amp;#039;,&lt;br /&gt;
							name: &amp;#039;noinclude&amp;#039;,&lt;br /&gt;
							checked: mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) === 10, // Template namespace&lt;br /&gt;
							tooltip: &amp;#039;使其不会在被包含时出现。&amp;#039;&lt;br /&gt;
						}&lt;br /&gt;
					]&lt;br /&gt;
		} );&lt;br /&gt;
		var afd_category = work_area.append( {&lt;br /&gt;
				type:&amp;#039;select&amp;#039;,&lt;br /&gt;
				name:&amp;#039;xfdcat&amp;#039;,&lt;br /&gt;
				label:&amp;#039;选择提删类别：&amp;#039;,&lt;br /&gt;
				event:Twinkle.xfd.callback.change_afd_category&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
		afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;删除&amp;#039;, value:&amp;#039;delete&amp;#039;, selected:true } );&lt;br /&gt;
		afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;合并&amp;#039;, value:&amp;#039;merge&amp;#039; } );&lt;br /&gt;
		afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;移动到维基辞典&amp;#039;, value:&amp;#039;vmd&amp;#039; } );&lt;br /&gt;
		afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;移动到维基文库&amp;#039;, value:&amp;#039;vms&amp;#039; } );&lt;br /&gt;
		afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;移动到维基教科书&amp;#039;, value:&amp;#039;vmb&amp;#039; } );&lt;br /&gt;
		afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;移动到维基语录&amp;#039;, value:&amp;#039;vmq&amp;#039; } );&lt;br /&gt;
		afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;移动到维基导游&amp;#039;, value:&amp;#039;vmvoy&amp;#039; } );&lt;br /&gt;
		if ( Morebits.userIsInGroup(&amp;#039;sysop&amp;#039;) ) {&lt;br /&gt;
			afd_category.append( { type:&amp;#039;option&amp;#039;, label:&amp;#039;转交自快速删除候选&amp;#039;, value:&amp;#039;fwdcsd&amp;#039; } );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		work_area.append( {&lt;br /&gt;
				type: &amp;#039;input&amp;#039;,&lt;br /&gt;
				name: &amp;#039;mergeinto&amp;#039;,&lt;br /&gt;
				label: &amp;#039;合并到：&amp;#039;,&lt;br /&gt;
				disabled: true&lt;br /&gt;
			} );&lt;br /&gt;
		appendReasonBox();&lt;br /&gt;
		work_area = work_area.render();&lt;br /&gt;
		old_area.parentNode.replaceChild( work_area, old_area );&lt;br /&gt;
		break;&lt;br /&gt;
	case &amp;#039;ffd&amp;#039;:&lt;br /&gt;
		work_area = new Morebits.quickForm.element( {&lt;br /&gt;
				type: &amp;#039;field&amp;#039;,&lt;br /&gt;
				label: &amp;#039;文件存废讨论&amp;#039;,&lt;br /&gt;
				name: &amp;#039;work_area&amp;#039;&lt;br /&gt;
			} );&lt;br /&gt;
		appendReasonBox();&lt;br /&gt;
		work_area = work_area.render();&lt;br /&gt;
		old_area.parentNode.replaceChild( work_area, old_area );&lt;br /&gt;
		break;&lt;br /&gt;
	default:&lt;br /&gt;
		work_area = new Morebits.quickForm.element( {&lt;br /&gt;
				type: &amp;#039;field&amp;#039;,&lt;br /&gt;
				label: &amp;#039;未定义&amp;#039;,&lt;br /&gt;
				name: &amp;#039;work_area&amp;#039;&lt;br /&gt;
			} );&lt;br /&gt;
		work_area = work_area.render();&lt;br /&gt;
		old_area.parentNode.replaceChild( work_area, old_area );&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// No creator notification for CFDS&lt;br /&gt;
	if (value === &amp;quot;cfds&amp;quot;) {&lt;br /&gt;
		Twinkle.xfd.previousNotify = form.notify.checked;&lt;br /&gt;
		form.notify.checked = false;&lt;br /&gt;
		form.notify.disabled = true;&lt;br /&gt;
	} else {&lt;br /&gt;
		form.notify.checked = Twinkle.xfd.previousNotify;&lt;br /&gt;
		form.notify.disabled = false;&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd.callback.change_afd_category = function twinklexfdCallbackChangeAfdCategory(e) {&lt;br /&gt;
	if( e.target.value === &amp;#039;merge&amp;#039; ) {&lt;br /&gt;
		e.target.form.mergeinto.disabled = false;&lt;br /&gt;
		e.target.form.mergeinto.previousElementSibling.innerHTML = &amp;#039;合并到：&amp;#039;;&lt;br /&gt;
	} else if( e.target.value === &amp;#039;fwdcsd&amp;#039; ) {&lt;br /&gt;
		e.target.form.mergeinto.disabled = false;&lt;br /&gt;
		e.target.form.mergeinto.previousElementSibling.innerHTML = &amp;#039;提交人：&amp;#039;;&lt;br /&gt;
		&lt;br /&gt;
	} else {&lt;br /&gt;
		e.target.form.mergeinto.disabled = true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd.callbacks = {&lt;br /&gt;
	afd: {&lt;br /&gt;
		main: function(pageobj) {&lt;br /&gt;
			// this is coming in from lookupCreator...!&lt;br /&gt;
			var params = pageobj.getCallbackParameters();&lt;br /&gt;
&lt;br /&gt;
			// Adding discussion&lt;br /&gt;
			wikipedia_page = new Morebits.wiki.page(params.logpage, &amp;quot;添加讨论到当日列表&amp;quot;);&lt;br /&gt;
			wikipedia_page.setFollowRedirect(true);&lt;br /&gt;
			wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
			wikipedia_page.load(Twinkle.xfd.callbacks.afd.todaysList);&lt;br /&gt;
&lt;br /&gt;
			// Notification to first contributor&lt;br /&gt;
			if(params.usertalk) {&lt;br /&gt;
				var initialContrib = pageobj.getCreator();&lt;br /&gt;
&lt;br /&gt;
				// Disallow warning yourself&lt;br /&gt;
				if (initialContrib === mw.config.get(&amp;#039;wgUserName&amp;#039;)) {&lt;br /&gt;
					pageobj.getStatusElement().warn(&amp;quot;您（&amp;quot; + initialContrib + &amp;quot;）创建了该页，跳过通知&amp;quot;);&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				var usertalkpage = new Morebits.wiki.page(&amp;#039;User talk:&amp;#039; + initialContrib, &amp;quot;通知页面创建者（&amp;quot; + initialContrib + &amp;quot;）&amp;quot;);&lt;br /&gt;
				var notifytext = &amp;quot;\n{{subst:AFDNote|&amp;quot; + Morebits.pageNameNorm + &amp;quot;}}--~~~~&amp;quot;;&lt;br /&gt;
				usertalkpage.setAppendText(notifytext);&lt;br /&gt;
				usertalkpage.setEditSummary(&amp;quot;通知：页面[[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]存废讨论提名&amp;quot; + Twinkle.getPref(&amp;#039;summaryAd&amp;#039;));&lt;br /&gt;
				usertalkpage.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
				switch (Twinkle.getPref(&amp;#039;xfdWatchUser&amp;#039;)) {&lt;br /&gt;
					case &amp;#039;yes&amp;#039;:&lt;br /&gt;
						usertalkpage.setWatchlist(true);&lt;br /&gt;
						break;&lt;br /&gt;
					case &amp;#039;no&amp;#039;:&lt;br /&gt;
						usertalkpage.setWatchlistFromPreferences(false);&lt;br /&gt;
						break;&lt;br /&gt;
					default:&lt;br /&gt;
						usertalkpage.setWatchlistFromPreferences(true);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				usertalkpage.setFollowRedirect(true);&lt;br /&gt;
				usertalkpage.append();&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		taggingArticle: function(pageobj) {&lt;br /&gt;
			if (!pageobj.exists()) {&lt;br /&gt;
				statelem.error(&amp;quot;页面不存在，可能已被删除&amp;quot;);&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var text = pageobj.getPageText();&lt;br /&gt;
			var params = pageobj.getCallbackParameters();&lt;br /&gt;
			var tag = &amp;#039;{{vfd|&amp;#039; + Morebits.string.formatReasonText(params.reason);&lt;br /&gt;
&lt;br /&gt;
			switch ( params.xfdcat ) {&lt;br /&gt;
				case &amp;#039;vmd&amp;#039;:&lt;br /&gt;
					tag += &amp;#039;|wikt&amp;#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;vms&amp;#039;:&lt;br /&gt;
					tag += &amp;#039;|s&amp;#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;vmb&amp;#039;:&lt;br /&gt;
					tag += &amp;#039;|b&amp;#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;vmq&amp;#039;:&lt;br /&gt;
					tag += &amp;#039;|q&amp;#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;vmvoy&amp;#039;:&lt;br /&gt;
					tag += &amp;#039;|voy&amp;#039;;&lt;br /&gt;
					break;&lt;br /&gt;
				default:&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			if (Morebits.wiki.isPageRedirect()) {&lt;br /&gt;
				tag += &amp;#039;|r&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
			tag += &amp;#039;|date={{subst:#time:Y/m/d}}}}&amp;#039;;&lt;br /&gt;
			if ( params.noinclude ) {&lt;br /&gt;
				tag = &amp;#039;&amp;lt;noinclude&amp;gt;&amp;#039; + tag + &amp;#039;&amp;lt;/noinclude&amp;gt;&amp;#039;;&lt;br /&gt;
			} else {&lt;br /&gt;
				tag += &amp;#039;\n&amp;#039;;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Then, test if there are speedy deletion-related templates on the article.&lt;br /&gt;
			var textNoSd = text.replace(/\{\{\s*(db(-\w*)?|d|delete|(?:hang|hold)[\- ]?on)\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\}\s*/ig, &amp;quot;&amp;quot;);&lt;br /&gt;
			if (text !== textNoSd &amp;amp;&amp;amp; confirm(&amp;quot;在页面上找到快速删除模板，要移除吗？&amp;quot;)) {&lt;br /&gt;
				text = textNoSd;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Mark the page as patrolled, if wanted&lt;br /&gt;
			if (Twinkle.getPref(&amp;#039;markXfdPagesAsPatrolled&amp;#039;)) {&lt;br /&gt;
				pageobj.patrol();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			pageobj.setPageText(tag + text);&lt;br /&gt;
			pageobj.setEditSummary(&amp;quot;页面存废讨论：[[&amp;quot; + params.logpage + &amp;quot;#&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]&amp;quot; + Twinkle.getPref(&amp;#039;summaryAd&amp;#039;));&lt;br /&gt;
			switch (Twinkle.getPref(&amp;#039;xfdWatchPage&amp;#039;)) {&lt;br /&gt;
				case &amp;#039;yes&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlist(true);&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;no&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(false);&lt;br /&gt;
					break;&lt;br /&gt;
				default:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(true);&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			// pageobj.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
			pageobj.save();&lt;br /&gt;
&lt;br /&gt;
			if( Twinkle.getPref(&amp;#039;markXfdPagesAsPatrolled&amp;#039;) ) {&lt;br /&gt;
				pageobj.patrol();&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		todaysList: function(pageobj) {&lt;br /&gt;
			var text = pageobj.getPageText();&lt;br /&gt;
			var params = pageobj.getCallbackParameters();&lt;br /&gt;
			var type = &amp;#039;&amp;#039;;&lt;br /&gt;
			var to = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
			switch ( params.xfdcat ) {&lt;br /&gt;
				case &amp;#039;vmd&amp;#039;:&lt;br /&gt;
				case &amp;#039;vms&amp;#039;:&lt;br /&gt;
				case &amp;#039;vmb&amp;#039;:&lt;br /&gt;
				case &amp;#039;vmq&amp;#039;:&lt;br /&gt;
				case &amp;#039;vmvoy&amp;#039;:&lt;br /&gt;
					type = &amp;#039;vm&amp;#039;;&lt;br /&gt;
					to = params.xfdcat;&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;fwdcsd&amp;#039;:&lt;br /&gt;
				case &amp;#039;merge&amp;#039;:&lt;br /&gt;
					to = params.mergeinto;&lt;br /&gt;
					/* Fall through */&lt;br /&gt;
				default:&lt;br /&gt;
					type = params.xfdcat;&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			pageobj.setAppendText(&amp;quot;\n{{subst:DRItem|Type=&amp;quot; + type + &amp;quot;|DRarticles=&amp;quot; + Morebits.pageNameNorm + &amp;quot;|Reason=&amp;quot; + Morebits.string.formatReasonText(params.reason) + &amp;quot;|To=&amp;quot; + to + &amp;quot;}}~~~~&amp;quot;);&lt;br /&gt;
			pageobj.setEditSummary(&amp;quot;添加[[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]&amp;quot; + Twinkle.getPref(&amp;#039;summaryAd&amp;#039;));&lt;br /&gt;
			switch (Twinkle.getPref(&amp;#039;xfdWatchDiscussion&amp;#039;)) {&lt;br /&gt;
				case &amp;#039;yes&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlist(true);&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;no&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(false);&lt;br /&gt;
					break;&lt;br /&gt;
				default:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(true);&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			pageobj.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
			pageobj.append();&lt;br /&gt;
			Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	ffd: {&lt;br /&gt;
		main: function(pageobj) {&lt;br /&gt;
			// this is coming in from lookupCreator...!&lt;br /&gt;
			var params = pageobj.getCallbackParameters();&lt;br /&gt;
			var initialContrib = pageobj.getCreator();&lt;br /&gt;
			params.uploader = initialContrib;&lt;br /&gt;
&lt;br /&gt;
			// Adding discussion&lt;br /&gt;
			wikipedia_page = new Morebits.wiki.page(params.logpage, &amp;quot;添加讨论到当日列表&amp;quot;);&lt;br /&gt;
			wikipedia_page.setFollowRedirect(true);&lt;br /&gt;
			wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
			wikipedia_page.load(Twinkle.xfd.callbacks.ffd.todaysList);&lt;br /&gt;
&lt;br /&gt;
			// Notification to first contributor&lt;br /&gt;
			if(params.usertalk) {&lt;br /&gt;
				// Disallow warning yourself&lt;br /&gt;
				if (initialContrib === mw.config.get(&amp;#039;wgUserName&amp;#039;)) {&lt;br /&gt;
					pageobj.getStatusElement().warn(&amp;quot;您（&amp;quot; + initialContrib + &amp;quot;）创建了该页，跳过通知&amp;quot;);&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				var usertalkpage = new Morebits.wiki.page(&amp;#039;User talk:&amp;#039; + initialContrib, &amp;quot;通知页面创建者（&amp;quot; + initialContrib + &amp;quot;）&amp;quot;);&lt;br /&gt;
				var notifytext = &amp;quot;\n{{subst:idw|File:&amp;quot; + mw.config.get(&amp;#039;wgTitle&amp;#039;) + &amp;quot;}}--~~~~&amp;quot;;&lt;br /&gt;
				usertalkpage.setAppendText(notifytext);&lt;br /&gt;
				usertalkpage.setEditSummary(&amp;quot;通知：文件[[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]存废讨论提名&amp;quot; + Twinkle.getPref(&amp;#039;summaryAd&amp;#039;));&lt;br /&gt;
				usertalkpage.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
				switch (Twinkle.getPref(&amp;#039;xfdWatchUser&amp;#039;)) {&lt;br /&gt;
					case &amp;#039;yes&amp;#039;:&lt;br /&gt;
						usertalkpage.setWatchlist(true);&lt;br /&gt;
						break;&lt;br /&gt;
					case &amp;#039;no&amp;#039;:&lt;br /&gt;
						usertalkpage.setWatchlistFromPreferences(false);&lt;br /&gt;
						break;&lt;br /&gt;
					default:&lt;br /&gt;
						usertalkpage.setWatchlistFromPreferences(true);&lt;br /&gt;
						break;&lt;br /&gt;
				}&lt;br /&gt;
				usertalkpage.setFollowRedirect(true);&lt;br /&gt;
				usertalkpage.append();&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		taggingImage: function(pageobj) {&lt;br /&gt;
			var text = pageobj.getPageText();&lt;br /&gt;
			var params = pageobj.getCallbackParameters();&lt;br /&gt;
			pageobj.setPageText(&amp;quot;{{ifd|&amp;quot; + Morebits.string.formatReasonText(params.reason) + &amp;quot;|date={{subst:#time:c}}}}\n&amp;quot; + text);&lt;br /&gt;
			pageobj.setEditSummary(&amp;quot;文件存废讨论：[[&amp;quot; + params.logpage + &amp;quot;#&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]&amp;quot; + Twinkle.getPref(&amp;#039;summaryAd&amp;#039;));&lt;br /&gt;
			switch (Twinkle.getPref(&amp;#039;xfdWatchPage&amp;#039;)) {&lt;br /&gt;
				case &amp;#039;yes&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlist(true);&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;no&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(false);&lt;br /&gt;
					break;&lt;br /&gt;
				default:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(true);&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			pageobj.setCreateOption(&amp;#039;recreate&amp;#039;);  // it might be possible for a file to exist without a description page&lt;br /&gt;
			pageobj.save();&lt;br /&gt;
		},&lt;br /&gt;
		todaysList: function(pageobj) {&lt;br /&gt;
			var text = pageobj.getPageText();&lt;br /&gt;
			var params = pageobj.getCallbackParameters();&lt;br /&gt;
&lt;br /&gt;
			pageobj.setAppendText(&amp;quot;\n{{subst:IfdItem|Filename=&amp;quot; + mw.config.get(&amp;#039;wgTitle&amp;#039;) + &amp;quot;|Uploader=&amp;quot; + params.uploader + &amp;quot;|Reason=&amp;quot; + Morebits.string.formatReasonText(params.reason) + &amp;quot;}}--~~~~&amp;quot;);&lt;br /&gt;
			pageobj.setEditSummary(&amp;quot;添加[[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]&amp;quot; + Twinkle.getPref(&amp;#039;summaryAd&amp;#039;));&lt;br /&gt;
			switch (Twinkle.getPref(&amp;#039;xfdWatchDiscussion&amp;#039;)) {&lt;br /&gt;
				case &amp;#039;yes&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlist(true);&lt;br /&gt;
					break;&lt;br /&gt;
				case &amp;#039;no&amp;#039;:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(false);&lt;br /&gt;
					break;&lt;br /&gt;
				default:&lt;br /&gt;
					pageobj.setWatchlistFromPreferences(true);&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			pageobj.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
			pageobj.append(function() {&lt;br /&gt;
				Twinkle.xfd.currentRationale = null;  // any errors from now on do not need to print the rationale, as it is safely saved on-wiki&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Twinkle.xfd.callback.evaluate = function(e) {&lt;br /&gt;
	var type = e.target.category.value;&lt;br /&gt;
	var usertalk = e.target.notify.checked;&lt;br /&gt;
	var reason = e.target.xfdreason.value;&lt;br /&gt;
	var xfdcat, mergeinto, noinclude;&lt;br /&gt;
	if( type === &amp;#039;afd&amp;#039; ) {&lt;br /&gt;
		var noinclude = e.target.noinclude.checked&lt;br /&gt;
		xfdcat = e.target.xfdcat.value;&lt;br /&gt;
		mergeinto = e.target.mergeinto.value;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	Morebits.simpleWindow.setButtonsEnabled( false );&lt;br /&gt;
	Morebits.status.init( e.target );&lt;br /&gt;
&lt;br /&gt;
	Twinkle.xfd.currentRationale = reason;&lt;br /&gt;
	Morebits.status.onError(Twinkle.xfd.printRationale);&lt;br /&gt;
&lt;br /&gt;
	if( !type ) {&lt;br /&gt;
		Morebits.status.error( &amp;#039;错误&amp;#039;, &amp;#039;未定义的动作&amp;#039; );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var query, wikipedia_page, wikipedia_api, logpage, params;&lt;br /&gt;
	var date = new Date();&lt;br /&gt;
	function twodigits(num) {&lt;br /&gt;
		return num &amp;lt; 10 ? &amp;#039;0&amp;#039; + num : num;&lt;br /&gt;
	};&lt;br /&gt;
	switch( type ) {&lt;br /&gt;
&lt;br /&gt;
	case &amp;#039;afd&amp;#039;: // AFD&lt;br /&gt;
		var dateString = date.getUTCFullYear() + &amp;#039;/&amp;#039; + twodigits(date.getUTCMonth() + 1) + &amp;#039;/&amp;#039; + twodigits(date.getUTCDate());&lt;br /&gt;
		logpage = &amp;#039;Wikipedia:頁面存廢討論/記錄/&amp;#039; + dateString;&lt;br /&gt;
		params = { usertalk: usertalk, xfdcat: xfdcat, mergeinto: mergeinto, noinclude: noinclude, reason: reason, logpage: logpage };&lt;br /&gt;
&lt;br /&gt;
		Morebits.wiki.addCheckpoint();&lt;br /&gt;
		// Updating data for the action completed event&lt;br /&gt;
		Morebits.wiki.actionCompleted.redirect = logpage;&lt;br /&gt;
		Morebits.wiki.actionCompleted.notice = &amp;quot;提名完成，重定向到讨论页&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// Tagging file&lt;br /&gt;
		wikipedia_page = new Morebits.wiki.page(mw.config.get(&amp;#039;wgPageName&amp;#039;), &amp;quot;添加存废讨论模板到页面&amp;quot;);&lt;br /&gt;
		wikipedia_page.setFollowRedirect(false);&lt;br /&gt;
		wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
		wikipedia_page.load(Twinkle.xfd.callbacks.afd.taggingArticle);&lt;br /&gt;
&lt;br /&gt;
		// Notification to first contributor&lt;br /&gt;
		wikipedia_page = new Morebits.wiki.page(mw.config.get(&amp;#039;wgPageName&amp;#039;));&lt;br /&gt;
		wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
		wikipedia_page.lookupCreator(Twinkle.xfd.callbacks.afd.main);&lt;br /&gt;
&lt;br /&gt;
		Morebits.wiki.removeCheckpoint();&lt;br /&gt;
		break;&lt;br /&gt;
&lt;br /&gt;
	case &amp;#039;ffd&amp;#039;: // FFD&lt;br /&gt;
		var dateString = date.getUTCFullYear() + &amp;#039;/&amp;#039; + twodigits(date.getUTCMonth() + 1) + &amp;#039;/&amp;#039; + twodigits(date.getUTCDate());&lt;br /&gt;
		logpage = &amp;#039;Wikipedia:檔案存廢討論/記錄/&amp;#039; + dateString;&lt;br /&gt;
		params = { usertalk: usertalk, reason: reason, logpage: logpage };&lt;br /&gt;
&lt;br /&gt;
		Morebits.wiki.addCheckpoint();&lt;br /&gt;
		// Updating data for the action completed event&lt;br /&gt;
		Morebits.wiki.actionCompleted.redirect = logpage;&lt;br /&gt;
		Morebits.wiki.actionCompleted.notice = &amp;quot;提名完成，重定向到讨论页&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// Tagging file&lt;br /&gt;
		wikipedia_page = new Morebits.wiki.page(mw.config.get(&amp;#039;wgPageName&amp;#039;), &amp;quot;添加存废讨论模板到文件描述页&amp;quot;);&lt;br /&gt;
		wikipedia_page.setFollowRedirect(false);&lt;br /&gt;
		wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
		wikipedia_page.load(Twinkle.xfd.callbacks.ffd.taggingImage);&lt;br /&gt;
&lt;br /&gt;
		// Contributor specific edits&lt;br /&gt;
		wikipedia_page = new Morebits.wiki.page(mw.config.get(&amp;#039;wgPageName&amp;#039;));&lt;br /&gt;
		wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
		wikipedia_page.lookupCreator(Twinkle.xfd.callbacks.ffd.main);&lt;br /&gt;
&lt;br /&gt;
		Morebits.wiki.removeCheckpoint();&lt;br /&gt;
		break;&lt;br /&gt;
&lt;br /&gt;
	default:&lt;br /&gt;
		alert(&amp;quot;twinklexfd：未定义的类别&amp;quot;);&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
})(jQuery);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>zhwiki&gt;Jimmy Xu</name></author>
	</entry>
</feed>