打开/关闭菜单
228
885
35
2802
植物大战僵尸杂交版Wiki
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

MediaWiki:Common.js:修订间差异

MediaWiki界面页面
无编辑摘要
无编辑摘要
第30行: 第30行:
             '-webkit-text-fill-color: transparent;' +
             '-webkit-text-fill-color: transparent;' +
             'background-clip: text;' +
             'background-clip: text;' +
             'color: #FFD700;' + /* 降级:不支持渐变时显示金色 */
             'color: #FFD700;' + /* 降级显示金色 */
         '}' +
         '}' +
         '.rainbow-user::after {' +
         '.rainbow-user::after {' +
第85行: 第85行:
                     } else if (ec >= 500) {
                     } else if (ec >= 500) {
                         classMap[u.name] = 'silver-user';
                         classMap[u.name] = 'silver-user';
                    } else if (ec >= 1) {
                        // 1~499 编辑 → 青铜
                        classMap[u.name] = 'bronze-user';
                     }
                     }
                 });
                 });
第94行: 第97行:
                 var cls = classMap[userName];
                 var cls = classMap[userName];
                 if (cls) {
                 if (cls) {
                     // 移除旧的颜色类(防止叠加)
                     // 移除所有可能的旧颜色类,防止堆积
                     $this.removeClass('silver-user platinum-user gold-user rainbow-user');
                     $this.removeClass('bronze-user silver-user platinum-user gold-user rainbow-user');
                     $this.addClass(cls);
                     $this.addClass(cls);
                 }
                 }

2026年5月31日 (日) 06:18的版本

/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */

// 自动加载 MediaWiki:Footer 页面内容,并插入到每个页面底部

$(document).ready(function() {
    const namespace = mw.config.get('wgNamespaceNumber');
    const action = mw.config.get('wgAction');
    
    if (namespace !== 0 || action !== 'view') {
        return;
    }

    fetch("/api.php?action=parse&page=MediaWiki:Footer&format=json")
        .then(res => res.json())
        .then(data => {
            if (data.parse && data.parse.text) {
                const html = data.parse.text['*'];
                $('#mw-content-text').append('<div class="global-footer">' + html + '</div>');
            }
        });
});
$(function () {
    // 动态注入彩虹用户样式(避免 Common.css 校验警告)
    var rainbowStyle = document.createElement('style');
    rainbowStyle.textContent =
        '.rainbow-user {' +
            'font-weight: bold;' +
            'background: linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);' +
            '-webkit-background-clip: text;' +
            '-webkit-text-fill-color: transparent;' +
            'background-clip: text;' +
            'color: #FFD700;' + /* 降级显示金色 */
        '}' +
        '.rainbow-user::after {' +
            'content: "⭐";' +
            'margin-left: 2px;' +
            'font-weight: normal;' +
            '-webkit-text-fill-color: initial;' +
            'color: #FFD700;' +
        '}';
    document.head.appendChild(rainbowStyle);

    // 只在查看页面时执行
    if (mw.config.get('wgAction') !== 'view') return;

    var $userlinks = $('a.mw-userlink');
    if ($userlinks.length === 0) return;

    // 收集去重用户名
    var users = [];
    $userlinks.each(function () {
        var name = $(this).text().trim();
        if (name && users.indexOf(name) === -1) {
            users.push(name);
        }
    });
    if (users.length === 0) return;

    // 分批查询 API
    var batchSize = 50;
    var batches = [];
    for (var i = 0; i < users.length; i += batchSize) {
        batches.push(users.slice(i, i + batchSize));
    }

    var processBatch = function (batch) {
        var api = new mw.Api();
        return api.get({
            action: 'query',
            list: 'users',
            ususers: batch.join('|'),
            usprop: 'editcount'
        }).then(function (data) {
            var classMap = {};
            if (data.query && data.query.users) {
                data.query.users.forEach(function (u) {
                    var ec = u.editcount || 0;
                    // 从高到低判断,避免覆盖
                    if (ec >= 5000) {
                        classMap[u.name] = 'rainbow-user';
                    } else if (ec >= 2000) {
                        classMap[u.name] = 'gold-user';
                    } else if (ec >= 1000) {
                        classMap[u.name] = 'platinum-user';
                    } else if (ec >= 500) {
                        classMap[u.name] = 'silver-user';
                    } else if (ec >= 1) {
                        // 1~499 编辑 → 青铜
                        classMap[u.name] = 'bronze-user';
                    }
                });
            }
            // 应用类名
            $userlinks.each(function () {
                var $this = $(this);
                var userName = $this.text().trim();
                var cls = classMap[userName];
                if (cls) {
                    // 移除所有可能的旧颜色类,防止堆积
                    $this.removeClass('bronze-user silver-user platinum-user gold-user rainbow-user');
                    $this.addClass(cls);
                }
            });
        });
    };

    // 按顺序执行所有批次
    var promise = $.Deferred().resolve();
    batches.forEach(function (batch) {
        promise = promise.then(function () {
            return processBatch(batch);
        });
    });
});