|
|
(83 intermediate revisions by 4 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. |
| */ | | */ |
| /*global mw, $, importStylesheet, importScript */ | | |
| /*jshint curly:false eqnull:true, strict:false, browser:true, */ | | |
| | $( 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, $, importStylesheet, importScript */ |
| | /* jshint strict:false, browser:true */ |
|
| |
|
| mw.loader.using( ['mediawiki.util', 'mediawiki.notify', 'jquery.client'], function () { | | mw.loader.using( ['mediawiki.util', 'mediawiki.notify', 'jquery.client'] ).done( function () { |
| /* Begin of mw.loader.using callback */ | | /* Begin of mw.loader.using callback */ |
|
| |
|
| * /**
| | /** |
| * * Main Page layout fixes
| | * Main Page layout fixes |
| * *
| | * |
| * * 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 () { |
| * mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
| | mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias', |
| * 'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias' );
| | 'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias' ); |
| * } );
| | } ); |
| * } | | } |
| | */ |
|
| |
|
| /** | | /** |
Line 51: |
Line 65: |
|
| |
|
| /** | | /** |
| * Map addPortletLink to mw.util | | * Map addPortletLink to mw.util |
| *
| |
| * @deprecated: Use mw.util.addPortletLink instead. | | * @deprecated: Use mw.util.addPortletLink instead. |
| */ | | */ |
| mw.log.deprecate( window, 'addPortletLink', function () { | | mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' ); |
| return mw.util.addPortletLink.apply( mw.util, arguments );
| |
| }, 'Use mw.util.addPortletLink() instead' );
| |
|
| |
|
| /** | | /** |
| * Extract a URL parameter from the current URL | | * Extract a URL parameter from the current URL |
| *
| |
| * @deprecated: Use mw.util.getParamValue with proper escaping | | * @deprecated: Use mw.util.getParamValue with proper escaping |
| */ | | */ |
| mw.log.deprecate( window, 'getURLParamValue', function () { | | mw.log.deprecate( window, 'getURLParamValue', mw.util.getParamValue, 'Use mw.util.getParamValue instead' ); |
| return mw.util.getParamValue.apply( mw.util, arguments );
| |
| }, 'Use mw.util.getParamValue() instead' );
| |
|
| |
|
| /** | | /** |
| * Test if an element has a certain class | | * Test if an element has a certain class |
| *
| |
| * @deprecated: Use $(element).hasClass() instead. | | * @deprecated: Use $(element).hasClass() instead. |
| */ | | */ |
Line 79: |
Line 86: |
| /** | | /** |
| * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL | | * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL |
| * @rev 5 | | * @rev 6 |
| */ | | */ |
| // CSS
| | var extraCSS = mw.util.getParamValue( 'withCSS' ), |
| var extraCSS = mw.util.getParamValue( 'withCSS' ); | | extraJS = mw.util.getParamValue( 'withJS' ); |
| | |
| if ( extraCSS ) { | | if ( extraCSS ) { |
| if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
| | if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) { |
| importStylesheet( extraCSS );
| | 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' } ); |
| }
| | } |
| } | | } |
|
| |
|
| // JS
| |
| var extraJS = mw.util.getParamValue( 'withJS' );
| |
| if ( extraJS ) { | | if ( extraJS ) { |
| if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
| | if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) { |
| importScript( extraJS );
| | 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' } ); |
| }
| | } |
| } | | } |
|
| |
|
Line 117: |
Line 123: |
|
| |
|
| /** | | /** |
| * Load scripts specific to Internet Explorer | | * 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]] |
| */ | | */ |
| if ( $.client.profile().name === 'msie' ) {
| | ( function ( mw, $ ) { |
| importScript( 'MediaWiki:Common.js/IEFixes.js' );
| | 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 ) ); |
|
| |
|
| /** | | /** |
Line 127: |
Line 143: |
| */ | | */ |
| if ( navigator.appVersion.search(/windows nt 5/i) !== -1 ) { | | if ( navigator.appVersion.search(/windows nt 5/i) !== -1 ) { |
| mw.util.addCSS( '.IPA { font-family: "Lucida Sans Unicode", "Arial Unicode MS"; } ' + | | mw.util.addCSS( '.IPA { font-family: "Lucida Sans Unicode", "Arial Unicode MS"; } ' + |
| '.Unicode { font-family: "Arial Unicode MS", "Lucida Sans Unicode"; } ' ); | | '.Unicode { font-family: "Arial Unicode MS", "Lucida Sans Unicode"; } ' ); |
| } | | } |
Line 137: |
Line 153: |
| * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. | | * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. |
| * The script itself is located on meta because it is used by many projects. | | * The script itself is located on meta because it is used by many projects. |
| * See [[Meta:WikiMiniAtlas]] for more information. | | * See [[Meta:WikiMiniAtlas]] for more information. |
| * Maintainers: [[User:Dschwen]] | | * Maintainers: [[User:Dschwen]] |
| */ | | */ |
Line 160: |
Line 176: |
| } )(); | | } )(); |
|
| |
|
| /**
| |
| * Interwiki links to featured articles ***************************************
| |
| *
| |
| * Description: Highlights interwiki links to featured articles (or
| |
| * equivalents) by changing the bullet before the interwiki link
| |
| * into a star.
| |
| * Maintainers: [[User:R. Koot]]
| |
| */
| |
| function LinkFA() {
| |
| if ( document.getElementById( 'p-lang' ) ) {
| |
| var InterwikiLinks = document.getElementById( 'p-lang' ).getElementsByTagName( 'li' );
| |
|
| |
| for ( var i = 0; i < InterwikiLinks.length; i++ ) {
| |
| var className = InterwikiLinks[i].className.match(/interwiki-[-\w]+/);
| |
| if ( document.getElementById( className + '-fa' ) ) {
| |
| InterwikiLinks[i].className += ' FA';
| |
| InterwikiLinks[i].title = 'This is a featured article in this language.';
| |
| } else if ( document.getElementById( className + '-ga' ) ) {
| |
| InterwikiLinks[i].className += ' GA';
| |
| InterwikiLinks[i].title = 'This is a good article in this language.';
| |
| }
| |
| }
| |
| }
| |
| }
| |
|
| |
| mw.hook( 'wikipage.content' ).add( LinkFA );
| |
|
| |
| /**
| |
| * Collapsible tables
| |
| *
| |
| * Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
| |
| *
| |
| * @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';
| |
|
| |
| 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;
| |
|
| |
| 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 = Rows[0].style.display;
| |
| }
| |
| Button.firstChild.data = collapseCaption;
| |
| }
| |
| }
| |
|
| |
| function createClickHandler( tableIndex ) {
| |
| return function ( e ) {
| |
| e.preventDefault();
| |
| collapseTable( tableIndex );
| |
| };
| |
| }
| |
|
| |
| function createCollapseButtons() {
| |
| var tableIndex = 0;
| |
| var NavigationBoxes = {};
| |
| var Tables = document.getElementsByTagName( 'table' );
| |
| var i;
| |
|
| |
| for ( i = 0; i < Tables.length; i++ ) {
| |
| if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
| |
|
| |
| /* only add button and increment count if there is a header row to work with */
| |
| var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
| |
| if ( !HeaderRow ) {
| |
| continue;
| |
| }
| |
| var Header = HeaderRow.getElementsByTagName( 'th' )[0];
| |
| if ( !Header ) {
| |
| continue;
| |
| }
| |
|
| |
| NavigationBoxes[ tableIndex ] = Tables[i];
| |
| Tables[i].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 );
| |
|
| |
| /**
| |
| * Dynamic Navigation Bars (experimental)
| |
| *
| |
| * Description: See [[Wikipedia:NavFrame]].
| |
| * Maintainers: UNMAINTAINED
| |
| */
| |
|
| |
| /* set up the words in your language */
| |
| var NavigationBarHide = '[' + collapseCaption + ']';
| |
| var NavigationBarShow = '[' + expandCaption + ']';
| |
|
| |
| /**
| |
| * 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() {
| |
| var indexNavigationBar = 0;
| |
| var NavFrame;
| |
| var NavChild;
| |
| /* iterate over all < div >-elements */
| |
| var divs = document.getElementsByTagName( 'div' );
| |
| for ( var i = 0; (NavFrame = divs[i]); i++ ) {
| |
| /* 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 452: |
Line 227: |
|
| |
|
| $( function () { | | $( function () { |
| var cats = document.getElementById( 'mw-normal-catlinks' ); | | var cats = mw.config.get('wgCategories'); |
| if ( !cats ) { | | if ( !cats ) { |
| return; | | return; |
| } | | } |
| cats = cats.getElementsByTagName( 'a' ); | | if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) { |
| for ( var i = 0; i < cats.length; i++ ) {
| | addEditIntro( 'Template:BLP_editintro' ); |
| if ( cats[i].title === 'Category:Living people' || cats[i].title === 'Category:Possibly living people' ) {
| |
| addEditIntro( 'Template:BLP_editintro' );
| |
| break;
| |
| }
| |
| } | | } |
| } ); | | } ); |
| } | | } |
|
| |
|
| /**
| |
| * Description: Stay on the secure server as much as possible
| |
| * Maintainers: [[User:TheDJ]]
| |
| */
| |
| if ( document.location && document.location.protocol === 'https:' ) {
| |
| /* New secure servers */
| |
| importScript( 'MediaWiki:Common.js/secure new.js' );
| |
| }
| |
|
| |
|
| /** | | //Global Show/Hide |
| * Description: Removes ArticleFeedback related cookies from clients.
| | //Author: Princess Platinum |
| * Can be removed in a couple of weeks to a month or so. | | |
| * Maintainers: [[User:Reedy]]
| | //$(function() { |
| */
| | // $('#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>'); |
| var match, re = /[\S]*articleFeedback[^=]*/g; | | //}); |
| while ( ( match = re.exec( document.cookie ) ) !== null ) {
| | |
| document.cookie = match + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;';
| | |
| }
| | //$(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 */ |