Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
m |
m (Hopefully this should all work) |
||
(115 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
$( function() { | |||
var pops = function( elems ) { | var pops = function( elems ) { | ||
for (var i=0; i<elems.length; i++) { | for (var i=0; i<elems.length; i++) { | ||
Line 67: | Line 67: | ||
} | } | ||
} | } | ||
$ ( function(){ | |||
$( 'table.collapsible' ).each(function(i, tab){ | |||
var head = $(tab).find( 'tr th' ).first(); | |||
if (!head.length) return; | |||
head.css('cursor', 'pointer'); | |||
var toggle = function(e){ | |||
head.closest('tr').parent().children(':not(:first)').toggle(); | |||
}; | |||
head.click(toggle); | |||
if ($(tab).hasClass('collapsed')){ | |||
toggle(); | |||
} | |||
}); | |||
} ); | |||
function CustomizeModificationsOfSidebar() { | function CustomizeModificationsOfSidebar() { | ||
//adds [[Special:CategoryTree]] to toolbox | //adds [[Special:CategoryTree]] to toolbox | ||
ModifySidebar("add", " | ModifySidebar("add", "tutorials", "First Steps", "http://wiki.industrial-craft.net/index.php?title=Tutorial:First_Steps"); | ||
ModifySidebar("add", "tutorials", " | ModifySidebar("add", "tutorials", "Wiring", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Wiring"); | ||
ModifySidebar("add", "tutorials", " | ModifySidebar("add", "tutorials", "Nuclear Power", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Nuclear_Power"); | ||
ModifySidebar("add", "tutorials", " | //ModifySidebar("add", "tutorials", "Pirate's Guide to Industrial Craft", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Pirate's Guide to Industrial Craft"); | ||
ModifySidebar("add", " | ModifySidebar("add", "navigation", "Download", "http://wiki.industrial-craft.net/index.php?title=Download"); | ||
ModifySidebar("add", "navigation", " | ModifySidebar("add", "navigation", "Version History", "http://wiki.industrial-craft.net/index.php?title=Updates"); | ||
ModifySidebar("add", "navigation", " | ModifySidebar("add", "navigation", "Recipes & Resources", "http://wiki.industrial-craft.net/index.php?title=Recipes_and_Resources"); | ||
ModifySidebar("add", "navigation", " | ModifySidebar("add", "navigation", "Forum", "http://forum.industrial-craft.net/"); | ||
ModifySidebar("add", "navigation", " | ModifySidebar("add", "navigation", "Blog", "http://industrial-craft.net/"); | ||
ModifySidebar("add", "navigation", " | ModifySidebar("add", "navigation", "April Fool 2012", "http://wiki.industrial-craft.net/index.php?title=April_Fools_Joke_2012"); | ||
ModifySidebar("add", "navigation", "MedievalCraft", "http://wiki.industrial-craft.net/index.php | //ModifySidebar("add", "navigation", "Mine4Dead", "http://wiki.industrial-craft.net/index.php?title=Mine4Dead:Main_Page"); | ||
ModifySidebar("add", "navigation", " | //ModifySidebar("add", "navigation", "MedievalCraft", "http://wiki.industrial-craft.net/index.php?title=MedievalCraft-Mod:Main_Page"); | ||
ModifySidebar("add", "navigation", " | ModifySidebar("add", "navigation", "AntiGriefer-Community", "http://wiki.industrial-craft.net/index.php?title=AntiGriefer-Community"); | ||
ModifySidebar("add", " | ModifySidebar("add", "navigation", "Banners", "http://wiki.industrial-craft.net/index.php?title=Banner"); | ||
ModifySidebar("add", "navigation", "Achievements", "http://wiki.industrial-craft.net/index.php?title=Achievements"); | |||
ModifySidebar("remove", "toolbox", "Permanent Link", "http://wiki.industrial-craft.net/index.php/Main_Page&oldid=829"); | ModifySidebar("remove", "toolbox", "Permanent Link", "http://wiki.industrial-craft.net/index.php/Main_Page&oldid=829"); | ||
} | } | ||
$(CustomizeModificationsOfSidebar); | |||
$(document).ready(function() { | |||
$('.animated-grids').each(function() { | |||
$(this).children().first().addClass('active'); | |||
}); | |||
setInterval(function() { | |||
$('.animated-grids').each(function() { | |||
var $current = $(this).children('.active'); | |||
var $next = $current.nextAll(':not(.skip):first'); | |||
if (!$next.length) { | |||
$next = $(this).children(':not(.skip):first'); | |||
} | |||
$current.removeClass('active'); | |||
$next.addClass('active'); | |||
}); | |||
}, 2000); | |||
$('.animated-text').each(function() { | |||
$(this).children().first().addClass('active'); | |||
}); | |||
setInterval(function() { | |||
$('.animated-text').each(function() { | |||
var $current = $(this).children('.active'); | |||
var $next = $current.nextAll(':not(.skip):first'); | |||
if (!$next.length) { | |||
$next = $(this).children(':not(.skip):first'); | |||
} | |||
$current.removeClass('active'); | |||
$next.addClass('active'); | |||
}); | |||
}, 5000); | |||
}); | |||
/****************************************** | |||
* Tooltip Generator * | |||
*****************************************/ | |||
$(function() { | |||
var selector = '.tooltip, .a1'; | |||
$('#tooltip-display').remove(); | |||
var mc_tooltip = function() { | |||
// Check to see if we've already created the div | |||
if (!$('#tooltip-display').length) { | |||
$('body').append($('<div id="tooltip-display">') | |||
.hide()); | |||
} | |||
return $('#tooltip-display'); | |||
}; | |||
$("body").on('mouseenter', selector, function(e) { | |||
var $me = $(this); | |||
// Make sure this isn't a link to upload a new file | |||
if ($me.find('.new').length > 0) { | |||
// This isn't one we want to show a tooltip for | |||
return; | |||
} | |||
// Try to get the title | |||
var title = $me.data('tooltip'); | |||
// See if we can find a title elsewhere | |||
// Check this element or its child | |||
if (title === undefined) { | |||
title = $me.attr('title') || $me.children(':first').attr('title') || $me.find('img:first').attr('alt'); | |||
// Check if we found anything | |||
if (title) { | |||
// Save it for later | |||
$me.data('tooltip', title); | |||
} | |||
else { | |||
// Didn't find anything, no sense continuing | |||
return; | |||
} | |||
} | |||
// Remove any title elements to avoid the default tooltip | |||
$me.add('*', $me).filter('[title]').removeAttr('title'); | |||
//Old methods of turning \ into <br/> | |||
/*title = title.replace('Grid',"").replace('.png',"").replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>"; | |||
title = title.replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>";*/ | |||
var stitle = title.split("\\"); | |||
title = stitle[0]; | |||
if (stitle.length > 1) { | |||
title += "<br/>"; | |||
for (var i = 1; i < stitle.length; i++) { | |||
title += "<span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">" + stitle[i].trim() + "</span>"; | |||
} | |||
} | |||
// Add the text to the tooltip | |||
mc_tooltip().html(title.replace(/_/g, " ")); | |||
// Need to update the position to the cursor position | |||
$me.trigger('mousemove', e); | |||
}) | |||
.on('mousemove', selector, function (e) { | |||
// Check if the element exists already, create it if it doesn't | |||
if (!$('#tooltip-display').length) { | |||
$(this).trigger('mouseenter'); | |||
return; | |||
} | |||
// Get dimensions for bounds checking | |||
var top = e.pageY - 30, | |||
height = mc_tooltip().outerHeight(true), | |||
left = e.pageX + 15, | |||
width = mc_tooltip().outerWidth(true); | |||
// Get window dimensions | |||
var $w = $(window), | |||
win_width = $w.width(), | |||
win_height = $w.height(); | |||
// If going off the right of the screen, go to the left of the cursor | |||
if ( left + width > win_width ) { | |||
left -= width + 36; | |||
} | |||
// If now going off to the left of the screen, resort to going above the cursor | |||
if ( left < 0 ) { | |||
left = 0; | |||
top -= height - 22; | |||
// Go below the cursor if too high | |||
if ( top < 0 ) { | |||
top += height + 47; | |||
} | |||
// Don't go off the top of the screen | |||
} else if ( top < 0 ) { | |||
top = 0; | |||
}/* | |||
// Don't go off the bottom of the screen | |||
} else if ( top + height > win_height ) { | |||
top = win_height - height; | |||
}*/ | |||
// Apply the position | |||
mc_tooltip().css({ | |||
top: top, | |||
left: left | |||
}).show(); | |||
}) | |||
.on('mouseleave', selector, function (e) { | |||
mc_tooltip().hide(); | |||
}); | |||
}); | |||
/****************************************** | |||
* Infobox Collapser * | |||
*****************************************/ | |||
$( ".infoboxBlockImage img" ).each( function() { | |||
var width = parseInt( $( this ).attr( "width" ), 10); | |||
if ( width > 240 ) { | |||
$( this ).attr( "height", "" ); | |||
$( this ).attr( "width", "240" ); | |||
} | |||
}); | |||
$( ".infobox:not(.infoboxNoCollapse) td" ).each( function() { | |||
if (( $( this ).html().match( /{{{[^}]+}}}/ ) || $( this ).html() === "\n") && !$( this ).parent( "tr" ).hasClass( "infoboxSubsectionBreak")) { | |||
$( this ).parent( "tr" ).hide(); | |||
} | |||
}); | |||
// TODO: Make less dodgy | |||
$( ".infobox:not(.infoboxNoCollapse) tr.infoboxSectionHeader" ).each( function() //.infobox:not(.infoboxNoCollapse) .infoboxSubsectionBreak, | |||
{ | |||
var flag = true, | |||
next = $( this ).next(); | |||
//console.log("\nNew Section\n"); | |||
var line = false; | |||
var draw_line = null; | |||
while ( next && next !== undefined && next.html() !== undefined && !next.hasClass( "infoboxSectionHeader") ) // && !next.hasClass( "infoboxSubsectionBreak" ) && | |||
{ | |||
if (next.hasClass( "infoboxSubsectionBreak" )) { | |||
//console.log("Next Line Break:"); | |||
//console.log(next); | |||
line = false; | |||
draw_line = next; | |||
} | |||
if ( next.css( "display" ) != "none" && !next.hasClass( "infoboxSubsectionBreak" ) ) { | |||
//console.log("So this is making it shown"); | |||
//console.log(next); | |||
//console.log(next.html()); | |||
flag = false; | |||
line = true; | |||
} | |||
next = next.next(); | |||
} | |||
if ( flag ) { | |||
//console.log("Nothing made this section show"); | |||
$( this ).hide(); | |||
} | |||
if ( !line && draw_line !== null ) { | |||
try{draw_line.style.display = "none";}catch(TypeError){} //I think it has issues with the first object | |||
} | |||
}); | |||
if(wgPageName === "User:Chocohead/Sandpit") { | |||
importScript("User:Chocohead/Lift.js"); | |||
} |
Latest revision as of 15:44, 13 July 2016
/* Any JavaScript here will be loaded for all users on every page load. */ $( function() { var pops = function( elems ) { for (var i=0; i<elems.length; i++) { if ( !(' '+elems[i].className+' ').match( / pops / ) ) continue; var anchs = elems[i].getElementsByTagName('a'); for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank'; } }; var bc = document.getElementById('bodyContent'); var tags = ['span', 'div', 'table', 'td', 'th']; for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( tags[i] ) ); } ); function ModifySidebar(action, section, name, link) { try { switch (section) { case "languages": var target = "p-lang"; break; case "toolbox": var target = "p-tb"; break; case "navigation": var target = "p-navigation"; break; default: var target = "p-" + section; break; } if (action == "add") { var node = document.getElementById(target) .getElementsByTagName('div')[0] .getElementsByTagName('ul')[0]; var aNode = document.createElement('a'); var liNode = document.createElement('li'); aNode.appendChild(document.createTextNode(name)); aNode.setAttribute('href', link); liNode.appendChild(aNode); liNode.className='plainlinks'; node.appendChild(liNode); } if (action == "remove") { var list = document.getElementById(target) .getElementsByTagName('div')[0] .getElementsByTagName('ul')[0]; var listelements = list.getElementsByTagName('li'); for (var i = 0; i < listelements.length; i++) { if (listelements[i].getElementsByTagName('a')[0].innerHTML == name || listelements[i].getElementsByTagName('a')[0].href == link) { list.removeChild(listelements[i]); } } } } catch(e) { // lets just ignore what's happened return; } } $ ( function(){ $( 'table.collapsible' ).each(function(i, tab){ var head = $(tab).find( 'tr th' ).first(); if (!head.length) return; head.css('cursor', 'pointer'); var toggle = function(e){ head.closest('tr').parent().children(':not(:first)').toggle(); }; head.click(toggle); if ($(tab).hasClass('collapsed')){ toggle(); } }); } ); function CustomizeModificationsOfSidebar() { //adds [[Special:CategoryTree]] to toolbox ModifySidebar("add", "tutorials", "First Steps", "http://wiki.industrial-craft.net/index.php?title=Tutorial:First_Steps"); ModifySidebar("add", "tutorials", "Wiring", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Wiring"); ModifySidebar("add", "tutorials", "Nuclear Power", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Nuclear_Power"); //ModifySidebar("add", "tutorials", "Pirate's Guide to Industrial Craft", "http://wiki.industrial-craft.net/index.php?title=Tutorial:Pirate's Guide to Industrial Craft"); ModifySidebar("add", "navigation", "Download", "http://wiki.industrial-craft.net/index.php?title=Download"); ModifySidebar("add", "navigation", "Version History", "http://wiki.industrial-craft.net/index.php?title=Updates"); ModifySidebar("add", "navigation", "Recipes & Resources", "http://wiki.industrial-craft.net/index.php?title=Recipes_and_Resources"); ModifySidebar("add", "navigation", "Forum", "http://forum.industrial-craft.net/"); ModifySidebar("add", "navigation", "Blog", "http://industrial-craft.net/"); ModifySidebar("add", "navigation", "April Fool 2012", "http://wiki.industrial-craft.net/index.php?title=April_Fools_Joke_2012"); //ModifySidebar("add", "navigation", "Mine4Dead", "http://wiki.industrial-craft.net/index.php?title=Mine4Dead:Main_Page"); //ModifySidebar("add", "navigation", "MedievalCraft", "http://wiki.industrial-craft.net/index.php?title=MedievalCraft-Mod:Main_Page"); ModifySidebar("add", "navigation", "AntiGriefer-Community", "http://wiki.industrial-craft.net/index.php?title=AntiGriefer-Community"); ModifySidebar("add", "navigation", "Banners", "http://wiki.industrial-craft.net/index.php?title=Banner"); ModifySidebar("add", "navigation", "Achievements", "http://wiki.industrial-craft.net/index.php?title=Achievements"); ModifySidebar("remove", "toolbox", "Permanent Link", "http://wiki.industrial-craft.net/index.php/Main_Page&oldid=829"); } $(CustomizeModificationsOfSidebar); $(document).ready(function() { $('.animated-grids').each(function() { $(this).children().first().addClass('active'); }); setInterval(function() { $('.animated-grids').each(function() { var $current = $(this).children('.active'); var $next = $current.nextAll(':not(.skip):first'); if (!$next.length) { $next = $(this).children(':not(.skip):first'); } $current.removeClass('active'); $next.addClass('active'); }); }, 2000); $('.animated-text').each(function() { $(this).children().first().addClass('active'); }); setInterval(function() { $('.animated-text').each(function() { var $current = $(this).children('.active'); var $next = $current.nextAll(':not(.skip):first'); if (!$next.length) { $next = $(this).children(':not(.skip):first'); } $current.removeClass('active'); $next.addClass('active'); }); }, 5000); }); /****************************************** * Tooltip Generator * *****************************************/ $(function() { var selector = '.tooltip, .a1'; $('#tooltip-display').remove(); var mc_tooltip = function() { // Check to see if we've already created the div if (!$('#tooltip-display').length) { $('body').append($('<div id="tooltip-display">') .hide()); } return $('#tooltip-display'); }; $("body").on('mouseenter', selector, function(e) { var $me = $(this); // Make sure this isn't a link to upload a new file if ($me.find('.new').length > 0) { // This isn't one we want to show a tooltip for return; } // Try to get the title var title = $me.data('tooltip'); // See if we can find a title elsewhere // Check this element or its child if (title === undefined) { title = $me.attr('title') || $me.children(':first').attr('title') || $me.find('img:first').attr('alt'); // Check if we found anything if (title) { // Save it for later $me.data('tooltip', title); } else { // Didn't find anything, no sense continuing return; } } // Remove any title elements to avoid the default tooltip $me.add('*', $me).filter('[title]').removeAttr('title'); //Old methods of turning \ into <br/> /*title = title.replace('Grid',"").replace('.png',"").replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>"; title = title.replace("\\","<br/><span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">").trim() + "</span>";*/ var stitle = title.split("\\"); title = stitle[0]; if (stitle.length > 1) { title += "<br/>"; for (var i = 1; i < stitle.length; i++) { title += "<span style=\"color: #AAAAAA;text-shadow: #2A2A2A 2px 2px 0px;display: block;margin-top: 0.25em;\">" + stitle[i].trim() + "</span>"; } } // Add the text to the tooltip mc_tooltip().html(title.replace(/_/g, " ")); // Need to update the position to the cursor position $me.trigger('mousemove', e); }) .on('mousemove', selector, function (e) { // Check if the element exists already, create it if it doesn't if (!$('#tooltip-display').length) { $(this).trigger('mouseenter'); return; } // Get dimensions for bounds checking var top = e.pageY - 30, height = mc_tooltip().outerHeight(true), left = e.pageX + 15, width = mc_tooltip().outerWidth(true); // Get window dimensions var $w = $(window), win_width = $w.width(), win_height = $w.height(); // If going off the right of the screen, go to the left of the cursor if ( left + width > win_width ) { left -= width + 36; } // If now going off to the left of the screen, resort to going above the cursor if ( left < 0 ) { left = 0; top -= height - 22; // Go below the cursor if too high if ( top < 0 ) { top += height + 47; } // Don't go off the top of the screen } else if ( top < 0 ) { top = 0; }/* // Don't go off the bottom of the screen } else if ( top + height > win_height ) { top = win_height - height; }*/ // Apply the position mc_tooltip().css({ top: top, left: left }).show(); }) .on('mouseleave', selector, function (e) { mc_tooltip().hide(); }); }); /****************************************** * Infobox Collapser * *****************************************/ $( ".infoboxBlockImage img" ).each( function() { var width = parseInt( $( this ).attr( "width" ), 10); if ( width > 240 ) { $( this ).attr( "height", "" ); $( this ).attr( "width", "240" ); } }); $( ".infobox:not(.infoboxNoCollapse) td" ).each( function() { if (( $( this ).html().match( /{{{[^}]+}}}/ ) || $( this ).html() === "\n") && !$( this ).parent( "tr" ).hasClass( "infoboxSubsectionBreak")) { $( this ).parent( "tr" ).hide(); } }); // TODO: Make less dodgy $( ".infobox:not(.infoboxNoCollapse) tr.infoboxSectionHeader" ).each( function() //.infobox:not(.infoboxNoCollapse) .infoboxSubsectionBreak, { var flag = true, next = $( this ).next(); //console.log("\nNew Section\n"); var line = false; var draw_line = null; while ( next && next !== undefined && next.html() !== undefined && !next.hasClass( "infoboxSectionHeader") ) // && !next.hasClass( "infoboxSubsectionBreak" ) && { if (next.hasClass( "infoboxSubsectionBreak" )) { //console.log("Next Line Break:"); //console.log(next); line = false; draw_line = next; } if ( next.css( "display" ) != "none" && !next.hasClass( "infoboxSubsectionBreak" ) ) { //console.log("So this is making it shown"); //console.log(next); //console.log(next.html()); flag = false; line = true; } next = next.next(); } if ( flag ) { //console.log("Nothing made this section show"); $( this ).hide(); } if ( !line && draw_line !== null ) { try{draw_line.style.display = "none";}catch(TypeError){} //I think it has issues with the first object } }); if(wgPageName === "User:Chocohead/Sandpit") { importScript("User:Chocohead/Lift.js"); }