User:Wetitpig0/OnlineOffline.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
(function($, mw) {
// 只在用户或用户讨论名字空间显示
var username = mw.config.get('wgRelevantUserName');
if ( username ) {
var msg = '';
var string;
// 需要元素
var div = document.getElementById('content').insertBefore(document.createElement('div'), document.getElementById('bodyContent'));
div.style.display = "none";
div.id = 'mw-status';
div.align = 'right';
div.appendChild(document.createTextNode('在綫情況:'));
var img = div.appendChild(document.createElement('img'));
var showtime = false;
var api = new mw.Api();
// API:RecentChanges
api.get({
format: 'json',
action: 'query',
list: 'usercontribs|logevents|blocks',
ucuser: username,
leuser: username,
bkusers: username,
ucprop: 'timestamp',
leprop: 'timestamp',
uclimit: 1,
lelimit: 1,
bklimit: 1
}).done(function (data) {
img.src = "/media/wikipedia/commons/";
var time = data.query;
// 被封禁
if ( time.blocks.length === 1 ) {
// 被永久封禁
if ( time.blocks[0].expiry === "infinity" ) {
img.src += "5/50/Less_Icon_C.svg";
msg = "已被永久封禁";
}
// 被暫時封禁
else {
img.src += "f/f5/No_Cross.svg";
msg = "已被封禁;";
string = "封禁截止時間:";
string += time.blocks[0].expiry.replace("T", " ").replace("Z", "");
showtime = true;
}
}
// 未被封禁
else {
// 從未在綫IP用戶
if ( ( time.usercontribs.length + time.logevents.length ) === 0 ) {
img.src += "2/27/Disc_Plain_black.svg";
msg = "從未在綫 (IP用戶)";
}
// 只創建賬號的用戶
else if ( time.usercontribs.length === 0 ) {
img.src += "2/27/Disc_Plain_black.svg";
msg = "未曾上綫的新用戶";
}
else {
string = "上綫時間:";
showtime = true;
if ( time.logevents.length === 0 ) {
time.logevents[0] = {"timestamp": 1};
}
// 比較大小
var hist = ( time.usercontribs[0].timestamp > time.logevents[0].timestamp ? new Date(time.usercontribs[0].timestamp) : new Date(time.logevents[0].timestamp) );
var diff = ( new Date().getTime() ) - hist.getTime();
// 最後更改時間
string += hist.toISOString().replace("T", " ").split(".")[0];
// 離綫用紅點,可能離綫用黃點,在綫用綠點,非活躍用戶用藍點
if ( diff < 300000 ) {
img.src += "7/74/Disc_Plain_green.svg";
msg = "在綫;";
}
else if ( diff < 600000 ) {
img.src += "7/75/Disc_Plain_yellow_dark.svg";
msg = "可能在綫;";
string = "最後" + string;
}
else if ( diff > 2592000000 ) {
img.src += "0/02/Disc_Plain_blue.svg";
msg = "非活躍;";
string = "最後" + string;
}
else {
img.src += "1/13/Disc_Plain_red.svg";
msg = "離綫;";
string = "最後" + string;
}
}
}
var p = document.createElement("p");
p.innerHTML = msg;
if ( showtime )
p.innerHTML += "<br/>" + string + " (UTC)";
p.innerHTML += "<br/>(<a href='http://zh.wikipedia.org/w/index.php?title=User_talk:" + username + "' target='_blank' title='留言'>留言</a>)";
img.onclick = function () {
mw.notify(p);
};
img.width = img.height = 25;
img.alt = msg;
div.style.display = "block";
});
}
})(jQuery, mw);