MediaWiki:Gadget-ProofreadHelper.js
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:按 Ctrl-F5。
//<nowiki>
// 这个工具是由Midleading制作的,并参考了一下HotCat.js。该工具使用GPLv3授权。
( function($, mw){
// Don't use mw.config.get() as that takes a copy of the config, and so doesn't
// account for values changing, e.g. wgCurRevisionId after a VE edit
var conf = mw.config.values;
if(conf.wgNamespaceNumber != 104) //非Page页面
return;
if(conf.wgAction != "view") //仅编辑页面可用此工具
return;
if(!conf.wgIsArticle) //特殊页面无需此工具
return;
if(!conf.wgIsProbablyEditable) //已保护页面不可编辑
return;
if(conf.prpPageQuality===undefined || conf.prpPageQualityUser===undefined) //非Page页面
return;
if(conf.prpPageQualityUser===conf.wgUserName && conf.prpPageQuality===3 || !(conf.prpPageQuality===1 || conf.prpPageQuality===2))
return;
function run() {
var url = conf.wgServer + conf.wgScriptPath + "/api.php?format=json&formatversion=2&callback=proofreadHelper.start&action=query&titles=" + encodeURIComponent(conf.wgPageName) + "&prop=info%7Crevisions&rvprop=content%7Ctimestamp%7Cids&rvslots=main&rvlimit=1&rvstartid="+conf.wgCurRevisionId;
var s=document.createElement("script");
s.src=url;
s.type="text/javascript";
window.proofreadHelper = {
msg: {
"s_checked":"改为已校对",
"s_verified":"改为已核对",
"s_checked_s":"用[[Wikisource:校对助手|校对助手]]将页面的[[Wikisource:正文品质|校对状态]]改为已校对",
"s_verified_s":"用[[Wikisource:校对助手|校对助手]]将页面的[[Wikisource:正文品质|校对状态]]改为已核对",
"s_e":"发生了错误,因此没有保存您的编辑",
"t_checked":"改爲已校對",
"t_verified":"改爲已認證",
"t_checked_s":"用[[Wikisource:校对助手|校對助手]]將頁面的[[Wikisource:正文品质|校對狀態]]改爲已校對",
"t_verified_s":"用[[Wikisource:校对助手|校對助手]]將頁面的[[Wikisource:正文品质|校對狀態]]改爲已認證",
"t_e":"發生了錯誤,因此没有保存您的編輯"
},
t: function(m){
if(conf.wgUserLanguage=="zh-hant"||conf.wgUserLanguage=="zh-tw"||conf.wgUserLanguage=="zh-hk"){
return window.proofreadHelper.msg["t_"+m];
}else{
return window.proofreadHelper.msg["s_"+m];
}
},
go: function(){
var request = null;
try {
request = new window.XMLHttpRequest();
}catch(anything){
if(window.ActiveXObject){
try{
request=new window.ActiveXObject('Microsoft.XMLHTTP');
}catch(any){}
}
}
if(!request){
proofreadHelper.error();
return;
}
request.open("POST", conf.wgServer + conf.wgScriptPath + "/api.php", true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.onreadystatechange=function(){
if(request.readyState!==4) return;
if(request.status!==200 || !request.responseText){
proofreadHelper.error();
return;
}
window.location.reload();
};
var args="format=json&action=edit&pageid=" + conf.wgArticleId + "&minor=1&bot=1&summary=" + encodeURIComponent(proofreadHelper.summary) + "&text=" + encodeURIComponent(proofreadHelper.wikitext) + "&token=" + encodeURIComponent(mw.user.tokens.values.csrfToken);
request.send(args);
},
error: function() {
alert(window.proofreadHelper.t("e"));
window.location.reload();
},
start: function(json){
var page1 = json.query.pages[0];
var page = page1.revisions[0];
if(page.slots.main.contentmodel!="proofread-page") //不是页面页面
return;
proofreadHelper.wikitext = page.slots.main.content;
var pagequalitymatch = /<noinclude><pagequality level="(\d)" user="(.+?)" ?\/>/;
var pagequality = pagequalitymatch.exec(proofreadHelper.wikitext);
if(pagequality===null)
return;
var atext;
var newquality;
switch(pagequality[1])
{
case "1": //未校对
case "2": //有问题
atext=window.proofreadHelper.t("checked");
newquality = "3";
proofreadHelper.summary=window.proofreadHelper.t("checked_s");
break;
case "3": //已校对
if(pagequality[2]!=conf.wgUserName){
atext=window.proofreadHelper.t("verified");
proofreadHelper.summary=window.proofreadHelper.t("verified_s");
newquality = "4";
}else{ //自己不能将页面改为已核对
return;
}
break;
default: //已核对、没有文字
return;
}
proofreadHelper.wikitext = proofreadHelper.wikitext.replace(pagequalitymatch, "<noinclude><pagequality level=\"" + newquality + "\" user=\"" + mw.util.wikiUrlencode(conf.wgUserName) + "\" />");
if(page.timestamp)
proofreadHelper.pageTime = page.timestamp.replace(/\D/g,'');
var submitbtn = document.createElement("input");
submitbtn.type="button";
submitbtn.value=atext;
submitbtn.onclick=proofreadHelper.go;
submitbtn.style.float="right";
document.getElementById("mw-content-text").firstChild.firstChild.firstChild.appendChild(submitbtn);
},
wikitext:"",
summary:"",
pageTime: ""
};
document.head.appendChild(s); //启动
}
var start = function() {
$(run);
};
mw.loader.using('user', start, start);
} (jQuery, mediaWiki) );
//</nowiki>