MediaWiki:Common.js

/* Any JavaScript here will be loaded for all users on every page load. */

/** "Technical restrictions" title fix ***************************************** * * Description: For pages that have something like Template:Wrongtitle, replace *              the title, but only if it is cut-and-pasteable as a valid *              wikilink. For instance, "NZR WB class" can be changed to *              "NZR WB class", but C is not an equivalent wikilink, *              so C Sharp doesn't have its main title changed. * *              The function looks for a banner like this: *              ... title ...  *  Maintainers: Remember_the_dot */ if (wgAction == "view") //prevents "Editing " from disappearing during preview {   addOnloadHook(function    {        var realTitle = document.getElementById("RealTitle")        if (realTitle)        {            //normalizes a title or a namespace name (but not both)            //trims leading and trailing underscores and converts (possibly multiple) spaces and underscores to single underscores            function normalizeTitle(title)            {                return title.replace(/^_+/, "").replace(/_+$/, "").replace(/[\s_]+/g, "_")            }            if (realTitle.textContent) //everyone but IE            {                var realTitleText = realTitle.textContent            }            else //IE            {                var realTitleText = realTitle.innerText            }            var normalizedRealTitle            var normalizedPageTitle            var indexOfColon = realTitleText.indexOf(":")            var normalizedNamespaceName = normalizeTitle(realTitleText.substring(0, indexOfColon)).toLowerCase //make namespace prefix lowercase and uppercase the first letter of the title if (indexOfColon == -1 || wgCanonicalNamespace.toLowerCase != normalizedNamespaceName) //no namespace prefix - either no colon or a nonsensical namespace prefix (for example, "Foo" in "Foo: The Story of My Life") {               normalizedRealTitle = normalizeTitle(realTitleText) normalizedRealTitle = normalizedRealTitle.charAt(0).toUpperCase + normalizedRealTitle.substring(1) normalizedPageTitle = wgPageName.charAt(0).toUpperCase + wgPageName.substring(1) }           else //using a namespace prefix {               var normalizedRealPageTitle = normalizeTitle(realTitleText.substring(indexOfColon + 1)) normalizedRealTitle = normalizedNamespaceName if (normalizedNamespaceName != "") //namespace 0 is a special case where the leading colon should never be shown {                   normalizedRealTitle += ":" }               normalizedRealTitle += normalizedRealPageTitle.charAt(0).toUpperCase + normalizedRealPageTitle.substring(1) normalizedPageTitle = wgPageName.substring(0, wgPageName.indexOf(":") + 1).toLowerCase + wgPageName.substring(wgPageName.indexOf(":") + 1) }           if (normalizedRealTitle == normalizedPageTitle) //normalized titles match, so we can do full replacement {               var h1 = document.getElementsByTagName("h1")[0] //remove all child nodes, including text while (h1.firstChild) {                   h1.removeChild(h1.firstChild) }               //populate with nodes of real title while (realTitle.firstChild) //the children are moved to a new parent element {                   h1.appendChild(realTitle.firstChild) }               //correct the page title document.title = realTitleText + " - Wikipedia, the free encyclopedia" //delete the real title banner since the problem is solved var realTitleBanner = document.getElementById("RealTitleBanner") if (realTitleBanner) realTitleBanner.parentNode.removeChild(realTitleBanner) }       }    }) }