用戶: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);
} );