MediaWiki:Common.js
The UESPWiki – Your source for The Elder Scrolls since 1995
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* <pre><nowiki> */
/*
addsectionbottom
Add a new section link to the bottom of discussion pages
Copied from http://rationalwiki.com/
*/
function addsectionbottom() {
var caplus;
if (!(caplus = document.getElementById("ca-addsection"))) return;
var content;
if (!(content = document.getElementById("bodyContent"))) return;
if (document.URL.indexOf('?')>=0) return;
var addsection = document.createElement("div");
addsection.innerHTML = "<span class=\"mw-editsection\">[ <a " + "href=\"" + caplus.childNodes[0].getAttribute("href") +
"\" title=\"" + caplus.childNodes[0].getAttribute("title") +
"\" accesskey=\"" + caplus.childNodes[0].getAttribute("accesskey") +
"\" ><span>Add new section</span></a> ]</span>"
addsection.id = "addsectionbottom";
var catlinks = document.getElementById("catlinks");
if (catlinks == null)
{
content.appendChild(addsection);
} else {
content.insertBefore(addsection, catlinks);
}
}
$(addsectionbottom);
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
* Maintainers: [[en:User:R. Koot]]
*/
window.autoCollapse = 2;
window.collapseCaption = 'hide';
window.expandCaption = 'show';
window.collapseTable = function ( tableIndex ) {
var Button = document.getElementById( 'collapseButton' + tableIndex );
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
if ( Button.firstChild.data == window.collapseCaption ) {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = 'none';
}
Button.firstChild.data = window.expandCaption;
} else {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = window.collapseCaption;
}
}
/** Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
*/
window.hasClass = ( function() {
var reCache = {};
return function( element, className ) {
return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
};
})();
window.createCollapseButtons = function() {
var tableIndex = 0;
var NavigationBoxes = new Object();
var Tables = document.getElementsByTagName( 'table' );
for ( var i = 0; i < Tables.length; i++ ) {
if ( window.hasClass( Tables[i], 'collapsible' ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
if ( !HeaderRow ) {
continue;
}
var Header = HeaderRow.getElementsByTagName( 'th' )[0];
if ( !Header ) {
continue;
}
NavigationBoxes[tableIndex] = Tables[i];
Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
var Button = document.createElement( 'span' );
var ButtonLink = document.createElement( 'a' );
var ButtonText = document.createTextNode( window.collapseCaption );
Button.className = 'collapseButton'; // Styles are declared in [[MediaWiki:Common.css]]
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( '[' ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( ']' ) );
Header.insertBefore( Button, Header.childNodes[0] );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( window.hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= window.autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
collapseTable( i );
} else if ( window.hasClass( NavigationBoxes[i], 'innercollapse' ) ) {
var element = NavigationBoxes[i];
while ( element = element.parentNode ) {
if ( window.hasClass( element, 'outercollapse' ) ) {
collapseTable( i );
break;
}
}
}
}
}
$( createCollapseButtons );
/* Fix overlapping pageicons */
$(function() {var prot = document.getElementById('protected-icon'); if (document.getElementById('featured-star') && prot) prot.style.marginRight = '25px';});
/* Make sortable striping take effect when page is first loaded */
window.ts_alternate_row_colors = true;
/* Show/Hide Nav code */
window.NavigationBarHide='[ Hide ]';
window.NavigationBarShow='[ Show ]';
window.NavigationBarShowDefault=0;
window.toggleNavigationBar = function (indexNavigationBar) {
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
if (NavToggle.firstChild.data == window.NavigationBarHide) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = window.NavigationBarShow;
} else if (NavToggle.firstChild.data == window.NavigationBarShow) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = window.NavigationBarHide;
}
}
window.createNavigationBarToggleButton = function () {
var indexNavigationBar = 0;
for (var i = 0; NavFrame = document.getElementsByTagName("div")[i]; i++) {
if (NavFrame.className == "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(window.NavigationBarHide);
NavToggle.appendChild(NavToggleText);
for (var j = 0; j < NavFrame.childNodes.length; j++) {
if (NavFrame.childNodes[j].className == "NavHead") {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
if (window.NavigationBarShowDefault < indexNavigationBar) {
for (var i = 1; i <= indexNavigationBar; i++) {
toggleNavigationBar(i);
}
}
}
$(createNavigationBarToggleButton);
// Fix for ESO Build Editor Cookie
if (window.location.hostname == "en.uesp.net")
{
document.cookie = 'uesp_net_wiki5_session=;expires=Sat, 01-Jan-2000 00:00:00 GMT;path=/';
}
var uespTwitchOptions = {
autoplay: true,
width: 500,
height: 400,
channel: "UESP",
muted: true,
parent: ["uesp.net"]
};
var deltiaTwitchOptions = {
autoplay: true,
width: 500,
height: 400,
channel: "deltiasgaming",
muted: true,
parent: ["uesp.net"]
};
var nefasTwitchOptions = {
autoplay: true,
width: 500,
height: 400,
channel: "nefasqs",
muted: true,
parent: ["uesp.net"]
};
var TOTTwitchOptions = {
autoplay: true,
width: 500,
height: 400,
channel: "arkhaniirsquest",
muted: true,
parent: ["uesp.net"]
};
//========================================================================================
// Replace bottom ad with Deltia Twitch player for 10% of views for non-logged in users
var chance = Math.random();
var bottomAdDiv = $("#uesp_D_3");
var hasInitializedTwitch = false;
function uespSetupTwitchDiv()
{
//Temporary LotusOfDoom charity stream
if (false && !hasInitializedTwitch && window.Twitch && chance <= 0.40 && window.mw.user.isAnon())
{
if (bottomAdDiv.length > 0) {
var twitchPlayerDiv = $("<div/>").attr("id", "uespTOTTwitchEmbedDiv");
bottomAdDiv.parent().css("width", "100%");
bottomAdDiv.parent().css("height", "auto");
bottomAdDiv.parent().css("text-align", "center");
bottomAdDiv.parent().append(twitchPlayerDiv);
bottomAdDiv.remove();
hasInitializedTwitch = true;
}
}
else if (false && !hasInitializedTwitch && window.Twitch && chance < 0.0 && window.mw.user.isAnon()) {
if (bottomAdDiv.length > 0) {
var twitchPlayerDiv = $("<div/>").attr("id", "deltiaTwitchEmbedDiv");
bottomAdDiv.parent().css("width", "100%");
bottomAdDiv.parent().css("height", "auto");
bottomAdDiv.parent().css("text-align", "center");
bottomAdDiv.parent().append(twitchPlayerDiv);
bottomAdDiv.remove();
hasInitializedTwitch = true;
}
}
else if (false && !hasInitializedTwitch && window.Twitch && chance <= 0.01 && window.mw.user.isAnon()) {
if (bottomAdDiv.length > 0) {
var twitchPlayerDiv = $("<div/>").attr("id", "nefasTwitchEmbedDiv");
bottomAdDiv.parent().css("width", "100%");
bottomAdDiv.parent().css("height", "auto");
bottomAdDiv.parent().css("text-align", "center");
bottomAdDiv.parent().append(twitchPlayerDiv);
bottomAdDiv.remove();
hasInitializedTwitch = true;
}
}
createTwitchPlayer();
}
$(function() {
mw.loader.using( ['mediawiki.util', 'mediawiki.user'], uespSetupTwitchDiv);
});
//========================================================================================
var twitchPlayer = null;
function createTwitchPlayer() {
if (window.Twitch == null) return;
if (document.getElementById("uespTwitchEmbedDiv") != null) {
twitchPlayer = new Twitch.Player("uespTwitchEmbedDiv", uespTwitchOptions);
}
else if (document.getElementById("uespTOTTwitchEmbedDiv") != null) {
twitchPlayer = new Twitch.Player("uespTOTTwitchEmbedDiv", TOTTwitchOptions );
}
else if (document.getElementById("deltiaTwitchEmbedDiv") != null) {
twitchPlayer = new Twitch.Player("deltiaTwitchEmbedDiv", deltiaTwitchOptions );
}
else if (document.getElementById("nefasTwitchEmbedDiv") != null) {
twitchPlayer = new Twitch.Player("nefasTwitchEmbedDiv", nefasTwitchOptions );
}
}
function uespUpdateBodySearch() {
$("#bodySearchInput_uesp").attr("placeholder", "Search This Wiki For...");
}
$(uespUpdateBodySearch);
window.uespEsoDataUpdateServerStatus = function(forceUpdate)
{
var status = jQuery("#uespEsoServerStatus");
if (status.length == 0) return;
jQuery.ajax({
url: '//esolog.uesp.net/getEsoServerStatus.php',
type: 'get',
context: status,
dataType: 'html',
cache: false,
success: OnReceiveUespEsoServerStatus,
async:true,
});
}
window.OnReceiveUespEsoServerStatus = function(data)
{
jQuery(this).html(data);
}
setInterval(uespEsoDataUpdateServerStatus, 60000);
/* </nowiki></pre> */