跳转到内容
RA2DIY-WIKI 当前处于维护模式:页面上的内容随时可能发生更改且不会事先告知。

MediaWiki:Common.js:修订间差异

来自RA2DIY
无编辑摘要
无编辑摘要
 
(未显示同一用户的7个中间版本)
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
(function() {
(function() {
     function processPreBlocks() {
     // 仅在内容页面运行
         var preElements = document.querySelectorAll('pre');
    if (mw.config.get('wgNamespaceNumber') === 0 && mw.config.get('wgAction') === 'view') {
          
         var pageTitle = mw.config.get('wgPageName');
         preElements.forEach(function(pre) {
         var apiUrl = mw.util.wikiScript('api');
             var rawContent = pre.textContent;
        var maxDisplayUsers = 3; // 直接显示的最大用户数
             var lines = rawContent.split('\n').filter(l => l !== '');
        var creditsLink = mw.util.getUrl(pageTitle, { action: 'credits' });
             var totalLines = lines.length;
 
              
         // 获取修订历史
             // 创建容器
        $.getJSON(apiUrl, {
             var container = document.createElement('div');
            format: 'json',
             container.style.display = 'flex';
            action: 'query',
           
            prop: 'revisions',
             // 添加行号列
            rvprop: 'timestamp|user',
             var lineNumberCol = document.createElement('div');
            rvlimit: 50,
             lineNumberCol.className = 'line-number';
            titles: pageTitle,
             for (var i = 1; i <= totalLines + 4; i++) {
            rvdir: 'newer' // 从旧到新排序
                 var lineNum = document.createElement('div');
        }, function(data) {
                 lineNum.textContent = i;
             var revisions = data.query.pages[0].revisions;
                 lineNumberCol.appendChild(lineNum);
            if (!revisions) return;
 
            // 处理修订数据
             var editors = [];
            revisions.forEach(function(rev) {
                if (rev.user && !editors.includes(rev.user)) {
                    editors.unshift(rev.user); // 倒序插入保持最新在前
                }
            });
 
            if (editors.length === 0) return;
 
            // 提取最后编辑信息
             var lastRev = revisions[revisions.length - 1];
             var lastUser = lastRev.user;
             var lastDate = new Date(lastRev.timestamp);
             var formattedDate = lastDate.toLocaleDateString('en-GB', {
                day: 'numeric',
                month: 'long',
                year: 'numeric'
            });
             var formattedTime = lastDate.toLocaleTimeString('en-GB', {
                hour: '2-digit',
                minute: '2-digit'
            });
 
             // 构建用户列表
             var displayedUsers = editors.slice(0, maxDisplayUsers);
             var otherUsers = editors.slice(maxDisplayUsers);
            var userList = [];
 
             if (displayedUsers.length > 1) {
                 var lastUser = displayedUsers.pop();
                userList.push(
                    displayedUsers.join(', '),
                    ' and ' + lastUser
                 );
            } else {
                 userList.push(displayedUsers[0]);
             }
             }
           
 
             // 添加代码内容
             // 构建完整文本
             var codeContent = document.createElement('div');
             var creditText = document.createElement('div');
             codeContent.className = 'code-block';
             creditText.className = 'page-credits';
             lines.forEach(function(line) {
             creditText.innerHTML = 'This page was last edited ' +
                 var lineDiv = document.createElement('div');
                formattedTime + ', ' + formattedDate +
                 lineDiv.className = 'line';
                ' by ' + mw.config.get('wgSiteName') + ' user ' + lastUser +
                '. Based on work by ';
 
            if (otherUsers.length > 0) {
                 var creditLink = document.createElement('a');
                 creditLink.href = creditsLink;
                creditLink.textContent = 'others';
                  
                  
                 // 处理不同行类型
                 var usersSpan = document.createElement('span');
                if (line.startsWith('[')) {
                usersSpan.innerHTML = userList.join('') +  
                    lineDiv.className += ' line-command';
                     (otherUsers.length > 0 ? ', ' : '') +
                    lineDiv.innerHTML = line.replace(/\[(.*?)\]/g, '<b>$&</b>');
                     creditLink.outerHTML;
                } else if (line.startsWith(';')) {
               
                    lineDiv.className += ' line-comment';
                creditText.appendChild(usersSpan);
                     lineDiv.textContent = line;
            } else {
                } else if (line.includes('=')) {
                creditText.innerHTML += userList.join('');
                    var parts = line.split('=');
             }
                     var key = parts.shift();
 
                    var rest = parts.join('=');
             // 插入到页面底部
                   
             var footer = document.getElementById('footer-info');
                    lineDiv.innerHTML = [
            if (footer) {
                        '<span class="line-key">' + key + '</span>',
                 footer.appendChild(creditText);
                        '<span class="line-equal">=</span>',
                        rest.replace(/;(.*)/, '<span class="line-value-comment">;$1</span>')
                    ].join('');
                } else {
                    lineDiv.textContent = line;
                }
                codeContent.appendChild(lineDiv);
             });
           
             // 添加额外空行
             for (var i = 0; i < 4; i++) {
                var emptyLine = document.createElement('div');
                emptyLine.className = 'line';
                emptyLine.innerHTML = '&nbsp;';
                 codeContent.appendChild(emptyLine);
             }
             }
           
            // 组合元素
            container.appendChild(lineNumberCol);
            container.appendChild(codeContent);
           
            // 替换原始pre元素
            pre.parentNode.replaceChild(container, pre);
         });
         });
     }
     }
 
});
    // 在页面加载完成后执行
    if (window.addEventListener) {
        window.addEventListener('load', processPreBlocks);
    } else if (window.attachEvent) {
        window.attachEvent('onload', processPreBlocks);
    }
})();

2025年8月1日 (五) 21:28的最新版本

(function() {
    // 仅在内容页面运行
    if (mw.config.get('wgNamespaceNumber') === 0 && mw.config.get('wgAction') === 'view') {
        var pageTitle = mw.config.get('wgPageName');
        var apiUrl = mw.util.wikiScript('api');
        var maxDisplayUsers = 3; // 直接显示的最大用户数
        var creditsLink = mw.util.getUrl(pageTitle, { action: 'credits' });

        // 获取修订历史
        $.getJSON(apiUrl, {
            format: 'json',
            action: 'query',
            prop: 'revisions',
            rvprop: 'timestamp|user',
            rvlimit: 50,
            titles: pageTitle,
            rvdir: 'newer' // 从旧到新排序
        }, function(data) {
            var revisions = data.query.pages[0].revisions;
            if (!revisions) return;

            // 处理修订数据
            var editors = [];
            revisions.forEach(function(rev) {
                if (rev.user && !editors.includes(rev.user)) {
                    editors.unshift(rev.user); // 倒序插入保持最新在前
                }
            });

            if (editors.length === 0) return;

            // 提取最后编辑信息
            var lastRev = revisions[revisions.length - 1];
            var lastUser = lastRev.user;
            var lastDate = new Date(lastRev.timestamp);
            var formattedDate = lastDate.toLocaleDateString('en-GB', {
                day: 'numeric',
                month: 'long',
                year: 'numeric'
            });
            var formattedTime = lastDate.toLocaleTimeString('en-GB', {
                hour: '2-digit',
                minute: '2-digit'
            });

            // 构建用户列表
            var displayedUsers = editors.slice(0, maxDisplayUsers);
            var otherUsers = editors.slice(maxDisplayUsers);
            var userList = [];

            if (displayedUsers.length > 1) {
                var lastUser = displayedUsers.pop();
                userList.push(
                    displayedUsers.join(', '),
                    ' and ' + lastUser
                );
            } else {
                userList.push(displayedUsers[0]);
            }

            // 构建完整文本
            var creditText = document.createElement('div');
            creditText.className = 'page-credits';
            creditText.innerHTML = 'This page was last edited ' +
                formattedTime + ', ' + formattedDate + 
                ' by ' + mw.config.get('wgSiteName') + ' user ' + lastUser + 
                '. Based on work by ';

            if (otherUsers.length > 0) {
                var creditLink = document.createElement('a');
                creditLink.href = creditsLink;
                creditLink.textContent = 'others';
                
                var usersSpan = document.createElement('span');
                usersSpan.innerHTML = userList.join('') + 
                    (otherUsers.length > 0 ? ', ' : '') + 
                    creditLink.outerHTML;
                
                creditText.appendChild(usersSpan);
            } else {
                creditText.innerHTML += userList.join('');
            }

            // 插入到页面底部
            var footer = document.getElementById('footer-info');
            if (footer) {
                footer.appendChild(creditText);
            }
        });
    }
});