Merge "Skin: Only load jquery.makeCollapsible if needed"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 15 Mar 2017 17:58:03 +0000 (17:58 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 15 Mar 2017 17:58:03 +0000 (17:58 +0000)
includes/skins/Skin.php
resources/Resources.php
resources/src/mediawiki/page/ready.js

index c61f5e9..52678d4 100644 (file)
@@ -179,6 +179,11 @@ abstract class Skin extends ContextSource {
                        $modules['content'][] = 'jquery.tablesorter';
                }
 
+               // Preload jquery.makeCollapsible for mediawiki.page.ready
+               if ( strpos( $out->getHTML(), 'mw-collapsible' ) !== false ) {
+                       $modules['content'][] = 'jquery.makeCollapsible';
+               }
+
                // Add various resources if required
                if ( $wgUseAjax && $wgEnableAPI ) {
                        if ( $wgEnableWriteAPI && $user->isLoggedIn()
index 119d167..6d08c44 100644 (file)
@@ -1671,7 +1671,6 @@ return [
                'dependencies' => [
                        'jquery.accessKeyLabel',
                        'jquery.checkboxShiftClick',
-                       'jquery.makeCollapsible',
                        'jquery.placeholder',
                        'jquery.mw-jump',
                ],
index 860fcf5..f11bbde 100644 (file)
        }
 
        mw.hook( 'wikipage.content' ).add( function ( $content ) {
-               var $sortable;
+               var $sortable, $collapsible;
 
                // Run jquery.placeholder polyfill if placeholder is not supported
                if ( !supportsPlaceholder ) {
                        $content.find( 'input[placeholder]' ).placeholder();
                }
 
-               // Run jquery.makeCollapsible
-               $content.find( '.mw-collapsible' ).makeCollapsible();
+               $collapsible = $content.find( '.mw-collapsible' );
+               if ( $collapsible.length ) {
+                       // Preloaded by Skin::getDefaultModules()
+                       mw.loader.using( 'jquery.makeCollapsible', function () {
+                               $collapsible.makeCollapsible();
+                       } );
+               }
 
                $sortable = $content.find( 'table.sortable' );
                if ( $sortable.length ) {