|
|
Line 237: |
Line 237: |
| addOnloadHook( createCollapseButtons ); | | addOnloadHook( createCollapseButtons ); |
| | | |
| | |
| | |
| | |
| | |
| | |
| | /** Proper(?) collapsible text **********************************************************/ |
| | |
| | function doExpandText(textIndex) |
| | { |
| | var TextPart=document.getElementById("pcsx2_collapsibleTextPart"+textIndex); |
| | if (!TextPart) result false; |
| | var TextFull=document.getElementById("pcsx2_collapsibleTextFull"+textIndex); |
| | if (!TextFull) result false; |
| | TextPart.style.display="none"; |
| | TextFull.style.display="initial"; |
| | } |
| | |
| | function createCollapseTextButtons() |
| | { |
| | var MyClasses=document.getElementsByClassName("pcsx2_collapsible_text"); |
| | var textIndex=0; |
| | |
| | for (var i=0;i<MyClasses.length;i++) { |
| | //should contain two divs: pcsx2_collapsible_text_part and pcsx2_collapsible_text_full |
| | var TextPart=MyClasses[i].getElementsByClassName("pcsx2_collapsible_text_part")[0]; |
| | if (!TextPart) continue; |
| | var TextFull=MyClasses[i].getElementsByClassName("pcsx2_collapsible_text_full")[0]; |
| | if (!TextFull) continue; |
| | //creating href |
| | var Button=document.createElement("span"); |
| | var ButtonLink=document.createElement("a"); |
| | var ButtonText=document.createTextNode("expand"); |
| | ButtonLink.setAttribute("href","javascript:doExpandText("+textIndex+");"); |
| | ButtonLink.appendChild(ButtonText); |
| | Button.appendChild(document.createTextNode("[")); |
| | Button.appendChild(ButtonLink); |
| | Button.appendChild(document.createTextNode("]")); |
| | TextPart.setAttribute("id","pcsx2_collapsibleTextPart"+textIndex); |
| | TextFull.setAttribute("id","pcsx2_collapsibleTextFull"+textIndex); |
| | TextFull.style.display="none"; |
| | TextPart.insertBefore(Button,TextPart.nextSibling); |
| | textIndex++; |
| | } |
| | } |
| | |
| | addOnloadHook(createCollapseTextButtons); |
| | | |
| | |
| | |
| | |
| | |
| /** Dynamic Navigation Bars (experimental) ************************************* | | /** Dynamic Navigation Bars (experimental) ************************************* |
| * | | * |
Line 339: |
Line 389: |
| | | |
| addOnloadHook( createNavigationBarToggleButton ); | | addOnloadHook( 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')
| |
| addOnloadHook(function () {
| |
| addPortletLink('p-lang', 'http://meta.wikimedia.org/wiki/List_of_Wikipedias',
| |
| 'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias')
| |
| var nstab = document.getElementById('ca-nstab-main')
| |
| if (nstab && wgUserLanguage=='en')
| |
| nstab.firstChild.firstChild.nodeValue = 'Main Page'
| |
| }
| |
| )
| |
|
| |
| /** "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 W<sup>B</sup> 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:
| |
| * <div id="RealTitleBanner"> ... <span id="RealTitle">title</span> ... </div>
| |
| * An element with id=DisableRealTitle disables the function.
| |
| * Maintainers: Remember_the_dot
| |
| */
| |
|
| |
| if (wgIsArticle) //prevents the "Editing " prefix 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)
| |
| }
| |
|
| |
| //delete the real title banner since the problem is solved
| |
| var realTitleBanner = document.getElementById("RealTitleBanner")
| |
| realTitleBanner.parentNode.removeChild(realTitleBanner)
| |
| }
| |
|
| |
| //no matter what, correct the page title
| |
| document.title = realTitleText + " - Wikipedia, the free encyclopedia"
| |
| }
| |
| })
| |
| }
| |
|
| |
| | | |
| /** Table sorting fixes ************************************************ | | /** Table sorting fixes ************************************************ |
Line 456: |
Line 399: |
| ts_alternate_row_colors = false; | | 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;
| |
| }
| |
| }
| |
| }
| |
| addOnloadHook(uploadwizard_newusers);
| |
| | | |
| | | |
| /** IPv6 AAAA connectivity testing *******************************************************
| |
| *
| |
| * Description: Uses hidden images to measure the possible negative impact of IPv6
| |
| * enabling the Wikimedia sites.
| |
| * This works by adding a hidden div to the footer with several image tags.
| |
| * The source addresses of the image tags are set to domainnames which have v4, v6 and
| |
| * both address types set. The script times how long objects take to load.
| |
| * Results are sent back to the server. http://ipv6and4.labs.wikimedia.org/stats.html
| |
| * Based on http://www.braintrust.co.nz/ipv6wwwtest/
| |
| * Contact: [[User:Gmaxwell]], [[User:Mark Bergsma]], [[User:Mindspillage]]
| |
| */
| |
| | | |
| var __ipv6wwwtest_factor = 100;
| |
| var __ipv6wwwtest_done = 0;
| |
| if ((wgServer != "https://secure.wikimedia.org") && (Math.floor(Math.random()*__ipv6wwwtest_factor)==42)) {
| |
| var __ipv6wwwtest_timeoutMsec = 10000; // Timeout for 'final' result message in milliseconds
| |
| var __ipv6wwwtest_hostSuffix = ".labs.wikimedia.org"; // Suffix to go on the IMG hostnames
| |
| var __ipv6wwwtest_stopAtTimeout = true; // Whether to stop when the timeout is reached or not
| |
|
| |
| var __ipv6wwwtest_pageLoadTime;
| |
| var __ipv6wwwtest_timeout = false;
| |
| var __ipv6wwwtest_ipv4LoadTime = false;
| |
| var __ipv6wwwtest_ipv4relLoadTime = false;
| |
| var __ipv6wwwtest_ipv6LoadTime = false;
| |
| var __ipv6wwwtest_ipv6bigLoadTime = false;
| |
| var __ipv6wwwtest_ipv6and4LoadTime = false;
| |
| var __ipv6wwwtest_id = Math.floor(Math.random()*Math.pow(2,31));
| |
|
| |
| function __ipv6wwwtest_startTest() {
| |
| __ipv6wwwtest_pageLoadTime = new Date();
| |
| document.getElementById("__ipv6wwwtest_ipv4Img").src = "http://ipv4" + __ipv6wwwtest_hostSuffix +"/ipv4.gif?id=" + __ipv6wwwtest_id;
| |
| document.getElementById("__ipv6wwwtest_ipv4relImg").src = "//ipv4" + __ipv6wwwtest_hostSuffix +"/ipv4.gif?rel=1&id=" + __ipv6wwwtest_id;
| |
| document.getElementById("__ipv6wwwtest_ipv6Img").src = "http://ipv6" + __ipv6wwwtest_hostSuffix +"/ipv6.gif?id=" + __ipv6wwwtest_id;
| |
| document.getElementById("__ipv6wwwtest_ipv6and4Img").src = "http://ipv6and4" + __ipv6wwwtest_hostSuffix +"/ipv6and4.gif?id=" + __ipv6wwwtest_id;
| |
| document.getElementById("__ipv6wwwtest_ipv6bigImg").src = "http://ipv6" + __ipv6wwwtest_hostSuffix +"/ipv6big.gif?id=" + __ipv6wwwtest_id;
| |
| }
| |
|
| |
| function __ipv6wwwtest_sendResults(stage) {
| |
| document.getElementById("__ipv6wwwtest_resultsImg").src = "http://results" + __ipv6wwwtest_hostSuffix +"/results.gif?id=" + __ipv6wwwtest_id + "&stage=" + stage + "&timeout=" + __ipv6wwwtest_timeoutMsec + "&stop_at_timeout=" + __ipv6wwwtest_stopAtTimeout + "&ipv4=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv4LoadTime) + "&ipv6=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6LoadTime) + "&ipv6and4=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6and4LoadTime) + "&ipv6big=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6bigLoadTime) +"&ipv4rel="+ __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv4relLoadTime) + "&rate=" + __ipv6wwwtest_factor;
| |
| };
| |
|
| |
| function __ipv6wwwtest_getLoadTime(item) {
| |
| if (item == false) {
| |
| return "NaN";
| |
| } else {
| |
| return (item.getTime() - __ipv6wwwtest_pageLoadTime.getTime());
| |
| }
| |
| }
| |
|
| |
| function __ipv6wwwtest_checkFinished() {
| |
| if ( (! __ipv6wwwtest_ipv6LoadTime) || (! __ipv6wwwtest_ipv4LoadTime) || (! __ipv6wwwtest_ipv6and4LoadTime) || (! __ipv6wwwtest_ipv6bigLoadTime) || (! __ipv6wwwtest_getLoadTime)) {
| |
| if (!__ipv6wwwtest_timeout) {
| |
| __ipv6wwwtest_timeout = window.setTimeout('__ipv6wwwtest_sendFinalResults()',__ipv6wwwtest_timeoutMsec);
| |
| }
| |
| __ipv6wwwtest_sendResults('partial');
| |
| } else {
| |
| __ipv6wwwtest_sendFinalResults();
| |
| }
| |
| }
| |
|
| |
| function __ipv6wwwtest_sendFinalResults() {
| |
| if (__ipv6wwwtest_done==0) {
| |
| if (__ipv6wwwtest_timeout) {
| |
| window.clearTimeout(__ipv6wwwtest_timeout);
| |
| }
| |
| __ipv6wwwtest_sendResults('final');
| |
|
| |
| if (__ipv6wwwtest_stopAtTimeout) {
| |
| document.getElementById("__ipv6wwwtest_ipv4Img").src = "";
| |
| document.getElementById("__ipv6wwwtest_ipv4relImg").src = "";
| |
| document.getElementById("__ipv6wwwtest_ipv6Img").src = "";
| |
| document.getElementById("__ipv6wwwtest_ipv6and4Img").src = "";
| |
| document.getElementById("__ipv6wwwtest_ipv6bigImg").src = "";
| |
| }
| |
| }
| |
| __ipv6wwwtest_done=1;
| |
| }
| |
| addOnloadHook(function() {
| |
| v6sub=document.getElementById("footer");
| |
| v6sub.innerHTML=v6sub.innerHTML+'<div style="visibility: hidden;"> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv4Img" onload="__ipv6wwwtest_ipv4LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv4relImg" onload="__ipv6wwwtest_ipv4relLoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6and4Img" onload="__ipv6wwwtest_ipv6and4LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6Img" onload="__ipv6wwwtest_ipv6LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6bigImg" onload="__ipv6wwwtest_ipv6bigLoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_resultsImg" /> </div>';
| |
| if (document.getElementById("__ipv6wwwtest_ipv4Img") && document.getElementById("__ipv6wwwtest_ipv6Img") && document.getElementById("__ipv6wwwtest_ipv6and4Img") && document.getElementById("__ipv6wwwtest_ipv6bigImg")) {
| |
| __ipv6wwwtest_startTest();
| |
| }
| |
| });
| |
| }
| |
| | | |
| /** Disambig editintro ******************************************************** | | /** Disambig editintro ******************************************************** |