19,670
edits
No edit summary |
(restoring this code, post-troubleshooting) |
||
| Line 16: | Line 16: | ||
{ | { | ||
importScript("MediaWiki:Common.js/search.js") | importScript("MediaWiki:Common.js/search.js") | ||
} | |||
/** Sysop Javascript ******************************************************* | |||
* | |||
* Description: Allows for sysop-specific Javascript at [[MediaWiki:Sysop.js]]. | |||
*/ | |||
function sysopFunctions() { | |||
if ( wgUserGroups && !window.disableSysopJS ) { | |||
for ( var g = 0; g < wgUserGroups.length; ++g ) { | |||
if ( wgUserGroups[g] == "sysop" ) { | |||
importScript("MediaWiki:Sysop.js"); | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
// addOnloadHook( sysopFunctions ); // be sure to uncomment this if restoring above code | |||
/* Scripts specific to Internet Explorer */ | |||
if (navigator.appName == "Microsoft Internet Explorer") | |||
{ | |||
/** Internet Explorer bug fix ************************************************** | |||
* | |||
* Description: Fixes IE horizontal scrollbar bug | |||
* Maintainers: [[User:Tom-]]? | |||
*/ | |||
var oldWidth; | |||
var docEl = document.documentElement; | |||
function fixIEScroll() | |||
{ | |||
if (!oldWidth || docEl.clientWidth > oldWidth) | |||
doFixIEScroll(); | |||
else | |||
setTimeout(doFixIEScroll, 1); | |||
oldWidth = docEl.clientWidth; | |||
} | |||
function doFixIEScroll() { | |||
docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; | |||
} | |||
document.attachEvent("onreadystatechange", fixIEScroll); | |||
document.attachEvent("onresize", fixIEScroll); | |||
/** | |||
* Remove need for CSS hacks regarding MSIE and IPA. | |||
*/ | |||
if (document.createStyleSheet) { | |||
document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";'); | |||
} | |||
//Import scripts specific to Internet Explorer 6 | |||
if (navigator.appVersion.substr(22, 1) == "6") | |||
{ | |||
importScript("MediaWiki:Common.js/IE60Fixes.js") | |||
} | |||
} | } | ||
| Line 128: | Line 194: | ||
addOnloadHook( createCollapseButtons ); | addOnloadHook( 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 | |||
function toggleNavigationBar(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, 'NavPic' ) ) { | |||
NavChild.style.display = 'none'; | |||
} | |||
if ( hasClass( NavChild, 'NavContent') ) { | |||
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, 'NavPic')) { | |||
NavChild.style.display = 'block'; | |||
} | |||
if (hasClass(NavChild, 'NavContent')) { | |||
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 NavToggleText = document.createTextNode(NavigationBarHide); | |||
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { | |||
if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { | |||
if (NavChild.style.display == 'none') { | |||
NavToggleText = document.createTextNode(NavigationBarShow); | |||
break; | |||
} | |||
} | |||
} | |||
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")) { | |||
NavFrame.childNodes[j].appendChild(NavToggle); | |||
} | |||
} | |||
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); | |||
} | |||
} | |||
} | |||
addOnloadHook( createNavigationBarToggleButton ); | |||
/** Main Page layout fixes ********************************************************* | |||
* | |||
* Description: Insert fixes for OG's main page here | |||
* | |||
*/ | |||
/*if ((wgTitle == 'Main Page' && wgNamespaceNumber == 0) || (wgTitle == 'Wikipedia' && wgNamespaceNumber == 100)) { | |||
addOnloadHook(mainPageAppendCompleteListLink); | |||
addOnloadHook(dshuf); | |||
}*/ | |||
/** "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 ************************************************ | |||
* | |||
* 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; | |||
} | |||
} | |||
} | |||
addOnloadHook(uploadwizard_newusers); | |||
/** Disambig editintro ******************************************************** | |||
* | |||
* Description: Adds an editintro on disambiguation pages. Original code | |||
* located at [[User:RockMFR/disambigeditintro.js]]. | |||
* | |||
* Maintainers: [[User:RockMFR]], [[User:Quiddity]] | |||
*/ | |||
if (wgNamespaceNumber == 0) addOnloadHook(function(){ | |||
if (!document.getElementById('disambig')) return | |||
var el = document.getElementById('ca-edit') | |||
if (el) el = el.getElementsByTagName('a')[0] | |||
if (el) el.href += '&editintro=Template:Disambig_editintro' | |||
}) | |||
//</source> | //</source> | ||
/* </nowiki></pre> */ | /* </nowiki></pre> */ | ||