巡查员
1,548
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(// Edit via Wikiplus) |
(// Edit via Wikiplus) |
||
| 第79行: | 第79行: | ||
} | } | ||
}; | }; | ||
// Callback: receive data and mark links | |||
function markLinks(resp, status, xhr) { | |||
serverTime = new Date(xhr.getResponseHeader('Date')); | |||
var list, | |||
blk, | |||
tip, | |||
links, | |||
lnk, | |||
blTime; | |||
if (!resp || !(list = resp.query) || !(list = list.blocks)) return; | |||
for (var i = 0; i < list.length; i++) { | |||
blk = list[i]; | |||
var partial = blk.restrictions && !Array.isArray(blk.restrictions); //Partial block | |||
if (/^in/.test(blk.expiry)) { | |||
clss = partial ? 'user-blocked-partial' : 'user-blocked-indef'; | |||
blTime = blk.expiry; | |||
} else { | |||
clss = partial ? 'user-blocked-partial' : 'user-blocked-temp'; | |||
blTime = inHours(parseTS(blk.expiry) - parseTS(blk.timestamp)); | |||
} | |||
tip = mbTooltip; | |||
if (partial) tip = mbTooltipPartial; | |||
tip = tip.replace('$1', blTime).replace('infinity', mbInfinity) | |||
.replace('$2', blk.by) | |||
.replace('$3', blk.reason) | |||
.replace('$4', inHours(serverTime - parseTS(blk.timestamp))); | |||
links = userLinks[blk.user]; | |||
for (var k = 0; links && k < links.length; k++) { | |||
lnk = $(links[k]); | |||
lnk = lnk.addClass(clss); | |||
if (window.mbTipBox) { | |||
$('<span class=user-blocked-tipbox>#</span>').attr('title', tip).insertBefore(lnk); | |||
} else { | |||
lnk.attr('title', lnk.attr('title') + tip); | |||
} | |||
} | |||
} | |||
if (--apiRequests === 0) { // last response | |||
setCSS('', 'markBlockedStyle-2', 'remove'); | |||
$('#ca-showblocks').parent().remove(); // remove added portlet link | |||
} | |||
} | |||
// --------AUX functions | |||
// 避免标签爆炸(mw.hook导致重复添加样式表) | |||
function setCSS(css, id, method) { | |||
var style = document.createElement('style'); | |||
switch (method) { | |||
case 'add': | |||
if (document.getElementById(id)) | |||
return; | |||
style.id = id; | |||
style.appendChild(document.createTextNode(css)); | |||
document.head.appendChild(style); | |||
break; | |||
case 'remove': | |||
document.getElementById(id) && $('#' + id).remove(); // 原生document.getElementById(id).remove()方法不兼容IE | |||
break; | |||
default: | |||
return; | |||
} | |||
} | |||
// 20081226220605 or 2008-01-26T06:34:19Z -> date | |||
function parseTS(ts) { | |||
var m = ts.replace(/\D/g, '').match(/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/); | |||
return new Date(Date.UTC(m[1], m[2] - 1, m[3], m[4], m[5], m[6])); | |||
} | |||
function inHours(ms) { // milliseconds -> "2:30" or 5,06d or 21d | |||
var mm = Math.floor(ms / 60000); | |||
if (!mm) return Math.floor(ms / 1000) + '秒'; | |||
var hh = Math.floor(mm / 60); | |||
mm = mm % 60; | |||
var dd = Math.floor(hh / 24); | |||
hh = hh % 24; | |||
if (dd) { | |||
if (dd < 10 && hh) return dd + '日' + hh + '小时'; | |||
return dd + '日'; | |||
} | |||
return hh + '小时' + zz(mm) + '分'; | |||
} | |||
function zz(v) { // 6 -> '06' | |||
if (v <= 9) v = '0' + v; | |||
return v; | |||
} | |||
} // -- end of main function | |||
mw.hook('wikipage.content').add(function(e) { | mw.hook('wikipage.content').add(function(e) { | ||
if (e.attr('id') === 'mw-content-text') { | if (e.attr('id') === 'mw-content-text') { | ||