Difference between revisions 274738 and 274739 on test2wiki/** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execute the rest in the callback. In most cases these dependencies will * be loaded (or loading) already and the callback will not be delayed. In case a * dependency hasn't arrived yet it'll make sure those are loaded before this. * * Partially copied from https://en.wikipedia.org/w/index.php?title=MediaWiki:Common.js&oldid=510637683 */ mw.loader.using( 'mediawiki.util', function() { /* Begin of mw.loader.using callback */ /** * WikiMiniAtlas * * Description: WikiMiniAtlas is a popup click and drag world map. * 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. * See [[Meta:WikiMiniAtlas]] for more information. * Maintainers: [[User:Dschwen]] */ mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400'); /* Test if an element has a certain class * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] * * @deprecated: Use $(element).hasClass() instead. */ window.hasClass = ( function() { var reCache = {}; return function (element, className) { return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className); }; })(); /**⏎ * Collapsible tables⏎ * * ********************************************************* * * Description: 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. Maintainers: [[User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = '"hide'"; var expandCaption = '"show'"; var tableIndex = 0; function collapseTable⏎ window.collapseTable = function( 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 ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = '"none'"; } Button.firstChild.data = expandCaption; } else { for ( var 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( $content ) {ollapseButtons(){ var tableIndex = 0; var NavigationBoxes = {}new Object(); var $Tables = $content.finddocument.getElementsByTagName( '"table'" ); ⏎ ⏎ var i; $Tables.each( function( i, tablefor ( var i = 0; i < Tables.length; i++ ) { if ( $(table).hasClass( 'Tables[i], "collapsible'" ) ) { /* only add button and increment count if there is a header row to work with */ var HeaderRow = tTables[i].getElementsByTagName( '"tr'" )[0]; if ( !HeaderRow ) { return; }continue; var Header = tableHeaderRow.getElementsByTagName( '"th'" )[0]; if ( !Header ) { return; }continue; NavigationBoxes[ tableIndex ] = tTables[i]; tTables[i].setAttribute( '"id'", '"collapsibleTable'" + tableIndex ); var Button = document.createElement( '"span'" ); var ButtonLink = document.createElement( 'a'"a" ); var ButtonText = document.createTextNode( collapseCaption ); ⏎ ⏎ Button.className = "collapseButton"; // Styles are declared in [[MediaWiki:Common.css]] Button.className = 'collapseButton';Common.css ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( '"id'", '"collapseButton'" + tableIndex ); ButtonLink.setAttribute( '"href'", '#'"#" ); $addHandler( ButtonLink ).on( ', "click'", createClickHandler( tableIndex new Function( "evt", "collapseTable(" + tableIndex + " ); return killEvt( evt );") ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( '['"[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( ']'"]" ) ); Header.insertBefore( Button, Header.firstChild ); tableIndex++; } } ); for ( var i = 0; i < tableIndex; i++ ) { if ( $hasClass( NavigationBoxes[i] ).hasClass( ', "collapsed'" ) ||⏎ ⏎ ( tableIndex >= autoCollapse && $hasClass( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) { collapseTable( i ); } else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) { var element = NavigationBoxes[i]; while ((element = element.parentNode)) { if ( $( element ).hasClass( 'outercollapse', "autocollapse" ) ) ) { collapseTable( i ); } else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) { var element = NavigationBoxes[i]; while (element = element.parentNode) { if ( hasClass( element, "outercollapse" ) ) { collapseTable ( i ); break; } } } } } $( 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){ var NavToggle = document.getElementById("NavToggle" + indexNavigationBar); var NavFrame = document.getElementById("NavFrame" + indexNavigationBar); if (!NavFrame || !NavToggle) { return false; } // if shown now if (NavToggle.firstChild.data == NavigationBarHide) { for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) { NavChild.style.display = 'none'; } } NavToggle.firstChild.data = NavigationBarShow; // if hidden now } else if (NavToggle.firstChild.data == NavigationBarShow) { for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) { NavChild.style.display = 'block'; } } NavToggle.firstChild.data = NavigationBarHide; } }; // adds show/hide-button to navigation bars function createNavigationBarToggleButton(){ var indexNavigationBar = 0; // iterate over all < div >-elements var divs = document.getElementsByTagName("div"); for (var i = 0; NavFrame = divs[i]; i++) { // if found a navigation bar if (hasClass(NavFrame, "NavFrame")) { indexNavigationBar++; var NavToggle = document.createElement("a"); NavToggle.className = 'NavToggle'; NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar); NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');'); var isCollapsed = hasClass( NavFrame, "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 (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) { if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { if ( NavChild.style.display == 'none' ) { isCollapsed = true; } } } if (isCollapsed) { for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, '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 (hasClass(NavFrame.childNodes[j], "NavHead")) { NavToggle.style.color = NavFrame.childNodes[j].style.color; NavFrame.childNodes[j].appendChild(NavToggle); } } NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); } } } $( createNavigationBarToggleButton ); /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE */ All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://test2.wikipedia.org/w/index.php?diff=prev&oldid=274739.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|