|
|
(21 intermediate revisions by 2 users not shown) |
Line 11: |
Line 11: |
| * dependency hasn't arrived yet it'll make sure those are loaded before this. | | * dependency hasn't arrived yet it'll make sure those are loaded before this. |
| */ | | */ |
| | |
| | |
| | $( document ).ready( function() { |
| | var $collapseglobal = $('#collapse-global'); |
| | if ( $collapseglobal.length > 0 ) { |
| | $collapseglobal.html(''); |
| | $('<a class="mediawiki-button">Expand/Collapse All</a>').on('click', function() { |
| | $('.mw-collapsible-toggle a').trigger('click.mw-collapsible'); |
| | }).appendTo($collapseglobal); |
| | } |
| | }); |
|
| |
|
| /* global mw, $ */ | | |
| | /* global mw, $, importStylesheet, importScript */ |
| /* jshint strict:false, browser:true */ | | /* jshint strict:false, browser:true */ |
|
| |
|
| mw.loader.using( ['mediawiki.user', 'mediawiki.util', 'mediawiki.notify'] ).done( function () { | | mw.loader.using( ['mediawiki.util', 'mediawiki.notify', 'jquery.client'] ).done( function () { |
| /* Begin of mw.loader.using callback */ | | /* Begin of mw.loader.using callback */ |
|
| |
|
Line 23: |
Line 35: |
| * Description: Adds an additional link to the complete list of languages available. | | * Description: Adds an additional link to the complete list of languages available. |
| * Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]] | | * Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]] |
| */ | | * |
| if ( mw.config.get( 'wgPageName' ) === 'Main_Page' || mw.config.get( 'wgPageName' ) === 'Talk:Main_Page' ) { | | if ( mw.config.get( 'wgPageName' ) === 'Main_Page' || mw.config.get( 'wgPageName' ) === 'Talk:Main_Page' ) { |
| $( function () { | | $( function () { |
Line 30: |
Line 42: |
| } ); | | } ); |
| } | | } |
| | */ |
|
| |
|
| /** | | /** |
Line 80: |
Line 93: |
| if ( extraCSS ) { | | if ( extraCSS ) { |
| if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { | | if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { |
| mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' ); | | importStylesheet( extraCSS ); |
| } else { | | } else { |
| mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); | | mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } ); |
Line 88: |
Line 101: |
| if ( extraJS ) { | | if ( extraJS ) { |
| if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { | | if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { |
| mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' ); | | importScript( extraJS ); |
| } else { | | } else { |
| mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); | | mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } ); |
| } | | } |
| | } |
| | |
| | /** |
| | * Import more specific scripts if necessary |
| | */ |
| | if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' || mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) { |
| | /* scripts specific to editing pages */ |
| | importScript( 'MediaWiki:Common.js/edit.js' ); |
| | } else if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ) { |
| | /* watchlist scripts */ |
| | importScript( 'MediaWiki:Common.js/watchlist.js' ); |
| | } |
| | if ( mw.config.get( 'wgNamespaceNumber' ) === 6 ) { |
| | /* file description page scripts */ |
| | importScript( 'MediaWiki:Common.js/file.js' ); |
| | } |
| | |
| | /** |
| | * Helper script for .hlist class in Common.css |
| | * Add pseudo-selector class to last-child list items in IE8 |
| | * @source mediawiki.org/wiki/Snippets/Horizontal_lists |
| | * @revision 6 (2014-08-23) |
| | * @author [[User:Edokter]] |
| | */ |
| | ( function ( mw, $ ) { |
| | var profile = $.client.profile(); |
| | if ( profile.name === 'msie' && profile.versionNumber === 8 ) { |
| | mw.hook( 'wikipage.content' ).add( function ( $content ) { |
| | $content.find( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' ) |
| | .addClass( 'hlist-last-child' ); |
| | } ); |
| | } |
| | }( mediaWiki, jQuery ) ); |
| | |
| | /** |
| | * Fix for Windows XP Unicode font rendering |
| | */ |
| | if ( navigator.appVersion.search(/windows nt 5/i) !== -1 ) { |
| | mw.util.addCSS( '.IPA { font-family: "Lucida Sans Unicode", "Arial Unicode MS"; } ' + |
| | '.Unicode { font-family: "Arial Unicode MS", "Lucida Sans Unicode"; } ' ); |
| } | | } |
|
| |
|
Line 123: |
Line 176: |
| } )(); | | } )(); |
|
| |
|
| /**
| |
| * Collapsible tables
| |
| *
| |
| * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
| |
| *
| |
| * @version 2.0.3 (2014-03-14)
| |
| * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
| |
| * @author [[User:R. Koot]]
| |
| * @author [[User:Krinkle]]
| |
| * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
| |
| * is supported in MediaWiki core.
| |
| */
| |
|
| |
| var autoCollapse = 2;
| |
| var collapseCaption = 'hide';
| |
| var expandCaption = 'show';
| |
| var tableIndex = 0;
| |
|
| |
| function collapseTable( tableIndex ) {
| |
| var Button = document.getElementById( 'collapseButton' + tableIndex );
| |
| var Table = document.getElementById( 'collapsibleTable' + tableIndex );
| |
|
| |
| if ( !Table || !Button ) {
| |
| return false;
| |
| }
| |
|
| |
| var Rows = Table.rows;
| |
| var i;
| |
| var $row0 = $(Rows[0]);
| |
|
| |
| if ( Button.firstChild.data === collapseCaption ) {
| |
| for ( i = 1; i < Rows.length; i++ ) {
| |
| Rows[i].style.display = 'none';
| |
| }
| |
| Button.firstChild.data = expandCaption;
| |
| } else {
| |
| for ( i = 1; i < Rows.length; i++ ) {
| |
| Rows[i].style.display = $row0.css( 'display' );
| |
| }
| |
| Button.firstChild.data = collapseCaption;
| |
| }
| |
| }
| |
|
| |
| function createClickHandler( tableIndex ) {
| |
| return function ( e ) {
| |
| e.preventDefault();
| |
| collapseTable( tableIndex );
| |
| };
| |
| }
| |
|
| |
| function createCollapseButtons( $content ) {
| |
| var NavigationBoxes = {};
| |
| var $Tables = $content.find( 'table' );
| |
| var i;
| |
|
| |
| $Tables.each( function( i, table ) {
| |
| if ( $(table).hasClass( 'collapsible' ) ) {
| |
|
| |
| /* only add button and increment count if there is a header row to work with */
| |
| var HeaderRow = table.getElementsByTagName( 'tr' )[0];
| |
| if ( !HeaderRow ) {
| |
| return;
| |
| }
| |
| var Header = table.getElementsByTagName( 'th' )[0];
| |
| if ( !Header ) {
| |
| return;
| |
| }
| |
|
| |
| NavigationBoxes[ tableIndex ] = table;
| |
| table.setAttribute( 'id', 'collapsibleTable' + tableIndex );
| |
|
| |
| var Button = document.createElement( 'span' );
| |
| var ButtonLink = document.createElement( 'a' );
| |
| var ButtonText = document.createTextNode( collapseCaption );
| |
| // Styles are declared in [[MediaWiki:Common.css]]
| |
| Button.className = 'collapseButton';
| |
|
| |
| ButtonLink.style.color = Header.style.color;
| |
| ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
| |
| ButtonLink.setAttribute( 'href', '#' );
| |
| $( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
| |
| ButtonLink.appendChild( ButtonText );
| |
|
| |
| Button.appendChild( document.createTextNode( '[' ) );
| |
| Button.appendChild( ButtonLink );
| |
| Button.appendChild( document.createTextNode( ']' ) );
| |
|
| |
| Header.insertBefore( Button, Header.firstChild );
| |
| tableIndex++;
| |
| }
| |
| } );
| |
|
| |
| for ( i = 0; i < tableIndex; i++ ) {
| |
| if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
| |
| ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
| |
| ) {
| |
| collapseTable( i );
| |
| }
| |
| else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
| |
| var element = NavigationBoxes[i];
| |
| while ((element = element.parentNode)) {
| |
| if ( $( element ).hasClass( 'outercollapse' ) ) {
| |
| collapseTable ( i );
| |
| break;
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
|
| |
| mw.hook( 'wikipage.content' ).add( createCollapseButtons );
| |
|
| |
| /**
| |
| * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
| |
| *
| |
| * Maintainers: TheDJ
| |
| */
| |
| function mwCollapsibleSetup( $collapsibleContent ) {
| |
| var $element,
| |
| $toggle,
| |
| autoCollapseThreshold = 2;
| |
| $.each( $collapsibleContent, function (index, element) {
| |
| $element = $( element );
| |
| if ( $collapsibleContent.length > autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
| |
| $element.data( 'mw-collapsible' ).collapse();
| |
| } else if ( $element.hasClass( 'innercollapse' ) ) {
| |
| if ( $element.parents( '.outercollapse' ).length > 0 ) {
| |
| $element.data( 'mw-collapsible' ).collapse();
| |
| }
| |
| }
| |
| $toggle = $element.find( '.mw-collapsible-toggle' );
| |
| if ( $toggle.length ) {
| |
| // Make the toggle inherit text color
| |
| if( $toggle.parent()[0].style.color ) {
| |
| $toggle.find( 'a' ).css( 'color', 'inherit' );
| |
| }
| |
| }
| |
| } );
| |
| }
| |
|
| |
| mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
| |
|
| |
| /**
| |
| * Dynamic Navigation Bars (experimental)
| |
| *
| |
| * Description: See [[Wikipedia:NavFrame]].
| |
| * Maintainers: UNMAINTAINED
| |
| */
| |
|
| |
| /* set up the words in your language */
| |
| var NavigationBarHide = '[' + collapseCaption + ']';
| |
| var NavigationBarShow = '[' + expandCaption + ']';
| |
| var indexNavigationBar = 0;
| |
|
| |
| /**
| |
| * Shows and hides content and picture (if available) of navigation bars
| |
| * Parameters:
| |
| * indexNavigationBar: the index of navigation bar to be toggled
| |
| **/
| |
| window.toggleNavigationBar = function ( indexNavigationBar, event ) {
| |
| var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
| |
| var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
| |
| var NavChild;
| |
|
| |
| if ( !NavFrame || !NavToggle ) {
| |
| return false;
| |
| }
| |
|
| |
| /* if shown now */
| |
| if ( NavToggle.firstChild.data === NavigationBarHide ) {
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarShow;
| |
|
| |
| /* if hidden now */
| |
| } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarHide;
| |
| }
| |
|
| |
| event.preventDefault();
| |
| };
| |
|
| |
| /* adds show/hide-button to navigation bars */
| |
| function createNavigationBarToggleButton( $content ) {
| |
| var NavChild;
| |
| /* iterate over all < div >-elements */
| |
| var $divs = $content.find( 'div' );
| |
| $divs.each( function ( i, NavFrame ) {
| |
| /* if found a navigation bar */
| |
| if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
| |
|
| |
| indexNavigationBar++;
| |
| var NavToggle = document.createElement( 'a' );
| |
| NavToggle.className = 'NavToggle';
| |
| NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
| |
| NavToggle.setAttribute( 'href', '#' );
| |
| $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
| |
|
| |
| var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
| |
| /**
| |
| * Check if any children are already hidden. This loop is here for backwards compatibility:
| |
| * the old way of making NavFrames start out collapsed was to manually add style="display:none"
| |
| * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
| |
| * the content visible without JavaScript support), the new recommended way is to add the class
| |
| * "collapsed" to the NavFrame itself, just like with collapsible tables.
| |
| */
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
| |
| if ( NavChild.style.display === 'none' ) {
| |
| isCollapsed = true;
| |
| }
| |
| }
| |
| }
| |
| if ( isCollapsed ) {
| |
| for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
| |
| if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| }
| |
| }
| |
| var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
| |
| NavToggle.appendChild( NavToggleText );
| |
|
| |
| /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
| |
| for( var j = 0; j < NavFrame.childNodes.length; j++ ) {
| |
| if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
| |
| NavToggle.style.color = NavFrame.childNodes[j].style.color;
| |
| NavFrame.childNodes[j].appendChild( NavToggle );
| |
| }
| |
| }
| |
| NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
| |
| }
| |
| } );
| |
| }
| |
|
| |
| mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
| |
|
| |
|
| /** | | /** |
Line 428: |
Line 237: |
| } | | } |
|
| |
|
| /* Actions specific to the edit page */
| |
| if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' ) {
| |
| /**
| |
| * Fix edit summary prompt for undo
| |
| *
| |
| * Fixes the fact that the undo function combined with the "no edit summary prompter"
| |
| * complains about missing editsummary, if leaving the edit summary unchanged.
| |
| * Added by [[User:Deskana]], code by [[User:Tra]].
| |
| * See also [[phab:T10912]].
| |
| */
| |
| $(function () {
| |
| if (document.location.search.indexOf('undo=') !== -1 && document.getElementsByName('wpAutoSummary')[0]) {
| |
| document.getElementsByName('wpAutoSummary')[0].value = '1';
| |
| }
| |
| });
| |
| }
| |
|
| |
|
| //Global Show/Hide | | //Global Show/Hide |
| //Author: Princess Platinum | | //Author: Princess Platinum |
| | | |
| $(function() { | | //$(function() { |
| $('#collapse-global').html('<a class="mediawiki-button" onclick="for (var i=0; i<50; i++) { "wikitable sortable collapsible collapsed"([i]); }">Show/Hide All</a>');
| | // $('#collapse-global').html('<a class="mediawiki-button" onclick="for (var i=0; i<50; i++) { "mw-collapsible mw-collapsed sortable wikitable"([i]); }">Expand/Collapse All</a>'); |
| }); | | //}); |
| | |
|
| |
|
| | //$(function() { |
| | // var $collapseglobal = $('#collapse-global'); |
| | // if ( $collapseglobal.length > 0 ) { |
| | // $collapseglobal.html(''); |
| | // $('<a class="mediawiki-button">Expand/Collapse All</a>').on('click', function() { |
| | // $('a.collapsible-text').trigger('click.collapsible'); |
| | // }).appendTo($collapseglobal); |
| | // } |
| | //}); |
|
| |
|
|
| |
|
| | // Complete as of 171104 |
| /* End of mw.loader.using callback */ | | /* End of mw.loader.using callback */ |
| } ); | | } ); |
| | |
| | |
| | $.when( |
| | mw.loader.getScript( 'https://sarkarverse.org/index.php?title=MediaWiki:MP3Player.js&action=raw&ctype=text/javascript' ) |
| | ) |
| | .then( |
| | function () { |
| | $( ".sarkarverse-mp3-player" ).each(function() { |
| | new GreenAudioPlayer( this ); |
| | }); |
| | }, |
| | function ( e ) { |
| | mw.log.error( e.message ); // => "Failed to load script" |
| | } |
| | ); |
| | |
| /* DO NOT ADD CODE BELOW THIS LINE */ | | /* DO NOT ADD CODE BELOW THIS LINE */ |