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

MediaWiki:Gadget-HotCat-zh-core.js

来自LLWiki
Bhsd讨论 | 贡献2020年8月22日 (六) 08:58的版本
跳转到导航 跳转到搜索

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

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 设置(Mac为Opera → Preferences),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件
$(function() {
    if(mw.config.get('wgAction') == 'view') {
        const lang = mw.config.get('wgUserVariant'),
            pageName = mw.config.get('wgPageName');
        var api = new mw.Api(),
            request1 = api.get({action:'parse', page:pageName, prop:'wikitext|categories'}),
            request2 = api.get({action:'query', titles:pageName, prop:'categories'});
        $.when(request1, request2).done(function(data1, data2) {
            const wikitext = data1[0].parse.wikitext["*"],
                cats = data1[0].parse.categories;
            var obj = data2[0].query.pages[mw.config.get( 'wgArticleId' )].categories,
                canonicalCats = obj ? Object.keys(obj).map((key) => obj[key].title) : [];
            if(canonicalCats.length === 0) { return; }
            cats.forEach(function(ele) {
                var cat = 'Category:' + ele["*"].replace(/_/g, ' '),
                    i = canonicalCats.indexOf(cat);
                if(i>=0) {
                    canonicalCats.splice(i,1);
                    return;
                }
            });
            api.get({action:'query',
                prop:'info',
                inprop:'varianttitles',
                indexpageids:1,
                titles:canonicalCats.join("|")})
            .then(function(data) {
                const ids = data.query.pageids;
                ids.forEach(function(ele) {
                    var catlink = $('#catlinks a[title="' + data.query.pages[ele].title + '"]');
                    const catVt = data.query.pages[ele].varianttitles,
                        catHans = catVt["zh-hans"].substring(3),
                        catHant = catVt["zh-hant"].substring(3),
                        regExp = new RegExp('\\[\\[(category|Category|分類|分类):(' + catHans.slice(0,1) + '|' + catHans.slice(0,1).toLowerCase() + ')' + '(' + catHans.substring(1) + '|' + catHant.substring(1) + ')\\]\\]', 'g'),
                        isFind = wikitext.match(regExp);
                    if(isFind) {
                        $('<span class="metadata nopopups hotcatlink"><span> <a href="#catlinks" title="移除">(−)</a></span></span>').insertAfter(catlink);
                        if(cats.includes(catHans)) { catlink.attr('title','Category:' + catHans); }
                        else { catlink.attr('title','Category:' + catHant); }
                        catlink.next().find('a').data('wikitext', wikitext.replace(regExp, ''))
                            .on('click', function(e) {
                                e.preventDefault();
                                localStorage.setItem('HotCatzh', $(e.target).data('wikitext'));
                                window.location.href = '/zh?title=' + pageName + '&action=submit';
                            });
                    }
                });
            });
        });
    }
    else if(mw.config.get('wgAction') == 'submit') {
        const HotCatzh = localStorage.HotCatzh;
        localStorage.removeItem('HotCatzh');
        if(HotCatzh) {
            $('#wpTextbox1').val(HotCatzh);
            $('#wpDiff').click();
        }
    }
});