The Wiki for Tale 5 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.

If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.

Difference between revisions of "MediaWiki:Common.js"

From ATITD5
Jump to navigationJump to search
(Created page with "/* * OBTAINED FROM WIKIPEDIA.COM common.js LOCATED HERE: http://en.wikipedia.org/wiki/MediaWiki:Common.js * * In Compliance With http://en.wikipedia.org/wiki/Wikipedia:Text_o...")
 
 
Line 26: Line 26:
 
  *
 
  *
 
  *  Description: Allows tables to be collapsed, showing only the header. See
 
  *  Description: Allows tables to be collapsed, showing only the header. See
  *              [[Wikipedia:NavFrame]].
+
  *              http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
  *  Maintainers: [[User:R. Koot]]
+
  *  Maintainers: [[**MAINTAINERS**]]
 
  */
 
  */
 
 
var autoCollapse = 2;
 
var autoCollapse = 2;
var collapseCaption = "hide";
+
var collapseCaption = 'hide';
var expandCaption = "show";
+
var expandCaption = 'show';
 
+
function collapseTable( tableIndex )
+
function collapseTable( tableIndex ) {
{
+
var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Button = document.getElementById( "collapseButton" + tableIndex );
+
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
    var Table = document.getElementById( "collapsibleTable" + tableIndex );
+
 
+
if ( !Table || !Button ) {
    if ( !Table || !Button ) {
+
return false;
        return false;
+
}
    }
+
 
+
var Rows = Table.rows;
    var Rows = Table.rows;
+
 
+
if ( Button.firstChild.data == collapseCaption ) {
    if ( Button.firstChild.data == collapseCaption ) {
+
for ( var i = 1; i < Rows.length; i++ ) {
        for ( var i = 1; i < Rows.length; i++ ) {
+
Rows[i].style.display = 'none';
            Rows[i].style.display = "none";
+
}
        }
+
Button.firstChild.data = expandCaption;
        Button.firstChild.data = expandCaption;
+
} else {
    } else {
+
for ( var i = 1; i < Rows.length; i++ ) {
        for ( var i = 1; i < Rows.length; i++ ) {
+
Rows[i].style.display = Rows[0].style.display;
            Rows[i].style.display = Rows[0].style.display;
+
}
        }
+
Button.firstChild.data = collapseCaption;
        Button.firstChild.data = collapseCaption;
+
}
    }
 
 
}
 
}
 
+
function createCollapseButtons()
+
function createCollapseButtons() {
{
+
var tableIndex = 0;
    var tableIndex = 0;
+
var NavigationBoxes = new Object();
    var NavigationBoxes = new Object();
+
var Tables = document.getElementsByTagName( 'table' );
    var Tables = document.getElementsByTagName( "table" );
+
 
+
for ( var i = 0; i < Tables.length; i++ ) {
    for ( var i = 0; i < Tables.length; i++ ) {
+
if ( hasClass( Tables[i], 'collapsible' ) ) {
        if ( 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];
            /* only add button and increment count if there is a header row to work with */
+
if( !HeaderRow ) continue;
            var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
+
var Header = HeaderRow.getElementsByTagName( 'th' )[0];
            if (!HeaderRow) continue;
+
if( !Header ) continue;
            var Header = HeaderRow.getElementsByTagName( "th" )[0];
+
            if (!Header) continue;
+
NavigationBoxes[tableIndex] = Tables[i];
 
+
Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
            NavigationBoxes[ tableIndex ] = Tables[i];
+
            Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
+
var Button    = document.createElement( 'span' );
 
+
var ButtonLink = document.createElement( 'a' );
            var Button    = document.createElement( "span" );
+
var ButtonText = document.createTextNode( collapseCaption );
            var ButtonLink = document.createElement( "a" );
+
            var ButtonText = document.createTextNode( collapseCaption );
+
Button.className = 'collapseButton'; // Styles are declared in MediaWiki:Common.css
 
+
            Button.className = "collapseButton"; //Styles are declared in Common.css
+
ButtonLink.style.color = Header.style.color;
 
+
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.style.color = Header.style.color;
+
ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
            ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
+
ButtonLink.appendChild( ButtonText );
            ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
+
            ButtonLink.appendChild( ButtonText );
+
Button.appendChild( document.createTextNode( '[' ) );
 
+
Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( "[" ) );
+
Button.appendChild( document.createTextNode( ']' ) );
            Button.appendChild( ButtonLink );
+
            Button.appendChild( document.createTextNode( "]" ) );
+
Header.insertBefore( Button, Header.childNodes[0] );
 
+
tableIndex++;
            Header.insertBefore( Button, Header.childNodes[0] );
+
}
            tableIndex++;
+
}
        }
+
    }
+
for ( var i = 0;  i < tableIndex; i++ ) {
 
+
if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
    for ( var i = 0;  i < tableIndex; i++ ) {
+
collapseTable( i );
        if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
+
}
            collapseTable( i );
+
}
        }
 
        else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) {
 
            var element = NavigationBoxes[i];
 
            while (element = element.parentNode) {
 
                if ( hasClass( element, "outercollapse" ) ) {
 
                    collapseTable ( i );
 
                    break;
 
                }
 
            }
 
        }
 
    }
 
 
}
 
}
 
+
 
addOnloadHook( createCollapseButtons );
 
addOnloadHook( createCollapseButtons );

Latest revision as of 18:20, 8 August 2010

/* 
 * OBTAINED FROM WIKIPEDIA.COM common.js LOCATED HERE: http://en.wikipedia.org/wiki/MediaWiki:Common.js
 *
 * In Compliance With http://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License
 *
 *
 */

/* Copied from T4 Wiki /*

/* 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]]
 */

var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
})();


/** Collapsible tables *********************************************************
 *
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
 *  Maintainers: [[**MAINTAINERS**]]
 */
var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';
 
function collapseTable( 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 == collapseCaption ) {
		for ( var i = 1; i < Rows.length; i++ ) {
			Rows[i].style.display = 'none';
		}
		Button.firstChild.data = expandCaption;
	} else {
		for ( var i = 1; i < Rows.length; i++ ) {
			Rows[i].style.display = Rows[0].style.display;
		}
		Button.firstChild.data = collapseCaption;
	}
}
 
function createCollapseButtons() {
	var tableIndex = 0;
	var NavigationBoxes = new Object();
	var Tables = document.getElementsByTagName( 'table' );
 
	for ( var i = 0; i < Tables.length; i++ ) {
		if ( 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( 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 ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
			collapseTable( i );
		}
	}
}
 
addOnloadHook( createCollapseButtons );