Bureaucrats, ninja, Administrators
67,565
edits
No edit summary |
m (Adding back some useful code) |
||
(35 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
//<source lang="javascript"> | //<source lang="javascript"> | ||
/* | /** | ||
* WikiMiniAtlas is a popup click and drag world map. | |||
* See [[meta:WikiMiniAtlas]] for more information. | |||
* Maintainers: [[w:User:Dschwen]] | |||
*/ | |||
mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript'); | |||
/* Scripts specific to Internet Explorer */ | /* Scripts specific to Internet Explorer */ | ||
if (navigator.appName == "Microsoft Internet Explorer") | if (navigator.appName == "Microsoft Internet Explorer") { | ||
{ | |||
/** | /** | ||
* Remove need for CSS hacks regarding MSIE and IPA. | * Remove need for CSS hacks regarding MSIE and IPA. | ||
*/ | */ | ||
if (document.createStyleSheet) { | 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";'); | 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";'); | ||
} | } | ||
} | } | ||
/* Test if an element has a certain class ************************************** | /* Test if an element has a certain class ************************************** | ||
Line 112: | Line 31: | ||
}; | }; | ||
})(); | })(); | ||
Line 147: | Line 41: | ||
var autoCollapse = 2; | var autoCollapse = 2; | ||
var collapseCaption = " | var collapseCaption = "Collapse"; | ||
var expandCaption = " | var expandCaption = "Expand"; | ||
function collapseTable( tableIndex ) | function collapseTable( tableIndex ) | ||
Line 195: | Line 89: | ||
var ButtonLink = document.createElement( "a" ); | var ButtonLink = document.createElement( "a" ); | ||
var ButtonText = document.createTextNode( collapseCaption ); | var ButtonText = document.createTextNode( collapseCaption ); | ||
Button.className = "collapseButton"; //Styles are declared in Common.css | Button.className = "collapseButton"; //Styles are declared in Common.css | ||
Line 221: | Line 109: | ||
if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { | if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { | ||
collapseTable( i ); | collapseTable( i ); | ||
} | } | ||
else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) { | else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) { | ||
var element = NavigationBoxes[i]; | var element = NavigationBoxes[i]; | ||
Line 234: | Line 122: | ||
} | } | ||
$( createCollapseButtons ); | |||
/** Proper(?) collapsible text **********************************************************/ | |||
function doExpandText(textIndex) | |||
{ | |||
var Button=document.getElementById("pcsx2_collapsibleButton"+textIndex); | |||
if (!Button) return false; | |||
var TextFull=document.getElementById("pcsx2_collapsibleTextFull"+textIndex); | |||
if (!TextFull) return false; | |||
Button.style.display="none"; | |||
TextFull.style.display=""; | |||
} | |||
function createCollapseTextButtons() | |||
{ | |||
var MyClasses=document.getElementsByClassName("pcsx2_collapsible_text"); | |||
var textIndex=0; | |||
var str=""; | |||
for (var i=0;i<MyClasses.length;i++) { | |||
str=MyClasses[i].innerHTML; | |||
MyClasses[i].innerHTML=str.replace(/(<p>|<\/p>|<br>|<br\/>|<br \/>)/gmi,""); | |||
//should contain two spans: 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("..."); | |||
Button.style.fontWeight="bold"; | |||
Button.style.fontSize="smaller"; | |||
Button.setAttribute("id","pcsx2_collapsibleButton"+textIndex); | |||
ButtonLink.setAttribute("href","javascript:doExpandText("+textIndex+");"); | |||
ButtonLink.setAttribute("title","Expand this text..."); | |||
ButtonLink.appendChild(ButtonText); | |||
Button.appendChild(document.createTextNode(" (")); | |||
Button.appendChild(ButtonLink); | |||
Button.appendChild(document.createTextNode(")")); | |||
TextFull.setAttribute("id","pcsx2_collapsibleTextFull"+textIndex); | |||
TextFull.style.display="none"; | |||
TextPart.appendChild(Button); | |||
textIndex++; | |||
} | |||
} | |||
$(createCollapseTextButtons); | |||
/** Dynamic Navigation Bars (experimental) ************************************* | /** Dynamic Navigation Bars (experimental) ************************************* | ||
Line 289: | Line 227: | ||
{ | { | ||
var indexNavigationBar = 0; | var indexNavigationBar = 0; | ||
// iterate over all < div >-elements | // iterate over all < div >-elements | ||
var divs = document.getElementsByTagName("div"); | var divs = document.getElementsByTagName("div"); | ||
for (var i = 0; NavFrame = divs[i]; i++) { | for (var i = 0; NavFrame = divs[i]; i++) { | ||
Line 337: | Line 275: | ||
} | } | ||
$( createNavigationBarToggleButton ); | |||
/** "Technical restrictions" title fix ***************************************** | /** "Technical restrictions" title fix ***************************************** | ||
Line 364: | Line 285: | ||
* so [[C Sharp]] doesn't have its main title changed. | * so [[C Sharp]] doesn't have its main title changed. | ||
* | * | ||
* The function looks for a banner like this: | * The function looks for a banner like this: | ||
* <div id="RealTitleBanner"> ... <span id="RealTitle">title</span> ... </div> | * <div id="RealTitleBanner"> ... <span id="RealTitle">title</span> ... </div> | ||
* Maintainers: Remember_the_dot | * Maintainers: Remember_the_dot | ||
*/ | */ | ||
if (wgIsArticle) //prevents the "Editing " prefix from disappearing during preview | if (mw.config.get('wgIsArticle')) //prevents the "Editing " prefix from disappearing during preview | ||
{ | { | ||
$(function() | |||
{ | { | ||
var realTitle = document.getElementById("RealTitle") | var realTitle = document.getElementById("RealTitle") | ||
Line 400: | Line 320: | ||
//make namespace prefix lowercase and uppercase the first letter of the title | //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") | if (indexOfColon == -1 || mw.config.get('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 = normalizeTitle(realTitleText) | ||
normalizedRealTitle = normalizedRealTitle | normalizedRealTitle = normalizedRealTitle[0].toUpperCase() + normalizedRealTitle.substring(1) | ||
normalizedPageTitle = | normalizedPageTitle = mw.config.get('wgPageName')[0].toUpperCase() + mw.config.get('wgPageName').substring(1) | ||
} | } | ||
else //using a namespace prefix | else //using a namespace prefix | ||
Line 415: | Line 335: | ||
normalizedRealTitle += ":" | normalizedRealTitle += ":" | ||
} | } | ||
normalizedRealTitle += normalizedRealPageTitle | normalizedRealTitle += normalizedRealPageTitle[0].toUpperCase() + normalizedRealPageTitle.substring(1) | ||
normalizedPageTitle = wgPageName.substring(0, wgPageName.indexOf(":") + 1).toLowerCase() + wgPageName.substring(wgPageName.indexOf(":") + 1) | normalizedPageTitle = mw.config.get('wgPageName').substring(0, mw.config.get('wgPageName').indexOf(":") + 1).toLowerCase() + mw.config.get('wgPageName').substring(mw.config.get('wgPageName').indexOf(":") + 1) | ||
} | } | ||
Line 424: | Line 344: | ||
//remove all child nodes, including text | //remove all child nodes, including text | ||
while (h1.firstChild) | while (h1.firstChild) | ||
{ | { | ||
h1.removeChild(h1.firstChild) | h1.removeChild(h1.firstChild) | ||
Line 437: | Line 357: | ||
//delete the real title banner since the problem is solved | //delete the real title banner since the problem is solved | ||
var realTitleBanner = document.getElementById("RealTitleBanner") | var realTitleBanner = document.getElementById("RealTitleBanner") | ||
realTitleBanner.parentNode.removeChild(realTitleBanner) | if (realTitleBanner) realTitleBanner.parentNode.removeChild(realTitleBanner) | ||
} | } | ||
//no matter what, correct the page title | //no matter what, correct the page title | ||
document.title = realTitleText + " - Wikipedia | document.title = realTitleText + " - Wikipedia Mìng-dĕ̤ng-ngṳ̄ - Cê̤ṳ-iù gì Báik-kuŏ-ciòng-cṳ̆" | ||
} | } | ||
}) | }) | ||
} | } | ||
/** | |||
/** | * uploadwizard_newusers | ||
* | |||
* Switches in a message for non-autoconfirmed users at [[Wikipedia:Upload]] | * Switches in a message for non-autoconfirmed users at [[Wikipedia:Upload]] | ||
* | * | ||
* | * Maintainers: [[User:Krimpet]] | ||
*/ | |||
function uploadwizard_newusers() { | function uploadwizard_newusers() { | ||
if (wgNamespaceNumber == 4 && wgTitle == "Upload" && wgAction == "view") { | if (mw.config.get('wgNamespaceNumber') == 4 && mw.config.get('wgTitle') == "Upload" && mw.config.get('wgAction') == "view") { | ||
var oldDiv = document.getElementById("autoconfirmedusers"), | var oldDiv = document.getElementById("autoconfirmedusers"), | ||
newDiv = document.getElementById("newusers"); | newDiv = document.getElementById("newusers"); | ||
if (oldDiv && newDiv) { | if (oldDiv && newDiv) { | ||
if (typeof wgUserGroups == "object" && wgUserGroups) { | if (typeof mw.config.get('wgUserGroups') == "object" && mw.config.get('wgUserGroups')) { | ||
for (i = 0; i < wgUserGroups.length; i++) { | for (i = 0; i < mw.config.get('wgUserGroups').length; i++) { | ||
if (wgUserGroups[i] == "autoconfirmed") { | if (mw.config.get('wgUserGroups')[i] == "autoconfirmed") { | ||
oldDiv.style.display = "block"; | oldDiv.style.display = "block"; | ||
newDiv.style.display = "none"; | newDiv.style.display = "none"; | ||
Line 481: | Line 393: | ||
} | } | ||
} | } | ||
$(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 (mw.config.get('wgNamespaceNumber') == 0) $(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' | |||
}) | |||
/** Mobile browser helper link ************************************************ | |||
var | * | ||
if (( | * Adds a link to the mobile-optimized gateway at en.m.wikimedia.org | ||
* for viewers on iPhone, iPod Touch, and Android devices. | |||
* This is semi-experimental to drive more test traffic there for now; | |||
* it's still in development but very usable for reading! | |||
* | |||
* Currently set to always show the link on main page and search results, | |||
* and w/ 25% probability on other page views. | |||
* | |||
* Maintainer: [[User:Brion VIBBER]] | |||
*/ | |||
if (/(Android|iPhone|iPod)/.test(navigator.userAgent)) { | |||
$(function() { | |||
var prob = 1.0; | |||
if (mw.config.get('wgCanonicalNamespace') == 'Special' && mw.config.get('wgCanonicalSpecialPageName') == 'Search') { | |||
var pageLink = '?search=' + encodeURIComponent(document.getElementById('searchText').value); | |||
} else if (mw.config.get('wgPageName') == 'Main_Page') { | |||
var pageLink = '::Home'; // Special case | |||
} else { | |||
var pageLink = encodeURIComponent(mw.config.get('wgPageName')).replace('%2F','/').replace('%3A',':'); | |||
prob = 0.25; | |||
} | |||
if (prob < Math.random()) return; | |||
var div = document.createElement('div'); | |||
div.style.fontSize = '30pt'; | |||
div.style.lineHeight = '40pt'; | |||
div.style.textAlign = 'center'; | |||
div.style.marginTop = '20px'; | |||
div.style.marginBottom = '20px'; | |||
div.style.padding = '20px'; | |||
div.style.border = '2px solid gray'; | |||
div.appendChild(document.createTextNode("View this page in ")); | |||
var link = document.createElement('a'); | |||
link.href = 'http://en.m.wikipedia.org/wiki/' + pageLink; | |||
link.appendChild(document.createTextNode("Wikipedia's mobile site")); | |||
div.appendChild(link); | |||
var content=document.getElementById('content'); | |||
content.insertBefore(div,content.firstChild); | |||
}); | |||
} | |||
/** | |||
* 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]] | |||
*/ | |||
function LinkFA(){ | |||
var pLang = document.getElementById('p-lang') | |||
if (!pLang) return | |||
var list = { | |||
'fa':'This is a featured article in another language', | |||
'ga':'This is a good article in another language'} | |||
var iw = pLang.getElementsByTagName('li') | |||
for (var i=0; i<iw.length; i++) | |||
for (var s in list) | |||
if (document.getElementById(iw[i].className+'-'+s)){ | |||
iw[i].className += ' ' + s.toUpperCase() | |||
iw[i].title = list[s] + ' in another language' | |||
} | |||
} | |||
$( LinkFA ); | |||
// Results from Wikidata | |||
// [[File:Wdsearch_script_screenshot.png]] | |||
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' || ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgCanonicalSpecialPageName' ) === false ) ) { | |||
mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:Wdsearch.js&action=raw&ctype=text/javascript' ); | |||
} | } | ||
/** | /** | ||
* 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]] | |||
*/ | */ | ||
( function () { | |||
var require_wikiminiatlas = false; | |||
var coord_filter = /geohack/; | |||
$( function () { | |||
$( 'a.external.text' ).each( function( key, link ) { | |||
if ( link.href && coord_filter.exec( link.href ) ) { | |||
require_wikiminiatlas = true; | |||
// break from loop | |||
return false; | |||
} | |||
} ); | |||
if ( $( 'div.kmldata' ).length ) { | |||
require_wikiminiatlas = true; | |||
} | |||
if ( require_wikiminiatlas ) { | |||
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); | |||
} | |||
} ); | |||
} )(); | |||
//</source> | |||
// </nowiki></pre> | |||
//</ |