用戶:H78c67c/easyclean.js

來自維基辭典

注意:喺發布之後,你可能要先略過你嘅瀏覽器快取去睇到更改。

  • Firefox / Safari:㩒住Shift掣再撳重新載入,又或者㩒Ctrl-F5或者Ctrl-R(喺Mac㩒Command-R掣)
  • Google Chrome:Ctrl-Shift-R(喺Mac㩒Command-R掣)
  • Internet Explorer / Edge:㩒住Ctrl掣再撳重新整理,又或者㩒Ctrl-F5
  • Opera:Ctrl-F5
messages = {
	'en': {
		'error': 'Error: ',
		'easyclean-link': 'EasyClean',
		'easyclean-tooltip': 'Clean up this page with EasyClean',
		'easyclean-noproblem': 'EasyClean did not spot any problems with the wikitext of this page. Yay!',
		'easyclean-problemsfound': 'Problems found! Click OK to fix.'
	},
	'yue': {
		'error': '錯:',
		'easyclean-link': 'EasyClean',
		'easyclean-tooltip': '用EasyClean來執拾呢版',
		'easyclean-noproblem': 'EasyClean喺呢版入面搵唔到同wikitext相關嘅問題。好嘢!',
		'easyclean-problemsfound': 'Problems found! Click「好」to fix.'
	}
};
mw.messages.set(messages['en']);
var lang = mw.config.get('wgUserLanguage');
if (lang && lang != 'en' && lang in messages) {
    mw.messages.set(messages[lang]);
}
mw.loader.using( ['oojs-ui-core', 'oojs-ui-windows'] ).done( function () {
	function ECfix(newtext) {
		newtext = newtext.replace(/\[\[(.*)\|\1\]\]/g,"[[$1]]");
		newtext = newtext.replace(/<big><big>(.*)<\/big><\/big>/gi,"{{big|$1}}");
		newtext = newtext.replace(/\[\[(Category|分?類):!Main category\|?.*?\]\]/,"");
		newtext = newtext.replace(/{{lang-([a-z]+)}}/g,"== {{langue|$1}} ==");
		newtext = newtext.replace(/: ?{{新法蘭西\|.+\|.+}}\n/g,"");
		$.ajax({
			url: mw.util.wikiScript( 'api' ),
			data: {
				format: 'json',
				action: 'edit',
				title: mw.config.get('wgPageName'),
				summary: "[[:用戶:H78c67c/easyclean.js|清理]]",
				text: newtext,
				token: mw.user.tokens.get('csrfToken')
			},
			dataType: 'json',
			type: 'POST',
			success: function( data ) {
				if ( data && data.edit && data.edit.result == 'Success' ) {
					OO.ui.alert("EasyClean successful, reloading...");
					window.location.reload(); // reload page if edit was successful
				} else if ( data && data.error ) {
					OO.ui.alert( mw.message('error').plain()+'API returned error code "' + data.error.code + '":' + data.error.info );
				} else {
					OO.ui.alert( mw.message('error').plain()+'Unknown result from API.' );
				}
			},
			error: function( xhr ) {
				OO.ui.alert( mw.message('error').plain()+'請求失敗' );
			}
		});
	}
	function checkNeedEC() {
		jQuery.getJSON(
			mw.util.wikiScript('api'),
			{
				"action": "parse",
				"format": "json",
				"page": mw.config.get('wgPageName'),
				"prop": "wikitext",
				"formatversion": "2"
			},
			function (data) {
				if([/\[\[(.*)\|\1\]\]/, /<big><big>(.*)<\/big><\/big>/, /\[\[(Category|分?類):!Main category\|?.*?\]\]/, /{{lang-[a-z]{2,3}}}/].some(r => r.test(data["parse"]["wikitext"]))){
					OO.ui.confirm(mw.message('easyclean-problemsfound').plain()).done(function(confirmed){
						if(confirmed){ECfix(data["parse"]["wikitext"]);}
					});
				}else{
					OO.ui.alert(mw.message('easyclean-noproblem').plain());
				}
			}
		);
	}
	var link = mw.util.addPortletLink(
		'p-views',
		'#',
		mw.message('easyclean-link').plain(),
		't-easycleangadget',
		mw.message('easyclean-tooltip').plain(),
		'/',
		'#ca-history'
	);
	$(link).click( function( e ) {
		e.preventDefault();
		checkNeedEC();
	});
	var ecVerMsg = new OO.ui.MessageWidget( {
		type: 'success',
		label: 'EasyClean v1.0 has been installed!'
	} );
	$('#easyclean-ver-info').html(ecVerMsg.$element);
} );