User:WhitePhosphorus/js/PagePatroller.js: Difference between revisions
Content added Content deleted
mNo edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
* Showing patroller on the bottom of the page. |
* Showing patroller on the bottom of the page. |
||
* |
* |
||
* @version 0. |
* @version 0.1 (2017-05-06) |
||
* @author [[User:WhitePhosphorus]] |
* @author [[User:WhitePhosphorus]] |
||
*/ |
*/ |
||
(function($, mw) { |
(function($, mw) { |
||
wgUVS = function(a, b) { |
|||
return a; |
|||
}; |
|||
'use strict'; |
'use strict'; |
||
Line 26: | Line 22: | ||
data: { |
data: { |
||
action: 'query', |
action: 'query', |
||
titles: mw.config.get('wgPageName'), |
|||
prop: 'revisions', |
|||
rvprop: 'timestamp', |
|||
rvlimit: 1, |
|||
rvdir: 'newer', |
|||
list: 'logevents', |
list: 'logevents', |
||
letype: 'patrol', |
letype: 'patrol', |
||
Line 32: | Line 33: | ||
} |
} |
||
}).done(function (data) { |
}).done(function (data) { |
||
var user, ts, action, html = ''; |
var user, ts, cts, action, html = ''; |
||
if (data.query && data.query.logevents && data.query.logevents.length) { |
if (data.query && data.query.logevents && data.query.logevents.length) { |
||
var log = data.query.logevents[0]; |
var log = data.query.logevents[0]; |
||
Line 39: | Line 40: | ||
action = log.action; |
action = log.action; |
||
var date = new Date(ts); |
var date = new Date(ts); |
||
if (data.query.pages) { |
|||
for (var id in data.query.pages) { |
|||
var page = data.query.pages[id]; |
|||
if (page && page.revisions && page.revisions.length) { |
|||
cts = page.revisions[0].timestamp; |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
ts = date.getUTCFullYear() + '年' + (date.getUTCMonth()+1) + '月' + |
ts = date.getUTCFullYear() + '年' + (date.getUTCMonth()+1) + '月' + |
||
date.getUTCDate() + '日 (' + weekdays[date.getDay()] + ') ' + |
date.getUTCDate() + '日 (' + weekdays[date.getDay()] + ') ' + |
||
Line 51: | Line 61: | ||
'<a href="' + p.replace('$1', 'Special:BlockUser/' + user) + '">' + |
'<a href="' + p.replace('$1', 'Special:BlockUser/' + user) + '">' + |
||
'封禁' + '</a>' + ')'; |
'封禁' + '</a>' + ')'; |
||
if ( |
if (cts && new Date(cts) > ts) { |
||
html = ''; |
|||
} else if (action === 'patrol') { |
|||
html = wgUVS('本页面于', '本頁面於') + ts + '由' + user + '巡查。'; |
html = wgUVS('本页面于', '本頁面於') + ts + '由' + user + '巡查。'; |
||
} else if (action === 'autopatrol') { |
} else if (action === 'autopatrol') { |
Revision as of 06:48, 6 May 2017
/**
* Showing patroller on the bottom of the page.
*
* @version 0.1 (2017-05-06)
* @author [[User:WhitePhosphorus]]
*/
(function($, mw) {
'use strict';
if (mw.config.get('wgNamespaceNumber') < 0)
return null;
var weekdays = ['日', '一', '二', '三', '四', '五', '六'];
var $patroller = $('<li id="footer-info-patroller">' +
wgUVS('正在加载本页面的巡查者……', '正在加載本頁面的巡查者……') + '</li>');
$('#footer-info').prepend($patroller);
$.ajax({
url: mw.util.wikiScript('api'),
data: {
action: 'query',
titles: mw.config.get('wgPageName'),
prop: 'revisions',
rvprop: 'timestamp',
rvlimit: 1,
rvdir: 'newer',
list: 'logevents',
letype: 'patrol',
letitle: mw.config.get('wgPageName'),
format: 'json'
}
}).done(function (data) {
var user, ts, cts, action, html = '';
if (data.query && data.query.logevents && data.query.logevents.length) {
var log = data.query.logevents[0];
user = log.user;
ts = log.timestamp;
action = log.action;
var date = new Date(ts);
if (data.query.pages) {
for (var id in data.query.pages) {
var page = data.query.pages[id];
if (page && page.revisions && page.revisions.length) {
cts = page.revisions[0].timestamp;
break;
}
}
}
ts = date.getUTCFullYear() + '年' + (date.getUTCMonth()+1) + '月' +
date.getUTCDate() + '日 (' + weekdays[date.getDay()] + ') ' +
('0'+date.getHours()).slice(-2) + ':' +
('0'+date.getMinutes()).slice(-2) + ' (UTC)';
var p = mw.config.get('wgArticlePath');
user = '<a href="' + p.replace('$1', 'User:' + user) + '">' + user + '</a>(' +
'<a href="' + p.replace('$1', 'User talk:' + user) + '">' +
wgUVS('讨论', '討論') + '</a>' + ' | ' +
'<a href="' + p.replace('$1', 'Special:Contributions/' + user) + '">' +
wgUVS('贡献', '貢獻') + '</a>' + ' | ' +
'<a href="' + p.replace('$1', 'Special:BlockUser/' + user) + '">' +
'封禁' + '</a>' + ')';
if (cts && new Date(cts) > ts) {
html = '';
} else if (action === 'patrol') {
html = wgUVS('本页面于', '本頁面於') + ts + '由' + user + '巡查。';
} else if (action === 'autopatrol') {
html = wgUVS('本页面于', '本頁面於') + ts + '由' + user +
wgUVS('自动标为已巡查。', '自動標爲已巡查');
}
}
if (html !== '') {
$patroller.html(html);
} else {
$patroller.html(wgUVS('本页面尚未被巡查。', '本頁面尚未被巡查。'));
}
}).fail(function(jqXHR, textStatus, errorThrown) {
console.log('Error when loading patroller: ' + errorThrown);
$patroller.html(wgUVS('查找巡查者时出现错误。', '查找巡查者時出現錯誤。'));
});
})(jQuery, mw);