Difference between revisions of "MediaWiki:Common.js"
(48 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | |||
/* | /* | ||
− | + | ||
− | + | TODO: | |
− | + | - Speedrun.com scrape bot | |
− | + | - nodemw | |
− | + | - cheerio | |
− | + | - Fix misc tab formatting | |
− | + | - Alternate embeds | |
− | + | ||
− | |||
− | |||
*/ | */ | ||
+ | |||
+ | var body = document.getElementsByTagName('body')[0]; | ||
if (window.location.href == 'https://dkcspeedruns.com/Main_Page') { | if (window.location.href == 'https://dkcspeedruns.com/Main_Page') { | ||
− | var | + | var donkey, clickbait, krool; |
− | |||
− | |||
− | |||
donkey = document.createElement('span'); | donkey = document.createElement('span'); | ||
donkey.className = 'donkey-vine'; | donkey.className = 'donkey-vine'; | ||
body.appendChild(donkey); | body.appendChild(donkey); | ||
− | + | var donkeyImg = document.createElement('img'); | |
− | donkeyImg = document.createElement('img'); | + | donkeyImg.src = 'https://dkcspeedruns.com/mediawiki/img_auth.php/d/dd/Donkey-vine.png'; |
− | donkeyImg.src = 'https:// | ||
donkey.appendChild(donkeyImg); | donkey.appendChild(donkeyImg); | ||
− | |||
clickbait = document.createElement('img'); | clickbait = document.createElement('img'); | ||
− | clickbait.src = 'https:// | + | clickbait.src = 'https://dkcspeedruns.com/mediawiki/img_auth.php/d/d1/Dkc-ad.gif'; |
clickbait.id = "clickbait"; | clickbait.id = "clickbait"; | ||
document.getElementById('bodyContent').insertBefore(clickbait, document.getElementById('bodyContent').firstChild); | document.getElementById('bodyContent').insertBefore(clickbait, document.getElementById('bodyContent').firstChild); | ||
− | |||
krool = document.createElement('div'); | krool = document.createElement('div'); | ||
krool.id = 'krool'; | krool.id = 'krool'; | ||
Line 35: | Line 28: | ||
krool.className += ' paused'; | krool.className += ' paused'; | ||
body.appendChild(krool); | body.appendChild(krool); | ||
− | |||
clickbait.onclick = function() { | clickbait.onclick = function() { | ||
krool.classList.remove('paused'); | krool.classList.remove('paused'); | ||
Line 41: | Line 33: | ||
} | } | ||
− | if (window.location.href | + | if (window.location.href == 'https://dkcspeedruns.com/Leaderboards' || window.location.href == 'https://dkcspeedruns.com/Leaderboards/Misc_Categories') { |
− | + | document.getElementById('firstHeading').style.border = 'none'; | |
− | |||
− | |||
− | |||
var editLinks = document.getElementsByClassName('mw-editsection-visualeditor'); | var editLinks = document.getElementsByClassName('mw-editsection-visualeditor'); | ||
for (var i = 0; i < editLinks.length; i++) { | for (var i = 0; i < editLinks.length; i++) { | ||
Line 51: | Line 40: | ||
var newLink = document.createElement('a'); | var newLink = document.createElement('a'); | ||
newLink.href = 'https://dkcspeedruns.com/' + editLinks[i].href.substr(51).split('&')[0] + '?veaction=edit'; | newLink.href = 'https://dkcspeedruns.com/' + editLinks[i].href.substr(51).split('&')[0] + '?veaction=edit'; | ||
− | newLink.innerHTML = 'edit' | + | newLink.innerHTML = 'edit'; |
editLinks[i].parentNode.insertBefore(newLink, editLinks[i]); | editLinks[i].parentNode.insertBefore(newLink, editLinks[i]); | ||
} | } | ||
− | var | + | var toc, container, gameTabs, gameTabsContainer, catTabs, games, gamesContainer, cats, catsContainer, currentGame; |
toc = document.getElementById('toc'); | toc = document.getElementById('toc'); | ||
container = document.getElementById('mw-content-text'); | container = document.getElementById('mw-content-text'); | ||
toc.style.display = 'none'; | toc.style.display = 'none'; | ||
− | |||
gameTabs = document.getElementById('mw-content-text').getElementsByTagName('h1'); | gameTabs = document.getElementById('mw-content-text').getElementsByTagName('h1'); | ||
catTabs = document.getElementById('mw-content-text').getElementsByTagName('h2'); | catTabs = document.getElementById('mw-content-text').getElementsByTagName('h2'); | ||
Line 71: | Line 59: | ||
}); | }); | ||
$(catTabs).each(function(i) { | $(catTabs).each(function(i) { | ||
− | if (i == 0) { | + | if (i == 0) {} else if (i == 1) { |
− | |||
− | |||
$(this).addClass('cat-tab selected'); | $(this).addClass('cat-tab selected'); | ||
} else { | } else { | ||
Line 85: | Line 71: | ||
gameTabsContainer.id = 'game-tabs'; | gameTabsContainer.id = 'game-tabs'; | ||
body.appendChild(gameTabsContainer); | body.appendChild(gameTabsContainer); | ||
− | |||
while (gameTabs.length > 0) { | while (gameTabs.length > 0) { | ||
− | |||
− | |||
gameTabsContainer.appendChild(gameTabs[0]); | gameTabsContainer.appendChild(gameTabs[0]); | ||
} | } | ||
− | |||
container.insertBefore(gameTabsContainer, container.firstChild); | container.insertBefore(gameTabsContainer, container.firstChild); | ||
− | |||
for (var i = 0; i < games.length; i++) { | for (var i = 0; i < games.length; i++) { | ||
var catTabsContainer = document.createElement('div'); | var catTabsContainer = document.createElement('div'); | ||
Line 99: | Line 80: | ||
var tabs = games[i].getElementsByClassName('cat-tab'); | var tabs = games[i].getElementsByClassName('cat-tab'); | ||
while (tabs.length > 0) { | while (tabs.length > 0) { | ||
− | |||
catTabsContainer.appendChild(tabs[0]); | catTabsContainer.appendChild(tabs[0]); | ||
} | } | ||
games[i].insertBefore(catTabsContainer, games[i].firstChild); | games[i].insertBefore(catTabsContainer, games[i].firstChild); | ||
}; | }; | ||
− | |||
for (var i = 0; i < games.length; i++) { | for (var i = 0; i < games.length; i++) { | ||
if (i == 0) { | if (i == 0) { | ||
Line 110: | Line 89: | ||
}; | }; | ||
} | } | ||
− | |||
for (var i = 0; i < cats.length; i++) { | for (var i = 0; i < cats.length; i++) { | ||
if (i == 0) { | if (i == 0) { | ||
Line 116: | Line 94: | ||
}; | }; | ||
} | } | ||
− | |||
for (var i = 0; i < gameTabs.length; i++) { | for (var i = 0; i < gameTabs.length; i++) { | ||
(function(index) { | (function(index) { | ||
gameTabs[i].onclick = function() { | gameTabs[i].onclick = function() { | ||
− | |||
showCurrentGame(index); | showCurrentGame(index); | ||
} | } | ||
Line 128: | Line 104: | ||
if (currentGame != index) { | if (currentGame != index) { | ||
currentGame = index; | currentGame = index; | ||
− | |||
for (var k = 0; k < games.length; k++) { | for (var k = 0; k < games.length; k++) { | ||
− | games[k].classList.remove('dkc-show'); | + | games[k].classList.remove('dkc-show'); |
− | gameTabs[k].className = 'game-tab'; | + | gameTabs[k].className = 'game-tab'; |
− | |||
var resetCatTabs = games[k].getElementsByClassName('cat-tab'); | var resetCatTabs = games[k].getElementsByClassName('cat-tab'); | ||
for (var p = 0; p < resetCatTabs.length; p++) { | for (var p = 0; p < resetCatTabs.length; p++) { | ||
Line 139: | Line 113: | ||
} | } | ||
} | } | ||
− | |||
var resetCats = games[k].getElementsByClassName('cat'); | var resetCats = games[k].getElementsByClassName('cat'); | ||
for (var p = 0; p < resetCats.length; p++) { | for (var p = 0; p < resetCats.length; p++) { | ||
Line 147: | Line 120: | ||
} | } | ||
} | } | ||
− | + | gameTabs[index].className += ' selected'; | |
− | gameTabs[index].className += ' selected'; | + | games[index].className += ' dkc-show'; |
− | games[index].className += ' dkc-show'; | + | games[index].getElementsByClassName('cat')[0].className += ' dkc-show'; |
− | games[index].getElementsByClassName('cat')[0].className += ' dkc-show'; | + | games[index].getElementsByClassName('cat-tab')[0].className = 'cat-tab selected'; |
− | games[index].getElementsByClassName('cat-tab')[0].className = 'cat-tab selected'; | ||
} else { | } else { | ||
for (var k = 0; k < games.length; k++) { | for (var k = 0; k < games.length; k++) { | ||
− | games[k].classList.remove('dkc-show'); | + | games[k].classList.remove('dkc-show'); |
} | } | ||
− | |||
games[index].className += ' dkc-show'; | games[index].className += ' dkc-show'; | ||
} | } | ||
} | } | ||
− | |||
for (var i = 0; i < catTabs.length; i++) { | for (var i = 0; i < catTabs.length; i++) { | ||
(function(index) { | (function(index) { | ||
catTabs[i].onclick = function() { | catTabs[i].onclick = function() { | ||
− | |||
showCurrentCat(index - 1); | showCurrentCat(index - 1); | ||
} | } | ||
Line 170: | Line 139: | ||
} | } | ||
var showCurrentCat = function(cat) { | var showCurrentCat = function(cat) { | ||
− | |||
for (var k = 0; k < cats.length; k++) { | for (var k = 0; k < cats.length; k++) { | ||
cats[k].classList.remove('dkc-show'); | cats[k].classList.remove('dkc-show'); | ||
catTabs[k].className = 'cat-tab'; | catTabs[k].className = 'cat-tab'; | ||
} | } | ||
− | |||
catTabs[cat + 1].className = 'cat-tab selected'; | catTabs[cat + 1].className = 'cat-tab selected'; | ||
cats[cat].className += ' dkc-show'; | cats[cat].className += ' dkc-show'; | ||
Line 181: | Line 148: | ||
container.style.marginBottom = '-10px'; | container.style.marginBottom = '-10px'; | ||
container.style.display = 'block'; | container.style.display = 'block'; | ||
− | document.getElementById(' | + | createModals(); |
+ | } | ||
+ | if (window.location.href.indexOf('Leaderboards') > -1) { | ||
+ | body.classList.remove('page-Leaderboards'); | ||
+ | body.classList.remove('page-Leaderboards_Misc_Categories'); | ||
+ | } | ||
+ | function createModals() { | ||
+ | var currentGame = document.getElementsByClassName('dkc-show')[0]; | ||
+ | var gameTRs = document.getElementsByTagName('tr'); | ||
+ | for (var t = 0; t < gameTRs.length; t++) { | ||
+ | if (gameTRs[t].lastChild.innerHTML.length > 1) { | ||
+ | var newHTML = '<div>' + gameTRs[t].lastChild.innerHTML + '</div>'; | ||
+ | gameTRs[t].lastChild.innerHTML = newHTML; | ||
+ | } | ||
+ | } | ||
+ | var games = document.getElementsByClassName('game'); | ||
+ | for (var g = 0; g < games.length; g++) { | ||
+ | var links = games[g].getElementsByTagName('a'); | ||
+ | for (var a = 0; a < links.length; a++) { | ||
+ | if (links[a].href.indexOf('youtu') > -1 || links[a].href.indexOf('twitch') > -1) { | ||
+ | var link = links[a].href; | ||
+ | links[a].setAttribute('data-embed', link); | ||
+ | links[a].removeAttribute('href'); | ||
+ | links[a].onclick = function() { | ||
+ | var link = this.getAttribute('data-embed'); | ||
+ | //document.getElementsByTagName('html')[0].className += ' ve-loading'; visual editor is ded | ||
+ | document.getElementsByTagName('html')[0].className += ' modalbg'; | ||
+ | var modal = document.createElement('div'); | ||
+ | var close = document.createElement('div'); | ||
+ | close.id = "close"; | ||
+ | close.onclick = function() { | ||
+ | document.getElementsByTagName('html')[0].className = document.getElementsByTagName('html')[0].className.substr(0, document.getElementsByTagName('html')[0].className.length - 8); | ||
+ | document.getElementById('modal').outerHTML = ''; | ||
+ | } | ||
+ | modal.id = "modal"; | ||
+ | if (link.indexOf('twitch') > -1) { | ||
+ | modal.innerHTML = '<iframe src="https://player.twitch.tv/?video=' + link.substr(link.length - 9) + '&parent=dkcspeedruns.com" height="100%" width="100%"></iframe>'; | ||
+ | body.appendChild(modal); | ||
+ | modal.appendChild(close); | ||
+ | } else if (link.indexOf('youtu') > -1) { | ||
+ | modal.innerHTML = '<iframe src="https://www.youtube.com/embed/' + link.substr(link.length - 11) + '?autoplay=1" height="100%" width="100%"></iframe>'; | ||
+ | body.appendChild(modal); | ||
+ | modal.appendChild(close); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (window.location.href == 'https://dkcspeedruns.com/Leaderboards/Misc_Categories') { | ||
+ | body.onclick = function() { | ||
+ | var tabs = document.getElementsByClassName('game dkc-show')[0].getElementsByClassName('cat-tabs')[0]; | ||
+ | var cat = document.getElementsByClassName('game dkc-show')[0].getElementsByClassName('cat dkc-show')[0]; | ||
+ | if (tabs.offsetHeight < cat.offsetHeight) { | ||
+ | document.getElementById('mw-content-text').style.height = cat.offsetHeight + 38 + "px"; | ||
+ | } else { | ||
+ | document.getElementById('mw-content-text').style.height = tabs.offsetHeight + 55 + "px"; | ||
+ | } | ||
+ | } | ||
+ | var clear = document.getElementsByClassName('mw-parser-output')[0], child = clear.firstChild, nextChild; | ||
+ | while (child) { | ||
+ | nextChild = child.nextSibling; | ||
+ | if (child.nodeType == 3) { | ||
+ | clear.removeChild(child); | ||
+ | } | ||
+ | child = nextChild; | ||
+ | } | ||
} | } |
Latest revision as of 23:52, 23 March 2021
/* TODO: - Speedrun.com scrape bot - nodemw - cheerio - Fix misc tab formatting - Alternate embeds */ var body = document.getElementsByTagName('body')[0]; if (window.location.href == 'https://dkcspeedruns.com/Main_Page') { var donkey, clickbait, krool; donkey = document.createElement('span'); donkey.className = 'donkey-vine'; body.appendChild(donkey); var donkeyImg = document.createElement('img'); donkeyImg.src = 'https://dkcspeedruns.com/mediawiki/img_auth.php/d/dd/Donkey-vine.png'; donkey.appendChild(donkeyImg); clickbait = document.createElement('img'); clickbait.src = 'https://dkcspeedruns.com/mediawiki/img_auth.php/d/d1/Dkc-ad.gif'; clickbait.id = "clickbait"; document.getElementById('bodyContent').insertBefore(clickbait, document.getElementById('bodyContent').firstChild); krool = document.createElement('div'); krool.id = 'krool'; krool.className = 'pop-out'; krool.className += ' paused'; body.appendChild(krool); clickbait.onclick = function() { krool.classList.remove('paused'); } } if (window.location.href == 'https://dkcspeedruns.com/Leaderboards' || window.location.href == 'https://dkcspeedruns.com/Leaderboards/Misc_Categories') { document.getElementById('firstHeading').style.border = 'none'; var editLinks = document.getElementsByClassName('mw-editsection-visualeditor'); for (var i = 0; i < editLinks.length; i++) { editLinks[i].style.display = 'none'; var newLink = document.createElement('a'); newLink.href = 'https://dkcspeedruns.com/' + editLinks[i].href.substr(51).split('&')[0] + '?veaction=edit'; newLink.innerHTML = 'edit'; editLinks[i].parentNode.insertBefore(newLink, editLinks[i]); } var toc, container, gameTabs, gameTabsContainer, catTabs, games, gamesContainer, cats, catsContainer, currentGame; toc = document.getElementById('toc'); container = document.getElementById('mw-content-text'); toc.style.display = 'none'; gameTabs = document.getElementById('mw-content-text').getElementsByTagName('h1'); catTabs = document.getElementById('mw-content-text').getElementsByTagName('h2'); currentGame = 0; $(gameTabs).each(function(i) { if (i == 0) { $(this).addClass('game-tab selected'); } else { $(this).addClass('game-tab'); } $(this).nextUntil('h1').wrapAll('<div class="game"></div>'); }); $(catTabs).each(function(i) { if (i == 0) {} else if (i == 1) { $(this).addClass('cat-tab selected'); } else { $(this).addClass('cat-tab'); } $(this).nextUntil('h2').wrapAll('<div class="cat"></div>'); }); games = document.getElementsByClassName('game'); cats = document.getElementsByClassName('cat'); gameTabsContainer = document.createElement('div'); gameTabsContainer.id = 'game-tabs'; body.appendChild(gameTabsContainer); while (gameTabs.length > 0) { gameTabsContainer.appendChild(gameTabs[0]); } container.insertBefore(gameTabsContainer, container.firstChild); for (var i = 0; i < games.length; i++) { var catTabsContainer = document.createElement('div'); catTabsContainer.className = 'cat-tabs'; var tabs = games[i].getElementsByClassName('cat-tab'); while (tabs.length > 0) { catTabsContainer.appendChild(tabs[0]); } games[i].insertBefore(catTabsContainer, games[i].firstChild); }; for (var i = 0; i < games.length; i++) { if (i == 0) { games[i].className += ' dkc-show'; }; } for (var i = 0; i < cats.length; i++) { if (i == 0) { cats[i].className += ' dkc-show'; }; } for (var i = 0; i < gameTabs.length; i++) { (function(index) { gameTabs[i].onclick = function() { showCurrentGame(index); } })(i); } var showCurrentGame = function(index) { if (currentGame != index) { currentGame = index; for (var k = 0; k < games.length; k++) { games[k].classList.remove('dkc-show'); gameTabs[k].className = 'game-tab'; var resetCatTabs = games[k].getElementsByClassName('cat-tab'); for (var p = 0; p < resetCatTabs.length; p++) { if (resetCatTabs[p].classList.contains('selected')) { resetCatTabs[p].classList.remove('selected'); } } var resetCats = games[k].getElementsByClassName('cat'); for (var p = 0; p < resetCats.length; p++) { if (resetCats[p].classList.contains('dkc-show')) { resetCats[p].classList.remove('dkc-show'); } } } gameTabs[index].className += ' selected'; games[index].className += ' dkc-show'; games[index].getElementsByClassName('cat')[0].className += ' dkc-show'; games[index].getElementsByClassName('cat-tab')[0].className = 'cat-tab selected'; } else { for (var k = 0; k < games.length; k++) { games[k].classList.remove('dkc-show'); } games[index].className += ' dkc-show'; } } for (var i = 0; i < catTabs.length; i++) { (function(index) { catTabs[i].onclick = function() { showCurrentCat(index - 1); } })(i); } var showCurrentCat = function(cat) { for (var k = 0; k < cats.length; k++) { cats[k].classList.remove('dkc-show'); catTabs[k].className = 'cat-tab'; } catTabs[cat + 1].className = 'cat-tab selected'; cats[cat].className += ' dkc-show'; } container.style.marginBottom = '-10px'; container.style.display = 'block'; createModals(); } if (window.location.href.indexOf('Leaderboards') > -1) { body.classList.remove('page-Leaderboards'); body.classList.remove('page-Leaderboards_Misc_Categories'); } function createModals() { var currentGame = document.getElementsByClassName('dkc-show')[0]; var gameTRs = document.getElementsByTagName('tr'); for (var t = 0; t < gameTRs.length; t++) { if (gameTRs[t].lastChild.innerHTML.length > 1) { var newHTML = '<div>' + gameTRs[t].lastChild.innerHTML + '</div>'; gameTRs[t].lastChild.innerHTML = newHTML; } } var games = document.getElementsByClassName('game'); for (var g = 0; g < games.length; g++) { var links = games[g].getElementsByTagName('a'); for (var a = 0; a < links.length; a++) { if (links[a].href.indexOf('youtu') > -1 || links[a].href.indexOf('twitch') > -1) { var link = links[a].href; links[a].setAttribute('data-embed', link); links[a].removeAttribute('href'); links[a].onclick = function() { var link = this.getAttribute('data-embed'); //document.getElementsByTagName('html')[0].className += ' ve-loading'; visual editor is ded document.getElementsByTagName('html')[0].className += ' modalbg'; var modal = document.createElement('div'); var close = document.createElement('div'); close.id = "close"; close.onclick = function() { document.getElementsByTagName('html')[0].className = document.getElementsByTagName('html')[0].className.substr(0, document.getElementsByTagName('html')[0].className.length - 8); document.getElementById('modal').outerHTML = ''; } modal.id = "modal"; if (link.indexOf('twitch') > -1) { modal.innerHTML = '<iframe src="https://player.twitch.tv/?video=' + link.substr(link.length - 9) + '&parent=dkcspeedruns.com" height="100%" width="100%"></iframe>'; body.appendChild(modal); modal.appendChild(close); } else if (link.indexOf('youtu') > -1) { modal.innerHTML = '<iframe src="https://www.youtube.com/embed/' + link.substr(link.length - 11) + '?autoplay=1" height="100%" width="100%"></iframe>'; body.appendChild(modal); modal.appendChild(close); } } } } } } if (window.location.href == 'https://dkcspeedruns.com/Leaderboards/Misc_Categories') { body.onclick = function() { var tabs = document.getElementsByClassName('game dkc-show')[0].getElementsByClassName('cat-tabs')[0]; var cat = document.getElementsByClassName('game dkc-show')[0].getElementsByClassName('cat dkc-show')[0]; if (tabs.offsetHeight < cat.offsetHeight) { document.getElementById('mw-content-text').style.height = cat.offsetHeight + 38 + "px"; } else { document.getElementById('mw-content-text').style.height = tabs.offsetHeight + 55 + "px"; } } var clear = document.getElementsByClassName('mw-parser-output')[0], child = clear.firstChild, nextChild; while (child) { nextChild = child.nextSibling; if (child.nodeType == 3) { clear.removeChild(child); } child = nextChild; } }