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

“MediaWiki:Mobile.js”的版本间差异

来自LLWiki
跳转到导航 跳转到搜索
第6行: 第6行:
*/
*/
"use strict";
"use strict";
/*global wgULS*/
/* global wgULS */
// 用户贡献页面不可创建
// 用户贡献页面不可创建
$('.mw-usertoollinks-contribs.new').off( 'click' ).click(function(e) { e.stopImmediatePropagation(); });
$('.mw-usertoollinks-contribs.new').off( 'click' ).click(function(e) { e.stopImmediatePropagation(); });
第53行: 第53行:
}
}


// 监视手机版菜单生成
console.log( 'setInterval: 等待移动版菜单加载完毕' );
const timerStart = mw.now(),
const detectMenu = function(records) {
const $node = $( records[0].addedNodes[0] );
timer = setInterval(function() {
if ($('.menu ul').length === 0) { return; }
if ($node.hasClass( 'menu' )) { mw.hook( 'mobile.menu' ).fire( $node ); }
},
clearInterval(timer);
observer = new MutationObserver( detectMenu );
mw.hook( 'mobile.menu' ).fire( $('.menu') );
observer.observe( $('#mw-mf-page-left')[0], {childList: true});
console.log('End setInterval: 移动版菜单加载完毕,用时 ' + (mw.now() - timerStart) + ' ms');
}, 200);


mw.loader.using( ['mediawiki.util', 'ext.gadget.site-lib'] ).then(function() {
mw.loader.using( ['mediawiki.util', 'ext.gadget.site-lib'] ).then(function() {

2021年2月2日 (二) 02:55的版本

//<nowiki>
// 由ResourceLoader直接调用,不可使用ES6语法
/**
 * @Description: 手机版全局JS
 * @Author: 如无特殊说明,均为[[User:Bhsd]]
 */
"use strict";
/* global wgULS */
// 用户贡献页面不可创建
$('.mw-usertoollinks-contribs.new').off( 'click' ).click(function(e) { e.stopImmediatePropagation(); });
    
mw.hook( 'wikipage.content' ).add(function( $content ) {
    const collapsibleContent = $content.find( '.mw-collapsible:not(.mw-made-collapsible)' ),
        sortableContent = $content.find( 'table.sortable' );
    /**
     * @Function: 折叠
     * @Source: [[moegirl:Mediawiki:Mobile.js]]
     */
    if (collapsibleContent.length) {
        console.log('Hook: wikipage.content,开始执行折叠');
        mw.loader.using( 'jquery.makeCollapsible' ).then(function() { collapsibleContent.makeCollapsible(); });
    }
    // 表格排序
    if (sortableContent.length) {
        console.log('Hook: wikipage.content,开始执行表格排序');
        mw.loader.using( 'jquery.tablesorter' ).then(function() { sortableContent.tablesorter(); });
    }
});

$(function() {
    // 快速编辑工具
    if (['edit', 'submit'].includes( mw.config.get('wgAction') )) {
        $( '.mw-editTools' ).insertBefore( '#wpTextbox1' );
    }
});

if (mw.config.get( 'wgCanonicalSpecialPageName' ) == "Recentchanges") {
    // 修改filter
    mw.hook( 'structuredChangeFilters.ui.initialized' ).add(function() {
        console.log('Hook: structuredChangeFilters.ui.initialized,开始修改filter');
        mw.loader.using( ['mediawiki.Uri', 'ext.gadget.site-lib'] ).then(function() {
            const uri = new mw.Uri(),
                invert = uri.query.invert || 0,
                node = $( '.mw-rcfilters-ui-itemMenuOptionWidget-view-namespaces' ).first().clone()
                .insertAfter( $( '.mw-rcfilters-ui-filterMenuSectionOptionWidget' ).first() )
                .attr('id', 'ooui-invert').removeClass( 'oo-ui-element-hidden' )
                .on('click', function() { window.location.href = uri.extend({ invert: 1 - invert }); });
            node.find( 'span.oo-ui-labelElement-label' ).text( wgULS("排除选项", "排除所選") );
            node.find( 'input' ).prop('checked', invert > 0)
                .next().addClass( 'oo-ui-image-invert' );
        });
    });
}

// 监视手机版菜单生成
const detectMenu = function(records) {
    const $node = $( records[0].addedNodes[0] );
    if ($node.hasClass( 'menu' )) { mw.hook( 'mobile.menu' ).fire( $node ); }
},
    observer = new MutationObserver( detectMenu );
observer.observe( $('#mw-mf-page-left')[0], {childList: true});

mw.loader.using( ['mediawiki.util', 'ext.gadget.site-lib'] ).then(function() {
    mw.messages.set( wgULS({
        'mobile-rc': "最近更改", 'mobile-village': "互助客栈", 'mobile-policy': "方针与指引", 'mobile-help': "帮助",
        'mobile-whatlinkshere': "链入页面", 'mobile-rclinked': "相关更改"
    }, {
        'mobile-rc': "近期變更", 'mobile-village': "互助客棧", 'mobile-policy': "方針與指引", 'mobile-help': "幫助",
        'mobile-whatlinkshere': "連結至此的頁面", 'mobile-rclinked': "相關變更"
    }) );
    const pagename = mw.pagenamee(),
        pageid = mw.config.get( 'wgArticleId' ),
        items = [
        {href: '/zh/Special:最近更改', icon: 'random', msg: 'mobile-rc'},
        {href: '/zh/LLWiki:沙盒', icon: 'inbox', text: '沙盒'},
        {href: '/zh/LLWiki:互助客栈', icon: 'heart', msg: 'mobile-village'},
        {href: '/zh/LLWiki:方針與指引', icon: 'tasks', msg: 'mobile-policy'},
        {href: '/zh/Help:幫助總覽', icon: 'question-circle', msg: 'mobile-help'}
    ],
        nav = mw.addMobileLinks( items.concat( pageid > 0 ? [
        {href: '/zh/Special:链入页面/' + pagename, icon: 'quote-right', msg: 'mobile-whatlinkshere'},
        {href: '/zh/Special:链出更改/' + pagename, icon: 'share-alt', msg: 'mobile-rclinked'}
    ]: [] ));
    mw.hook( 'mobile.menu' ).add(function($menu) {
        console.log('Hook: mobile.menu,开始添加移动版菜单项');
        $menu.children( 'ul' ).first().after( $('<ul>', {html: nav}) );
    });
});
//</nowiki>
// [[category:作为模块的小工具]] [[category:不可关闭的小工具]] [[category:手机版小工具]]
// {{DEFAULTSORT:*}}