<?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-twinklecopyvio.js</id>
	<title>MediaWiki:Gadget-twinklecopyvio.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-twinklecopyvio.js"/>
	<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-twinklecopyvio.js&amp;action=history"/>
	<updated>2026-05-04T07:28:00Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-twinklecopyvio.js&amp;diff=26438&amp;oldid=prev</id>
		<title>入我相思门：​创建页面，内容为“// &lt;nowiki&gt;   (function($) { // eslint-disable-line no-unused-vars   /*  ****************************************  *** twinklecopyvio.js: Copyvio module  ****************************************  * Mode of invocation:     Tab (&quot;Copyvio&quot;)  * Active on:              Existing, non-special pages, except for file pages with no local (non-Commons) file which are not redirects  * Config directives in:   TwinkleConfig  */  Twinkle.copyvio = function twinklecopyvio() {…”</title>
		<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-twinklecopyvio.js&amp;diff=26438&amp;oldid=prev"/>
		<updated>2022-12-08T06:50:35Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“// &amp;lt;nowiki&amp;gt;   (function($) { // eslint-disable-line no-unused-vars   &lt;span class=&quot;autocomment&quot;&gt;****************************************  *** twinklecopyvio.js: Copyvio module  ****************************************  * Mode of invocation:     Tab (&amp;quot;Copyvio&amp;quot;)  * Active on:              Existing, non-special pages, except for file pages with no local (non-Commons) file which are not redirects  * Config directives in:   TwinkleConfig：​&lt;/span&gt;  Twinkle.copyvio = function twinklecopyvio() {…”&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($) { // eslint-disable-line no-unused-vars&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 ****************************************&lt;br /&gt;
 *** twinklecopyvio.js: Copyvio module&lt;br /&gt;
 ****************************************&lt;br /&gt;
 * Mode of invocation:     Tab (&amp;quot;Copyvio&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.copyvio = function twinklecopyvio() {&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.isPageRedirect())))) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (mw.config.get(&amp;#039;wgPageContentModel&amp;#039;) === &amp;#039;flow-board&amp;#039;) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	Twinkle.addPortletLink(Twinkle.copyvio.callback, wgULS(&amp;#039;侵权&amp;#039;, &amp;#039;侵權&amp;#039;), &amp;#039;tw-copyvio&amp;#039;, wgULS(&amp;#039;提报侵权页面&amp;#039;, &amp;#039;提報侵權頁面&amp;#039;), &amp;#039;&amp;#039;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.copyvio.callback = function twinklecopyvioCallback() {&lt;br /&gt;
	var Window = new Morebits.simpleWindow(600, 350);&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;Wikipedia:管理员错误自查表/侵权处理&amp;#039;);&lt;br /&gt;
	Window.addFooterLink(wgULS(&amp;#039;侵权设置&amp;#039;, &amp;#039;侵權設定&amp;#039;), &amp;#039;WP:TW/PREF#copyvio&amp;#039;);&lt;br /&gt;
	Window.addFooterLink(wgULS(&amp;#039;Twinkle帮助&amp;#039;, &amp;#039;Twinkle說明&amp;#039;), &amp;#039;WP:TW/DOC#copyvio&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	var form = new Morebits.quickForm(Twinkle.copyvio.callback.evaluate);&lt;br /&gt;
	form.append({&lt;br /&gt;
		type: &amp;#039;textarea&amp;#039;,&lt;br /&gt;
		label: wgULS(&amp;#039;侵权来源：&amp;#039;, &amp;#039;侵權來源：&amp;#039;),&lt;br /&gt;
		name: &amp;#039;source&amp;#039;&lt;br /&gt;
	}&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: wgULS(&amp;#039;CSD G5: 曾经根据侵权审核删除后又重新创建的内容&amp;#039;, &amp;#039;CSD G5: 曾經根據侵權審核刪除後又重新建立的內容&amp;#039;),&lt;br /&gt;
				value: &amp;#039;g5&amp;#039;,&lt;br /&gt;
				name: &amp;#039;g5&amp;#039;,&lt;br /&gt;
				tooltip: wgULS(&amp;#039;同时以G5准则提报快速删除&amp;#039;, &amp;#039;同時以G5準則提報快速刪除&amp;#039;),&lt;br /&gt;
				subgroup: [{&lt;br /&gt;
					name: &amp;#039;g5_pagename&amp;#039;,&lt;br /&gt;
					type: &amp;#039;input&amp;#039;,&lt;br /&gt;
					label: wgULS(&amp;#039;前次删除的页面名称&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;
			{&lt;br /&gt;
				label: wgULS(&amp;#039;CSD G16: 页面与介绍相同事物的原页面同样侵权&amp;#039;, &amp;#039;CSD G16: 頁面與介紹相同事物的原頁面同樣侵權&amp;#039;),&lt;br /&gt;
				value: &amp;#039;g16&amp;#039;,&lt;br /&gt;
				name: &amp;#039;g16&amp;#039;,&lt;br /&gt;
				tooltip: wgULS(&amp;#039;同时以G16准则提报快速删除&amp;#039;, &amp;#039;同時以G16準則提報快速刪除&amp;#039;),&lt;br /&gt;
				subgroup: [{&lt;br /&gt;
					name: &amp;#039;g16_pagename&amp;#039;,&lt;br /&gt;
					type: &amp;#039;input&amp;#039;,&lt;br /&gt;
					label: wgULS(&amp;#039;已提报侵权的页面名称&amp;#039;, &amp;#039;已提報侵權的頁面名稱&amp;#039;),&lt;br /&gt;
					tooltip: wgULS(&amp;#039;必填，请提供当前正在侵权审核的页面名称，若页面已根据侵权删除，则应使用G5准则&amp;#039;, &amp;#039;必填，請提供目前正在侵權審核的頁面名稱，若頁面已根據侵權刪除，則應使用G5準則&amp;#039;)&lt;br /&gt;
				}]&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				label: wgULS(&amp;#039;通知页面创建者&amp;#039;, &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: wgULS(&amp;#039;在页面创建者讨论页上放置一通知模板。&amp;#039;, &amp;#039;在頁面建立者討論頁上放置一通知模板。&amp;#039;),&lt;br /&gt;
				checked: true&lt;br /&gt;
			}&lt;br /&gt;
		]&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;
&lt;br /&gt;
Twinkle.copyvio.callbacks = {&lt;br /&gt;
	tryTagging: function (pageobj) {&lt;br /&gt;
		// 先尝试标记页面，如果发现已经标记则停止提报&lt;br /&gt;
		var text = pageobj.getPageText();&lt;br /&gt;
&lt;br /&gt;
		if (text.indexOf(&amp;#039;{{Copyvio|&amp;#039;) === -1) {&lt;br /&gt;
			Twinkle.copyvio.callbacks.taggingArticle(pageobj);&lt;br /&gt;
&lt;br /&gt;
			// Contributor specific edits&lt;br /&gt;
			var wikipedia_page = new Morebits.wiki.page(mw.config.get(&amp;#039;wgPageName&amp;#039;));&lt;br /&gt;
			wikipedia_page.setCallbackParameters(pageobj.getCallbackParameters());&lt;br /&gt;
			wikipedia_page.lookupCreation(Twinkle.copyvio.callbacks.main);&lt;br /&gt;
		} else {&lt;br /&gt;
			Morebits.status.error(wgULS(&amp;#039;错误&amp;#039;, &amp;#039;錯誤&amp;#039;), wgULS(&amp;#039;页面已经标记侵权，请人工确认是否已经提报。&amp;#039;, &amp;#039;頁面已經標記侵權，請人工確認是否已經提報。&amp;#039;));&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	main: function(pageobj) {&lt;br /&gt;
		// this is coming in from lookupCreation...!&lt;br /&gt;
		var params = pageobj.getCallbackParameters();&lt;br /&gt;
		var initialContrib = pageobj.getCreator();&lt;br /&gt;
&lt;br /&gt;
		// Adding discussion&lt;br /&gt;
		var wikipedia_page = new Morebits.wiki.page(params.logpage, 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.copyvio.callbacks.copyvioList);&lt;br /&gt;
&lt;br /&gt;
		// Notification to first contributor&lt;br /&gt;
		if (params.notify) {&lt;br /&gt;
			Morebits.wiki.flow.check(&amp;#039;User talk:&amp;#039; + initialContrib, function () {&lt;br /&gt;
				var flowpage = new Morebits.wiki.flow(&amp;#039;User talk:&amp;#039; + initialContrib, wgULS(&amp;#039;通知页面创建者（&amp;#039;, &amp;#039;通知頁面建立者（&amp;#039;) + initialContrib + &amp;#039;）&amp;#039;);&lt;br /&gt;
				var topic = &amp;#039;您建立的页面[[&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;) + &amp;#039;]]可能侵犯版权&amp;#039;;&lt;br /&gt;
				var content = &amp;#039;{{subst:CopyvioNotice|&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;) + &amp;#039;|flow=yes}}&amp;#039;;&lt;br /&gt;
				flowpage.setTopic(topic);&lt;br /&gt;
				flowpage.setContent(content);&lt;br /&gt;
				flowpage.newTopic();&lt;br /&gt;
			}, function () {&lt;br /&gt;
				var usertalkpage = new Morebits.wiki.page(&amp;#039;User talk:&amp;#039; + initialContrib, wgULS(&amp;#039;通知页面创建者（&amp;#039;, &amp;#039;通知頁面建立者（&amp;#039;) + initialContrib + &amp;#039;）&amp;#039;);&lt;br /&gt;
				var notifytext = &amp;#039;\n{{subst:CopyvioNotice|&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;) + &amp;#039;}}&amp;#039;;&lt;br /&gt;
				usertalkpage.setAppendText(notifytext);&lt;br /&gt;
				usertalkpage.setEditSummary(wgULS(&amp;#039;通知：页面[[&amp;#039;, &amp;#039;通知：頁面[[&amp;#039;) + mw.config.get(&amp;#039;wgPageName&amp;#039;) + wgULS(&amp;#039;]]疑似侵犯著作权&amp;#039;, &amp;#039;]]疑似侵犯版權&amp;#039;));&lt;br /&gt;
				usertalkpage.setChangeTags(Twinkle.changeTags);&lt;br /&gt;
				usertalkpage.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
				usertalkpage.setWatchlist(Twinkle.getPref(&amp;#039;copyvioWatchUser&amp;#039;));&lt;br /&gt;
				usertalkpage.setFollowRedirect(true, false);&lt;br /&gt;
				usertalkpage.append();&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	taggingArticle: function(pageobj) {&lt;br /&gt;
		var params = pageobj.getCallbackParameters();&lt;br /&gt;
		var revisionId = mw.config.get(&amp;#039;wgRevisionId&amp;#039;) || mw.config.get(&amp;#039;wgDiffNewId&amp;#039;) || mw.config.get(&amp;#039;wgCurRevisionId&amp;#039;);&lt;br /&gt;
		var tag = &amp;#039;{{subst:Copyvio/auto|url=&amp;#039; + params.source.replace(/http/g, &amp;#039;&amp;amp;#104;ttp&amp;#039;).replace(/\n+/g, &amp;#039;\n&amp;#039;).replace(/^\s*([^*])/gm, &amp;#039;* $1&amp;#039;).replace(/^\* $/m, &amp;#039;&amp;#039;) + &amp;#039;|OldRevision=&amp;#039; + revisionId + &amp;#039;}}&amp;#039;;&lt;br /&gt;
		var text = pageobj.getPageText();&lt;br /&gt;
		var oldcsd = text.match(/\{\{\s*(db(-\w*)?|d|delete)\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\}/i);&lt;br /&gt;
		if (oldcsd &amp;amp;&amp;amp; confirm(wgULS(&amp;#039;在页面上找到快速删除模板，要保留吗？\n\n当页面同时侵犯著作权又符合快速删除标准时，应该优先走快速删除程序。\n单击“确认”以保留快速删除模板，若您认为快速删除理由不合，单击“取消”以移除快速删除模板。&amp;#039;, &amp;#039;在頁面上找到快速刪除模板，要保留嗎？\n\n當頁面同時侵犯版權又符合快速刪除標準時，應該優先走快速刪除程序。\n點擊「確認」以保留快速刪除模板，若您認為快速刪除理由不合，點擊「取消」以移除快速刪除模板。&amp;#039;))) {&lt;br /&gt;
			tag = oldcsd[0] + &amp;#039;\n&amp;#039; + tag;&lt;br /&gt;
		}&lt;br /&gt;
		if (params.g5 || params.g16) {&lt;br /&gt;
			var speedyTag = &amp;#039;{{delete&amp;#039;;&lt;br /&gt;
			if (params.g5) {&lt;br /&gt;
				speedyTag += &amp;#039;|g5&amp;#039;;&lt;br /&gt;
				if (params.g5_pagename) {&lt;br /&gt;
					speedyTag += &amp;#039;|&amp;#039; + params.g5_pagename + &amp;#039;|c1=[[Special:Undelete/&amp;#039; + params.g5_pagename + &amp;#039;]]&amp;#039;;&lt;br /&gt;
				} else {&lt;br /&gt;
					speedyTag += &amp;#039;|c1=[[Special:Undelete/&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;) + &amp;#039;]]&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			if (params.g16) {&lt;br /&gt;
				speedyTag += &amp;#039;|g16|&amp;#039; + params.g16_pagename;&lt;br /&gt;
			}&lt;br /&gt;
			speedyTag += &amp;#039;}}&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
			tag = speedyTag + &amp;#039;\n&amp;#039; + tag;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		pageobj.setPageText(tag);&lt;br /&gt;
		pageobj.setEditSummary(wgULS(&amp;#039;本页面疑似侵犯著作权&amp;#039;, &amp;#039;本頁面疑似侵犯版權&amp;#039;));&lt;br /&gt;
		pageobj.setChangeTags(Twinkle.changeTags);&lt;br /&gt;
		pageobj.setWatchlist(Twinkle.getPref(&amp;#039;copyvioWatchPage&amp;#039;));&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;markCopyvioPagesAsPatrolled&amp;#039;)) {&lt;br /&gt;
			pageobj.patrol();&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	copyvioList: function(pageobj) {&lt;br /&gt;
		var text = pageobj.getPageText();&lt;br /&gt;
		var output = &amp;#039;&amp;#039;;&lt;br /&gt;
		var date = new Date();&lt;br /&gt;
&lt;br /&gt;
		var dateHeaderRegex = new RegExp(&amp;#039;^===+\\s*&amp;#039; + (date.getUTCMonth() + 1) + &amp;#039;月&amp;#039; + date.getUTCDate() + &amp;#039;日&amp;#039; +&lt;br /&gt;
			&amp;#039;\\s*===+&amp;#039;, &amp;#039;mg&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		if (!dateHeaderRegex.exec(text)) {&lt;br /&gt;
			output = &amp;#039;\n\n===&amp;#039; + (date.getUTCMonth() + 1) + &amp;#039;月&amp;#039; + date.getUTCDate() + &amp;#039;日&amp;#039; + &amp;#039;===&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		output += &amp;#039;\n{{subst:CopyvioVFDRecord|&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;) + &amp;#039;}}&amp;#039;;&lt;br /&gt;
		pageobj.setAppendText(output);&lt;br /&gt;
		pageobj.setEditSummary(&amp;#039;加入[[&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;) + &amp;#039;]]&amp;#039;);&lt;br /&gt;
		pageobj.setChangeTags(Twinkle.changeTags);&lt;br /&gt;
		pageobj.setCreateOption(&amp;#039;recreate&amp;#039;);&lt;br /&gt;
		pageobj.append();&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Twinkle.copyvio.callback.evaluate = function(e) {&lt;br /&gt;
	var params = Morebits.quickForm.getInputData(e.target);&lt;br /&gt;
&lt;br /&gt;
	if (!params.source.trim()) {&lt;br /&gt;
		alert(wgULS(&amp;#039;请指定侵权来源&amp;#039;, &amp;#039;請指定侵權來源&amp;#039;));&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if (params.g16 &amp;amp;&amp;amp; !params.g16_pagename.trim()) {&lt;br /&gt;
		alert(wgULS(&amp;#039;请提供G16已提报侵权的页面名称&amp;#039;, &amp;#039;請提供G16已提報侵權的頁面名稱&amp;#039;));&lt;br /&gt;
		return;&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;
	params.logpage = &amp;#039;Wikipedia:頁面存廢討論/疑似侵權&amp;#039;;&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 = mw.config.get(&amp;#039;wgPageName&amp;#039;);&lt;br /&gt;
	Morebits.wiki.actionCompleted.notice = wgULS(&amp;#039;提报完成，将在几秒内刷新页面&amp;#039;, &amp;#039;提報完成，將在幾秒內重新整理頁面&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	// Tagging file&lt;br /&gt;
	var wikipedia_page = new Morebits.wiki.page(mw.config.get(&amp;#039;wgPageName&amp;#039;), wgULS(&amp;#039;加入侵权模板到页面&amp;#039;, &amp;#039;加入侵權模板到頁面&amp;#039;));&lt;br /&gt;
	wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
	wikipedia_page.load(Twinkle.copyvio.callbacks.tryTagging);&lt;br /&gt;
&lt;br /&gt;
	Morebits.wiki.removeCheckpoint();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.addInitCallback(Twinkle.copyvio, &amp;#039;copyvio&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>