Gerrit Patch Uploader has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/106132


Change subject: Move toctoggle from mediawiki.util.js to separate file 
mediawiki.toc.js
......................................................................

Move toctoggle from mediawiki.util.js to separate file mediawiki.toc.js

Change-Id: I3ca2acb70db98d00e3f1bd2227091bd32d8e18a5
---
M resources/Resources.php
A resources/mediawiki/mediawiki.toc.js
M resources/mediawiki/mediawiki.util.js
3 files changed, 79 insertions(+), 48 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/32/106132/1

diff --git a/resources/Resources.php b/resources/Resources.php
index 01d4a3f..da2b766 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -801,6 +801,14 @@
                ),
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.toc' => array(
+               'scripts' => 'resources/mediawiki/mediawiki.toc.js',
+               'dependencies' => array(
+                       'jquery.cookie',
+               ),
+               'messages' => array( 'showtoc', 'hidetoc' ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.Uri' => array(
                'scripts' => 'resources/mediawiki/mediawiki.Uri.js',
                'targets' => array( 'desktop', 'mobile' ),
@@ -819,11 +827,10 @@
                'scripts' => 'resources/mediawiki/mediawiki.util.js',
                'dependencies' => array(
                        'jquery.client',
-                       'jquery.cookie',
                        'jquery.mwExtension',
                        'mediawiki.notify',
+                       'mediawiki.toc',
                ),
-               'messages' => array( 'showtoc', 'hidetoc' ),
                'position' => 'top', // For $wgPreloadJavaScriptMwUtil
                'targets' => array( 'desktop', 'mobile' ),
        ),
diff --git a/resources/mediawiki/mediawiki.toc.js 
b/resources/mediawiki/mediawiki.toc.js
new file mode 100644
index 0000000..8696807
--- /dev/null
+++ b/resources/mediawiki/mediawiki.toc.js
@@ -0,0 +1,63 @@
+( function ( mw, $ ) {
+       'use strict';
+
+       /**
+        * Hide/show the table of contents element
+        *
+        * @param {jQuery} $toggleLink A jQuery object of the toggle link.
+        */
+       function toggleToc( $toggleLink ) {
+               var $tocList = $( '#toc ul:first' );
+
+               // This function shouldn't be called if there's no TOC,
+               // but just in case...
+               if ( $tocList.length ) {
+                       if ( $tocList.is( ':hidden' ) ) {
+                               $tocList.slideDown( 'fast' );
+                               $toggleLink.text( mw.msg( 'hidetoc' ) );
+                               $( '#toc' ).removeClass( 'tochidden' );
+                               $.cookie( 'mw_hidetoc', null, {
+                                       expires: 30,
+                                       path: '/'
+                               } );
+                       } else {
+                               $tocList.slideUp( 'fast' );
+                               $toggleLink.text( mw.msg( 'showtoc' ) );
+                               $( '#toc' ).addClass( 'tochidden' );
+                               $.cookie( 'mw_hidetoc', '1', {
+                                       expires: 30,
+                                       path: '/'
+                               } );
+                       }
+               }
+       }
+
+       // Table of contents toggle
+       mw.hook( 'wikipage.content' ).add( function () {
+               var $tocTitle, $tocToggleLink, hideTocCookie;
+               $tocTitle = $( '#toctitle' );
+               $tocToggleLink = $( '#togglelink' );
+               // Only add it if there is a TOC and there is no toggle added 
already
+               if ( $( '#toc' ).length && $tocTitle.length && 
!$tocToggleLink.length ) {
+                       hideTocCookie = $.cookie( 'mw_hidetoc' );
+                       $tocToggleLink = $( '<a href="#" class="internal" 
id="togglelink"></a>' )
+                               .text( mw.msg( 'hidetoc' ) )
+                               .click( function ( e ) {
+                                       e.preventDefault();
+                                       toggleToc( $(this) );
+                               } );
+                       $tocTitle.append(
+                               $tocToggleLink
+                                       .wrap( '<span 
class="toctoggle"></span>' )
+                                       .parent()
+                                               .prepend( '&nbsp;[' )
+                                               .append( ']&nbsp;' )
+                       );
+
+                       if ( hideTocCookie === '1' ) {
+                               toggleToc( $tocToggleLink );
+                       }
+               }
+       } );
+
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki/mediawiki.util.js 
b/resources/mediawiki/mediawiki.util.js
index 86f06b8..ab6149f 100644
--- a/resources/mediawiki/mediawiki.util.js
+++ b/resources/mediawiki/mediawiki.util.js
@@ -104,34 +104,6 @@
                                // Make sure we don't unset util.$content if it 
was preset and we don't find anything
                                return util.$content;
                        } )();
-
-                       // Table of contents toggle
-                       mw.hook( 'wikipage.content' ).add( function () {
-                               var $tocTitle, $tocToggleLink, hideTocCookie;
-                               $tocTitle = $( '#toctitle' );
-                               $tocToggleLink = $( '#togglelink' );
-                               // Only add it if there is a TOC and there is 
no toggle added already
-                               if ( $( '#toc' ).length && $tocTitle.length && 
!$tocToggleLink.length ) {
-                                       hideTocCookie = $.cookie( 'mw_hidetoc' 
);
-                                       $tocToggleLink = $( '<a href="#" 
class="internal" id="togglelink"></a>' )
-                                               .text( mw.msg( 'hidetoc' ) )
-                                               .click( function ( e ) {
-                                                       e.preventDefault();
-                                                       util.toggleToc( $(this) 
);
-                                               } );
-                                       $tocTitle.append(
-                                               $tocToggleLink
-                                                       .wrap( '<span 
class="toctoggle"></span>' )
-                                                       .parent()
-                                                               .prepend( 
'&nbsp;[' )
-                                                               .append( 
']&nbsp;' )
-                                       );
-
-                                       if ( hideTocCookie === '1' ) {
-                                               util.toggleToc( $tocToggleLink 
);
-                                       }
-                               }
-                       } );
                },
 
                /* Main body */
@@ -228,33 +200,22 @@
                 * or Null if there was no table of contents.
                 */
                toggleToc: function ( $toggleLink, callback ) {
-                       var $tocList = $( '#toc ul:first' );
+                       var ret, $tocList = $( '#toc ul:first' );
 
                        // This function shouldn't be called if there's no TOC,
                        // but just in case...
                        if ( $tocList.length ) {
                                if ( $tocList.is( ':hidden' ) ) {
-                                       $tocList.slideDown( 'fast', callback );
-                                       $toggleLink.text( mw.msg( 'hidetoc' ) );
-                                       $( '#toc' ).removeClass( 'tochidden' );
-                                       $.cookie( 'mw_hidetoc', null, {
-                                               expires: 30,
-                                               path: '/'
-                                       } );
-                                       return true;
+                                       ret = true;
                                } else {
-                                       $tocList.slideUp( 'fast', callback );
-                                       $toggleLink.text( mw.msg( 'showtoc' ) );
-                                       $( '#toc' ).addClass( 'tochidden' );
-                                       $.cookie( 'mw_hidetoc', '1', {
-                                               expires: 30,
-                                               path: '/'
-                                       } );
-                                       return false;
+                                       ret = false;
                                }
                        } else {
-                               return null;
+                               ret = null;
                        }
+                       $toggleLink.click();
+                       $tocList.promise().done( callback );
+                       return ret;
                },
 
                /**

-- 
To view, visit https://gerrit.wikimedia.org/r/106132
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3ca2acb70db98d00e3f1bd2227091bd32d8e18a5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Gerrit Patch Uploader <gerritpatchuploa...@gmail.com>
Gerrit-Reviewer: Gerrit Patch Uploader <gerritpatchuploa...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to