Difference between revisions 9095 and 9096 on newikibooks/**⏎ * 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. */ mw.loader.using( 'mediawiki.util', function() { /* Begin of mw.loader.using callback */ /** * Redirect User:Name/skin.js and skin.css to the current skin's pages * (unless the 'skin' page really exists) * @source: http://www.mediawiki.org/wiki/Snippets/Redirect_skin.js * @rev: 2 */ if ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgNamespaceNumber' ) == 2 ) { var titleParts = mw.config.get( 'wgPageName' ).split( '/' ); // Make sure there was a part before and after the slash // And that the latter is 'skin.js' or 'skin.css' if ( titleParts.length == 2 ) { var userSkinPage = titleParts.shift() + '/' + mw.config.get( 'skin' ); if ( titleParts.slice(-1) == 'skin.js' ) { window.location.href = mw.util.wikiGetlink( userSkinPage + '.js' ); } else if ( titleParts.slice(-1) == 'skin.css' ) { window.location.href = mw.util.wikiGetlink( userSkinPage + '.css' ); } } } /** Map addPortletLink to mw.util */ window.addPortletLink = function() { return mw.util.addPortletLink.apply( mw.util, arguments ); }; /** extract a URL parameter from the current URL ********** * * @deprecated: Use mw.util.getParamValue with proper escaping */ window.getURLParamValue = function() { return mw.util.getParamValue.apply( mw.util, arguments ); }; /** &withCSS= and &withJS= URL parameters ******* * Allow to try custom scripts from MediaWiki space * without editing personal .css or .js files */ var extraCSS = mw.util.getParamValue("withCSS"); if ( extraCSS && extraCSS.match(/^MediaWiki:[^&<>=%]*\.css$/) ) { importStylesheet(extraCSS); } var extraJS = mw.util.getParamValue("withJS"); if ( extraJS && extraJS.match(/^MediaWiki:[^&<>=%]*\.js$/) ) { importScript(extraJS); } /* Import more specific scripts if necessary */ if (wgAction == 'edit' || wgAction == 'submit' || wgPageName == 'Special:Upload') { //scripts specific to editing pages importScript('MediaWiki:Common.js/edit.js'); } else if (mw.config.get('wgPageName') == 'Special:Watchlist') { //watchlist scripts mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=MediaWiki:Common.js/watchlist.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400'); } if ( wgNamespaceNumber == 6 ) { importScript('MediaWiki:Common.js/file.js'); } /** * 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'); /* Scripts specific to Internet Explorer */ if ($.client.profile().name == 'msie') { /** Internet Explorer bug fix ************************************************** * * Description: Fixes IE horizontal scrollbar bug * Maintainers: [[User:Tom-]]? */ var oldWidth; var docEl = document.documentElement; var fixIEScroll = function() { if (!oldWidth || docEl.clientWidth > oldWidth) { doFixIEScroll(); } else { setTimeout(doFixIEScroll, 1); } oldWidth = docEl.clientWidth; }; var doFixIEScroll = function () { docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; }; document.attachEvent("onreadystatechange", fixIEScroll); document.attachEvent("onresize", fixIEScroll); // In print IE (7?) does not like line-height mw.util.addCSS('@media print { sup, sub, p, .documentDescription { line-height: normal; } }'); // IE overflow bug mw.util.addCSS('div.overflowbugx { overflow-x: scroll !important; overflow-y: hidden !important; } ' + 'div.overflowbugy { overflow-y: scroll !important; overflow-x: hidden !important; }'); // IE zoomfix // Use to fix right floating div/table inside tables mw.util.addCSS('.iezoomfix div, .iezoomfix table { zoom: 1; }'); // Import scripts specific to Internet Explorer 6 if ($.client.profile().versionBase == '6') { importScript('MediaWiki:Common.js/IE60Fixes.js'); } } /* Fixes for Windows font rendering */ if ($.client.profile().platform == 'win') { mw.util.addCSS('.IPA, .Unicode { font-family: "Arial Unicode MS", "Lucida Sans Unicode"; }'); } /* Helper script for .hlist class in common.css * Maintainer: [[User:Edokter]] */ if ( $.client.profile().name == 'msie' ) { /* Add pseudo-selector class to last child list items in IE 8 */ if ( $.client.profile().versionBase == '8' ) { $( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' ) .addClass( 'hlist-last-child' ); } /* Generate interpuncts and parens for IE < 8 */ if ( $.client.profile().versionBase < '8' ) { $( '.hlist' ).find( 'dt + dd, dt + dt' ).prev() .append( '<b>:</b> ' ); $( '.hlist' ).find( 'dd + dd, dd + dt, li + li' ).prev() .append( '<b>·</b> ' ); $( '.hlist' ).find( 'dl dl, ol ol, ul ul' ) .prepend( '( ' ).append( ') ' ); } } /* 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); }; })(); /** 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]] ⏎ * Test if an element has a certain class * * @deprecated: Use $(element).hasClass() instead. */ mw.log.deprecate( window, 'hasClass', function ( element, className ) { return $( element ).hasClass( className ); }, 'Use jQuery.hasClass() instead' ); /** * @authors: Bhawani Gauatm([[user:Bhawani Gautam]]) * @date 2010-10-09 * License: GPLv3, CC-BY-SA 3.0 */ /* === Edittoolsystem === <pre> */ // switches for scripts // TODO: migrate to JSConfig // var load_extratabs = true; var load_edittools = true; // extra drop down menu on editing for adding special characters importScript( 'MediaWiki:Gadget-Edittools.js' ); /* </pre> */ /*HERE STARTS THE WORKING-CODE OF "METABOXES" <pre> */ /* Funcionament de la Plantilla:Metacaixa Implementat per: Usuari:Peleguer. Actualitzat per Joanjoc seguint les indicacions d'en Martorell */ function MetaCaixaInit(){ //S'executa al carregar-se la pàgina, si hi ha metacaixes, // s'assignen els esdeveniments als botons //alert("MetaCaixaInit"); var i=0 //Inicialitzem comptador de caixes for (i=0;i<=9;i++){ var vMc = document.getElementById("mc"+i); if (!vMc) break; //alert("MetaCaixaInit, trobada Metacaixa mc"+i); var j=1 //Inicialitzem comptador de botons dins de la caixa var vPsIni = 0 //Pestanya visible inicial for (j=1;j<=9;j++){ var vBt = document.getElementById("mc"+i+"bt"+j); if (!vBt) break; //alert("MetaCaixaInit, trobat botó mc"+i+"bt"+j); vBt.onclick = MetaCaixaMostraPestanya; //A cada botó assignem l'esdeveniment onclick //alert (vBt.className); if (vBt.className=="mcBotoSel") vPsIni=j; //Si tenim un botó seleccionat, en guardem l'index } //alert ("mc="+i+", ps="+j+", psini="+vPsIni ); if (vPsIni == 0) { //Si no tenim cap botó seleccionat, n'agafem un aleatòriament vPsIni = 1+Math.floor((j-1)*Math.random()) ; //alert ("Activant Pestanya a l'atzar; _mc"+i+"bt"+vPsIni +"_"); document.getElementById("mc"+i+"ps"+vPsIni).style.display = "block"; document.getElementById("mc"+i+"ps"+vPsIni).style.visibility = "visible"; document.getElementById("mc"+i+"bt"+vPsIni).className="mcBotoSel"; } } } function MetaCaixaMostraPestanya(){ //S'executa al clicar una pestanya, //aquella es fa visible i les altres s'oculten var vMcNom = this.id.substr(0,3); //A partir del nom del botó, deduïm el nom de la caixa var vIndex = this.id.substr(5,1); //I l'index var i=1 for (i=1;i<=9;i++){ //busquem totes les pestanyes d'aquella caixa //alert(vMcNom+"ps"+i); var vPsElem = document.getElementById(vMcNom+"ps"+i); if (!vPsElem) break; if (vIndex==i){ //Si és la pestanya bona la mostrem i canviem la classe de botó vPsElem.style.display = "block"; vPsElem.style.visibility = "visible"; document.getElementById(vMcNom+"bt"+i).className="mcBotoSel"; } else { //Sinó, l'ocultem i canviem la classe de botó vPsElem.style.display = "none"; vPsElem.style.visibility = "hidden"; document.getElementById(vMcNom+"bt"+i).className="mcBoto"; } } return false; //evitem la recàrrega de la pàgina } jQuery( document ).ready( function( $ ) { MetaCaixaInit(); } ); /*HERE FINISHES THE WORKING-CODE OF "METABOXES"</pre> */ /** * Modifie Special:Search pour pouvoir utiliser différents moteurs de recherche, * disponibles dans une boîte déroulante. * Auteurs : Jakob Voss, Guillaume, importé depuis la Wiki allemande *<pre><nowiki> */ function externalSearchEngines() { if (typeof SpecialSearchEnhanced2Disabled != 'undefined') return; if ( mw.config.get('wgCanonicalSpecialPageName') != "Search") return; var mainNode = document.getElementById("powersearch"); if (!mainNode) mainNode = document.getElementById("search"); if (!mainNode) return; var beforeNode = document.getElementById("mw-search-top-table"); if (!beforeNode) return; beforeNode = beforeNode.nextSibling; if (!beforeNode) return; var firstEngine = "mediawiki"; var choices = document.createElement("div"); choices.setAttribute("id","searchengineChoices"); choices.style.textAlign = "center"; var lsearchbox = document.getElementById("searchText"); if (!lsearchbox) return; var initValue = lsearchbox.value; var space = ""; for (var id in searchEngines) { var engine = searchEngines[id]; if(engine.ShortName) { if (space) choices.appendChild(space); space = document.createTextNode(" "); var attr = { type: "radio", name: "searchengineselect", value: id, onFocus: "changeSearchEngine(this.value)", id: "searchengineRadio-"+id }; var html = "<input"; for (var a in attr) html += " " + a + "='" + attr[a] + "'"; html += " />"; var span = document.createElement("span"); span.innerHTML = html; choices.appendChild( span ); var label = document.createElement("label"); label.htmlFor = "searchengineRadio-"+id; if (engine.Template.indexOf('http') == 0) { var lienMoteur = document.createElement("a"); lienMoteur.href = engine.Template.replace("{searchTerms}", initValue).replace("{language}", "hi"); lienMoteur.appendChild( document.createTextNode( engine.ShortName ) ); label.appendChild(lienMoteur); } else { label.appendChild( document.createTextNode( engine.ShortName ) ); } choices.appendChild( label ); } } mainNode.insertBefore(choices, beforeNode); var input = document.createElement("input"); input.id = "searchengineextraparam"; input.type = "hidden"; mainNode.insertBefore(input, beforeNode); changeSearchEngine(firstEngine, initValue); } function changeSearchEngine(selectedId, searchTerms) { var currentId = document.getElementById("searchengineChoices").currentChoice; if (selectedId == currentId) return; document.getElementById("searchengineChoices").currentChoice = selectedId; var radio = document.getElementById('searchengineRadio-' + selectedId); radio.checked = "checked"; var engine = searchEngines[selectedId]; var p = engine.Template.indexOf('?'); var params = engine.Template.substr(p+1); var form; if (document.forms["search"]) { form = document.forms["search"]; } else { form = document.getElementById("powersearch"); } form.setAttribute("action", engine.Template.substr(0,p)); var l = ("" + params).split("&"); for (var idx = 0;idx < l.length;idx++) { var p = l[idx].split("="); var pValue = p[1]; if (pValue == "{language}") { } else if (pValue == "{searchTerms}") { var input; input = document.getElementById("searchText"); input.name = p[0]; } else { var input = document.getElementById("searchengineextraparam"); input.name = p[0]; input.value = pValue; } } } if ( mw.config.get('wgCanonicalSpecialPageName') == "Search") { var searchEngines = { mediawiki: { ShortName: "आन्तरिकक शोध", Template: mw.config.get('wgScript') + "?search={searchTerms}" }, exalead: { ShortName: "इक्सालीड", Template: "http://www.exalead.com/wikipedia/results?q={searchTerms}&language=hi" }, google: { ShortName: "गूगल", Template: "http://www.google.co.in/search?as_sitesearch=hi.wikipedia.org&hl={language}&q={searchTerms}" }, wikiwix: { ShortName: "विकीविक्स", Template: "http://hi.wikiwix.com/index.php?action={searchTerms}&lang={language}" }, wlive: { ShortName: "बिंग", Template: "http://www.bing.com/search?q={searchTerms}&q1=site:http://hi.wikipedia.org" }, yahoo: { ShortName: "याहू!", Template: "http://search.yahoo.com/search?p={searchTerms}&vs=hi.wikipedia.org" }, globalwpsearch: { ShortName: "इतर विकीवर", Template: "http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search={searchTerms}" } }; jQuery( document ).ready( function( $ ) { externalSearchEngines(); } ); } /*</pre></nowiki>*/ /** * 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. *<nowiki><pre> */ ⏎ ⏎ function LinkFA() { if ( document.getElementById( "p-lang" ) ) { var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" ); for ( var i = 0; i < InterwikiLinks.length; i++ ) { if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) { InterwikiLinks[i].className += " FA"; InterwikiLinks[i].title = "This is a featured article in another language."; } else if ( document.getElementById( InterwikiLinks[i].className + "-ga" ) ) { InterwikiLinks[i].className += " GA"; InterwikiLinks[i].title = "This is a good article in another language."; } } } } $( LinkFA ); /** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * [[Wikipedia:NavFrame]]. * Maintainers: [[User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = "लुकाउने"; var expandCaption = "हेर्ने"; window.collapseTable = function( tableIndex ){ var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex );⏎ '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 = 'यो यस भाषामा एउटा निर्वाचित निर्वाचित लेख हो।'; } else if ( document.getElementById( className + '-ga' ) ) { InterwikiLinks[i].className += ' GA'; InterwikiLinks[i].title = 'यो यस भाषामा एउटा श्रेष्ठ लेख हो।'; } } } } mw.hook( 'wikipage.content' ).add( LinkFA ); /*</pre></nowiki>*/ /* *Cookies *<nowiki><pre> */ //Cookie helpers //=========== function setCookie(cookieName, cookieValue) { var today = new Date(); var expire = new Date(); var nDays = 30; expire.setTime( today.getTime() + (3600000 * 24 * nDays) ); document.cookie = cookieName + "=" + escape(cookieValue) + ";path=/w" + ";expires="+expire.toGMTString(); document.cookie = cookieName + "=" + escape(cookieValue) + ";path=/wiki" + ";expires="+expire.toGMTString(); } function getCookie(cookieName) { var start = document.cookie.indexOf( cookieName + "=" ); if ( start == -1 ) return ""; var len = start + cookieName.length + 1; if ( ( !start ) && ( cookieName != document.cookie.substring( 0, cookieName.length ) ) ) { return ""; } var end = document.cookie.indexOf( ";", len ); if ( end == -1 ) end = document.cookie.length; return unescape( document.cookie.substring( len, end ) ); } function deleteCookie(cookieName) { if ( getCookie(cookieName) ) { document.cookie = cookieName + "=" + ";path=/w" + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; document.cookie = cookieName + "=" + ";path=/wiki" + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"; } } /*</pre></nowiki>*/ /** 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]] */ var metaBase = '//meta.wikimedia.org'; mw.loader.load(metaBase + '/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400'); function mainPageAppendCompleteListLink() { try { var node = document.getElementById( "p-lang" ) .getElementsByTagName('div')[0] .getElementsByTagName('ul')[0]; var aNode = document.createElement( 'a' ); var liNode = document.createElement( 'li' ); aNode.appendChild( document.createTextNode( 'Complete list' ) ); aNode.setAttribute( 'href' , '//meta.wikimedia.org/wiki/List_of_Wikipedias' ); liNode.appendChild( aNode ); liNode.className = 'interwiki-completelist'; node.appendChild( liNode ); } catch(e) { // lets just ignore what's happened return; } } if ( wgTitle == 'मुख्यपृष्ठ' && wgNamespaceNumber == 0 ) { jQuery( document ).ready( function( $ ) { mainPageAppendCompleteListLink(); } ); } /** * MainPage-tab * On the main page (and its associated namespaces and actions (Talk, edit, history etc.) * this script will put "Main Page" instead of "Article" or "Page" in the first tab. * * @source: //www.mediawiki.org/wiki/Snippets/Main_Page_tab * @rev: 2 */ $( document ).ready( function() { var title = mw.config.get( 'wgTitle' ); var hasMainPageTab = (title == 'मुख्यपृष्ठ'); // Title of the main page. If applicable, without the namespace prefix (eg. "Wikipedia:") if ( hasMainPageTab ){ $( '#ca-nstab-main a' ).text( title ); } } ); /*</pre></nowiki>*/ /** Tooltips and access keys *************************************************** * * Description: Adds tooltips and access keys to links part of the MediaWiki * interface. * Maintainers: [[User:Gwicke]]? and [[User:Simetrical]]? *<nowiki><pre> */ ta = new Object(); ta['pt-userpage'] = new Array('.','My user page'); ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as'); ta['pt-mytalk'] = new Array('n','My talk page'); ta['pt-anontalk'] = new Array('n','Discussion about edits from this IP address'); ta['pt-preferences'] = new Array('-','My preferences'); ta['pt-watchlist'] = new Array('l','The list of pages you\'re monitoring for changes.'); ta['pt-mycontris'] = new Array('y','List of my contributions'); ta['pt-login'] = new Array('o','Logging in is not required, but brings many benefits.'); ta['pt-logout'] = new Array('','Log out of your user account'); ta['pt-anonlogin'] = new Array('o','Logging in is not required, but brings many benefits.'); ta['ca-talk'] = new Array('t','Discussion about the content page'); ta['ca-edit'] = new Array('e','You can edit this page. Please use the preview button before saving.'); ta['ca-addsection'] = new Array('+','Start a new discussion'); ta['ca-viewsource'] = new Array('e','This page is protected. You can view its source.'); ta['ca-history'] = new Array('h','Past versions of this page'); ta['ca-protect'] = new Array('=','Protect this page'); ta['ca-unprotect'] = new Array('=','Unprotect this page'); ta['ca-delete'] = new Array('d','Delete this page'); ta['ca-undelete'] = new Array('d','Restore the edits done to this page before it was deleted'); ta['ca-move'] = new Array('m','Move this page'); ta['ca-nomove'] = new Array('','You don\'t have the permissions to move this page'); ta['ca-watch'] = new Array('w','Add this page to your watchlist'); ta['ca-unwatch'] = new Array('w','Remove this page from your watchlist'); ta['search'] = new Array('f','Search Wikipedia'); ta['p-logo'] = new Array('','Main page'); ta['n-mainpage'] = new Array('z','Visit the main page'); ta['n-Main-page'] = new Array('z','Visit the main page'); ta['n-portal'] = new Array('','About the project, what you can do, where to find things'); ta['n-Featured-content'] = new Array('','Featured content — the best of Wikipedia'); ta['n-currentevents'] = new Array('','Find background information on current events'); ta['n-recentchanges'] = new Array('r','List of recent changes in Wikipedia'); ta['n-randompage'] = new Array('x','Load a random page'); ta['n-help'] = new Array('','The place to find out about Wikipedia'); ta['n-contact'] = new Array('','How to contact Wikipedia'); ta['n-sitesupport'] = new Array('','Help keep Wikipedia running'); ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here'); ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); ta['feed-rss'] = new Array('','RSS feed for this page'); ta['feed-atom'] = new Array('','Atom feed for this page'); ta['t-contributions'] = new Array('','View the list of contributions of this user'); ta['t-emailuser'] = new Array('','Send a mail to this user'); ta['t-upload'] = new Array('u','Upload images or other media files'); ta['t-specialpages'] = new Array('q','List of all special pages'); ta['t-print'] = new Array('','Printable version of this page'); ta['t-permalink'] = new Array('','Permanent link to this version of the page'); ta['t-cite'] = new Array('','Cite this Wikipedia article'); ta['ca-nstab-main'] = new Array('c','View the content page'); ta['ca-nstab-user'] = new Array('c','View the user page'); ta['ca-nstab-media'] = new Array('c','View the media page'); ta['ca-article'] = new Array('','This is a special page; you can\'t edit the page itself.'); ta['ca-nstab-project'] = new Array('c','View the project page'); ta['ca-nstab-image'] = new Array('c','View the image page'); ta['ca-nstab-mediawiki'] = new Array('c','View the system message'); ta['ca-nstab-template'] = new Array('c','View the template'); ta['ca-nstab-help'] = new Array('c','View the help page'); ta['ca-nstab-category'] = new Array('c','View the category page'); /*</pre></nowiki>*/ /** * Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * [[Wikipedia:NavFrame]]. * Maintainers: [[User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = 'लुकाउने'; var expandCaption = 'हेर्ने'; 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; ⏎ if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none" 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 ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } }⏎ ⏎ function createCollapseButtons(){ var tableIndex = 0; var NavigationBoxes = new Object(); var Tables = document.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], "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 ); Button.className = "collapseButton"; //Styles are declared in Common.css ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "#" ); addHandler( ButtonLink, "click", 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], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "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 ); /** Main Page layout fixes ********************************************************* * * Description: Adds an additional link to the complete list of languages available. * Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]] */ if (wgPageName == 'Main_Page' || wgPageName == 'Talk:Main_Page') { $(function () { mw.util.addPortletLink('p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias', 'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias'); }); } /** Table sorting fixes ************************************************ * * Description: Disables code in table sorting routine to set classes on even/odd rows * Maintainers: [[User:Random832]] */ ts_alternate_row_colors = false; /***** uploadwizard_newusers ******** * Switches in a message for non-autoconfirmed users at [[Wikipedia:Upload]] * * Maintainers: [[User:Krimpet]] */ function uploadwizard_newusers() { if (wgNamespaceNumber == 4 && wgTitle == "Upload" && wgAction == "view") { var oldDiv = document.getElementById("autoconfirmedusers"), newDiv = document.getElementById("newusers"); if (oldDiv && newDiv) { if (typeof wgUserGroups == "object" && wgUserGroups) { for (i = 0; i < wgUserGroups.length; i++) { if (wgUserGroups[i] == "autoconfirmed") { oldDiv.style.display = "block"; newDiv.style.display = "none"; return; } } } oldDiv.style.display = "none"; newDiv.style.display = "block"; return; } } } $(uploadwizard_newusers); /** IPv6 AAAA connectivity testing var __ipv6wwwtest_factor = 100; var __ipv6wwwtest_done = 0; if ((wgServer != "https://secure.wikimedia.org") && (Math.floor(Math.random()*__ipv6wwwtest_factor)==42)) { importScript("MediaWiki:Common.js/IPv6.js"); } **/ /** Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] */ function addEditIntro( name ) { $( '.editsection, #ca-edit' ).find( 'a' ).each( function( i, el ) { el.href = $(this).attr("href") + '&editintro=' + name; }); } if (wgNamespaceNumber === 0) { $(function(){ if (document.getElementById('disambigbox')) { addEditIntro('Template:Disambig_editintro'); } }); $(function(){ var cats = document.getElementById('mw-normal-catlinks'); if (!cats) { return; } cats = cats.getElementsByTagName('a'); for (var i = 0; i < cats.length; i++) { 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 ( mw.config.get('wgServer') == 'https://secure.wikimedia.org' ) { /* Old secure server */ importScript( 'MediaWiki:Common.js/secure.js'); } else if( document.location && document.location.protocol && document.location.protocol == "https:" ) { /* New secure servers */ importScript('MediaWiki:Common.js/secure new.js'); } /** Text area function for the account creation process */ jQuery(function(){ if (!(document.getElementById('signupuserpagefillmagic'))) return; /* * Puts an userpage edit-box inside a div with the ID 'signupuserpagefillmagic' * Created for [[:outreach:Account Creation Improvement Project]] by * [[:sv:User:Sertion]] on the behalf of [[:outreach:User:Hannibal]] * * Below are variables for internationalization. Please use \n for linebreaks * and escape all single quotation marks (') with \' */ var preComment = '<!-- BELOW IS THE TEXT ABOUT YOU. YOU CAN CHANGE IT COMPLETELY OR IN PARTS AND THEN COME BACK TO IT. AFTER YOU ARE DONE, SCROLL DOWN A BIT FURTHER AND CLICK "SAVE PAGE".--\>{'+'{New user bar}}\n', postComment = '\n\n<!-- NOW, CLICK THE "SAVE PAGE" BUTTON. CONGRATULATIONS, YOU\'VE JUST MADE YOUR FIRST EDIT TO WIKIPEDIA. --\>', preSubmitButton ='Do not forget to click SAVE PAGE when you get to the next page!', submitText = 'Create my user page for me now!', SUPeditSummary = 'New user page through [[:outreach:Account Creation Improvement Project|Outreach:ACIP]]', preFilltemplate = 'Replace this example text with information about you. \n\n'; /* * The actual magic: * Inserts a form with a single visible field that simulates the normal * edit-field. It uses the variables from above to set a text example (pre * filled), an automated edit summary and the label of the submit button. * 'fakewpTextbox1' is used to hide the assembling of the final output that * is made below. */ $('#signupuserpagefillmagic').html('<form action="'+wgServer+wgScript+'?title='+wgFormattedNamespaces[2]+':'+wgUserName+'&action=submit" method="post"><textarea id="fakewpTextbox1" style="width:46em;height:20em;">'+preFilltemplate+'</textarea><textarea name="wpTextbox1" id="wpTextbox1" style="display:none;"></textarea><input type="hidden" name="wpSummary" id="wpSummary" value="'+SUPeditSummary+'" /><br/>'+preSubmitButton+'<br/><input type="submit" value="'+submitText+'"/></form>'); // Waits for the form to be submitted. $('#signupuserpagefillmagic form').live('submit',function(r){ // Stops the form from submitting r.preventDefault(); /* * Uses the previously defined variables preComment and postComment * to assemble the final output in the hidden textarea. */ $('#wpTextbox1').text( preComment + $('#fakewpTextbox1').text() + postComment ); /* * Submits the form. * For unknown reasons jQuery('#signupuserpagefillmagic form').submit() crashes * Firefox (only tested in version 4.0). This method seam to work cross browser. */ document.getElementById('signupuserpagefillmagic').getElementsByTagName('form')[0].submit(); }); }); /* End of mw.loader.using callback */ } ); /* DO NOT ADD CODE BELOW THIS LINE ; function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = {}; var Tables = document.getElementsByTagName( 'table' ); var i; function handleButtonLink( index, e ) { window.collapseTable( index ); e.preventDefault(); } 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 ); Button.className = 'collapseButton'; /* Styles are declared in Common.css */ ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex ); ButtonLink.setAttribute( 'href', '#' ); $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, 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' ) ) ) { window.collapseTable( i ); } else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) { var element = NavigationBoxes[i]; while ((element = element.parentNode)) { if ( $( element ).hasClass( 'outercollapse' ) ) { window.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 ); /*</pre></nowiki>*/ All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://ne.wikibooks.org/w/index.php?diff=prev&oldid=9096.
![]() ![]() 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.
|