LLWiki正在建设中,欢迎加入我们

“MediaWiki:Gadget-HotCat-zh-core.js”的版本间差异

来自LLWiki
跳转到导航 跳转到搜索
第20行: 第20行:
const pageName = mw.config.get('wgPageName');
const pageName = mw.config.get('wgPageName');
var api = new mw.Api(),
var api = new mw.Api(),
request1 = api.get({action:'parse', page:pageName, prop:'wikitext'}),
request1 = api.get({action:'parse', page:pageName, prop:'wikitext', formatversion:2}),
request2 = api.get({action:'query', titles:pageName, prop:'categories'});
request2 = api.get({action:'query', titles:pageName, prop:'categories', formatversion:2});
$.when(request1, request2).then(function(data1, data2) {
$.when(request1, request2).then(function(data1, data2) {
const obj1 = data1[0].parse.wikitext["*"],
const obj1 = data1[0].parse.wikitext,
obj2 = data2[0].query.pages[mw.config.get( 'wgArticleId' )].categories;
obj2 = data2[0].query.pages[0].categories;
var cats = [...obj1.matchAll(/\[\[(?:category|分类|分類):(.*?)(?:\|.*)?]]/ig)].map((ele) => ele[1]),
var cats = [...obj1.matchAll(/\[\[(?:category|分类|分類):(.*?)(?:\|.*)?]]/ig)].map((ele) => ele[1]),
canonicalCats = ( obj2 ? Object.keys(obj2).map((key) => obj2[key].title) : [] );
canonicalCats = ( obj2 ? Object.keys(obj2).map((key) => obj2[key].title) : [] );
第31行: 第31行:
return;
return;
}
}
api.get({action:'query',
api.get({action:'query', prop:'info', inprop:'varianttitles', formatversion:2, titles:canonicalCats.join("|")})
prop:'info',
inprop:'varianttitles',
indexpageids:1,
titles:canonicalCats.join("|")})
.then(function(data) {
.then(function(data) {
const ids = data.query.pageids;
data.query.pages.forEach(function(ele) {
ids.forEach(function(ele) {
var catlink = $('#catlinks a[title="' + ele.title + '"]');
var catlink = $('#catlinks a[title="' + data.query.pages[ele].title + '"]');
const catVt = ele.varianttitles;
const catVt = data.query.pages[ele].varianttitles;
if(!catVt) { return; }
if(!catVt) { return; }
const catHans = catVt["zh-hans"].substring(3),
const catHans = catVt["zh-hans"].substring(3),
catHant = catVt["zh-hant"].substring(3);
catHant = catVt["zh-hant"].substring(3);
if(cats.includes( catHans.replace(/ /g,'_') )) {
if(cats.includes( catHans.replace(/ /g,'_') )) {
catlink.attr('title','Category:' + catHans);
catlink.attr('title','Category:' + catHans);
catlink.attr('href','/zh/Category:' + catHans);
catlink.attr('href','/zh/Category:' + catHans);
}
}
else {
else {
catlink.attr('title','Category:' + catHant);
catlink.attr('title','Category:' + catHant);
catlink.attr('href','/zh/Category:' + catHant);
catlink.attr('href','/zh/Category:' + catHant);
}
}
});
mw.loader.load('/zh?title=mediawiki:gadget-HotCat.js&action=raw&ctype=text/javascript');
});
});
mw.loader.load('/zh?title=mediawiki:gadget-HotCat.js&action=raw&ctype=text/javascript');
});
});
});
});
});

2020年9月8日 (二) 07:55的版本

(function($, mw) {
    $(function() {
        const ns = mw.config.get('wgNamespaceNumber');
        if( mw.config.get('wgCanonicalSpecialPageName') === 'Upload' ) {
            mw.loader.load('/zh?title=mediawiki:gadget-HotCat.js&action=raw&ctype=text/javascript');
            return;
        }
        if( ns < 0 && // Special pages; Special:Upload is handled differently
            ns === 10 || // Templates
            ns === 274 || // Widget
            ns === 828 || // Module (Lua)
            ns === 8 || // MediaWiki
            ns === 6 && !mw.config.get('wgArticleId') || // Non-existing file pages
            ns === 2 || // User
            ns % 2 === 1 || // Talk page
            mw.config.get("wgPageContentModel") !== "wikitext" ||
            mw.config.get('wgAction') != 'view' ) {
                return;
        }
        const pageName = mw.config.get('wgPageName');
        var api = new mw.Api(),
            request1 = api.get({action:'parse', page:pageName, prop:'wikitext', formatversion:2}),
            request2 = api.get({action:'query', titles:pageName, prop:'categories', formatversion:2});
        $.when(request1, request2).then(function(data1, data2) {
            const obj1 = data1[0].parse.wikitext,
                obj2 = data2[0].query.pages[0].categories;
            var cats = [...obj1.matchAll(/\[\[(?:category|分类|分類):(.*?)(?:\|.*)?]]/ig)].map((ele) => ele[1]),
                canonicalCats = ( obj2 ? Object.keys(obj2).map((key) => obj2[key].title) : [] );
            if(canonicalCats.length === 0) {
                mw.loader.load('/zh?title=mediawiki:gadget-HotCat.js&action=raw&ctype=text/javascript');
                return;
            }
            api.get({action:'query', prop:'info', inprop:'varianttitles', formatversion:2, titles:canonicalCats.join("|")})
                .then(function(data) {
                data.query.pages.forEach(function(ele) {
                    var catlink = $('#catlinks a[title="' + ele.title + '"]');
                    const catVt = ele.varianttitles;
                    if(!catVt) { return; }
                    const catHans = catVt["zh-hans"].substring(3),
                        catHant = catVt["zh-hant"].substring(3);
                    if(cats.includes( catHans.replace(/ /g,'_') )) {
                        catlink.attr('title','Category:' + catHans);
                        catlink.attr('href','/zh/Category:' + catHans);
                    }
                    else {
                        catlink.attr('title','Category:' + catHant);
                        catlink.attr('href','/zh/Category:' + catHant);
                    }
                });
                mw.loader.load('/zh?title=mediawiki:gadget-HotCat.js&action=raw&ctype=text/javascript');
            });
        });
    });
}) (jQuery, mediaWiki);