MediaWiki:Gadget-DeluxeHistory.js

Tủ sách mở Wikibooks

Chú ý: Sau khi lưu trang, có thể bạn sẽ phải xóa bộ nhớ đệm của trình duyệt để xem các thay đổi.

  • Firefox / Safari: Nhấn giữ phím Shift trong khi nhấn Tải lại (Reload), hoặc nhấn tổ hợp Ctrl-F5 hay Ctrl-R (⌘R trên Mac)
  • Google Chrome: Nhấn tổ hợp Ctrl-Shift-R (⇧⌘R trên Mac)
  • Internet Explorer / Edge: Nhấn giữ phím Ctrl trong khi nhấn Làm tươi (Refresh), hoặc nhấn tổ hợp Ctrl-F5
  • Opera: Nhấn tổ hợp Ctrl-F5.
// Thêm màu vào lịch sử trang để làm rõ ai đã đóng góp: màu hồng cho IP, màu xanh
// dương cho thành viên đã đăng ký, màu xanh lá cho bot và màu vàng cho bảo quản
// viên. Công cụ này phỏng theo [[:fr:MediaWiki:Gadget-DeluxeHistory.js]].

if (mw.config.get("wgAction") == "history") $(function () {
    var users = {};
    $("#pagehistory > li").each(function (idx) {
        var link = $(this).find(".mw-userlink");
        if (!link.length) return;
        
        // Những nguời dùng địa chỉ IP có liên kết đến trang đóng góp.
        var href = link.attr("href");
        if (!href) return;
        var ipPrefix = mw.config.get("wgFormattedNamespaces")[-1] + ":";
        if (href.indexOf(mw.util.getUrl(ipPrefix)) === 0 ||
        	link.hasClass("mw-anonuserlink")) {
            $(this).addClass("history-user-ip");
            return;
        }
        
        var userName = link.text();
        if (!userName) return;
        
        $(this).addClass("history-user-normal");
        users[userName] = true;
    });
    var userNames = [];
    for (var userName in users) userNames.push(userName);
    
    mw.loader.using("mediawiki.api", function () {
        var api = new mw.Api();
        api.get({
                action: "query",
                list: "users",
                usprop: "groups",
                ususers: userNames.join("|")
        }).done(function (results) {
            var users = results.query.users;
            var userGroups = {};
            $.each(users, function (idx, user) {
                if (user) userGroups[user.name] = user.groups;
            });
            
            $("#pagehistory > li").each(function (idx) {
                var link = $(this).find(".mw-userlink");
                if (!link.length) return;
                var userName = link.text();
                if (!userName || !userGroups[userName]) return;
                
                var row = $(this);
                $.each(userGroups[userName], function (idx, group) {
                    if (!group || group == "*" || group == "user") return;
                    row.addClass("history-user-" + group);
                });
            });
        });
    });
});