MediaWiki:Gadget-stickyHeading.js:修订间差异

H萌娘,万物皆可H的百科全书!
跳到导航 跳到搜索
Mediawiki>Bhsd
(恢复Yumeto讨论)的编辑至Bhsd的最后版本)
 
imported>=海豚=
无编辑摘要
 
(未显示同一用户的4个中间版本)
第1行: 第1行:
//  直接由ResourceLoader调用,因此不可使用ES6语法
/**
* @Source: https://llwiki.org/zh/MediaWiki:Gadget-stickyHeading.js
  * @Author: User:Bhsd
* @License: CC BY-NC-SA 4.0
*/
"use strict";
"use strict";
/*global mw, $*/
/*global mw, $*/
mw.loader.using(["oojs-ui"]).then(function() {
const nsid = mw.config.get( 'wgNamespaceNumber' ),
const nsid = mw.config.get( 'wgNamespaceNumber' ),
    pagename = mw.config.get('wgPageName'),
    pagename = mw.config.get('wgPageName'),
    contentModel = mw.config.get( 'wgPageContentModel' ),
    contentModel = mw.config.get( 'wgPageContentModel' ),
    skin = mw.config.get('skin'),
    skin = mw.config.get('skin'),
    gadgets = mw.gadgets || {},
    gadgets = mw.gadgets || {},
    stickyHeading = gadgets.stickyHeading || {},
    stickyHeading = gadgets.stickyHeading || {},
第11行: 第17行:
    mode = stickyHeading.mode,
    mode = stickyHeading.mode,
    collapse = (stickyHeading.collapse !== false);
    collapse = (stickyHeading.collapse !== false);
if ( (ns.includes( nsid ) || nsid % 2 === 1 || pagename == "LLWiki:互助客棧") && contentModel == 'wikitext' &&
if ( (mw.config.get('wgNamespaceNumber') == 1) || (mw.config.get('wgNamespaceNumber') == 7) || (mw.config.get('wgNamespaceNumber') == 9) || (mw.config.get('wgNamespaceNumber') == 11) || (mw.config.get('wgNamespaceNumber') == 13) || (mw.config.get('wgNamespaceNumber') == 15)&&contentModel == 'wikitext' &&
    ((skin == 'vector' && mode != 'mobile') || (skin == 'minerva' && mode != 'desktop')) ) { 
    ((skin == 'vector' && mode != 'mobile') || (skin == 'minerva' && mode != 'desktop')) ) { 
    mw.hook( 'wikipage.content' ).add(function( $content ) {
    mw.hook( 'wikipage.content' ).add(function( $content ) {
第21行: 第27行:
          .append( $(ele).nextAll( ':not(.section-container, #toc)' ).add(ele) );
          .append( $(ele).nextAll( ':not(.section-container, #toc)' ).add(ele) );
      });
      });
      
     if (!collapse || skin == 'minerva') { return; }
      $content.addClass( 'collapseHeading' );
      $content.addClass( 'collapseHeading' );
      const icon = $('<i class="mw-ui-icon-before mw-ui-icon-small mw-ui-icon mw-ui-icon-collapse"></i>');
      const icon = $('<i class="mw-ui-icon-before mw-ui-icon-small mw-ui-icon mw-ui-icon-collapse"></i>');
第33行: 第37行:
    });
    });
}
}
// [[category:作为模块的小工具]] [[category:讨论工具]] [[category:桌面版小工具]] [[category:手机版小工具]] [[category:默认开启的小工具]]
   });
// {{DEFAULTSORT:stickyHeading.js}}

2021年9月5日 (日) 22:14的最新版本

/**
 * @Source: https://llwiki.org/zh/MediaWiki:Gadget-stickyHeading.js
 * @Author: User:Bhsd
 * @License: CC BY-NC-SA 4.0
 */
"use strict";
/*global mw, $*/
mw.loader.using(["oojs-ui"]).then(function() {
const nsid = mw.config.get( 'wgNamespaceNumber' ),
    pagename = mw.config.get('wgPageName'),
    contentModel = mw.config.get( 'wgPageContentModel' ),
    skin = mw.config.get('skin'),

    gadgets = mw.gadgets || {},
    stickyHeading = gadgets.stickyHeading || {},
    ns = stickyHeading.namespace || [],
    mode = stickyHeading.mode,
    collapse = (stickyHeading.collapse !== false);
if ( (mw.config.get('wgNamespaceNumber') == 1) || (mw.config.get('wgNamespaceNumber') == 7) || (mw.config.get('wgNamespaceNumber') == 9) || (mw.config.get('wgNamespaceNumber') == 11) || (mw.config.get('wgNamespaceNumber') == 13) || (mw.config.get('wgNamespaceNumber') == 15)&&contentModel == 'wikitext' &&
    ((skin == 'vector' && mode != 'mobile') || (skin == 'minerva' && mode != 'desktop')) ) { 
    mw.hook( 'wikipage.content' ).add(function( $content ) {
        console.log('Hook: wikipage.content, 开始添加粘性章节标题');
        $content.addClass( 'stickyHeading' );
        const headings = $content.find( '.mw-parser-output > h2' );
        headings.toArray().reverse().forEach(function(ele) {
            $('<div>').addClass( 'section-container' ).insertBefore(ele)
                .append( $(ele).nextAll( ':not(.section-container, #toc)' ).add(ele) );
        });
        $content.addClass( 'collapseHeading' );
        const icon = $('<i class="mw-ui-icon-before mw-ui-icon-small mw-ui-icon mw-ui-icon-collapse"></i>');
        headings.prepend( icon ).on('click', function(e) {
            if ( $(e.target).is('a') ) { return; }
            const self = $(this);
            self.nextAll().toggleClass( 'sec-hide' );
            self.children().first().toggleClass( 'mw-ui-icon-collapse mw-ui-icon-expand' );
        });
    });
}
    });