User:QWERTY 52 38/common.js

此后如竟没有炬火,我便是唯一的光。
QWERTY 52 38留言 | 贡献2021年7月27日 (二) 22:28的版本 (// Edit via Wikiplus)
跳转到导航 跳转到搜索

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
/* From my common.js on MCBBS Wiki: https://mcbbs-wiki.cn/wiki/%E7%94%A8%E6%88%B7:QWERTY_52_38/common.js */

var thisHref = window.location.href
/* Wikiplus */
mw.loader.load('https://wikiplus-app.com/Main.js')

/* 部分链接新窗口打开 */
addTarget("mw-changeslist-title")
addTarget("mw-changeslist-diff")
addTarget("mw-changeslist-diff-cur")
addTarget("mw-changeslist-groupdiff")
addTarget("mw-changeslist-history")
addTarget("mw-userlink")

function addTarget (obj) {
    var a_mct = document.getElementsByClassName(obj);
    for (var i = a_mct.length - 1; i >= 0; i--) {
        a_mct[i].setAttribute("target","_blank")
    };
}

$('#p-personal ul').append('<li><a href="?action=purge">强制刷新</a><li>')
$('#p-personal ul').append('<li><a href="https://wiki.xdi8.top/wiki/User:QWERTY_52_38/common.js">js</a></li>')
$('#p-personal ul').append('<li><a href="https://wiki.xdi8.top/wiki/User:QWERTY_52_38/common.css">css</a></li>')

// 取自 https://minecraft-zh.gamepedia.com/User:Ff98sha/common.js,仅供学习研究用
mw.loader.using(['oojs-ui-windows', 'oojs-ui-core'],
function() {
  $('.mw-rollback-link a').each(function() {
    var href = $(this).attr('href');
    $(this).click(function(e) {
      e.preventDefault();
      OO.ui.confirm('你确定要回退此页面吗?').done(function(confirmed) {
        if (confirmed) { location.href = href; }
      });
    });
  });
});

/* lib
----------------------------------------------------------------------
*/
function getTitle() {
    return mw.config.get("wgPageName");
}


function getPatrolToken(func) {
$.ajax({url: "/api.php?action=query&meta=tokens&format=json&type=patrol", type: "GET", success: function(data){func(data.query.tokens.patroltoken);}})
}

function getCsrfToken(func) {
$.ajax({url: "/api.php?action=query&meta=tokens&format=json&type=csrf", type: "GET", success: function(data){func(data.query.tokens.csrftoken);}})
}

function getRollbackToken(func) {
$.ajax({url: "/api.php?action=query&meta=tokens&format=json&type=rollback", type: "GET", success: function(data){func(data.query.tokens.rollbacktoken);}})
}

function getWikiText(title, func) {
$.ajax({url: "/api.php?action=query&prop=revisions&titles=" + title + "&rvprop=content&indexpageids=true&format=json", type: "GET", success: function(data){func(data.query.pages[data.query.pageids[0]].revisions[0]["*"]);}})
}

function getRevIds(func) {
    $.ajax(
        {url: "/api.php?action=query&prop=revisions&titles="+ title + "&rvlimit=20&rvprop=ids&format=json", type: "GET", success: function(data){
            var revisionslist = data.query.pages[pageid.toString()].revisions; 
            var revli = []; 
            for(i = 0; revisionslist[i]; i +=1) 
                {revli[i] = revisionslist[i].revid;} 
            func(revli);}
        }
    )
}
function searchWiki(text, func){
    $.ajax({url: "/api.php?action=query&format=json&list=search&srsearch=" + text + "&srlimit=max&srwhat=text&srprop=", type: "GET", success:
        function(data){
        var res = data.query.search, res2 = []; 
        for(i = 0; res[i]; i += 1)
            {res2[i]=res[i].title;}
        func(res2);}
    });
}

function patrolRevision (patroltoken, revid){
$.ajax({url: "/api.php?action=patrol&format=json", type: "POST", data: {"token" : patroltoken, "revid" : revid}});
}

function editPage(title, summary, minor, text, csrftoken){
    $.ajax({url:"/api.php?action=edit&format=json", type:"POST", data: {title: title, summary: summary, minor: minor, basetimestamp: "now", text: text, token: csrftoken}});
}

function movePage (from, to, reason, csrftoken, func) {
    $.ajax({url:"/api.php?action=move", data: {from:from, to: to, reason: reason, token:csrftoken}, type: "POST", success: function(data){func(data);}});
}

function getLinksHere(title, func) {
    $.ajax({url: "/api.php?action=query&prop=linkshere&lhnamespace=*&lhlimit=max&lhprop=title&indexpageids=true&format=json&titles=" + title, type: "GET", success: function(data)
        {var res = data.query.pages[data.query.pageids[0]].linkshere, res2 = [];
        for (i = 0; res[i]; i += 1){
            res2[i] = res[i].title;
            }
        func(res2);
        }
    });
}

/* ------ action functions------*/

function patrolAll() {
    getRevIds(function (revli) {
        getPatrolToken(function (patroltoken) {
            for(i = 0; revli[i]; i += 1){
                patrolRevision(patroltoken, revli[i]);
            }
        });
    });
}

function inPageAPITest(){
    var option = prompt("请输入测试项目", "wgPageName");
    if (option != null) {
        var result = mw.config.get(option);
        prompt("结果:", result);
    }
}

function replaceText(title, org, subst, summary) {
    if (summary == undefined){summary = "";}
    getCsrfToken(function (csrftoken) {
        getWikiText(title, function (wikiText) {
                var changedText = wikiText.split(org).join(subst);
                editPage(title, summary, "true", changedText, csrftoken);
        });
    });
}


function massSearchReplace (org, subst) {
    searchWiki(org, function (pageTitleList) {
        for (i = 0; pageTitleList[i]; i += 1)
            {replaceText(pageTitleList[i], org, subst, "批量搜索替换“" + org + "”为“" + subst + "”,第" + i + "个");}
    });
}

function massSearchReplacePrompt (){
    var org = prompt("org");
    var subst = prompt("subst");
    if (prompt("Continue?") != null)
        {massSearchReplace(org, subst);}
}

function deepMove (from, to, reason) {
    getCsrfToken(function (csrftoken) {
        movePage(from, to, reason, csrftoken, function(data){
            getLinksHere(from, function (pageList) { 
                for (i = 0; pagelist[i]; i += 1){
                    replaceText(pageList[i], "[[" + from + "]]", "[[" + to + "]]", "// DeepMove by MBWH");
                    }
            });
        });
    });
}

function deepMovePrompt(){
    var from = prompt("From:", title);
    var to = prompt("To:");
    var reason = prompt("Reason:");
    if (prompt("Continue?") != null)
        {deepMove(from, to, reason);}
}
/* 一些变量
----------------------------------------------------------------------
*/
var title, res1, pageid;
title = getTitle();
res1 = "/wiki/Special:WhatLinksHere/" + title;
pageid = mw.config.get("wgArticleId");
/* 电脑版 
----------------------------------------------------------------------
*/
/* 右上角添加 */
$('#p-personal ul').append('<li><a href="?action=info">info</a></li>');