User:Ou0430/Friendly/friendlyicv.js

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
// If FriendlyConfig aint exist.
if( typeof( FriendlyConfig ) == 'undefined' ) {
	FriendlyConfig = {};
}

/**
 FriendlyConfig.summaryAd ( string )
 If ad should be added or not to summary, default [[WP:FRIENDLY|Friendly]]
 */
if( typeof( FriendlyConfig.summaryAd ) == 'undefined' ) {
	FriendlyConfig.summaryAd = " 通過[[WP:FRIENDLY|Friendly]]";
}
 
/**
 FriendlyConfig.markCopyvioAsMinor ( boolean )
 */
if( typeof( FriendlyConfig.markCopyvioAsMinor ) == 'undefined' ) {
	FriendlyConfig.markCopyvioAsMinor = false;
}


/**
 FriendlyConfig.markCopyvioAsPatrolled ( boolean )
 */
//if( typeof( FriendlyConfig.markCopyvioAsPatrolled ) == 'undefined' ) {
//	FriendlyConfig.markCopyvioAsPatrolled = true;
//}
 
/**
 FriendlyConfig.autoNotifyCopyvio ( boolean )
 */
if( typeof( FriendlyConfig.autoNotifyCopyvio ) == 'undefined' ) {
	FriendlyConfig.autoNotifyCopyvio = true;
}

/**
 FriendlyConfig.autoReportCopyvio ( boolean )
 */
if( typeof( FriendlyConfig.autoReportCopyvio ) == 'undefined' ) {
	FriendlyConfig.autoReportCopyvio = true;
}

$(friendlyicv);

function friendlyicv() {
	if( wgNamespaceNumber == 6 ) {
		twAddPortletLink( "javascript:friendlyicv.callback()", wgULS("图版","圖版"), "friendly-icv", wgULS("提報圖片侵權","提報圖片侵權"), "");
	}
}

friendlyicv.callback = function friendlyicvCallback( uid ) {
	var Window = new SimpleWindow( 600, 200 );
	Window.setTitle( "圖片疑似侵權" );
	var form = new QuickForm( friendlyicv.callback.evaluate , 'change' );

	form.append( { type:'header', label:'Click on a statement to submit' } );

	form.append ( {
		type: 'radio',
		name: 'icv',
			list: [
				{ 
				label: '缺少來源',
				value: 'source',
				},
				{ 
				label: '缺少版權信息',
				value: 'license', 
				}
			]
	} );
 
	var result = form.render();
	Window.setContent( result );
	Window.display();
}

friendlyicv.callbacks = {
		main: function( self ) {
			++Wikipedia.numberOfActionsLeft;
			var xmlDoc = self.responseXML;
			var exists = xmlDoc.evaluate( 'boolean(//pages/page[not(@missing)])', xmlDoc, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue;
			if( ! exists ) {
				self.statelem.error( "似乎文件並不存在,可能已被刪除?" );
				return;
			}
			var query = { 
				'title': wgPageName, 
				'action': 'submit'
			};

			var wikipedia_wiki = new Wikipedia.wiki( '標記頁面', query, friendlyicv.callbacks.tagPage );
			wikipedia_wiki.params = self.params;
			wikipedia_wiki.followRedirect = false;
			wikipedia_wiki.get();
		},
		tagPage: function( self ) {
			form = this.responseXML.getElementById( 'editform' );
 
			var code;
			code = "\{\{subst:No " + self.params.value + "/auto\}\}\n";
 
			/*
			if( FriendlyConfig.markCopyvioAsPatrolled && self.params.rcid != '' ) {
				var query = {
					'title': wgPageName,
					'action': 'markpatrolled',
					'rcid': self.params.rcid
				};
 
				var wikipedia_wiki = new Wikipedia.wiki( '標記頁面為已巡查', query );
				wikipedia_wiki.post();
			}
			*/

			var query = {
				'action': 'query',
				'prop': 'revisions',
				'titles': wgPageName,
				'rvlimit': 1,
				'rvprop': 'user',
				'rvdir': 'newer'
			}
			var callback = function( self ) {
				var xmlDoc = self.responseXML;
				var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
				if( wgPageName != ( 'User talk:' + user ) ) {
					var query = {
						'title': 'User talk:' + user,
						'action': 'submit'
					};
					var wikipedia_wiki = new Wikipedia.wiki( '通知上傳者 (' + user + ')', query, friendlyicv.callbacks.userNotification );
					wikipedia_wiki.params = self.params;
					wikipedia_wiki.get();
				} else {
					Status.info( '信息', '當前頁面為上傳者討論頁,取消通知。' );
				}
			}
 
			if( self.params.usertalk ) {
				var wikipedia_api = new Wikipedia.api( '抓上傳者信息', query, callback );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
 
			var postData = {
				'wpMinoredit': FriendlyConfig.markCopyvioAsMinor ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': '',
				'wpSummary': "標記文件為可能侵犯版權" + FriendlyConfig.summaryAd,
				'wpTextbox1': code + form.wpTextbox1.value
			};
			self.post( postData );

			var querywp = {
				'action': 'query',
				'prop': 'revisions',
				'titles': wgPageName,
				'rvlimit': 1,
				'rvprop': 'user',
				'rvdir': 'newer'
			}
			var callback = function( self ) {
				var xmlDoc = self.responseXML;
				var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
				if( wgPageName != ( 'Wikipedia:頁面存廢討論/疑似侵權' ) ) {
					var query = {
						'title': 'Wikipedia:檔案存廢討論/無版權訊息或檔案來源',
						'action': 'submit'
					};
					var wikipedia_wiki = new Wikipedia.wiki( '報告給 WP:ICV', query, friendlyicv.callbacks.reportIcv);
					wikipedia_wiki.params = self.params;
					wikipedia_wiki.get();
				} else {
					Status.info( '信息', '當前頁面為報告頁,取消報告' );
				}
			}
 
			if( self.params.toreport ) {
				var wikipedia_api = new Wikipedia.api( '抓報告頁信息', query, callback );
				wikipedia_api.params = self.params;
				wikipedia_api.post();
			}
 
			var postData = {
				'wpMinoredit': FriendlyConfig.markCopyvioAsMinor ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': '',
				'wpSummary': "標記文件為可能侵犯版權" + FriendlyConfig.summaryAd,
				'wpTextbox1': code + form.wpTextbox1.value
			};
			self.post( postData );
		},
		userNotification: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			if( text == '\n' ) {
				text += "\{\{subst:welcome\}\}"
			}
			text += "\n\{\{subst:Uploadvionotice|" + wgPageName + "\}\}--\~\~\~\~";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': '',
				'wpSummary': '通知: 文件 \[\[' + wgPageName + '\]\] 可能侵犯版權' + FriendlyConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		},

		reportIcv: function( self ) {
			var form = self.responseXML.getElementById( 'editform' );
			var text = form.wpTextbox1.value;
			text += "\*\[\[:" + wgPageName + "\]\]--\~\~\~\~";
			var postData = {
				'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
				'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
				'wpStarttime': form.wpStarttime.value,
				'wpEdittime': form.wpEdittime.value,
				'wpAutoSummary': form.wpAutoSummary.value,
				'wpEditToken': form.wpEditToken.value,
				'wpSection': '',
				'wpSummary': '報告: 文件 \[\[' + wgPageName + '\]\] 可能侵犯版權' + FriendlyConfig.summaryAd,
				'wpTextbox1': text
			};
			self.post( postData );
		}
}

friendlyicv.callback.evaluate = function friendlyicvCallbackEvaluate(e) {
	wgPageName = wgPageName.replace( /_/g, ' ' );
	var value = e.target.value;
 
	var params = {
		value:value,
		usertalk: FriendlyConfig.autoNotifyCopyvio != -1,
		toreport: FriendlyConfig.autoReportCopyvio != -1,
		rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : ''
	};
 
	Status.init( e.target.form );
 
	Wikipedia.actionCompleted.redirect = wgPageName;
	Wikipedia.actionCompleted.notice = "完成";
 
	var query = {
		'action': 'query',
		'titles': wgPageName
	}
 
	var wikipedia_api = new Wikipedia.api( '檢查頁面是否存在', query, friendlyicv.callbacks.main );
	wikipedia_api.params = params;
	wikipedia_api.post();
}