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( ' [' ) + .append( '] ' ) + ); + + 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( ' [' ) - .append( '] ' ) - ); - - 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