User:Ou0430/Friendly/friendlynotify.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 = " using [[WP:FRIENDLY|Friendly]]";
}
 
/**
 FriendlyConfig.markNotifyAsMinor ( boolean )
 */
if( typeof( FriendlyConfig.markNotifyAsMinor ) == 'undefined' ) {
	FriendlyConfig.markNotifyAsMinor = false;
}
 
/**
 FriendlyConfig.insertSignature ( boolean )
 */
if( typeof( FriendlyConfig.insertSignature ) == 'undefined' ) {
	FriendlyConfig.insertSignature = true;
}
 
$(friendlynotify);
 
function friendlynotify() {
	if( wgNamespaceNumber == 3 ) {
		var username = wgTitle.split( '/' )[0].replace( /\"/, "\\\""); // only first part before any slashes
 
		twAddPortletLink( 'p-cactions', "javascript:friendlynotify.callback(\"" + username + "\")", wgULS("通知","通知"), "friendly-notify", wgULS("發表打包通告","發表打包通告"), "");
	}
}
 
friendlynotify.callback = function friendlynotifyCallback( uid ) {
	if( uid == wgUserName ){
		alert( 'You can\'t notify yourself.' );
		return;
	}
 
	var Window = new SimpleWindow( 600, 350 );
	Window.setTitle( "Notify" ); 
	var form = new QuickForm( friendlynotify.callback.evaluate );
 
	form.append( {
		type: 'textarea',
		label: 'Notify',
		name: 'template'
	} );

	form.append( { type:'header', label:'Settings' } );
	form.append( { type:'checkbox', name: 'settings', list: friendlynotify.settingsList } );

	form.append( { type:'submit' } );
 
	var result = form.render();
	Window.setContent( result );
	Window.display();
}

friendlynotify.settingsList = [
	//{
	//	label: '模板信息(請不要插入\{\{\}\}和subst:,程序將自動替換引用)',
	//	value: 'istemp',
	//	checked: true
	//},
	{
		label: 'Add sign',
		value: 'issign',
		checked: FriendlyConfig.insertSignature
	}
];

friendlynotify.callbacks = {
	main: function( self ) {
		self.statelem.status( 'Grabbing edit token...' );
		var xmlDoc = self.responseXML;
		var editToken = xmlDoc.evaluate( '//page/@edittoken', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
		//var btemp = false;
		var bsign = false;

		for( var i = 0; i < self.params.tags.length; i++ ) {
			/*if( self.params.tags[i] == 'istemp' ) {
				btemp = true;
			} else*/ if( self.params.tags[i] == 'issign' ) {
				bsign = true;
			}
		}

		//if( btemp ) {
			var text = '\{\{subst:' + self.params.template + '\}\}';
		//} else {
		//	var text = self.params.template;
		//}

		if( bsign ) {
			text += '--\~\~\~\~';
		}
 
		var query = {
			'action': 'edit',
			'title': wgPageName,
			'section': 'new',
			'text': text,
			'token': editToken,
			'summary': '',
			'minor': FriendlyConfig.markNotifyAsMinor ? 1 : undefined
		};
 
		var wikipedia_api = new Wikipedia.api( 'Edit token grabbed; adding notification to user talk page...', query, null, self.statelem );
		wikipedia_api.post();
	}
}
 
friendlynotify.callback.evaluate = function friendlynotifyCallbackEvaluate(e) { 
	var params = {
		tags: e.target.getChecked('settings'),
		template: e.target.template.value
	};
 
	Status.init( e.target );
 
	Wikipedia.actionCompleted.redirect = wgPageName;
	Wikipedia.actionCompleted.notice = "Notification complete; reloading talk page in a few seconds";
 
	var query = {
		'action': 'query',
		'prop': 'info',
		'intoken': 'edit',
		'titles': wgPageName
	};
 
	var wikipedia_api = new Wikipedia.api( 'Status', query, friendlynotify.callbacks.main );
	wikipedia_api.params = params;
	wikipedia_api.post();
}