MediaWiki:Gadget-twinklediff.js
Twinkle
Tiện ích Twinkle được phát triển trên GitHub. Phiên bản dành cho Wikipedia tiếng Việt cũng được biên dịch và bảo quản trên GitHub. Xin các bảo quản viên vui lòng thực hiện các thay đổi trong cành vi trên GitHub và sao chép vào đây thay vì sửa đổi tiện ích này trực tiếp. |
// <nowiki>
(function($) {
/*
****************************************
*** twinklediff.js: Diff module
****************************************
* Mode of invocation: Tab on non-diff pages ("Cuối"); tabs on diff pages ("Từ trước", "Từ tôi", "Hiện tại")
* Active on: Existing non-special pages
*/
Twinkle.diff = function twinklediff() {
if (mw.config.get('wgNamespaceNumber') < 0 || !mw.config.get('wgArticleId')) {
return;
}
Twinkle.addPortletLink(mw.util.getUrl(mw.config.get('wgPageName'), {diff: 'cur', oldid: 'prev'}), 'Cuối', 'tw-lastdiff', 'Xem khác biệt từ sửa đổi cuối của thành viên trước');
// Show additional tabs only on diff pages
if (mw.util.getParamValue('diff')) {
Twinkle.addPortletLink(function() {
Twinkle.diff.evaluate(false);
}, 'Từ trước', 'tw-since', 'Xem khác biệt từ sửa đổi cuối của thành viên trước');
Twinkle.addPortletLink(function() {
Twinkle.diff.evaluate(true);
}, 'Từ tôi', 'tw-sincemine', 'Xem khác biệt từ sửa đổi cuối của tôi');
var oldid = /oldid=(.+)/.exec($('#mw-diff-ntitle1').find('strong a').first().attr('href'))[1];
Twinkle.addPortletLink(mw.util.getUrl(mw.config.get('wgPageName'), {diff: 'cur', oldid: oldid}), 'Hiện tại', 'tw-curdiff', 'Hiển thị sự khác biệt đối với bản sửa đổi hiện tại');
}
};
Twinkle.diff.evaluate = function twinklediffEvaluate(me) {
var user;
if (me) {
user = mw.config.get('wgUserName');
} else {
var node = document.getElementById('mw-diff-ntitle2');
if (!node) {
// nothing to do?
return;
}
user = $(node).find('a').first().text();
}
var query = {
'prop': 'revisions',
'action': 'query',
'titles': mw.config.get('wgPageName'),
'rvlimit': 1,
'rvprop': [ 'ids', 'user' ],
'rvstartid': mw.config.get('wgCurRevisionId') - 1, // i.e. not the current one
'rvuser': user
};
Morebits.status.init(document.getElementById('mw-content-text'));
var wikipedia_api = new Morebits.wiki.api('Thu thập dữ liệu của người đóng góp ban đầu', query, Twinkle.diff.callbacks.main);
wikipedia_api.params = { user: user };
wikipedia_api.post();
};
Twinkle.diff.callbacks = {
main: function(self) {
var xmlDoc = self.responseXML;
var revid = $(xmlDoc).find('rev').attr('revid');
if (!revid) {
self.statelem.error('không tìm thấy bản sửa đổi phù hợp trước đó, hoặc ' + self.params.user + ' là người đóng góp duy nhất. Hủy bỏ.');
return;
}
window.location = mw.util.getUrl(mw.config.get('wgPageName'), {
diff: mw.config.get('wgCurRevisionId'),
oldid: revid
});
}
};
Twinkle.addInitCallback(Twinkle.diff, 'diff');
})(jQuery);
// </nowiki>